Ignore:
Timestamp:
Oct 11, 2018 12:20:56 PM (6 years ago)
Author:
Paul Kienzle <pkienzle@…>
Branches:
master, magnetic_scatt, release-4.2.2, ticket-1009, ticket-1249
Children:
98b9f32
Parents:
67ed543
Message:

improved support for py37 in sasgui

Location:
src/sas/sasgui/perspectives/invariant
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • src/sas/sasgui/perspectives/invariant/__init__.py

    r5a405bd r5251ec6  
    33 
    44from distutils.filelist import findall 
    5 from invariant import * 
     5from .invariant import * 
    66 
    77def get_data_path(media): 
  • src/sas/sasgui/perspectives/invariant/invariant.py

    r7432acb r5251ec6  
    133133            name = data.__class__.__name__ 
    134134            msg = "Invariant use only Data1D got: [%s] " % str(name) 
    135             raise ValueError, msg 
     135            raise ValueError(msg) 
    136136        self.compute_helper(data=data) 
    137137 
     
    144144        if data_list is None: 
    145145            data_list = [] 
     146        else: 
     147            data_list = list(data_list)  # force iterator to list 
    146148        if len(data_list) >= 1: 
    147149            if len(data_list) == 1: 
     
    190192                try: 
    191193                    self.compute_helper(data) 
    192                 except: 
    193                     msg = "Invariant Set_data: " + str(sys.exc_value) 
     194                except Exception as exc: 
     195                    msg = "Invariant Set_data: " + str(exc) 
    194196                    wx.PostEvent(self.parent, StatusEvent(status=msg, info="error")) 
    195197        else: 
     
    240242            msg = "invariant.save_file: the data being saved is" 
    241243            msg += " not a sas.sascalc.dataloader.data_info.Data1D object" 
    242             raise RuntimeError, msg 
     244            raise RuntimeError(msg) 
    243245 
    244246    def set_state(self, state=None, datainfo=None): 
     
    258260                msg = "invariant.set_state: datainfo parameter cannot" 
    259261                msg += " be None in standalone mode" 
    260                 raise RuntimeError, msg 
     262                raise RuntimeError(msg) 
    261263            # Make sure the user sees the invariant panel after loading 
    262264            # self.parent.set_perspective(self.perspective) 
     
    281283            self.on_set_state_helper(None) 
    282284 
    283         except: 
    284             logger.error("invariant.set_state: %s" % sys.exc_value) 
     285        except Exception as exc: 
     286            logger.error("invariant.set_state: %s" % exc) 
    285287 
    286288    def on_set_state_helper(self, event=None): 
     
    320322        else: 
    321323            msg = "Scale can not be zero." 
    322             raise ValueError, msg 
     324            raise ValueError(msg) 
    323325        if len(new_plot.x) == 0: 
    324326            return 
  • src/sas/sasgui/perspectives/invariant/invariant_details.py

    r20fa5fe r5251ec6  
    22    Invariant panel 
    33""" 
     4import sys 
     5 
    46import wx 
    5 import sys 
    67 
    78from sas.sasgui.guiframe.utils import format_number 
    8 from invariant_widgets import OutputTextCtrl 
     9from .invariant_widgets import OutputTextCtrl 
     10 
    911# Dimensions related to chart 
    1012RECTANGLE_WIDTH = 400.0 
     
    3335 
    3436 
    35 class InvariantContainer(wx.Object): 
     37class InvariantContainer: 
    3638    """ 
    3739    This class stores some values resulting resulting from invariant 
  • src/sas/sasgui/perspectives/invariant/invariant_panel.py

    r44e8f48 r5251ec6  
    319319        background = self.background_tcl.GetValue().lstrip().rstrip() 
    320320        if background == "": 
    321             raise ValueError, "Need a background" 
     321            raise ValueError("Need a background") 
    322322        if check_float(self.background_tcl): 
    323323            return float(background) 
    324324        else: 
    325325            msg = "Receive invalid value for background : %s" % (background) 
    326             raise ValueError, msg 
     326            raise ValueError(msg) 
    327327 
    328328    def get_scale(self): 
     
    332332        scale = self.scale_tcl.GetValue().lstrip().rstrip() 
    333333        if scale == "": 
    334             raise ValueError, "Need a background" 
     334            raise ValueError("Need a background") 
    335335        if check_float(self.scale_tcl): 
    336336            if float(scale) <= 0.0: 
     
    338338                self.scale_tcl.Refresh() 
    339339                msg = "Receive invalid value for scale: %s" % (scale) 
    340                 raise ValueError, msg 
     340                raise ValueError(msg) 
    341341            return float(scale) 
    342342        else: 
    343             raise ValueError, "Receive invalid value for scale : %s" % (scale) 
     343            raise ValueError("Receive invalid value for scale : %s" % (scale)) 
    344344 
    345345    def get_contrast(self): 
     
    386386                self.volume_tcl.SetValue(format_number(v)) 
    387387                self.volume_err_tcl.SetValue(format_number(dv)) 
    388             except: 
     388            except Exception as exc: 
    389389                self.volume_tcl.SetValue(format_number(None)) 
    390390                self.volume_err_tcl.SetValue(format_number(None)) 
    391391                msg = "Error occurred computing volume " 
    392                 msg += " fraction: %s" % sys.exc_value 
     392                msg += " fraction: %s" % exc 
    393393                wx.PostEvent(self.parent, StatusEvent(status=msg, 
    394394                                                      info="error", 
     
    406406                self.surface_tcl.SetValue(format_number(s)) 
    407407                self.surface_err_tcl.SetValue(format_number(ds)) 
    408             except: 
     408            except Exception as exc: 
    409409                self.surface_tcl.SetValue(format_number(None)) 
    410410                self.surface_err_tcl.SetValue(format_number(None)) 
    411411                msg = "Error occurred computing " 
    412                 msg += "specific surface: %s" % sys.exc_value 
     412                msg += "specific surface: %s" % exc 
    413413                wx.PostEvent(self.parent, StatusEvent(status=msg, info="error", 
    414414                                                      type="stop")) 
     
    426426            self.inv_container.qstar_total = qstar_total 
    427427            self.inv_container.qstar_total_err = qstar_total_err 
    428         except: 
     428        except Exception as exc: 
    429429            self.inv_container.qstar_total = "Error" 
    430430            self.inv_container.qstar_total_err = "Error" 
     
    432432            self.invariant_total_err_tcl.SetValue(format_number(None)) 
    433433            msg = "Error occurred computing invariant using" 
    434             msg += " extrapolation: %s" % sys.exc_value 
     434            msg += " extrapolation: %s" % exc 
    435435            wx.PostEvent(self.parent, StatusEvent(status=msg, type="stop")) 
    436436 
     
    450450                self._manager.plot_theory(data=extrapolated_data, 
    451451                                          name="Low-Q extrapolation") 
    452             except: 
     452            except Exception as exc: 
    453453                self.inv_container.qstar_low = "ERROR" 
    454454                self.inv_container.qstar_low_err = "ERROR" 
    455455                self._manager.plot_theory(name="Low-Q extrapolation") 
    456456                msg = "Error occurred computing low-Q " 
    457                 msg += "invariant: %s" % sys.exc_value 
     457                msg += "invariant: %s" % exc 
    458458                wx.PostEvent(self.parent, 
    459459                             StatusEvent(status=msg, type="stop")) 
     
    462462            try: 
    463463                self._manager.plot_theory(name="Low-Q extrapolation") 
    464             except: 
    465                 logger.error(sys.exc_value) 
     464            except Exception as exc: 
     465                logger.error(exc) 
    466466 
    467467    def get_high_qstar(self, inv, high_q=False): 
     
    483483                self._manager.plot_theory(data=high_out_data, 
    484484                                          name="High-Q extrapolation") 
    485             except: 
     485            except Exception as exc: 
    486486                #raise 
    487487                self.inv_container.qstar_high = "ERROR" 
     
    489489                self._manager.plot_theory(name="High-Q extrapolation") 
    490490                msg = "Error occurred computing high-Q " 
    491                 msg += "invariant: %s" % sys.exc_value 
     491                msg += "invariant: %s" % exc 
    492492                wx.PostEvent(self.parent, StatusEvent(status=msg, 
    493493                                                      type="stop")) 
     
    496496            try: 
    497497                self._manager.plot_theory(name="High-Q extrapolation") 
    498             except: 
    499                 logger.error(sys.exc_value) 
     498            except Exception as exc: 
     499                logger.error(exc) 
    500500 
    501501    def get_qstar(self, inv): 
     
    625625            background = self.get_background() 
    626626            scale = self.get_scale() 
    627         except: 
    628             msg = "Invariant Error: %s" % (sys.exc_value) 
     627        except Exception as exc: 
     628            msg = "Invariant Error: %s" % exc 
    629629            wx.PostEvent(self.parent, StatusEvent(status=msg, type="stop")) 
    630630            return 
     
    641641            inv, npts_low = self.set_extrapolation_low(inv=inv, low_q=low_q) 
    642642            inv, npts_high = self.set_extrapolation_high(inv=inv, high_q=high_q) 
    643         except: 
    644             msg = "Error occurred computing invariant: %s" % sys.exc_value 
     643        except Exception as exc: 
     644            msg = "Error occurred computing invariant: %s" % exc 
    645645            wx.PostEvent(self.parent, StatusEvent(status=msg, 
    646646                                                  info="warning", type="stop")) 
     
    652652        try: 
    653653            self.get_qstar(inv=inv) 
    654         except: 
    655             msg = "Error occurred computing invariant: %s" % sys.exc_value 
     654        except Exception as exc: 
     655            msg = "Error occurred computing invariant: %s" % exc 
    656656            wx.PostEvent(self.parent, StatusEvent(status=msg, 
    657657                                                  info="warning", 
     
    674674            porod_const = self.get_porod_const() 
    675675            contrast = self.get_contrast() 
    676         except: 
    677             msg = r_msg + "Error occurred computing invariant: %s" % \ 
    678                                                             sys.exc_value 
     676        except Exception as exc: 
     677            msg = r_msg + "Error occurred computing invariant: %s" % exc 
    679678            wx.PostEvent(self.parent, StatusEvent(status=msg, 
    680679                                                  info="error", 
     
    685684                            extrapolation=extrapolation) 
    686685            #compute surface and set value to txtcrtl 
    687         except: 
    688             msg = "Error occurred computing invariant: %s" % sys.exc_value 
     686        except Exception as exc: 
     687            msg = "Error occurred computing invariant: %s" % exc 
    689688            wx.PostEvent(self.parent, StatusEvent(status=msg, 
    690689                                                  info="warning", 
     
    695694                             extrapolation=extrapolation) 
    696695 
    697         except: 
    698             msg = "Error occurred computing invariant: %s" % sys.exc_value 
     696        except Exception as exc: 
     697            msg = "Error occurred computing invariant: %s" % exc 
    699698            wx.PostEvent(self.parent, StatusEvent(status=msg, 
    700699                                                  info="warning", 
     
    845844            if attr.__class__.__name__ == "StaticText": 
    846845                return 
    847             if value in ["True", "False", True, False]: 
    848                 value = bool(value) 
     846            if value in ["True", True]: 
     847                value = 1 
     848            elif value in ["False", False]: 
     849                value = 0 
    849850            else: 
    850851                value = str(value) 
    851852            attr.SetValue(value) 
    852         except: 
    853             logger.error("Invariant state: %s", sys.exc_value) 
     853        except Exception as exc: 
     854            logger.error("Invariant state: %s", exc) 
    854855 
    855856    def get_bookmark_by_num(self, num=None): 
     
    867868        try: 
    868869            _, _, current_state, comp_state = self.state.bookmark_list[int(num)] 
    869         except: 
    870             logger.error(sys.exc_value) 
    871             raise ValueError, "No such bookmark exists" 
     870        except Exception as exc: 
     871            logger.error(exc) 
     872            raise ValueError("No such bookmark exists") 
    872873 
    873874        # set the parameters 
     
    962963            self.state.state_list[str(self.state.state_num)] = \ 
    963964                    self.state.clone_state() 
    964         except: 
    965             logger.error(sys.exc_value) 
     965        except Exception as exc: 
     966            logger.error(exc) 
    966967 
    967968        self._set_undo_flag(True) 
     
    10061007            try: 
    10071008                del self.state.state_list[str(i)] 
    1008             except: 
    1009                 logger.error(sys.exc_value) 
     1009            except Exception as exc: 
     1010                logger.error(exc) 
    10101011        # Enable the undo button if it was not 
    10111012        self._set_undo_flag(True) 
     
    10711072            try: 
    10721073                del self.state.state_list[str(i)] 
    1073             except: 
    1074                 logger.error(sys.exc_value) 
     1074            except Exception as exc: 
     1075                logger.error(exc) 
    10751076 
    10761077        # try to add new state of the text changes in the state_list 
     
    10861087            self.state.state_num = self.state.saved_state['state_num'] 
    10871088            self.state.state_list[str(self.state.state_num)] = self.state.clone_state() 
    1088         except: 
    1089             logger.error(sys.exc_value) 
     1089        except Exception as exc: 
     1090            logger.error(exc) 
    10901091 
    10911092        self._set_undo_flag(True) 
     
    11081109            self.state.saved_state[name] = str(value) 
    11091110            self.state.state_list[str(self.state.state_num)] = self.state.clone_state() 
    1110         except: 
    1111             logger.error(sys.exc_value) 
     1111        except Exception as exc: 
     1112            logger.error(exc) 
    11121113 
    11131114    def _get_input_list(self): 
     
    11181119        compute_num = self.state.saved_state['compute_num'] 
    11191120        # find values and put into the input list 
    1120         for key1, value1 in self.state.state_list[str(compute_num)].iteritems(): 
    1121             for key, _ in self.state.input_list.iteritems(): 
     1121        for key1, value1 in self.state.state_list[str(compute_num)].items(): 
     1122            for key, _ in self.state.input_list.items(): 
    11221123                if key == key1: 
    11231124                    self.state.input_list[key] = value1 
  • src/sas/sasgui/perspectives/invariant/invariant_state.py

    re9920cd r5251ec6  
    22    State class for the invariant UI 
    33""" 
     4from __future__ import print_function 
    45 
    56# import time 
     
    140141 
    141142        # text ctl general inputs ( excluding extrapolation text ctl) 
    142         for key, value in self.input_list.iteritems(): 
     143        for key, value in self.input_list.items(): 
    143144            if value == '': 
    144145                continue 
     
    166167        low_off = False 
    167168        high_off = False 
    168         for key, value in self.input_list.iteritems(): 
     169        for key, value in self.input_list.items(): 
    169170            key_split = key.split('_') 
    170171            max_ind = len(key_split) - 1 
     
    216217                # other outputs than Q* 
    217218                name = item[0] + "_tcl" 
    218                 if name in self.saved_state.keys(): 
     219                if name in self.saved_state: 
    219220                    value = self.saved_state[name] 
    220221 
     
    301302        top_element.appendChild(state) 
    302303 
    303         for name, value in self.saved_state.iteritems(): 
     304        for name, value in self.saved_state.items(): 
    304305            element = newdoc.createElement(str(name)) 
    305306            element.appendChild(newdoc.createTextNode(str(value))) 
     
    310311        top_element.appendChild(history) 
    311312 
    312         for name, value in self.state_list.iteritems(): 
     313        for name, value in self.state_list.items(): 
    313314            history_element = newdoc.createElement('state_' + str(name)) 
    314             for state_name, state_value in value.iteritems(): 
     315            for state_name, state_value in value.items(): 
    315316                state_element = newdoc.createElement(str(state_name)) 
    316317                child = newdoc.createTextNode(str(state_value)) 
     
    325326        top_element.appendChild(bookmark) 
    326327        item_list = ['time', 'date', 'state', 'comp_state'] 
    327         for name, value_list in self.bookmark_list.iteritems(): 
     328        for name, value_list in self.bookmark_list.items(): 
    328329            element = newdoc.createElement('mark_' + str(name)) 
    329330            _, date, state, comp_state = value_list 
     
    334335            state_list_element = newdoc.createElement('state') 
    335336            comp_state_list_element = newdoc.createElement('comp_state') 
    336             for state_name, state_value in value_list[2].iteritems(): 
     337            for state_name, state_value in value_list[2].items(): 
    337338                state_element = newdoc.createElement(str(state_name)) 
    338339                child = newdoc.createTextNode(str(state_value)) 
    339340                state_element.appendChild(child) 
    340341                state_list_element.appendChild(state_element) 
    341             for comp_name, comp_value in value_list[3].iteritems(): 
     342            for comp_name, comp_value in value_list[3].items(): 
    342343                comp_element = newdoc.createElement(str(comp_name)) 
    343344                comp_element.appendChild(newdoc.createTextNode(str(comp_value))) 
     
    368369            msg = "InvariantSate no longer supports non-CanSAS" 
    369370            msg += " format for invariant files" 
    370             raise RuntimeError, msg 
     371            raise RuntimeError(msg) 
    371372 
    372373        if node.get('version')\ 
     
    383384                try: 
    384385                    timestamp = (entry.get('epoch')) 
    385                 except: 
     386                except Exception as exc: 
    386387                    msg = "InvariantSate.fromXML: Could not read" 
    387                     msg += " timestamp\n %s" % sys.exc_value 
     388                    msg += " timestamp\n %s" % exc 
    388389                    logger.error(msg) 
    389390 
     
    453454        Get the values (strings) from __str__ for report 
    454455        """ 
    455         strings = self.__str__() 
    456  
    457456        # default string values 
    458         for num in range(1, 19): 
    459             exec "s_%s = 'NA'" % str(num) 
    460         lines = strings.split('\n') 
     457        s = {num: 'NA' for num in range(1, 19)} 
    461458        # get all string values from __str__() 
    462         for line in range(0, len(lines)): 
    463             if line == 1: 
    464                 s_1 = lines[1] 
    465             elif line == 2: 
    466                 s_2 = lines[2] 
     459        lines = str(self).split('\n') 
     460        for line_num, line in enumerate(lines): 
     461            if line_num == 1: 
     462                s[1] = line 
     463            elif line_num == 2: 
     464                s[2] = line 
    467465            else: 
    468                 item = lines[line].split(':') 
     466                item = line.split(':') 
    469467                item[0] = item[0].strip() 
    470468                if item[0] == "scale": 
    471                     s_3 = item[1] 
     469                    s[3] = item[1] 
    472470                elif item[0] == "porod constant": 
    473                     s_4 = item[1] 
     471                    s[4] = item[1] 
    474472                elif item[0] == "background": 
    475                     s_5 = item[1] 
     473                    s[5] = item[1] 
    476474                elif item[0] == "contrast": 
    477                     s_6 = item[1] 
     475                    s[6] = item[1] 
    478476                elif item[0] == "Extrapolation": 
    479477                    extra = item[1].split(";") 
    480478                    bool_0 = extra[0].split("=") 
    481479                    bool_1 = extra[1].split("=") 
    482                     s_8 = " " + bool_0[0] + "Q region = " + bool_0[1] 
    483                     s_7 = " " + bool_1[0] + "Q region = " + bool_1[1] 
     480                    s[8] = " " + bool_0[0] + "Q region = " + bool_0[1] 
     481                    s[7] = " " + bool_1[0] + "Q region = " + bool_1[1] 
    484482                elif item[0] == "npts low": 
    485                     s_9 = item[1] 
     483                    s[9] = item[1] 
    486484                elif item[0] == "npts high": 
    487                     s_10 = item[1] 
     485                    s[10] = item[1] 
    488486                elif item[0] == "volume fraction": 
    489487                    val = item[1].split("+-")[0].strip() 
    490488                    error = item[1].split("+-")[1].strip() 
    491                     s_17 = val + " &plusmn; " + error 
     489                    s[17] = val + " &plusmn; " + error 
    492490                elif item[0] == "specific surface": 
    493491                    val = item[1].split("+-")[0].strip() 
    494492                    error = item[1].split("+-")[1].strip() 
    495                     s_18 = val + " &plusmn; " + error 
     493                    s[18] = val + " &plusmn; " + error 
    496494                elif item[0].split("(")[0].strip() == "power low": 
    497                     s_11 = item[0] + " =" + item[1] 
     495                    s[11] = item[0] + " =" + item[1] 
    498496                elif item[0].split("(")[0].strip() == "power high": 
    499                     s_12 = item[0] + " =" + item[1] 
     497                    s[12] = item[0] + " =" + item[1] 
    500498                elif item[0].split("[")[0].strip() == "Q* from low Q extrapolation": 
    501499                    # looks messy but this way the symbols +_ and % work on html 
     
    504502                    err = error.split("%")[0].strip() 
    505503                    percent = error.split("%")[1].strip() 
    506                     s_13 = val + " &plusmn; " + err + "&#37" + percent 
     504                    s[13] = val + " &plusmn; " + err + "&#37" + percent 
    507505                elif item[0].split("[")[0].strip() == "Q* from data": 
    508506                    val = item[1].split("+-")[0].strip() 
     
    510508                    err = error.split("%")[0].strip() 
    511509                    percent = error.split("%")[1].strip() 
    512                     s_14 = val + " &plusmn; " + err + "&#37" + percent 
     510                    s[14] = val + " &plusmn; " + err + "&#37" + percent 
    513511                elif item[0].split("[")[0].strip() == "Q* from high Q extrapolation": 
    514512                    val = item[1].split("+-")[0].strip() 
     
    516514                    err = error.split("%")[0].strip() 
    517515                    percent = error.split("%")[1].strip() 
    518                     s_15 = val + " &plusmn; " + err + "&#37" + percent 
     516                    s[15] = val + " &plusmn; " + err + "&#37" + percent 
    519517                elif item[0].split("[")[0].strip() == "total Q*": 
    520518                    val = item[1].split("+-")[0].strip() 
    521519                    error = item[1].split("+-")[1].strip() 
    522                     s_16 = val + " &plusmn; " + error 
     520                    s[16] = val + " &plusmn; " + error 
    523521                else: 
    524522                    continue 
    525523 
    526         s_1 = self._check_html_format(s_1) 
     524        s[1] = self._check_html_format(s[1]) 
    527525        file_name = self._check_html_format(self.file) 
    528526 
     
    530528        self.set_plot_state(extra_high=bool_0[1], extra_low=bool_1[1]) 
    531529        # get ready for report with setting all the html strings 
    532         self.report_str = str(self.template_str) % (s_1, s_2, 
    533                                                     s_3, s_4, s_5, s_6, s_7, s_8, 
    534                                                     s_9, s_10, s_11, s_12, s_13, s_14, s_15, 
    535                                                     s_16, s_17, s_18, file_name, "%s") 
     530        self.report_str = str(self.template_str) % ( 
     531            s[1], s[2], s[3], s[4], s[5], s[6], s[7], s[8], s[9], s[10], s[11], 
     532            s[12], s[13], s[14], s[15], s[16], s[17], s[18], file_name, "%s") 
    536533 
    537534    def _check_html_format(self, name): 
     
    692689                state = InvariantState() 
    693690                state.fromXML(node=nodes[0]) 
    694         except: 
     691        except Exception as exc: 
    695692            msg = "XML document does not contain invariant" 
    696             msg += " information.\n %s" % sys.exc_value 
     693            msg += " information.\n %s" % exc 
    697694            logger.info(msg) 
    698695        return state 
     
    736733                        output.append(sas_entry) 
    737734        else: 
    738             raise RuntimeError, "%s is not a file" % path 
     735            raise RuntimeError("%s is not a file" % path) 
    739736 
    740737        # Return output consistent with the loader's api 
     
    782779            msg = "The cansas writer expects a Data1D" 
    783780            msg += " instance: %s" % str(datainfo.__class__.__name__) 
    784             raise RuntimeError, msg 
     781            raise RuntimeError(msg) 
    785782        # make sure title and data run is filled up. 
    786783        if datainfo.title is None or datainfo.title == '': 
  • src/sas/sasgui/perspectives/invariant/report_dialog.py

    rd0ce666f r5251ec6  
    9292                        # Mac 
    9393                        os.system("open %s" % fName) 
    94                     except: 
     94                    except Exception as exc: 
    9595                        # DO not open 
    96                         logger.error("Could not open file: %s" % sys.exc_value) 
     96                        logger.error("Could not open file: %s" % exc) 
    9797            # delete image file 
    9898            os.remove(pic_fname) 
Note: See TracChangeset for help on using the changeset viewer.