diff --git a/SConstruct b/SConstruct index a8b8155e48..ba84ab17e1 100644 --- a/SConstruct +++ b/SConstruct @@ -2322,7 +2322,7 @@ mayaEnvAppends = { "OpenMayaUI", "OpenMayaAnim", "OpenMayaFX", - "boost_python" + pythonEnv["BOOST_LIB_SUFFIX"], + "boost_python" + boostPythonLibSuffix, ], "CPPFLAGS" : [ "-D_BOOL", diff --git a/include/IECoreMaya/ParameterisedHolderModificationCmd.h b/include/IECoreMaya/ParameterisedHolderModificationCmd.h index ebbd314e96..1817a4943e 100644 --- a/include/IECoreMaya/ParameterisedHolderModificationCmd.h +++ b/include/IECoreMaya/ParameterisedHolderModificationCmd.h @@ -116,7 +116,7 @@ class IECOREMAYA_API ParameterisedHolderModificationCmd : public MPxCommand static IECore::ConstCompoundDataPtr g_originalClasses; static IECore::ConstObjectPtr g_newValue; static IECore::ConstCompoundDataPtr g_newClasses; - friend void IECoreMaya::parameterisedHolderAssignModificationState( IECore::ObjectPtr originalValue, IECore::CompoundDataPtr originalClasses, IECore::ObjectPtr newValue, IECore::CompoundDataPtr newClasses ); + friend void parameterisedHolderAssignModificationState( IECore::ObjectPtr originalValue, IECore::CompoundDataPtr originalClasses, IECore::ObjectPtr newValue, IECore::CompoundDataPtr newClasses ); }; } diff --git a/include/IECoreMaya/SceneShapeInterfaceComponentBoundIterator.h b/include/IECoreMaya/SceneShapeInterfaceComponentBoundIterator.h index af699feffe..0623110794 100644 --- a/include/IECoreMaya/SceneShapeInterfaceComponentBoundIterator.h +++ b/include/IECoreMaya/SceneShapeInterfaceComponentBoundIterator.h @@ -57,20 +57,26 @@ class IECOREMAYA_API SceneShapeInterfaceComponentBoundIterator : public MPxGeome SceneShapeInterfaceComponentBoundIterator( void *userGeometry, MObjectArray &components ); SceneShapeInterfaceComponentBoundIterator( void *userGeometry, MObject &components ); - ~SceneShapeInterfaceComponentBoundIterator(); - - virtual bool isDone() const; - virtual void next(); - virtual void reset(); - virtual void component( MObject &component ); - virtual bool hasPoints() const; - virtual int iteratorCount() const; - virtual MPoint point() const; - virtual void setPoint(const MPoint &) const; - virtual int setPointGetNext(MPoint &); - virtual int index() const; - virtual bool hasNormals() const; - virtual int indexUnsimplified() const; + ~SceneShapeInterfaceComponentBoundIterator() override = default; + + bool isDone() const override; + +#if MAYA_API_VERSION < 202200 + void next() override; +#else + MStatus next() override; +#endif + + void reset() override; + void component( MObject &component ) override; + bool hasPoints() const override; + int iteratorCount() const override; + MPoint point() const override; + void setPoint(const MPoint &) const override; + int setPointGetNext(MPoint &) override; + int index() const override; + bool hasNormals() const override; + int indexUnsimplified() const override; private: diff --git a/python/IECoreMaya/BoxParameterUI.py b/python/IECoreMaya/BoxParameterUI.py index 3a97d77d01..1e32280d6a 100644 --- a/python/IECoreMaya/BoxParameterUI.py +++ b/python/IECoreMaya/BoxParameterUI.py @@ -36,6 +36,7 @@ import IECore import IECoreMaya +from six.moves import range class BoxParameterUI( IECoreMaya.ParameterUI ) : diff --git a/python/IECoreMaya/ClassVectorParameterUI.py b/python/IECoreMaya/ClassVectorParameterUI.py index 20d41fc088..6f23b4e090 100644 --- a/python/IECoreMaya/ClassVectorParameterUI.py +++ b/python/IECoreMaya/ClassVectorParameterUI.py @@ -38,6 +38,7 @@ import IECore import IECoreMaya +from six.moves import range ## A ParameterUI for ClassVectorParameters. Supports the following Parameter userData entries : # @@ -676,7 +677,7 @@ def __layerMenu( self ) : result = IECore.MenuDefinition() - layerNames = self.__vectorParent().parameter.keys() + layerNames = list(self.__vectorParent().parameter.keys()) layerIndex = layerNames.index( self.__parameter.name ) result.append( diff --git a/python/IECoreMaya/DAGPathParameter.py b/python/IECoreMaya/DAGPathParameter.py index 9c2fd9f4d2..09bcdbcd3d 100644 --- a/python/IECoreMaya/DAGPathParameter.py +++ b/python/IECoreMaya/DAGPathParameter.py @@ -92,7 +92,7 @@ def __getattr__( self, attrName ): """ @staticmethod def pathValidator(): - return re.compile( "^(\|?[^\t\n\r\f\v\|]+)+\|?$" ) + return re.compile( r"^(\|?[^\t\n\r\f\v|]+)+\|?$" ) """ Returns (True, "") only if the value is a correct DAG path string and also checks that the DAG node exists or doesn't exist @@ -164,7 +164,7 @@ def getDAGPathValue( self ) : return dp except: if self.mustExist : - raise Exception, "Node '%s' does not exist!" % dagNodePath + raise Exception("Node '%s' does not exist!" % dagNodePath) return None IECore.registerRunTimeTyped( DAGPathParameter ) diff --git a/python/IECoreMaya/DAGPathVectorParameter.py b/python/IECoreMaya/DAGPathVectorParameter.py index f99bf12afa..984f4dc19d 100644 --- a/python/IECoreMaya/DAGPathVectorParameter.py +++ b/python/IECoreMaya/DAGPathVectorParameter.py @@ -36,7 +36,7 @@ from maya.OpenMaya import * import re -from DAGPathParameter import DAGPathParameter +from .DAGPathParameter import DAGPathParameter """ Parameter class for specifying a list of Maya DAG paths. @@ -172,7 +172,7 @@ def getDAGPathVectorValue( self ) : result.append( dp ) except: if self.mustExist : - raise Exception, "Node '%s' does not exist!" % dagNodePath + raise Exception("Node '%s' does not exist!" % dagNodePath) return result diff --git a/python/IECoreMaya/FileBrowser.py b/python/IECoreMaya/FileBrowser.py index ad67e1b145..d0051322ce 100644 --- a/python/IECoreMaya/FileBrowser.py +++ b/python/IECoreMaya/FileBrowser.py @@ -296,8 +296,8 @@ def __getItemsForPath( self, path, *args ) : try: fullDirContents = os.listdir( self.__path ) - except Exception, e : - print e + except Exception as e : + print(e) maya.cmds.evalDeferred( 'import maya.cmds; maya.cmds.confirmDialog( b="OK", title="Error retrieving file list...", message="%s" )' % e ) return @@ -624,7 +624,7 @@ def disconnect( self, callable ) : self.__slots.remove( callable ) -class _PathField( object, IECoreMaya.UIElement ) : +class _PathField( IECoreMaya.UIElement ) : def __init__( self, uiParent=None, **kw ) : @@ -674,7 +674,7 @@ def __emitValueChanged( self, *args ) : self.__s_valueChanged( self.value ) -class _FileList( object, IECoreMaya.UIElement ) : +class _FileList( IECoreMaya.UIElement ) : def __init__( self, uiParent=None, **kw ) : @@ -838,7 +838,7 @@ def __emitItemChosen( self, *args ) : self.__s_itemChosen( self.getItem( selection[0] ) ) -class _DefaultFileListSort( object, IECoreMaya.UIElement ) : +class _DefaultFileListSort( IECoreMaya.UIElement ) : def __init__( self, uiParent=None, **kw ) : diff --git a/python/IECoreMaya/FnDagNode.py b/python/IECoreMaya/FnDagNode.py index 8ae2bcc402..2f3b1bc230 100644 --- a/python/IECoreMaya/FnDagNode.py +++ b/python/IECoreMaya/FnDagNode.py @@ -38,7 +38,8 @@ import maya.cmds import IECore -import StringUtil +from . import StringUtil +import six ## This class extends Maya's MFnDagNode to add assorted helper functions. class FnDagNode( maya.OpenMaya.MFnDagNode ) : @@ -46,7 +47,7 @@ class FnDagNode( maya.OpenMaya.MFnDagNode ) : ## \param obj - MObject, This can also be a string or an MObjectHandle. def __init__( self, obj ) : - if isinstance( obj, str ) or isinstance( obj, unicode ) : + if isinstance( obj, str ) or isinstance( obj, six.text_type ) : obj = StringUtil.dependencyNodeFromString( obj ) @@ -114,7 +115,7 @@ def defaultShapeName( transformNode ): parentShort = transformNode.rpartition( "|" )[-1] - numbersMatch = re.search( "[0-9]+$", parentShort ) + numbersMatch = re.search( r"[0-9]+$", parentShort ) if numbersMatch is not None : numbers = numbersMatch.group() shapeName = parentShort[:-len(numbers)] + "Shape" + numbers diff --git a/python/IECoreMaya/FnOpHolder.py b/python/IECoreMaya/FnOpHolder.py index 3236a96c90..210a9cbcca 100644 --- a/python/IECoreMaya/FnOpHolder.py +++ b/python/IECoreMaya/FnOpHolder.py @@ -32,7 +32,7 @@ # ########################################################################## -from FnParameterisedHolder import FnParameterisedHolder +from .FnParameterisedHolder import FnParameterisedHolder import maya.cmds diff --git a/python/IECoreMaya/FnParameterisedHolder.py b/python/IECoreMaya/FnParameterisedHolder.py index c317f28041..254611446a 100644 --- a/python/IECoreMaya/FnParameterisedHolder.py +++ b/python/IECoreMaya/FnParameterisedHolder.py @@ -41,8 +41,10 @@ import IECore -import _IECoreMaya -import StringUtil +from . import _IECoreMaya +from . import StringUtil +import six +from six.moves import zip ## A function set for operating on the various IECoreMaya::ParameterisedHolder # types. This allows setting and getting of plug and parameter values, and @@ -53,7 +55,7 @@ class FnParameterisedHolder( maya.OpenMaya.MFnDependencyNode ) : # either be an MObject or a node name in string or unicode form. def __init__( self, object ) : - if isinstance( object, str ) or isinstance( object, unicode ) : + if isinstance( object, str ) or isinstance( object, six.text_type ) : object = StringUtil.dependencyNodeFromString( object ) maya.OpenMaya.MFnDependencyNode.__init__( self, object ) @@ -173,7 +175,7 @@ def parameterPlugPath( self, parameter ) : # of the maya plug or its OpenMaya.MPlug instance. def plugParameter( self, plug ) : - if isinstance( plug, str ) or isinstance( plug, unicode ) : + if isinstance( plug, str ) or isinstance( plug, six.text_type ) : plug = StringUtil.plugFromString( plug ) return _IECoreMaya._parameterisedHolderPlugParameter( self, plug ) @@ -298,7 +300,7 @@ def _classParameterStates( self, parameter=None, parentParameterPath="", result= classInfo = parameter.getClasses( True ) if classInfo : - classInfo = zip( *classInfo ) + classInfo = list(zip( *classInfo )) else : classInfo = [ [], [], [], [] ] diff --git a/python/IECoreMaya/FnSceneShape.py b/python/IECoreMaya/FnSceneShape.py index 9136e60b23..9fa84b6e5c 100644 --- a/python/IECoreMaya/FnSceneShape.py +++ b/python/IECoreMaya/FnSceneShape.py @@ -42,7 +42,9 @@ import IECore import IECoreScene import IECoreMaya -import StringUtil +from . import StringUtil +import six +from six.moves import range ## A function set for operating on the IECoreMaya::SceneShape type. @@ -73,7 +75,7 @@ class FnSceneShape( maya.OpenMaya.MFnDagNode ) : # either be an MObject or a node name in string or unicode form. # Note: Most of the member functions assume that this function set is initialized with the full dag path. def __init__( self, object ) : - if isinstance( object, basestring ) : + if isinstance( object, six.string_types ) : object = StringUtil.dagPathFromString( object ) maya.OpenMaya.MFnDagNode.__init__( self, object ) @@ -95,7 +97,7 @@ def create( parentName, transformParent = None, shadingEngine = None ) : @IECoreMaya.UndoFlush() def createShape( parentNode, shadingEngine = None ) : parentShort = parentNode.rpartition( "|" )[-1] - numbersMatch = re.search( "[0-9]+$", parentShort ) + numbersMatch = re.search( r"[0-9]+$", parentShort ) if numbersMatch is not None : numbers = numbersMatch.group() shapeName = parentShort[:-len(numbers)] + "SceneShape" + numbers @@ -163,7 +165,7 @@ def selectedComponentNames( self ) : ## Selects the components specified by the passed names. def selectComponentNames( self, componentNames ) : if not isinstance( componentNames, set ) : - if isinstance( componentNames, basestring ): + if isinstance( componentNames, six.string_types ): componentNames = set( (componentNames, ) ) else: componentNames = set( componentNames ) @@ -284,7 +286,7 @@ def __createChild( self, childName, sceneFile, sceneRoot, drawGeo = False, drawC # Set visible if I have any of the draw flags in my hierarchy, otherwise set hidden if drawTagsFilter: childTags = fnChild.sceneInterface().readTags( IECoreScene.SceneInterface.EveryTag ) - commonTags = filter( lambda x: str(x) in childTags, drawTagsFilter.split() ) + commonTags = [x for x in drawTagsFilter.split() if str(x) in childTags] if not commonTags: dgMod.newPlugValueBool( fnChildTransform.findPlug( "visibility" ), False ) else: diff --git a/python/IECoreMaya/FnTransientParameterisedHolderNode.py b/python/IECoreMaya/FnTransientParameterisedHolderNode.py index 8e7c73785f..6508b83266 100644 --- a/python/IECoreMaya/FnTransientParameterisedHolderNode.py +++ b/python/IECoreMaya/FnTransientParameterisedHolderNode.py @@ -37,8 +37,8 @@ import maya.OpenMaya import maya.cmds import IECoreMaya -import _IECoreMaya -import StringUtil +from . import _IECoreMaya +from . import StringUtil class FnTransientParameterisedHolderNode( IECoreMaya.FnParameterisedHolder ) : diff --git a/python/IECoreMaya/GenericParameterUI.py b/python/IECoreMaya/GenericParameterUI.py index 9101cf81c2..d24bcf53a7 100644 --- a/python/IECoreMaya/GenericParameterUI.py +++ b/python/IECoreMaya/GenericParameterUI.py @@ -38,6 +38,7 @@ import IECore import IECoreMaya.ParameterUI import IECoreMaya.StringUtil +from six.moves import range class GenericParameterUI( IECoreMaya.ParameterUI ) : diff --git a/python/IECoreMaya/LineSegmentParameterUI.py b/python/IECoreMaya/LineSegmentParameterUI.py index a24230e68c..668d37c16d 100644 --- a/python/IECoreMaya/LineSegmentParameterUI.py +++ b/python/IECoreMaya/LineSegmentParameterUI.py @@ -36,6 +36,7 @@ import IECore import IECoreMaya +from six.moves import range class LineSegmentParameterUI( IECoreMaya.ParameterUI ) : diff --git a/python/IECoreMaya/ManipulatorUI.py b/python/IECoreMaya/ManipulatorUI.py index 2267b4c0f6..e80c242657 100644 --- a/python/IECoreMaya/ManipulatorUI.py +++ b/python/IECoreMaya/ManipulatorUI.py @@ -64,7 +64,7 @@ def __manupulateMenuModifier( menuDefinition, parameter, node, parent=None ) : if parameterManip not in maya.cmds.listNodeTypes( 'ieParameterManipulator' ) : return - if len( menuDefinition.items() ): + if len( list(menuDefinition.items()) ): menuDefinition.append( "/ManipulateDivider", { "divider" : True } ) menuDefinition.append( diff --git a/python/IECoreMaya/MayaTypeId.py b/python/IECoreMaya/MayaTypeId.py index 2343376061..13a2e684b8 100644 --- a/python/IECoreMaya/MayaTypeId.py +++ b/python/IECoreMaya/MayaTypeId.py @@ -33,7 +33,8 @@ ########################################################################## import maya.OpenMaya -import _IECoreMaya +from . import _IECoreMaya +import six class _MayaTypeIdMeta(type): @@ -45,7 +46,7 @@ def __getattr__( self, n ) : return maya.OpenMaya.MTypeId( getattr( _IECoreMaya._MayaTypeId, n ) ) -class MayaTypeId : +class MayaTypeId(six.with_metaclass(_MayaTypeIdMeta)) : - __metaclass__ = _MayaTypeIdMeta + pass diff --git a/python/IECoreMaya/Menu.py b/python/IECoreMaya/Menu.py index 2b210a7232..ab60980115 100644 --- a/python/IECoreMaya/Menu.py +++ b/python/IECoreMaya/Menu.py @@ -37,7 +37,7 @@ import IECore -from UIElement import UIElement +from .UIElement import UIElement ## A class for making maya menus from an IECore.MenuDefinition. The menu is built dynamically when it's # displayed, so the definition can be edited at any time to change the menu. @@ -106,7 +106,7 @@ def _parseDefinition( self, parent, definition ): if not isinstance( definition, IECore.MenuDefinition ): raise IECore.Exception( "Definition is not a valid IECore.MenuDefinition object." ) - allPaths = dict(definition.items()).keys() + allPaths = list(dict(definition.items()).keys()) rootItemDefinitions = IECore.MenuDefinition( [] ) # scan definition once and get root item definitions @@ -178,4 +178,4 @@ def __wrapCallback( self, cb ) : def __postMenu( self, parent, definition, *args ) : maya.cmds.menu( parent, edit = True, deleteAllItems = True ) - self._parseDefinition( parent, definition ) \ No newline at end of file + self._parseDefinition( parent, definition ) diff --git a/python/IECoreMaya/MeshOpHolderUtil.py b/python/IECoreMaya/MeshOpHolderUtil.py index f5ddffa968..c869b6f77a 100644 --- a/python/IECoreMaya/MeshOpHolderUtil.py +++ b/python/IECoreMaya/MeshOpHolderUtil.py @@ -37,6 +37,7 @@ import IECoreMaya import IECore +from six.moves import range def __getFloat3PlugValue(plug): diff --git a/python/IECoreMaya/NodeParameter.py b/python/IECoreMaya/NodeParameter.py index 80447f489c..cd92e10533 100644 --- a/python/IECoreMaya/NodeParameter.py +++ b/python/IECoreMaya/NodeParameter.py @@ -91,7 +91,7 @@ def __getattr__( self, attrName ): """ @staticmethod def pathValidator(): - return re.compile( "^(\|?[^\t\n\r\f\v\|]+)+\|?$" ) + return re.compile( r"^(\|?[^\t\n\r\f\v|]+)+\|?$" ) """ Returns (True, "") only if the value is a correct dependency nodestring and also checks that the node exists or doesn't exist diff --git a/python/IECoreMaya/NumericParameterUI.py b/python/IECoreMaya/NumericParameterUI.py index cb8d5d558e..7486624787 100644 --- a/python/IECoreMaya/NumericParameterUI.py +++ b/python/IECoreMaya/NumericParameterUI.py @@ -90,7 +90,7 @@ def __init__( self, node, parameter, **kw ) : kw['precision'] = 12 - if parameter.userData().has_key( 'UI' ) : + if 'UI' in parameter.userData() : if self.parameter.isInstanceOf( IECore.TypeId.DoubleParameter ) or self.parameter.isInstanceOf( IECore.TypeId.FloatParameter ): precision = parameter.userData()['UI'].get( "precision", None ) diff --git a/python/IECoreMaya/NumericVectorParameterUI.py b/python/IECoreMaya/NumericVectorParameterUI.py index 83ca307001..8cd1de10fc 100644 --- a/python/IECoreMaya/NumericVectorParameterUI.py +++ b/python/IECoreMaya/NumericVectorParameterUI.py @@ -36,6 +36,7 @@ import IECore import IECoreMaya +from six.moves import range class NumericVectorParameterUI( IECoreMaya.ParameterUI ) : diff --git a/python/IECoreMaya/OpWindow.py b/python/IECoreMaya/OpWindow.py index 57faf15376..c5f5bfc0fb 100644 --- a/python/IECoreMaya/OpWindow.py +++ b/python/IECoreMaya/OpWindow.py @@ -128,7 +128,7 @@ def __goPressed( self ) : result = None try : result = op() - except Exception, e : + except Exception as e : buttonPressed = maya.cmds.confirmDialog( title="Execution Error", message="Error : " + e.message, diff --git a/python/IECoreMaya/ParameterClipboardUI.py b/python/IECoreMaya/ParameterClipboardUI.py index 538e4adca6..302ec85eab 100644 --- a/python/IECoreMaya/ParameterClipboardUI.py +++ b/python/IECoreMaya/ParameterClipboardUI.py @@ -66,7 +66,7 @@ def __copyPasteMenuModifier( menuDefinition, parameter, node, parent=None ) : pasteString = '%s.paste( "%s" )' % ( commandBase, plugPath ) pasteLinkedString = '%s.pasteLinked( "%s" )' % ( commandBase, plugPath ) - if len( menuDefinition.items() ): + if len( list(menuDefinition.items()) ): menuDefinition.append( "/CopyPasteDivider", { "divider" : True } ) copyActive = True @@ -243,7 +243,7 @@ def paste( plugPath ) : parameter = fnPh.plugParameter( plugPath ) if not _ieCoreParameterClipboardUIBuffer.applicableTo( fnPh.getParameterised()[0], parameter ): - raise RuntimeError, "The parameters on the clipboard are not applicable to '%s'" % plugPath + raise RuntimeError("The parameters on the clipboard are not applicable to '%s'" % plugPath) fnPh.setParameterisedValues() @@ -265,7 +265,7 @@ def pasteLinked( plugPath ) : parameter = fnPh.plugParameter( plugPath ) if not _ieCoreParameterClipboardUIBuffer.applicableTo( fnPh.getParameterised()[0], parameter ): - raise RuntimeError, "The parameters on the clipboard are not applicable to '%s'" % plugPath + raise RuntimeError("The parameters on the clipboard are not applicable to '%s'" % plugPath) # Apply the preset to make sure that the children are there fnPh.setParameterisedValues() @@ -275,17 +275,17 @@ def pasteLinked( plugPath ) : # Connect up if not maya.cmds.objExists( _ieCoreParameterClipboardUILastNode ) : - raise RuntimeError, "The source node '%s' no longer exists." % _ieCoreParameterClipboardUILastNode + raise RuntimeError("The source node '%s' no longer exists." % _ieCoreParameterClipboardUILastNode) if not _ieCoreParameterClipboardUILastRoot : - raise RuntimeError, "Unable to link, the source root parameter is not known." % _ieCoreParameterClipboardUILastNode + raise RuntimeError("Unable to link, the source root parameter is not known." % _ieCoreParameterClipboardUILastNode) sourceNodeHolder = IECoreMaya.FnParameterisedHolder( _ieCoreParameterClipboardUILastNode ) sourceRootPlugPath = sourceNodeHolder.parameterPlugPath( _ieCoreParameterClipboardUILastRoot ) if sourceRootPlugPath == plugPath : - raise RuntimeError, "The source and destination parameters are the same, unable to link." + raise RuntimeError("The source and destination parameters are the same, unable to link.") for p in _ieCoreParameterClipboardUILastParameterList : sourcePlugPath = sourceNodeHolder.parameterPlugPath( p ) diff --git a/python/IECoreMaya/ParameterUI.py b/python/IECoreMaya/ParameterUI.py index 72a2d3b2a0..a4bd7d38a2 100644 --- a/python/IECoreMaya/ParameterUI.py +++ b/python/IECoreMaya/ParameterUI.py @@ -80,7 +80,7 @@ def replace( self, node, parameter ) : def node( self ) : if not self.__node.isValid() : - raise RuntimeError, "IECoreMaya.ParameterUI.node(): The requested node is not valid" + raise RuntimeError("IECoreMaya.ParameterUI.node(): The requested node is not valid") return self.__node.object() diff --git a/python/IECoreMaya/PresetsUI.py b/python/IECoreMaya/PresetsUI.py index 1a722d9e70..3cd9abda9c 100644 --- a/python/IECoreMaya/PresetsUI.py +++ b/python/IECoreMaya/PresetsUI.py @@ -34,17 +34,18 @@ from __future__ import with_statement +from __future__ import division import os, re import maya.cmds import IECore -from UIElement import UIElement -from FnParameterisedHolder import FnParameterisedHolder -from ClassParameterUI import ClassParameterUI -from ClassVectorParameterUI import ClassVectorParameterUI -from FnTransientParameterisedHolderNode import FnTransientParameterisedHolderNode +from .UIElement import UIElement +from .FnParameterisedHolder import FnParameterisedHolder +from .ClassParameterUI import ClassParameterUI +from .ClassVectorParameterUI import ClassVectorParameterUI +from .FnTransientParameterisedHolderNode import FnTransientParameterisedHolderNode __all__ = [ 'PresetsUI', 'SavePresetUI', 'LoadPresetUI' ] @@ -56,7 +57,7 @@ def __savePresetMenuModifier( menuDefinition, parameter, node, parent=None ) : fnPh = FnParameterisedHolder( node ) plugPath = fnPh.parameterPlugPath( parameter ) - if len( menuDefinition.items() ): + if len( list(menuDefinition.items()) ): menuDefinition.append( "/PresetsDivider", { "divider" : True } ) saveItemName = "/Presets/Save Preset..." @@ -115,7 +116,7 @@ def __init__( self, node, rootParameter=None ) : try : fn = FnParameterisedHolder( node ) except: - raise ValueError, 'PresetsUI: "%s" is not a valid Parameterised object.' % node + raise ValueError('PresetsUI: "%s" is not a valid Parameterised object.' % node) self.__node = node self.__rootParameter = rootParameter @@ -446,7 +447,7 @@ def __selectionChanged( self, *args ) : def __doLoad( self ) : - loaded = self.__loadedPresets.keys() + loaded = list(self.__loadedPresets.keys()) selected = [ s for s in self.__selector.selected() if s in loaded ] if not selected : @@ -531,7 +532,7 @@ def setPresets( self, presets=() ) : align = "left" ) - wrapWidth = ( int(maya.cmds.layout( self.__parent, query=True, width=True )) - 5 ) / 5 + wrapWidth = ( int(maya.cmds.layout( self.__parent, query=True, width=True )) - 5 ) // 5 if "description" in meta and meta["description"]: descripWrap = IECore.StringUtil.wrap( meta["description"], wrapWidth ) @@ -546,7 +547,7 @@ def setPresets( self, presets=() ) : style = "none", ) - if len( p.parameters().keys() ) : + if len( list(p.parameters().keys()) ) : self.__parameterHolders[ name ] = FnTransientParameterisedHolderNode.create( self.__layout, p ) # This must be called before querying the parameters of any presets passed to this UI @@ -612,7 +613,7 @@ def __init__( self, presets, parent=None, *args, **kwargs ) : else : presetsByPath = {} for ( name, p ) in presets : - print name, p + print(name, p) path = os.path.dirname( p._cob ).rpartition( p.typeName() )[0] if path not in presetsByPath : presetsByPath[path] = [] diff --git a/python/IECoreMaya/SceneShapeUI.py b/python/IECoreMaya/SceneShapeUI.py index a015542953..f25ca61122 100644 --- a/python/IECoreMaya/SceneShapeUI.py +++ b/python/IECoreMaya/SceneShapeUI.py @@ -133,7 +133,7 @@ def _menuDefinition( callbackShape ) : [ ("/Recursive Expand As Geometry", { "blindData" : { "maya" : { "radialPosition" : "W" } }, "command" : functools.partial( _expandAsGeometry, sceneShapes)})] ) mainDef.append( "/Expand...", { "blindData" : { "maya" : { "radialPosition" : "SE" } }, "subMenu" : expandDef } ) - if any( map( lambda x : x.canBeExpanded(), fnShapes ) ) : + if any( [x.canBeExpanded() for x in fnShapes] ) : expandDef.append( "/Expand One Level", { "blindData" : { "maya" : { "radialPosition" : "S" } }, "command" : functools.partial( __expandOnce, sceneShapes ) } ) expandDef.append( "/Recursive Expand", { "blindData" : { "maya" : { "radialPosition" : "E" } }, "command" : functools.partial( _expandAll, sceneShapes)}) @@ -142,7 +142,7 @@ def _menuDefinition( callbackShape ) : expandDef.append( "/Expand to Selected Components", { "blindData" : { "maya" : { "radialPosition" : "S" } }, "command" : functools.partial( __expandToSelected, sceneShapes[ 0 ] ) } ) if tagTree : - tags = tagTree.keys() + tags = list(tagTree.keys()) tags.sort() def addTagSubMenuItems( menuDef, command ) : @@ -178,7 +178,7 @@ def addTagSubMenuItems( menuDef, command ) : parentSceneShape = __parentSceneShape( sceneShapes ) # COLLAPSE - if any( map( lambda x : x.canBeCollapsed(), fnShapes ) ) or (parentSceneShape and IECoreMaya.FnSceneShape( parentSceneShape ).canBeCollapsed()) : + if any( [x.canBeCollapsed() for x in fnShapes] ) or (parentSceneShape and IECoreMaya.FnSceneShape( parentSceneShape ).canBeCollapsed()) : collapseDef = IECore.MenuDefinition() @@ -187,7 +187,7 @@ def addTagSubMenuItems( menuDef, command ) : collapseDef.append( "/Collapse to Parent: {}".format( parentName ), { "blindData" : { "maya" : { "radialPosition" : "N" } }, "command" : functools.partial( __collapseChildren, [ parentSceneShape ] ) } ) - if any( map( lambda x : x.canBeCollapsed(), fnShapes ) ) : + if any( [x.canBeCollapsed() for x in fnShapes] ) : collapseDef.append( "/Collapse Children", { "blindData" : { "maya" : { "radialPosition" : "W" } }, "command" : functools.partial( __collapseChildren, sceneShapes ) } ) mainDef.append( "/Collapse...", { "blindData" : { "maya" : { "radialPosition" : "SW" } }, "subMenu" : collapseDef } ) @@ -262,9 +262,9 @@ def __printComponents( sceneShape, *unused ) : fnS = IECoreMaya.FnSceneShape( sceneShape ) names = fnS.componentNames() names.sort() - print "\n" - print " ".join( names ) , - print "\n" + print("\n") + print(" ".join( names ), end=' ') + print("\n") ## Print the selected component names for the scene shape def __printSelectedComponents( sceneShape, *unused ) : @@ -274,9 +274,9 @@ def __printSelectedComponents( sceneShape, *unused ) : if selectedNames: selectedNames = list( selectedNames ) selectedNames.sort() - print "\n" - print " ".join( selectedNames ) , - print "\n" + print("\n") + print(" ".join( selectedNames ), end=' ') + print("\n") ## Expand each scene shape one level down def __expandOnce( sceneShapes, *unused ) : @@ -285,7 +285,7 @@ def __expandOnce( sceneShapes, *unused ) : for sceneShape in sceneShapes: fnS = IECoreMaya.FnSceneShape( sceneShape ) new = fnS.expandOnce( preserveNamespace=True ) - toSelect.extend( map( lambda x: x.fullPathName(), new ) ) + toSelect.extend( [x.fullPathName() for x in new] ) if toSelect: maya.cmds.select( toSelect, replace=True ) @@ -297,7 +297,7 @@ def _expandAll( sceneShapes, tagName=None, *unused) : fnS = IECoreMaya.FnSceneShape( sceneShape ) newFn = fnS.expandAll( preserveNamespace=True, tagName=tagName ) - toSelect.extend( map( lambda x: x.fullPathName(), newFn ) ) + toSelect.extend( [x.fullPathName() for x in newFn] ) if toSelect: maya.cmds.select( toSelect, replace=True ) @@ -426,4 +426,4 @@ def __createLocatorWithTransform( sceneShape, *unused ) : for name in selectedNames : locators.append( fnSc.createLocatorAtTransform( name ) ) - maya.cmds.select( locators, replace=True ) \ No newline at end of file + maya.cmds.select( locators, replace=True ) diff --git a/python/IECoreMaya/SplineParameterUI.py b/python/IECoreMaya/SplineParameterUI.py index 2582cd07dd..108d810f6d 100644 --- a/python/IECoreMaya/SplineParameterUI.py +++ b/python/IECoreMaya/SplineParameterUI.py @@ -35,7 +35,7 @@ import IECore import IECoreMaya import maya.cmds -from ParameterUI import ParameterUI +from .ParameterUI import ParameterUI import re class SplineParameterUI( ParameterUI ) : @@ -91,7 +91,7 @@ def __openEditWindow( self, unused ) : if not self.__editWindow : - editWindowName = re.sub( "[\|\.]" , "_", self.plugName() ) + editWindowName = re.sub( r"[|.]" , "_", self.plugName() ) if maya.cmds.window( editWindowName, q=True, exists=True ): maya.cmds.deleteUI( editWindowName ) diff --git a/python/IECoreMaya/StringParameterUI.py b/python/IECoreMaya/StringParameterUI.py index 23d2832e40..5ab396c0b5 100644 --- a/python/IECoreMaya/StringParameterUI.py +++ b/python/IECoreMaya/StringParameterUI.py @@ -44,6 +44,7 @@ import IECore import IECoreMaya +from six.moves import range ## A UI for StringParameters. Supports the following parameter user data : # diff --git a/python/IECoreMaya/StringUtil.py b/python/IECoreMaya/StringUtil.py index 63937b8976..b6689906e3 100644 --- a/python/IECoreMaya/StringUtil.py +++ b/python/IECoreMaya/StringUtil.py @@ -105,4 +105,4 @@ def pathFromPlug( p ) : ## Extracts the node name from a full path to an attribute. def nodeFromAttributePath( a ) : - return re.match( "^[^.]*", a ).group( 0 ) + return re.match( r"^[^.]*", a ).group( 0 ) diff --git a/python/IECoreMaya/StringVectorParameterUI.py b/python/IECoreMaya/StringVectorParameterUI.py index f73d570245..b3a47d2ce4 100644 --- a/python/IECoreMaya/StringVectorParameterUI.py +++ b/python/IECoreMaya/StringVectorParameterUI.py @@ -36,6 +36,7 @@ import IECore import IECoreMaya +from six.moves import range ## \todo: this is incredibly similar to NumericVectorParameterUI. Is it possible to generalize ## a ParameterUI for all *VectorParameters? diff --git a/python/IECoreMaya/TemporaryAttributeValues.py b/python/IECoreMaya/TemporaryAttributeValues.py index 3093f5d002..942481a650 100644 --- a/python/IECoreMaya/TemporaryAttributeValues.py +++ b/python/IECoreMaya/TemporaryAttributeValues.py @@ -37,7 +37,7 @@ import IECore -import StringUtil +from . import StringUtil ## A context manager for controlling attribute values in with statements. It # sets attributes to requested values on entering the block and resets them to diff --git a/python/IECoreMaya/VectorParameterUI.py b/python/IECoreMaya/VectorParameterUI.py index 94994b0255..8d73c16274 100644 --- a/python/IECoreMaya/VectorParameterUI.py +++ b/python/IECoreMaya/VectorParameterUI.py @@ -36,6 +36,7 @@ import IECore import IECoreMaya +from six.moves import range class VectorParameterUI( IECoreMaya.ParameterUI ) : diff --git a/python/IECoreMaya/__init__.py b/python/IECoreMaya/__init__.py index 7372b97d8a..a82438552d 100644 --- a/python/IECoreMaya/__init__.py +++ b/python/IECoreMaya/__init__.py @@ -34,72 +34,72 @@ __import__( "IECoreScene" ) -from _IECoreMaya import * +from ._IECoreMaya import * -from UIElement import UIElement -from ParameterUI import ParameterUI -from BoolParameterUI import BoolParameterUI -from StringParameterUI import StringParameterUI -from PathParameterUI import PathParameterUI -from FileNameParameterUI import FileNameParameterUI -from DirNameParameterUI import DirNameParameterUI -from FileSequenceParameterUI import FileSequenceParameterUI -from NumericParameterUI import NumericParameterUI -from VectorParameterUI import VectorParameterUI -from ColorParameterUI import ColorParameterUI -from BoxParameterUI import BoxParameterUI -from SplineParameterUI import SplineParameterUI -from NoteParameterUI import NoteParameterUI -from NodeParameter import NodeParameter -from DAGPathParameter import DAGPathParameter -from DAGPathVectorParameter import DAGPathVectorParameter -from mayaDo import mayaDo -from Menu import Menu -from BakeTransform import BakeTransform -from MeshOpHolderUtil import create -from MeshOpHolderUtil import createUI -from ScopedSelection import ScopedSelection -from FnParameterisedHolder import FnParameterisedHolder -from FnConverterHolder import FnConverterHolder -from StringUtil import * -from MayaTypeId import MayaTypeId -from ParameterPanel import ParameterPanel -from AttributeEditorControl import AttributeEditorControl -from OpWindow import OpWindow -from FnTransientParameterisedHolderNode import FnTransientParameterisedHolderNode -from UndoDisabled import UndoDisabled -from ModalDialogue import ModalDialogue -from Panel import Panel -from WaitCursor import WaitCursor -from FnOpHolder import FnOpHolder -from UITemplate import UITemplate -from FnParameterisedHolderSet import FnParameterisedHolderSet -from TemporaryAttributeValues import TemporaryAttributeValues -from GenericParameterUI import GenericParameterUI -from FnDagNode import FnDagNode -from CompoundParameterUI import CompoundParameterUI -from ClassParameterUI import ClassParameterUI -from ClassVectorParameterUI import ClassVectorParameterUI -from PresetsOnlyParameterUI import PresetsOnlyParameterUI -from TestCase import TestCase -from TestProgram import TestProgram -from FileBrowser import FileBrowser -from FileDialog import FileDialog -from GeometryCombinerUI import * -from PresetsUI import * -from ParameterClipboardUI import * -from NumericVectorParameterUI import NumericVectorParameterUI -from StringVectorParameterUI import StringVectorParameterUI -from ManipulatorUI import * -from TransformationMatrixParameterUI import TransformationMatrixParameterUI -from LineSegmentParameterUI import LineSegmentParameterUI -from Collapsible import Collapsible -from RefreshDisabled import RefreshDisabled -from UndoChunk import UndoChunk -from UndoFlush import UndoFlush +from .UIElement import UIElement +from .ParameterUI import ParameterUI +from .BoolParameterUI import BoolParameterUI +from .StringParameterUI import StringParameterUI +from .PathParameterUI import PathParameterUI +from .FileNameParameterUI import FileNameParameterUI +from .DirNameParameterUI import DirNameParameterUI +from .FileSequenceParameterUI import FileSequenceParameterUI +from .NumericParameterUI import NumericParameterUI +from .VectorParameterUI import VectorParameterUI +from .ColorParameterUI import ColorParameterUI +from .BoxParameterUI import BoxParameterUI +from .SplineParameterUI import SplineParameterUI +from .NoteParameterUI import NoteParameterUI +from .NodeParameter import NodeParameter +from .DAGPathParameter import DAGPathParameter +from .DAGPathVectorParameter import DAGPathVectorParameter +from .mayaDo import mayaDo +from .Menu import Menu +from .BakeTransform import BakeTransform +from .MeshOpHolderUtil import create +from .MeshOpHolderUtil import createUI +from .ScopedSelection import ScopedSelection +from .FnParameterisedHolder import FnParameterisedHolder +from .FnConverterHolder import FnConverterHolder +from .StringUtil import * +from .MayaTypeId import MayaTypeId +from .ParameterPanel import ParameterPanel +from .AttributeEditorControl import AttributeEditorControl +from .OpWindow import OpWindow +from .FnTransientParameterisedHolderNode import FnTransientParameterisedHolderNode +from .UndoDisabled import UndoDisabled +from .ModalDialogue import ModalDialogue +from .Panel import Panel +from .WaitCursor import WaitCursor +from .FnOpHolder import FnOpHolder +from .UITemplate import UITemplate +from .FnParameterisedHolderSet import FnParameterisedHolderSet +from .TemporaryAttributeValues import TemporaryAttributeValues +from .GenericParameterUI import GenericParameterUI +from .FnDagNode import FnDagNode +from .CompoundParameterUI import CompoundParameterUI +from .ClassParameterUI import ClassParameterUI +from .ClassVectorParameterUI import ClassVectorParameterUI +from .PresetsOnlyParameterUI import PresetsOnlyParameterUI +from .TestCase import TestCase +from .TestProgram import TestProgram +from .FileBrowser import FileBrowser +from .FileDialog import FileDialog +from .GeometryCombinerUI import * +from .PresetsUI import * +from .ParameterClipboardUI import * +from .NumericVectorParameterUI import NumericVectorParameterUI +from .StringVectorParameterUI import StringVectorParameterUI +from .ManipulatorUI import * +from .TransformationMatrixParameterUI import TransformationMatrixParameterUI +from .LineSegmentParameterUI import LineSegmentParameterUI +from .Collapsible import Collapsible +from .RefreshDisabled import RefreshDisabled +from .UndoChunk import UndoChunk +from .UndoFlush import UndoFlush -import Menus -import SceneShapeUI -from FnSceneShape import FnSceneShape +from . import Menus +from . import SceneShapeUI +from .FnSceneShape import FnSceneShape __import__( "IECore" ).loadConfig( "CORTEX_STARTUP_PATHS", subdirectory = "IECoreMaya" ) diff --git a/python/IECoreMaya/mayaDo.py b/python/IECoreMaya/mayaDo.py index 4c57cb7647..8507e7bddc 100644 --- a/python/IECoreMaya/mayaDo.py +++ b/python/IECoreMaya/mayaDo.py @@ -54,7 +54,7 @@ def mayaDo( opName, opVersion = None, help = False, **opArgs ): if len( plugins ) == 0: plugins = loader.classNames( "*/%s" % opName ) # eliminate actions in maya because they may be for other maya versions. - plugins = filter( lambda x: not x.startswith( "maya/" ), plugins ) + plugins = [x for x in plugins if not x.startswith( "maya/" )] if not len( plugins ) : IECore.error( "Action \"%s\" does not exist.\n" % opName ) @@ -76,7 +76,7 @@ def mayaDo( opName, opVersion = None, help = False, **opArgs ): opType = loader.load( actionName, opVersion ) myOp = opType() - except Exception, e: + except Exception as e: IECore.debugException( "Failed on trying to load ", opName ) IECore.error( "Error loading", opName, ":", str(e) ) return None @@ -94,13 +94,13 @@ def mayaDo( opName, opVersion = None, help = False, **opArgs ): try: res = myOp( **opArgs ) - except Exception, e: + except Exception as e: IECore.error( 'Error executing Op', myOp.name, ':', str(e) ) return None else: try: if myOp.userData()['UI']['showResult'].value: - print res + print(res) except: pass diff --git a/src/IECoreMaya/ClassParameterHandler.cpp b/src/IECoreMaya/ClassParameterHandler.cpp index 1edc55a0c6..0699d78e0e 100644 --- a/src/IECoreMaya/ClassParameterHandler.cpp +++ b/src/IECoreMaya/ClassParameterHandler.cpp @@ -61,7 +61,7 @@ MStatus ClassParameterHandler::setClass( IECore::ParameterPtr parameter, const M boost::python::object pythonParameter( parameter ); pythonParameter.attr( "setClass" )( className.asChar(), classVersion, searchPathEnvVar.asChar() ); } - catch( boost::python::error_already_set ) + catch( boost::python::error_already_set &e ) { PyErr_Print(); return MS::kFailure; @@ -88,7 +88,7 @@ MStatus ClassParameterHandler::getClass( IECore::ConstParameterPtr parameter, MS return MS::kSuccess; } - catch( boost::python::error_already_set ) + catch( boost::python::error_already_set &e ) { PyErr_Print(); } @@ -327,7 +327,7 @@ MStatus ClassParameterHandler::storeClass( IECore::ConstParameterPtr parameter, } } } - catch( boost::python::error_already_set ) + catch( boost::python::error_already_set &e ) { PyErr_Print(); return MS::kFailure; diff --git a/src/IECoreMaya/ClassVectorParameterHandler.cpp b/src/IECoreMaya/ClassVectorParameterHandler.cpp index 4525d118bf..e64a9b402c 100644 --- a/src/IECoreMaya/ClassVectorParameterHandler.cpp +++ b/src/IECoreMaya/ClassVectorParameterHandler.cpp @@ -72,7 +72,7 @@ MStatus ClassVectorParameterHandler::setClasses( IECore::ParameterPtr parameter, pythonParameter.attr( "setClasses" )( classes ); } - catch( boost::python::error_already_set ) + catch( boost::python::error_already_set &e ) { PyErr_Print(); return MS::kFailure; @@ -104,7 +104,7 @@ MStatus ClassVectorParameterHandler::getClasses( IECore::ConstParameterPtr param return MS::kSuccess; } - catch( boost::python::error_already_set ) + catch( boost::python::error_already_set &e ) { PyErr_Print(); } @@ -385,7 +385,7 @@ MStatus ClassVectorParameterHandler::storeClasses( IECore::ConstParameterPtr par } } } - catch( boost::python::error_already_set ) + catch( boost::python::error_already_set &e ) { PyErr_Print(); return MS::kFailure; diff --git a/src/IECoreMaya/DateTimeParameterHandler.cpp b/src/IECoreMaya/DateTimeParameterHandler.cpp index acfeec74df..52e0f6b8e9 100644 --- a/src/IECoreMaya/DateTimeParameterHandler.cpp +++ b/src/IECoreMaya/DateTimeParameterHandler.cpp @@ -77,7 +77,7 @@ MStatus DateTimeParameterHandler::doUpdate( IECore::ConstParameterPtr parameter, { boost::posix_time::from_iso_string( v.asChar() ); } - catch ( boost::bad_lexical_cast ) + catch ( boost::bad_lexical_cast &e ) { return MS::kFailure; } diff --git a/src/IECoreMaya/DrawableHolder.cpp b/src/IECoreMaya/DrawableHolder.cpp index cb7bb9f5d8..25213833d7 100644 --- a/src/IECoreMaya/DrawableHolder.cpp +++ b/src/IECoreMaya/DrawableHolder.cpp @@ -153,7 +153,7 @@ IECoreGL::ConstScenePtr DrawableHolder::scene() m_scene->setCamera( 0 ); } - catch( boost::python::error_already_set ) + catch( boost::python::error_already_set &e ) { IECorePython::ScopedGILLock gilLock; PyErr_Print(); diff --git a/src/IECoreMaya/ImagePlaneHolder.cpp b/src/IECoreMaya/ImagePlaneHolder.cpp index 96759aa62e..e9a54c3597 100644 --- a/src/IECoreMaya/ImagePlaneHolder.cpp +++ b/src/IECoreMaya/ImagePlaneHolder.cpp @@ -139,7 +139,7 @@ MStatus ImagePlaneHolder::loadImageMap ( const MString &fileName, int frame, MIm MGlobal::displayError( e.what() ); return MS::kFailure; } - catch( boost::python::error_already_set & ) + catch( boost::python::error_already_set &e ) { IECorePython::ScopedGILLock gilLock; PyErr_Print(); diff --git a/src/IECoreMaya/OpHolder.cpp b/src/IECoreMaya/OpHolder.cpp index ffb6253fd2..c8c1ad9ba9 100644 --- a/src/IECoreMaya/OpHolder.cpp +++ b/src/IECoreMaya/OpHolder.cpp @@ -192,7 +192,7 @@ MStatus OpHolder::compute( const MPlug &plug, MDataBlock &block ) MGlobal::displayError( e.what() ); return MS::kFailure; } - catch( boost::python::error_already_set & ) + catch( boost::python::error_already_set &e ) { IECorePython::ScopedGILLock lock; PyErr_Print(); diff --git a/src/IECoreMaya/ParameterisedHolder.cpp b/src/IECoreMaya/ParameterisedHolder.cpp index 5a4f354d05..c93e933e52 100644 --- a/src/IECoreMaya/ParameterisedHolder.cpp +++ b/src/IECoreMaya/ParameterisedHolder.cpp @@ -641,7 +641,7 @@ IECore::RunTimeTypedPtr ParameterisedHolder::loadClass( const MString &classN object result( resultHandle ); return extract( result )(); } - catch( error_already_set & ) + catch( error_already_set &e ) { MFnDependencyNode fnDN( B::thisMObject() ); diff --git a/src/IECoreMaya/PythonCmd.cpp b/src/IECoreMaya/PythonCmd.cpp index 48ba196390..1926b8a547 100644 --- a/src/IECoreMaya/PythonCmd.cpp +++ b/src/IECoreMaya/PythonCmd.cpp @@ -72,11 +72,6 @@ object PythonCmd::g_globalContext; bool PythonCmd::g_initialized; PythonCmd::ContextMap PythonCmd::g_contextMap; -namespace -{ - PyMethodDef initial_methods[] = { { 0, 0, 0, 0 } }; -} - void PythonCmd::import( const std::string &moduleName ) { IECorePython::ScopedGILLock lock; @@ -120,10 +115,6 @@ void PythonCmd::initialize() assert(sysModules); object mainModule(borrowed(PyDict_GetItemString(sysModules, "__main__"))); - if (!mainModule) - { - mainModule = object(borrowed(Py_InitModule("__main__", initial_methods))); - } assert( mainModule ); /// Retrieve the global context from the __main__ module @@ -329,7 +320,7 @@ MStatus PythonCmd::doIt( const MArgList &argList ) )); return MS::kSuccess; } - catch(error_already_set) + catch(error_already_set &e) { PyErr_Print(); return MS::kFailure; @@ -376,7 +367,7 @@ MStatus PythonCmd::doIt( const MArgList &argList ) )); return MS::kSuccess; } - catch(error_already_set) + catch(error_already_set &e) { PyErr_Print(); return MS::kFailure; @@ -417,7 +408,7 @@ MStatus PythonCmd::doIt( const MArgList &argList ) setResult( strResult.c_str() ); return MS::kSuccess; } - catch(error_already_set) + catch(error_already_set &e) { PyErr_Print(); return MS::kFailure; diff --git a/src/IECoreMaya/SceneShapeInterfaceComponentBoundIterator.cpp b/src/IECoreMaya/SceneShapeInterfaceComponentBoundIterator.cpp index 5aef091176..b7cccbdff8 100644 --- a/src/IECoreMaya/SceneShapeInterfaceComponentBoundIterator.cpp +++ b/src/IECoreMaya/SceneShapeInterfaceComponentBoundIterator.cpp @@ -70,10 +70,6 @@ void SceneShapeInterfaceComponentBoundIterator::computeNumComponents() } } -SceneShapeInterfaceComponentBoundIterator::~SceneShapeInterfaceComponentBoundIterator() -{ -} - void SceneShapeInterfaceComponentBoundIterator::reset() { m_idx = 0; @@ -122,10 +118,24 @@ bool SceneShapeInterfaceComponentBoundIterator::isDone() const return m_idx >= m_numComponents * 8; } +#if MAYA_API_VERSION < 202200 void SceneShapeInterfaceComponentBoundIterator::next() { ++m_idx; } +#else +MStatus SceneShapeInterfaceComponentBoundIterator::next() +{ + if( isDone() ) + { + return MS::kFailure; + } + + ++m_idx; + + return MS::kSuccess; +} +#endif void SceneShapeInterfaceComponentBoundIterator::component( MObject &component ) { diff --git a/src/IECoreMaya/SceneShapeSubSceneOverride.cpp b/src/IECoreMaya/SceneShapeSubSceneOverride.cpp index d3465c56a6..171d93e98b 100644 --- a/src/IECoreMaya/SceneShapeSubSceneOverride.cpp +++ b/src/IECoreMaya/SceneShapeSubSceneOverride.cpp @@ -1086,7 +1086,7 @@ SceneShapeSubSceneOverride::SceneShapeSubSceneOverride( const MObject& obj ) m_allShaders = std::make_shared( m_sceneShape->thisMObject() ); - m_evictionConnection = bufferEvictedSignal().connect( boost::bind( &SceneShapeSubSceneOverride::bufferEvictedCallback, this, ::_1 ) ); + m_evictionConnection = bufferEvictedSignal().connect( boost::bind( &SceneShapeSubSceneOverride::bufferEvictedCallback, this, boost::placeholders::_1 ) ); } SceneShapeSubSceneOverride::~SceneShapeSubSceneOverride() = default; diff --git a/src/IECoreMaya/bindings/CallbackIdBinding.cpp b/src/IECoreMaya/bindings/CallbackIdBinding.cpp index 9dd7a0c261..4367d4aa2d 100644 --- a/src/IECoreMaya/bindings/CallbackIdBinding.cpp +++ b/src/IECoreMaya/bindings/CallbackIdBinding.cpp @@ -46,11 +46,11 @@ namespace IECoreMaya static MCallbackId callbackIdFromPython( PyObject *id ) { - if( PyCObject_Check( id ) ) + if( PyCapsule_CheckExact( id ) ) { // maya 2011 stores the id as a PyCObject, probably to avoid the problems // documented in the next block. - return (MCallbackId)PyCObject_AsVoidPtr( id ); + return (MCallbackId)PyCapsule_GetPointer( id, nullptr ); } else { diff --git a/src/IECoreMaya/bindings/ImageViewportPostProcessBinding.cpp b/src/IECoreMaya/bindings/ImageViewportPostProcessBinding.cpp index c6f8f5efd0..b319730d65 100644 --- a/src/IECoreMaya/bindings/ImageViewportPostProcessBinding.cpp +++ b/src/IECoreMaya/bindings/ImageViewportPostProcessBinding.cpp @@ -77,7 +77,7 @@ struct ImageViewportPostProcessWrapper : RefCountedWrapper< ImageViewportPostPro { return o(); } - catch( error_already_set ) + catch( error_already_set &e ) { PyErr_Print(); return false; @@ -98,7 +98,7 @@ struct ImageViewportPostProcessWrapper : RefCountedWrapper< ImageViewportPostPro { o( panelName ); } - catch ( error_already_set ) + catch ( error_already_set &e ) { PyErr_Print(); } @@ -119,7 +119,7 @@ struct ImageViewportPostProcessWrapper : RefCountedWrapper< ImageViewportPostPro { o( panelName, image ); } - catch ( error_already_set ) + catch ( error_already_set &e ) { PyErr_Print(); } diff --git a/src/IECoreMaya/bindings/LiveSceneBinding.cpp b/src/IECoreMaya/bindings/LiveSceneBinding.cpp index dfea085ee6..708fcf5539 100644 --- a/src/IECoreMaya/bindings/LiveSceneBinding.cpp +++ b/src/IECoreMaya/bindings/LiveSceneBinding.cpp @@ -65,7 +65,7 @@ class CustomTagReader { return m_has( p.asChar(), tag, filter ); } - catch ( error_already_set ) + catch ( error_already_set &e ) { PyErr_Print(); throw IECore::Exception( std::string( "Python exception while checking IECoreMaya::LiveScene tag " + tag.string() ) ); @@ -81,7 +81,7 @@ class CustomTagReader { o = m_read( p.asChar(), filter ); } - catch ( error_already_set ) + catch ( error_already_set &e ) { PyErr_Print(); throw IECore::Exception( std::string( "Python exception while evaluating IECoreMaya::LiveScene tags" ) ); @@ -120,7 +120,7 @@ class CustomAttributeReader { return extract(m_read( p.asChar(), attr )); } - catch ( error_already_set ) + catch ( error_already_set &e ) { PyErr_Print(); throw IECore::Exception( std::string( "Python exception while evaluating IECoreMaya::LiveScene attribute " + attr.string() ) ); @@ -136,7 +136,7 @@ class CustomAttributeReader { o = m_names( p.asChar() ); } - catch ( error_already_set ) + catch ( error_already_set &e ) { PyErr_Print(); throw IECore::Exception( std::string( "Python exception while evaluating attribute names for IECoreMaya::LiveScene." ) ); @@ -173,7 +173,7 @@ class CustomAttributeReaderMightHave { return m_mightHave( p.asChar(), attr ); } - catch ( error_already_set ) + catch ( error_already_set &e ) { PyErr_Print(); throw IECore::Exception( std::string( "Python exception while evaluating IECoreMaya::LiveScene attribute " + attr.string() ) ); diff --git a/src/IECoreMaya/bindings/MDagPathFromPython.cpp b/src/IECoreMaya/bindings/MDagPathFromPython.cpp index 36a92b2f8e..58decdc4b4 100644 --- a/src/IECoreMaya/bindings/MDagPathFromPython.cpp +++ b/src/IECoreMaya/bindings/MDagPathFromPython.cpp @@ -49,7 +49,7 @@ struct MDagPathFromPython { static void *convertible( PyObject *obj ) { - if( PyUnicode_Check( obj ) || PyString_Check( obj ) ) + if( PyUnicode_Check( obj ) || PyBytes_Check( obj ) ) { return obj; } @@ -68,12 +68,12 @@ struct MDagPathFromPython if( PyUnicode_Check( obj ) ) { PyObject *ascii = PyUnicode_AsASCIIString( obj ); - name = PyString_AsString( ascii ); + name = PyBytes_AsString( ascii ); Py_DECREF( ascii ); } else { - name = PyString_AsString( obj ); + name = PyBytes_AsString( obj ); } MSelectionList s; diff --git a/src/IECoreMaya/bindings/MObjectFromPython.cpp b/src/IECoreMaya/bindings/MObjectFromPython.cpp index 36ba4706d1..8182642348 100644 --- a/src/IECoreMaya/bindings/MObjectFromPython.cpp +++ b/src/IECoreMaya/bindings/MObjectFromPython.cpp @@ -49,7 +49,7 @@ struct MObjectFromPython { static void *convertible( PyObject *obj ) { - if( PyUnicode_Check( obj ) || PyString_Check( obj ) ) + if( PyUnicode_Check( obj ) || PyBytes_Check( obj ) ) { return obj; } @@ -68,12 +68,12 @@ struct MObjectFromPython if( PyUnicode_Check( obj ) ) { PyObject *ascii = PyUnicode_AsASCIIString( obj ); - objectName = PyString_AsString( ascii ); + objectName = PyBytes_AsString( ascii ); Py_DECREF( ascii ); } else { - objectName = PyString_AsString( obj ); + objectName = PyBytes_AsString( obj ); } MSelectionList s; diff --git a/src/IECoreMaya/bindings/MPlugFromPython.cpp b/src/IECoreMaya/bindings/MPlugFromPython.cpp index 49d15adf45..b1b59884b9 100644 --- a/src/IECoreMaya/bindings/MPlugFromPython.cpp +++ b/src/IECoreMaya/bindings/MPlugFromPython.cpp @@ -49,7 +49,7 @@ struct MPlugFromPython { static void *convertible( PyObject *obj ) { - if( PyUnicode_Check( obj ) || PyString_Check( obj ) ) + if( PyUnicode_Check( obj ) || PyBytes_Check( obj ) ) { return obj; } @@ -68,12 +68,12 @@ struct MPlugFromPython if( PyUnicode_Check( obj ) ) { PyObject *ascii = PyUnicode_AsASCIIString( obj ); - plugName = PyString_AsString( ascii ); + plugName = PyBytes_AsString( ascii ); Py_DECREF( ascii ); } else { - plugName = PyString_AsString( obj ); + plugName = PyBytes_AsString( obj ); } MSelectionList s; diff --git a/src/IECoreMaya/bindings/MStringFromPython.cpp b/src/IECoreMaya/bindings/MStringFromPython.cpp index f139abcbbd..95ef362d03 100644 --- a/src/IECoreMaya/bindings/MStringFromPython.cpp +++ b/src/IECoreMaya/bindings/MStringFromPython.cpp @@ -48,7 +48,7 @@ struct MStringFromPython { static void *convertible( PyObject *obj ) { - if( PyUnicode_Check( obj ) || PyString_Check( obj ) ) + if( PyUnicode_Check( obj ) || PyBytes_Check( obj ) ) { return obj; } @@ -67,12 +67,12 @@ struct MStringFromPython if( PyUnicode_Check( obj ) ) { PyObject *ascii = PyUnicode_AsASCIIString( obj ); - new (storage) MString( PyString_AsString( ascii ) ); + new (storage) MString( PyBytes_AsString( ascii ) ); Py_DECREF( ascii ); } else { - new (storage) MString( PyString_AsString( obj ) ); + new (storage) MString( PyBytes_AsString( obj ) ); } data->convertible = storage; diff --git a/test/IECoreMaya/All.py b/test/IECoreMaya/All.py index 071b9e2df3..7602d93e6c 100644 --- a/test/IECoreMaya/All.py +++ b/test/IECoreMaya/All.py @@ -37,13 +37,10 @@ import sys import unittest -import warnings import IECore import IECoreMaya -warnings.simplefilter( "error", DeprecationWarning ) - from ConverterHolder import * from PlaybackFrameList import * from ParameterisedHolder import * diff --git a/test/IECoreMaya/FnParameterisedHolderTest.py b/test/IECoreMaya/FnParameterisedHolderTest.py index 8a185c4b1e..c6ce1c8066 100644 --- a/test/IECoreMaya/FnParameterisedHolderTest.py +++ b/test/IECoreMaya/FnParameterisedHolderTest.py @@ -44,6 +44,7 @@ import IECore import IECoreScene import IECoreMaya +from six.moves import range class TestOp( IECore.Op ) : diff --git a/test/IECoreMaya/FnSceneShapeTest.py b/test/IECoreMaya/FnSceneShapeTest.py index bad6e48725..e2021a6812 100644 --- a/test/IECoreMaya/FnSceneShapeTest.py +++ b/test/IECoreMaya/FnSceneShapeTest.py @@ -410,7 +410,7 @@ def testPromotableAttributeNames( self ): 'user:testDouble', 'user:testString', 'user:testMatrixd', 'user:testMatrixf', 'scene:visible' ] - self.assertEquals( set( sceneShapeFn.promotableAttributeNames() ), set( expectedAttrs ) ) + self.assertEqual( set( sceneShapeFn.promotableAttributeNames() ), set( expectedAttrs ) ) def testPromoteAttribute( self ): maya.cmds.file( new=True, force=True ) @@ -437,14 +437,14 @@ def testPromoteAttribute( self ): self.assertTrue( testVisibility ) self.assertTrue( testBool ) - self.assertEquals( testShort, 2 ) - self.assertEquals( testInt, 3 ) - self.assertEquals( testInt64, 4 ) - self.assertEquals( testFloat, 5. ) - self.assertEquals( testDouble, 6. ) - self.assertEquals( testString, 'seven' ) - self.assertEquals( testMatrixd, [ 8., 9., 10., 11., 12., 13., 14., 15., 16., 17., 18., 19., 20., 21., 22., 23. ] ) - self.assertEquals( testMatrixf, [ 24., 25., 26., 27., 28., 29., 30., 31., 32., 33., 34., 35., 36., 37., 38., 39. ] ) + self.assertEqual( testShort, 2 ) + self.assertEqual( testInt, 3 ) + self.assertEqual( testInt64, 4 ) + self.assertEqual( testFloat, 5. ) + self.assertEqual( testDouble, 6. ) + self.assertEqual( testString, 'seven' ) + self.assertEqual( testMatrixd, [ 8., 9., 10., 11., 12., 13., 14., 15., 16., 17., 18., 19., 20., 21., 22., 23. ] ) + self.assertEqual( testMatrixf, [ 24., 25., 26., 27., 28., 29., 30., 31., 32., 33., 34., 35., 36., 37., 38., 39. ] ) def tearDown( self ) : diff --git a/test/IECoreMaya/FromMayaCameraConverterTest.py b/test/IECoreMaya/FromMayaCameraConverterTest.py index 88d22c33d4..49a5f3fe33 100644 --- a/test/IECoreMaya/FromMayaCameraConverterTest.py +++ b/test/IECoreMaya/FromMayaCameraConverterTest.py @@ -40,6 +40,7 @@ import IECoreMaya import imath +from six.moves import range INCH_TO_MM = 25.400051 @@ -155,7 +156,7 @@ def testOverrideResolution( self ) : self.assertFalse( camera.hasFilmFit() ) maya.cmds.deleteAttr( "perspShape", attribute= "ieCamera_overridePixelAspectRatio" ) - fitModeNames = IECoreScene.Camera.FilmFit.names.keys() + fitModeNames = list(IECoreScene.Camera.FilmFit.names.keys()) maya.cmds.addAttr( "perspShape", ln= "ieCamera_overrideFilmFit", at="enum", en=":".join( fitModeNames ) ) diff --git a/test/IECoreMaya/FromMayaCurveConverterTest.py b/test/IECoreMaya/FromMayaCurveConverterTest.py index d9285123e7..e7adc7ffc1 100644 --- a/test/IECoreMaya/FromMayaCurveConverterTest.py +++ b/test/IECoreMaya/FromMayaCurveConverterTest.py @@ -84,7 +84,7 @@ def testCubicCircle( self ) : self.assertEqual( curve.periodic(), True ) # check primvars - self.assertEqual( curve.keys(), [ "P" ] ) + self.assertEqual( list(curve.keys()), [ "P" ] ) self.assertEqual( curve["P"].interpolation, IECoreScene.PrimitiveVariable.Interpolation.Vertex ) self.assertEqual( curve["P"].data.getInterpretation(), IECore.GeometricData.Interpretation.Point ) @@ -115,7 +115,7 @@ def testLinearCircle( self ) : self.assertEqual( curve.periodic(), False ) # check primvars - self.assertEqual( curve.keys(), [ "P" ] ) + self.assertEqual( list(curve.keys()), [ "P" ] ) self.assertEqual( curve["P"].interpolation, IECoreScene.PrimitiveVariable.Interpolation.Vertex ) self.assertEqual( curve["P"].data.getInterpretation(), IECore.GeometricData.Interpretation.Point ) @@ -145,7 +145,7 @@ def testCubicArc( self ) : self.assertEqual( curve.periodic(), False ) # check primvars - self.assertEqual( curve.keys(), [ "P" ] ) + self.assertEqual( list(curve.keys()), [ "P" ] ) self.assertEqual( curve["P"].interpolation, IECoreScene.PrimitiveVariable.Interpolation.Vertex ) self.assertEqual( curve["P"].data.getInterpretation(), IECore.GeometricData.Interpretation.Point ) @@ -204,7 +204,7 @@ def testCubicCircleAsLinear( self ) : self.assertEqual( curve.periodic(), True ) # check primvars - self.assertEqual( curve.keys(), [ "P" ] ) + self.assertEqual( list(curve.keys()), [ "P" ] ) self.assertEqual( curve["P"].interpolation, IECoreScene.PrimitiveVariable.Interpolation.Vertex ) self.assertEqual( curve["P"].data.getInterpretation(), IECore.GeometricData.Interpretation.Point ) @@ -226,7 +226,7 @@ def testBlindData( self ) : converter['blindDataAttrPrefix'] = IECore.StringData("ie") curve = converter.convert() - self.assertEqual( len( curve.blindData().keys() ), 2 ) + self.assertEqual( len( list(curve.blindData().keys()) ), 2 ) self.assertEqual( curve.blindData()["name"], IECore.StringData( "nurbsCircleShape1" ) ) self.assertEqual( curve.blindData()["ieString"], IECore.StringData( "banana" ) ) @@ -240,7 +240,7 @@ def testPrimVars( self ) : converter = IECoreMaya.FromMayaShapeConverter.create( str( circle ), IECoreScene.CurvesPrimitive.staticTypeId() ) curve = converter.convert() - self.assertEqual( len( curve.keys() ), 2 ) + self.assertEqual( len( list(curve.keys()) ), 2 ) self.assertEqual( curve["Double"].interpolation, IECoreScene.PrimitiveVariable.Interpolation.Constant ) self.assertEqual( curve["Double"].data, IECore.FloatData( 1 ) ) diff --git a/test/IECoreMaya/FromMayaInstancerConverterTest.py b/test/IECoreMaya/FromMayaInstancerConverterTest.py index 40577afd44..588454159c 100644 --- a/test/IECoreMaya/FromMayaInstancerConverterTest.py +++ b/test/IECoreMaya/FromMayaInstancerConverterTest.py @@ -32,11 +32,8 @@ # ########################################################################## - - import maya.cmds import maya.OpenMaya -import pymel.core as pm import imath import math @@ -65,9 +62,8 @@ def makeScene( self ): maya.cmds.particleInstancer( "particleShape1", e = True, name = "instancer1", rotation = "rotationPP" ) maya.cmds.particleInstancer( "particleShape1", e = True, name = "instancer1", objectIndex = "instancePP" ) - n = pm.PyNode( "particleShape1" ) - n.attr( "rotationPP" ).set( [pm.dt.Vector( 45, 0, 0 ), pm.dt.Vector( 0, 45, 0 ), pm.dt.Vector( 0, 0, 45 ), pm.dt.Vector( 45, 45, 0 )] ) - n.attr( "instancePP" ).set( [0, 1, 0, 1] ) + maya.cmds.setAttr( "particleShape1.rotationPP", 4, ( 45, 0, 0 ), ( 0, 45, 0 ), ( 0, 0, 45 ), ( 45, 45, 0 ), type = "vectorArray" ) + maya.cmds.setAttr( "particleShape1.instancePP", [0, 1, 0, 1], type = "doubleArray" ) def makeRotationOrderOrUnitScene( self, rotationOrder, useRadians ) : @@ -85,9 +81,8 @@ def makeRotationOrderOrUnitScene( self, rotationOrder, useRadians ) : if useRadians : maya.cmds.setAttr( "instancer1.rotationAngleUnits", 1 ) - n = pm.PyNode( "particleShape1" ) - n.attr( "rotationPP" ).set( [pm.dt.Vector( 90, 90, 0 )] ) - n.attr( "instancePP" ).set( [0 ] ) + maya.cmds.setAttr( "particleShape1.rotationPP", 1, ( 90, 90, 0 ), type = "vectorArray" ) + maya.cmds.setAttr( "particleShape1.instancePP", [0, 1, 0, 1], type = "doubleArray" ) def testCanCreateConverterOfCorrectType( self ) : @@ -108,7 +103,7 @@ def testConvertsToPointsPrimitive( self ) : self.assertTrue( convertedPoints.isInstanceOf( IECoreScene.TypeId.PointsPrimitive ) ) self.assertEqual( convertedPoints.numPoints, 4 ) - self.assertUnorderedEqual( convertedPoints.keys(), ['P', 'age', 'id', 'instances', 'instanceType', 'orient'] ) + self.assertUnorderedEqual( list(convertedPoints.keys()), ['P', 'age', 'id', 'instances', 'instanceType', 'orient'] ) self.assertEqual( convertedPoints["P"].data[0], imath.V3f( 4, 0, 0 ) ) self.assertEqual( convertedPoints["P"].data[1], imath.V3f( 4, 4, 0 ) ) @@ -152,7 +147,7 @@ def testCanConvertEmptyInstancer( self ) : self.assertTrue( convertedPoints.isInstanceOf( IECoreScene.TypeId.PointsPrimitive ) ) - self.assertTrue( "P" in convertedPoints.keys() ) + self.assertTrue( "P" in list(convertedPoints.keys()) ) self.assertEqual( convertedPoints["P"].data, IECore.V3fVectorData( [], IECore.GeometricData.Interpretation.Point ) ) def testCanChangeInstancerRotationOrder( self ): @@ -164,7 +159,7 @@ def testCanChangeInstancerRotationOrder( self ): self.assertTrue( convertedPoints.isInstanceOf( IECoreScene.TypeId.PointsPrimitive ) ) self.assertEqual( convertedPoints.numPoints, 1 ) - self.assertUnorderedEqual( convertedPoints.keys(), ['P', 'age', 'id', 'instances', 'instanceType', 'orient'] ) + self.assertUnorderedEqual( list(convertedPoints.keys()), ['P', 'age', 'id', 'instances', 'instanceType', 'orient'] ) self.assertEqual( convertedPoints["orient"].data[0], imath.Eulerf( math.pi / 2.0, math.pi / 2.0, 0, imath.Eulerf.ZYX ).toQuat() ) @@ -177,7 +172,7 @@ def testCanChangeInstancerRotationUnits( self ) : self.assertTrue( convertedPoints.isInstanceOf( IECoreScene.TypeId.PointsPrimitive ) ) self.assertEqual( convertedPoints.numPoints, 1 ) - self.assertUnorderedEqual( convertedPoints.keys(), ['P', 'age', 'id', 'instances', 'instanceType', 'orient'] ) + self.assertUnorderedEqual( list(convertedPoints.keys()), ['P', 'age', 'id', 'instances', 'instanceType', 'orient'] ) self.assertEqual( convertedPoints["orient"].data[0], imath.Eulerf( 90.0, 90.0, 0, imath.Eulerf.XYZ ).toQuat() ) diff --git a/test/IECoreMaya/FromMayaMeshConverterTest.py b/test/IECoreMaya/FromMayaMeshConverterTest.py index d5cd56884c..e1dbb92f57 100644 --- a/test/IECoreMaya/FromMayaMeshConverterTest.py +++ b/test/IECoreMaya/FromMayaMeshConverterTest.py @@ -40,6 +40,7 @@ import IECore import IECoreScene import IECoreMaya +from six.moves import range class FromMayaMeshConverterTest( IECoreMaya.TestCase ) : @@ -223,7 +224,7 @@ def testBlindData( self ) : converter['blindDataAttrPrefix'] = IECore.StringData("ie") m = converter.convert() - self.assertEqual( len( m.blindData().keys() ), 2 ) + self.assertEqual( len( list(m.blindData().keys()) ), 2 ) self.assertEqual( m.blindData()["name"], IECore.StringData( "pPlaneShape1" ) ) self.assertEqual( m.blindData()["ieString"], IECore.StringData( "banana" ) ) diff --git a/test/IECoreMaya/FromMayaParticleConverterTest.py b/test/IECoreMaya/FromMayaParticleConverterTest.py index a7e610f7fd..186ba96f74 100644 --- a/test/IECoreMaya/FromMayaParticleConverterTest.py +++ b/test/IECoreMaya/FromMayaParticleConverterTest.py @@ -37,6 +37,7 @@ import IECore import IECoreScene import IECoreMaya +from six.moves import range class FromMayaParticleConverterTest( IECoreMaya.TestCase ) : diff --git a/test/IECoreMaya/FromMayaPlugConverterTest.py b/test/IECoreMaya/FromMayaPlugConverterTest.py index 00076d2438..913367fb90 100644 --- a/test/IECoreMaya/FromMayaPlugConverterTest.py +++ b/test/IECoreMaya/FromMayaPlugConverterTest.py @@ -36,6 +36,7 @@ import IECore import IECoreMaya +from six.moves import range class FromMayaPlugConverterTest( IECoreMaya.TestCase ) : @@ -127,7 +128,7 @@ def testPointArrayData( self ) : converted = converter.convert() self.assertTrue( converted.isInstanceOf( IECore.V3dVectorData.staticTypeId() ) ) - for point, index in itertools.product( range( 2 ), range( 3 ) ): + for point, index in itertools.product( list(range( 2)), list(range( 3)) ): self.assertAlmostEqual( converted[ point ][ index ], data[ point ][ index ] ) self.assertEqual( converted.getInterpretation(), IECore.GeometricData.Interpretation.Point ) @@ -179,7 +180,7 @@ def testVectorArrayData( self ) : converted = converter.convert() self.assertTrue( converted.isInstanceOf( IECore.V3dVectorData.staticTypeId() ) ) - for point, index in itertools.product( range( 2 ), range( 3 ) ): + for point, index in itertools.product( list(range( 2)), list(range( 3)) ): self.assertAlmostEqual( converted[ point ][ index ], data[ point ][ index ] ) self.assertEqual( converted.getInterpretation(), IECore.GeometricData.Interpretation.Vector ) diff --git a/test/IECoreMaya/FromMayaSkinClusterWeightsConverterTest.py b/test/IECoreMaya/FromMayaSkinClusterWeightsConverterTest.py index fa1ec6a1c5..22c2811d13 100644 --- a/test/IECoreMaya/FromMayaSkinClusterWeightsConverterTest.py +++ b/test/IECoreMaya/FromMayaSkinClusterWeightsConverterTest.py @@ -42,6 +42,7 @@ import IECore.RandomAlgo import IECoreScene import IECoreMaya +from six.moves import range class FromMayaSkinClusterWeightsConverterTest( IECoreMaya.TestCase ) : diff --git a/test/IECoreMaya/LiveSceneTest.py b/test/IECoreMaya/LiveSceneTest.py index dea0f3852a..9994d8b29f 100644 --- a/test/IECoreMaya/LiveSceneTest.py +++ b/test/IECoreMaya/LiveSceneTest.py @@ -1164,7 +1164,6 @@ def testOnlyObjectInSetIsExported( self ) : def testMayaInstancerIsExported( self ): def makeScene(): - import pymel.core as pm maya.cmds.polyCube() maya.cmds.polySphere() @@ -1177,9 +1176,8 @@ def makeScene(): maya.cmds.particleInstancer( "particleShape1", e = True, name = "instancer1", rotation = "rotationPP" ) maya.cmds.particleInstancer( "particleShape1", e = True, name = "instancer1", objectIndex = "instancePP" ) - n = pm.PyNode( "particleShape1" ) - n.attr( "rotationPP" ).set( [pm.dt.Vector( 45, 0, 0 ), pm.dt.Vector( 0, 45, 0 ), pm.dt.Vector( 0, 0, 45 ), pm.dt.Vector( 45, 45, 0 )] ) - n.attr( "instancePP" ).set( [0, 1, 0, 1] ) + maya.cmds.setAttr( "particleShape1.rotationPP", 4, ( 45, 0, 0 ), ( 0, 45, 0 ), ( 0, 0, 45 ), ( 45, 45, 0 ), type = "vectorArray" ) + maya.cmds.setAttr( "particleShape1.instancePP", [0, 1, 0, 1], type = "doubleArray" ) makeScene() diff --git a/test/IECoreMaya/ParameterisedHolder.py b/test/IECoreMaya/ParameterisedHolder.py index f04eb247ba..c40c4579b8 100644 --- a/test/IECoreMaya/ParameterisedHolder.py +++ b/test/IECoreMaya/ParameterisedHolder.py @@ -1075,9 +1075,9 @@ def testClassVectorParameter( self ) : self.assertEqual( cl[1].typeName(), "compoundObjectInOut" ) self.assertEqual( len( c ), 2 ) - self.assertEqual( c.keys(), [ "mult", "coIO" ] ) - self.assertEqual( c["mult"].keys(), [ "a", "b" ] ) - self.assertEqual( c["coIO"].keys(), [ "input" ] ) + self.assertEqual( list(c.keys()), [ "mult", "coIO" ] ) + self.assertEqual( list(c["mult"].keys()), [ "a", "b" ] ) + self.assertEqual( list(c["coIO"].keys()), [ "input" ] ) cl = c.getClasses( True ) self.assertTrue( isinstance( cl, list ) ) @@ -1192,9 +1192,9 @@ def testClassVectorParameterUndo( self ) : self.assertEqual( cl[1].typeName(), "stringParsing" ) self.assertEqual( len( c ), 2 ) - self.assertEqual( c.keys(), [ "mult", "str" ] ) - self.assertEqual( c["mult"].keys(), [ "a", "b" ] ) - self.assertEqual( c["str"].keys(), [ "emptyString", "normalString", "stringWithSpace", "stringWithManySpaces" ] ) + self.assertEqual( list(c.keys()), [ "mult", "str" ] ) + self.assertEqual( list(c["mult"].keys()), [ "a", "b" ] ) + self.assertEqual( list(c["str"].keys()), [ "emptyString", "normalString", "stringWithSpace", "stringWithManySpaces" ] ) cl = c.getClasses( True ) self.assertTrue( isinstance( cl, list ) ) diff --git a/test/IECoreMaya/PlaybackFrameList.py b/test/IECoreMaya/PlaybackFrameList.py index 11b0396ee4..2033327eaa 100644 --- a/test/IECoreMaya/PlaybackFrameList.py +++ b/test/IECoreMaya/PlaybackFrameList.py @@ -36,6 +36,7 @@ import IECore import IECoreMaya +from six.moves import range class TestPlaybackFrameList( IECoreMaya.TestCase ) : @@ -46,8 +47,8 @@ def test( self ): l = r.asList() - self.assertEqual( l, range( int( maya.cmds.playbackOptions( query=True, animationStartTime=True ) ), - int( maya.cmds.playbackOptions( query=True, animationEndTime=True ) + 1 ) ) ) + self.assertEqual( l, list(range( int( maya.cmds.playbackOptions( query=True, animationStartTime=True ) ), + int( maya.cmds.playbackOptions( query=True, animationEndTime=True ) + 1 ))) ) if __name__ == "__main__": IECoreMaya.TestProgram() diff --git a/test/IECoreMaya/PluginLoadUnload.py b/test/IECoreMaya/PluginLoadUnload.py index b44996dc31..7d07d3d327 100644 --- a/test/IECoreMaya/PluginLoadUnload.py +++ b/test/IECoreMaya/PluginLoadUnload.py @@ -36,6 +36,7 @@ import IECore import IECoreMaya +from six.moves import range class TestPluginLoadUnload( IECoreMaya.TestCase ) : diff --git a/test/IECoreMaya/SplineParameterHandlerTest.py b/test/IECoreMaya/SplineParameterHandlerTest.py index d582f47b2b..05a1ed92a7 100644 --- a/test/IECoreMaya/SplineParameterHandlerTest.py +++ b/test/IECoreMaya/SplineParameterHandlerTest.py @@ -41,6 +41,7 @@ import IECore import IECoreMaya +from six.moves import range class SplineParameterHandlerTest( IECoreMaya.TestCase ) : @@ -141,8 +142,8 @@ def testRoundTripFloat( self ) : for i in range( 0, len( data.value ) ) : - self.assertAlmostEqual( data.value.keys()[i], splineData.value.keys()[i] ) - self.assertAlmostEqual( data.value.values()[i], splineData.value.values()[i] ) + self.assertAlmostEqual( list(data.value.keys())[i], list(splineData.value.keys())[i] ) + self.assertAlmostEqual( list(data.value.values())[i], list(splineData.value.values())[i] ) def testRoundTripColor( self ) : @@ -193,10 +194,10 @@ def testRoundTripColor( self ) : for i in range( 0, len( data.value ) ) : - self.assertAlmostEqual( data.value.keys()[i], splineData.value.keys()[i] ) + self.assertAlmostEqual( list(data.value.keys())[i], list(splineData.value.keys())[i] ) - c1 = data.value.values()[i] - c2 = splineData.value.values()[i] + c1 = list(data.value.values())[i] + c2 = list(splineData.value.values())[i] v1 = imath.V3f( c1[0], c1[1], c1[2] ) v2 = imath.V3f( c2[0], c2[1], c2[2] ) diff --git a/test/IECoreMaya/ToMayaCameraConverterTest.py b/test/IECoreMaya/ToMayaCameraConverterTest.py index e1426cc6a9..3b935ec46c 100644 --- a/test/IECoreMaya/ToMayaCameraConverterTest.py +++ b/test/IECoreMaya/ToMayaCameraConverterTest.py @@ -41,6 +41,7 @@ import imath import random +from six.moves import range INCH_TO_MM = 25.400051 @@ -74,7 +75,7 @@ def assertMayaCamsNotEqual( self, camA, camB ) : def assertIECoreCamsAlmostEqual( self, camA, camB, names=False ) : - self.assertEqual( camA.parameters().keys(), camB.parameters().keys() ) + self.assertEqual( list(camA.parameters().keys()), list(camB.parameters().keys()) ) for a in camA.parameters().keys(): if type( camA.parameters()[a] ) == IECore.V2fData: diff --git a/test/IECoreMaya/ToMayaCurveConverterTest.py b/test/IECoreMaya/ToMayaCurveConverterTest.py index 6414f2b1bd..c3f302aeb6 100644 --- a/test/IECoreMaya/ToMayaCurveConverterTest.py +++ b/test/IECoreMaya/ToMayaCurveConverterTest.py @@ -39,6 +39,7 @@ import IECore import IECoreScene import IECoreMaya +from six.moves import range class ToMayaCurveConverterTest( IECoreMaya.TestCase ) : diff --git a/test/IECoreMaya/ToMayaMeshConverterTest.py b/test/IECoreMaya/ToMayaMeshConverterTest.py index 245b1f189c..3d33f34bd1 100644 --- a/test/IECoreMaya/ToMayaMeshConverterTest.py +++ b/test/IECoreMaya/ToMayaMeshConverterTest.py @@ -41,6 +41,8 @@ import IECore import IECoreScene import IECoreMaya +from six.moves import range +from six.moves import zip class ToMayaMeshConverterTest( IECoreMaya.TestCase ) : diff --git a/test/IECoreMaya/ToMayaParticleConverterTest.py b/test/IECoreMaya/ToMayaParticleConverterTest.py index f60bab785d..53f35a0faf 100644 --- a/test/IECoreMaya/ToMayaParticleConverterTest.py +++ b/test/IECoreMaya/ToMayaParticleConverterTest.py @@ -38,6 +38,7 @@ import IECore import IECoreScene import IECoreMaya +from six.moves import range class ToMayaParticleConverterTest( IECoreMaya.TestCase ) : diff --git a/test/IECoreMaya/ToMayaSkinClusterConverterTest.py b/test/IECoreMaya/ToMayaSkinClusterConverterTest.py index 5bf3cff42c..2209bddb6a 100644 --- a/test/IECoreMaya/ToMayaSkinClusterConverterTest.py +++ b/test/IECoreMaya/ToMayaSkinClusterConverterTest.py @@ -41,6 +41,7 @@ import IECore import IECoreScene import IECoreMaya +from six.moves import range class ToMayaSkinClusterConverterTest( IECoreMaya.TestCase ) : diff --git a/test/IECoreMaya/ToMayaSkinClusterWeightsConverterTest.py b/test/IECoreMaya/ToMayaSkinClusterWeightsConverterTest.py index d0e4752083..b0b61eb7e2 100644 --- a/test/IECoreMaya/ToMayaSkinClusterWeightsConverterTest.py +++ b/test/IECoreMaya/ToMayaSkinClusterWeightsConverterTest.py @@ -42,6 +42,7 @@ import IECore.RandomAlgo import IECoreScene import IECoreMaya +from six.moves import range class ToMayaSkinClusterWeightsConverterTest( IECoreMaya.TestCase ) :