Oct 23, 2017 11:39:16 AM (6 years ago)

make GSAS-II python 3.6 compliant & preserve python 2.7 use;changes:
do from future import division, print_function for all GSAS-II py sources
all menu items revised to be py 2.7/3.6 compliant
all wx.OPEN --> wx.FD_OPEN in file dialogs
all integer divides (typically for image pixel math) made explicit with ; ambiguous ones made floats as appropriate
all print "stuff" --> print (stuff)
all print >> pFile,'stuff' --> pFile.writeCIFtemplate('stuff')
all read file opens made explicit 'r' or 'rb'
all cPickle imports made for py2.7 or 3.6 as cPickle or _pickle; test for '2' platform.version_tuple[0] for py 2.7
define cPickleload to select load(fp) or load(fp,encoding='latin-1') for loading gpx files; provides cross compatibility between py 2.7/3.6 gpx files
make dict.keys() as explicit list(dict.keys()) as needed (NB: possible source of remaining py3.6 bugs)
make zip(a,b) as explicit list(zip(a,b)) as needed (NB: possible source of remaining py3.6 bugs)
select unichr/chr according test for '2' platform.version_tuple[0] for py 2.7 (G2pwdGUI * G2plot) for special characters
select wg.EVT_GRID_CELL_CHANGE (classic) or wg.EVT_GRID_CELL_CHANGED (phoenix) in grid Bind
maxint --> maxsize; used in random number stuff
raise Exception,"stuff" --> raise Exception("stuff")
wx 'classic' sizer.DeleteWindows?() or 'phoenix' sizer.Clear(True)
wx 'classic' SetToolTipString?(text) or 'phoenix' SetToolTip?(wx.ToolTip?(text)); define SetToolTipString?(self,text) to handle the choice in plots
status.SetFields? --> status.SetStatusText?
'classic' AddSimpleTool? or 'phoenix' self.AddTool? for plot toolbar; Bind different as well
define GetItemPydata? as it doesn't exist in wx 'phoenix'
allow python versions 2.7 & 3.6 to run GSAS-II
Bind override commented out - no logging capability (NB: remove all logging code?)
all import ContentsValidator? open filename & test if valid then close; filepointer removed from Reader
binary importers (mostly images) test for 'byte' type & convert as needed to satisfy py 3.6 str/byte rules

1 edited


  • trunk/imports/G2img_CBF.py

    r2817 r3136  
     15from __future__ import division, print_function
    1516import time
    1617import GSASIIobj as G2obj
    3031            )
    32     def ContentsValidator(self, filepointer):       
     33    def ContentsValidator(self, filename):       
    3334        '''no test used at this time
    3435        '''
    3536        return True
    37     def Reader(self,filename,filepointer, ParentFrame=None, **unused):
     38    def Reader(self,filename, ParentFrame=None, **unused):
    3839        '''Read using Bob's routine :func:`GetCbfData`
    3940        '''
    4950    import numpy as np
    5051    if GSASIIpath.GetConfigValue('debug'):
    51         print 'Read cif binary detector data cbf file: ',filename
     52        print ('Read cif binary detector data cbf file: '+filename)
    5253    File = open(filename,'rb')
    5354    sizexy = [0,0]
    5859    byteOrd = '<'
    5960    stream = File.read()
    60     File.close()
     61    if 'bytes' in str(type(stream)):
     62        stream = stream.decode('latin-1')
    6163    starter = '\x0c\x1a\x04\xd5'
    6264    imageBeg = stream.find(starter)+4
    9799    image = cbf.unpack_cbf(nimg,compImage,nxy,image)
    98100    image = np.reshape(image,(sizexy[1],sizexy[0]))
    99     print 'import time:',time.time()-time0
     101    print ('import time: %.3f'%(time.time()-time0))
    100102    data = {'pixelSize':pixSize,'wavelength':wave,'distance':dist,'center':cent,'size':sizexy}
    101103    Npix = sizexy[0]*sizexy[1]
Note: See TracChangeset for help on using the changeset viewer.