Can Maya plugins do any self-documentation?

76 views
Skip to first unread message

Michael Boon

unread,
Mar 13, 2018, 8:59:38 PM3/13/18
to Python Programming for Autodesk Maya
I have a plugin called ExportModel*. If I do help(cmds.ExportModel ) I get

Help on function ExportModel in module maya.cmds:

ExportModel(*args, **keywords)

which is next to useless.

Is there a way I can publish the expected arguments and return values of my plugin so that other scripters can see them inside Maya?

(* Names have been changed to protect the innocent)

justin hidair

unread,
Mar 13, 2018, 9:19:01 PM3/13/18
to python_in...@googlegroups.com

I guess you can do a command with a help flag  to accommodate as a workaround, that’s a good question tho

 

Sent from Mail for Windows 10

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/24a69ba7-2dfb-447a-bcba-3a3b71150600%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

 

Justin Israel

unread,
Mar 14, 2018, 6:00:14 AM3/14/18
to python_in...@googlegroups.com


On Wed, Mar 14, 2018, 2:18 PM justin hidair <justin...@gmail.com> wrote:

I guess you can do a command with a help flag  to accommodate as a workaround, that’s a good question tho

Help flag seems like a good suggestion, seeing as you don't have control over the function that gets injected into the commands namespace to wrap your plugin. 

I haven't tried it, so this is just a brainstorm. What would happen if you manually set cmds.ExportModel.__doc__ at the end of your initializePlugin(mobject) function? Would it even let you? Would it then allow docstrings to work properly? 


Ian Jones

unread,
Mar 14, 2018, 4:26:27 PM3/14/18
to python_in...@googlegroups.com
You can use mel. The Mel version of help <command name> does print out useful information. 

It's just not wrapped well by maya.cmds to expose to python.

Ian

Michael Boon

unread,
Mar 14, 2018, 10:26:54 PM3/14/18
to Python Programming for Autodesk Maya
That works for Python plugins! It won't be quite so simple for a C++ plugin (which my exporter is) but I will  give it a try and report back.

@Ian Jones - I didn't know that worked in MEL, thank you.


On Wednesday, 14 March 2018 21:00:14 UTC+11, Justin Israel wrote:


On Wed, Mar 14, 2018, 2:18 PM justin hidair <justin...@gmail.com> wrote:

I guess you can do a command with a help flag  to accommodate as a workaround, that’s a good question tho

Help flag seems like a good suggestion, seeing as you don't have control over the function that gets injected into the commands namespace to wrap your plugin. 

I haven't tried it, so this is just a brainstorm. What would happen if you manually set cmds.ExportModel.__doc__ at the end of your initializePlugin(mobject) function? Would it even let you? Would it then allow docstrings to work properly? 


 

Sent from Mail for Windows 10

 

From: Michael Boon
Sent: Wednesday, March 14, 2018 12:59 AM
To: Python Programming for Autodesk Maya
Subject: [Maya-Python] Can Maya plugins do any self-documentation?

 

I have a plugin called ExportModel*. If I do help(cmds.ExportModel ) I get

Help on function ExportModel in module maya.cmds:

ExportModel(*args, **keywords)

 

which is next to useless.

Is there a way I can publish the expected arguments and return values of my plugin so that other scripters can see them inside Maya?

(* Names have been changed to protect the innocent)

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.

To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.

Ian Jones

unread,
Mar 14, 2018, 11:32:43 PM3/14/18
to python_in...@googlegroups.com
That works for C++ command plugins too. I verified it on one specifically.

Ian

On Wed, Mar 14, 2018, 7:27 PM Michael Boon <boon...@gmail.com> wrote:
That works for Python plugins! It won't be quite so simple for a C++ plugin (which my exporter is) but I will  give it a try and report back.

@Ian Jones - I didn't know that worked in MEL, thank you.

On Wednesday, 14 March 2018 21:00:14 UTC+11, Justin Israel wrote:


On Wed, Mar 14, 2018, 2:18 PM justin hidair <justin...@gmail.com> wrote:

I guess you can do a command with a help flag  to accommodate as a workaround, that’s a good question tho

Help flag seems like a good suggestion, seeing as you don't have control over the function that gets injected into the commands namespace to wrap your plugin. 

I haven't tried it, so this is just a brainstorm. What would happen if you manually set cmds.ExportModel.__doc__ at the end of your initializePlugin(mobject) function? Would it even let you? Would it then allow docstrings to work properly? 


 

Sent from Mail for Windows 10

 

From: Michael Boon
Sent: Wednesday, March 14, 2018 12:59 AM
To: Python Programming for Autodesk Maya
Subject: [Maya-Python] Can Maya plugins do any self-documentation?

 

I have a plugin called ExportModel*. If I do help(cmds.ExportModel ) I get

Help on function ExportModel in module maya.cmds:

ExportModel(*args, **keywords)

 

which is next to useless.

Is there a way I can publish the expected arguments and return values of my plugin so that other scripters can see them inside Maya?

(* Names have been changed to protect the innocent)

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.

To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/519946dd-0c8b-4107-8f2a-f02a93ee0a5b%40googlegroups.com.

Michael Boon

unread,
Mar 15, 2018, 12:27:49 AM3/15/18
to Python Programming for Autodesk Maya
OK to summarize:

I didn't want to add a help flag because I don't know how people would discover it.

The only built-in way, is to do as Ian Jones suggested and use MEL's help function. That will give you a list of parameters but no description.

As Justin suggested, for a Python plugin, it's relatively easy to add a Python docstring, so you can do help(cmds.myPluginCmd), by adding this to the end of initializePlugin(mobject):
cmdsPlugin = getattr(cmds, kPluginCmdName)
cmdsPlugin
.__doc__ = MyPluginClass.__doc__ # Typically this is a nice description of the class, though it doesn't describe the flags.

For a C++ plugin, it's harder but it also works. I added a getDocString method that returns a very long MString and then did this, also in initializePlugin:
MString pyCmd;
pyCmd
+= "import maya.cmds as cmds\n";
pyCmd
+= "cmds." MY_PLUGIN_CMD ".__doc__ = '''";
pyCmd
+= MyPlugin::getDocString();
pyCmd
+= "'''\n";
MGlobal::executePythonCommand(pyCmd);

I also call MGlobal::displayError(MyPlugin::getDocString().asChar());
if my MArgDatabase constructor doesn't return kSuccess (ie if the user supplies illegal arguments).



On Thursday, 15 March 2018 14:32:43 UTC+11, Ian Jones wrote:
That works for C++ command plugins too. I verified it on one specifically.

Ian

On Wed, Mar 14, 2018, 7:27 PM Michael Boon <boon...@gmail.com> wrote:
That works for Python plugins! It won't be quite so simple for a C++ plugin (which my exporter is) but I will  give it a try and report back.

@Ian Jones - I didn't know that worked in MEL, thank you.

On Wednesday, 14 March 2018 21:00:14 UTC+11, Justin Israel wrote:


On Wed, Mar 14, 2018, 2:18 PM justin hidair <justin...@gmail.com> wrote:

I guess you can do a command with a help flag  to accommodate as a workaround, that’s a good question tho

Help flag seems like a good suggestion, seeing as you don't have control over the function that gets injected into the commands namespace to wrap your plugin. 

I haven't tried it, so this is just a brainstorm. What would happen if you manually set cmds.ExportModel.__doc__ at the end of your initializePlugin(mobject) function? Would it even let you? Would it then allow docstrings to work properly? 


 

Sent from Mail for Windows 10

 

From: Michael Boon
Sent: Wednesday, March 14, 2018 12:59 AM
To: Python Programming for Autodesk Maya
Subject: [Maya-Python] Can Maya plugins do any self-documentation?

 

I have a plugin called ExportModel*. If I do help(cmds.ExportModel ) I get

Help on function ExportModel in module maya.cmds:

ExportModel(*args, **keywords)

 

which is next to useless.

Is there a way I can publish the expected arguments and return values of my plugin so that other scripters can see them inside Maya?

(* Names have been changed to protect the innocent)

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.

To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.

Justin Israel

unread,
Mar 15, 2018, 3:23:00 AM3/15/18
to python_in...@googlegroups.com


On Thu, Mar 15, 2018, 5:27 PM Michael Boon <boon...@gmail.com> wrote:
OK to summarize:

I didn't want to add a help flag because I don't know how people would discover it.

The only built-in way, is to do as Ian Jones suggested and use MEL's help function. That will give you a list of parameters but no description.

As Justin suggested, for a Python plugin, it's relatively easy to add a Python docstring, so you can do help(cmds.myPluginCmd), by adding this to the end of initializePlugin(mobject):
cmdsPlugin = getattr(cmds, kPluginCmdName)
cmdsPlugin
.__doc__ = MyPluginClass.__doc__ # Typically this is a nice description of the class, though it doesn't describe the flags.

For a C++ plugin, it's harder but it also works. I added a getDocString method that returns a very long MString and then did this, also in initializePlugin:
MString pyCmd;
pyCmd
+= "import maya.cmds as cmds\n";
pyCmd
+= "cmds." MY_PLUGIN_CMD ".__doc__ = '''";
pyCmd
+= MyPlugin::getDocString();
pyCmd
+= "'''\n";
MGlobal::executePythonCommand(pyCmd);

I also call MGlobal::displayError(MyPlugin::getDocString().asChar());
if my MArgDatabase constructor doesn't return kSuccess (ie if the user supplies illegal arguments).


Sweet! That was a guess, so I'm glad the suggestion actually worked. 
I wonder if it would be better to just "import maya.cmds" and set the docstring through the fully qualified module path, instead of importing it as cmds. That way you don't make an assumption for the user and create name in the global python env that may not get used. 



On Thursday, 15 March 2018 14:32:43 UTC+11, Ian Jones wrote:
That works for C++ command plugins too. I verified it on one specifically.

Ian
On Wed, Mar 14, 2018, 7:27 PM Michael Boon <boon...@gmail.com> wrote:
That works for Python plugins! It won't be quite so simple for a C++ plugin (which my exporter is) but I will  give it a try and report back.

@Ian Jones - I didn't know that worked in MEL, thank you.

On Wednesday, 14 March 2018 21:00:14 UTC+11, Justin Israel wrote:


On Wed, Mar 14, 2018, 2:18 PM justin hidair <justin...@gmail.com> wrote:

I guess you can do a command with a help flag  to accommodate as a workaround, that’s a good question tho

Help flag seems like a good suggestion, seeing as you don't have control over the function that gets injected into the commands namespace to wrap your plugin. 

I haven't tried it, so this is just a brainstorm. What would happen if you manually set cmds.ExportModel.__doc__ at the end of your initializePlugin(mobject) function? Would it even let you? Would it then allow docstrings to work properly? 


 

Sent from Mail for Windows 10

 

From: Michael Boon
Sent: Wednesday, March 14, 2018 12:59 AM
To: Python Programming for Autodesk Maya
Subject: [Maya-Python] Can Maya plugins do any self-documentation?

 

I have a plugin called ExportModel*. If I do help(cmds.ExportModel ) I get

Help on function ExportModel in module maya.cmds:

ExportModel(*args, **keywords)

 

which is next to useless.

Is there a way I can publish the expected arguments and return values of my plugin so that other scripters can see them inside Maya?

(* Names have been changed to protect the innocent)

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.

To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/778c97d2-c68f-49ef-b898-ac9514af0449%40googlegroups.com.

Michael Boon

unread,
Mar 15, 2018, 4:29:28 PM3/15/18
to Python Programming for Autodesk Maya
I'm creating a name in the global env either way. It would be good to delete it after setting the docString, I guess.

Both ways work afterwards, because the import path is "maya.cmds" in both cases so Python only stores one module object.
import maya.cmds as cmds
import maya.cmds
print maya.cmds is cmds
prints "True"
And similarly
help(cmds.ExportModel)
gives exactly the same output as
help(maya.cmds.ExportModel)

It still works after deleting the names and importing again, too
del cmds
del maya
import maya.cmds as cmds
help
(cmds.ExportModel)

Here's one that surprised me though. It still works after reloading. I'm not sure what happens internally to make that  work.
reload(cmds)
help
(cmds.ExportModel)

To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.

Justin Israel

unread,
Mar 15, 2018, 4:46:55 PM3/15/18
to python_in...@googlegroups.com
On Fri, Mar 16, 2018 at 9:29 AM Michael Boon <boon...@gmail.com> wrote:
I'm creating a name in the global env either way. It would be good to delete it after setting the docString, I guess.

Both ways work afterwards, because the import path is "maya.cmds" in both cases so Python only stores one module object.
import maya.cmds as cmds
import maya.cmds
print maya.cmds is cmds
prints "True"
And similarly
help(cmds.ExportModel)
gives exactly the same output as
help(maya.cmds.ExportModel)

It still works after deleting the names and importing again, too
del cmds
del maya
import maya.cmds as cmds
help
(cmds.ExportModel)

Here's one that surprised me though. It still works after reloading. I'm not sure what happens internally to make that  work.
reload(cmds)
help
(cmds.ExportModel)


No I get that it still works either way. My point was that you make the assumption of importing maya.cmds as cmds because you personally consume it through that alias. But if you are writing a plugin to be consumed by others, it would make sense not to create that alias in the global Maya space. If you just import "maya.cmds" and set it on there, you are being agnostic of the user's userSetup.py

As for the reload() not doing anything, the cmds module is empty as far as pure python. So the reload has no effect. Maya injects objects into that namespace.
 

To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/2db6f03b-097b-4161-baf2-8004f861306c%40googlegroups.com.

Marcus Ottosson

unread,
Mar 15, 2018, 6:23:54 PM3/15/18
to python_in...@googlegroups.com

I think what Justin is saying is that, after I the user have loaded your plug-in, then I’d be able to say..

cmds.file(new=True)

..without actually from maya import cmds. You’ve done that for me. It could cause issues whereby I make a script that assume cmds is already imported, and then when your plug-in is no longer loaded for whatever reason, now suddenly my scripts no longer work. It’s a hard one to track down!


To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/CAPGFgA2wELhdm-1yx3SuZzzWD00r7MS%2BhXDm0SgX%3D%3DUhb%2BmSdg%40mail.gmail.com.

Michael Boon

unread,
Mar 15, 2018, 6:47:06 PM3/15/18
to Python Programming for Autodesk Maya
No matter what name I import maya.cmds as (including simply importing it as maya.cmds) I add that name to the global namespace.
I think the robust approach is to choose an obviously temp name (or check for the existence of a name and back it up, but that seems like overkill), and delete it afterwards
import maya.cmds as _temp_cmds
# ... Do stuff with the __doc__ ...
del _temp_cmds

Regarding reload() - thanks, that makes sense :)

Justin Israel

unread,
Mar 15, 2018, 8:44:02 PM3/15/18
to python_in...@googlegroups.com


On Fri, Mar 16, 2018, 11:47 AM Michael Boon <boon...@gmail.com> wrote:
No matter what name I import maya.cmds as (including simply importing it as maya.cmds) I add that name to the global namespace.
I think the robust approach is to choose an obviously temp name (or check for the existence of a name and back it up, but that seems like overkill), and delete it afterwards
import maya.cmds as _temp_cmds
# ... Do stuff with the __doc__ ...
del _temp_cmds

We are missing each other on this point. 
I'm advocating the other way around. What is 100% expected is to use the exact fully qualified module path that Maya ships with as opposed to picking your own alias that you like best. I agree that in both cases you leave behind an imported module but at least one of them is full qualified. You shouldn't delete any of them after either, since you could be deleting something previously imported unkess you check first. 

But we are probably overly nitpicking this point to death :-) 

To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/7a756b16-2987-4b9a-a4d3-e0004ffbb969%40googlegroups.com.

Michael Boon

unread,
Mar 18, 2018, 8:06:03 PM3/18/18
to Python Programming for Autodesk Maya


On Friday, 16 March 2018 11:44:02 UTC+11, Justin Israel wrote:
On Fri, Mar 16, 2018, 11:47 AM Michael Boon <boon...@gmail.com> wrote:
No matter what name I import maya.cmds as (including simply importing it as maya.cmds) I add that name to the global namespace.
I think the robust approach is to choose an obviously temp name (or check for the existence of a name and back it up, but that seems like overkill), and delete it afterwards
import maya.cmds as _temp_cmds
# ... Do stuff with the __doc__ ...
del _temp_cmds

We are missing each other on this point. 

Argh and I hate that :\
 
I'm advocating the other way around. What is 100% expected is to use the exact fully qualified module path that Maya ships with as opposed to picking your own alias that you like best. I agree that in both cases you leave behind an imported module but at least one of them is full qualified. You shouldn't delete any of them after either, since you could be deleting something previously imported unkess you check first. 
 
What's better about a fully qualified module name, and what makes it "100% expected"? Do you just mean that it's relatively unambiguous what "maya.cmds" is? Both approaches have the problem that they could theoretically change the way scripts behave depending on whether my plugin is loaded or not. One redefines "cmds" and the other redefines "maya".

But we are probably overly nitpicking this point to death :-) 

Yeah this is unlikely to have any practical effects. I still hate the fact that I don't understand what you mean!

Justin Israel

unread,
Mar 18, 2018, 8:28:53 PM3/18/18
to python_in...@googlegroups.com
On Mon, Mar 19, 2018 at 1:06 PM Michael Boon <boon...@gmail.com> wrote:


On Friday, 16 March 2018 11:44:02 UTC+11, Justin Israel wrote:

On Fri, Mar 16, 2018, 11:47 AM Michael Boon <boon...@gmail.com> wrote:
No matter what name I import maya.cmds as (including simply importing it as maya.cmds) I add that name to the global namespace.
I think the robust approach is to choose an obviously temp name (or check for the existence of a name and back it up, but that seems like overkill), and delete it afterwards
import maya.cmds as _temp_cmds
# ... Do stuff with the __doc__ ...
del _temp_cmds

We are missing each other on this point. 

Argh and I hate that :\
 
I'm advocating the other way around. What is 100% expected is to use the exact fully qualified module path that Maya ships with as opposed to picking your own alias that you like best. I agree that in both cases you leave behind an imported module but at least one of them is full qualified. You shouldn't delete any of them after either, since you could be deleting something previously imported unkess you check first. 
 
What's better about a fully qualified module name, and what makes it "100% expected"? Do you just mean that it's relatively unambiguous what "maya.cmds" is? Both approaches have the problem that they could theoretically change the way scripts behave depending on whether my plugin is loaded or not. One redefines "cmds" and the other redefines "maya".

In my mind, the "maya" root namespace is shipped with Maya's site-package, so if I am going to leave symbols in the shared global python namespace I would want to leave them full qualified instead of choosing aliases or "from" imports. 
 

But we are probably overly nitpicking this point to death :-) 

Yeah this is unlikely to have any practical effects. I still hate the fact that I don't understand what you mean!

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.

Marcus Ottosson

unread,
Mar 19, 2018, 5:45:41 AM3/19/18
to python_in...@googlegroups.com

I find examples are often the best way of getting a point across, and I think what Justin is saying is that in place of this..

import maya.cmds as _temp_cmds

You do..

import maya.cmds

And then use maya.cmds wherever you would normally use _temp_cmds. This way, nothing is redefined and nothing needs cleaning up. And you’ve even saved yourself from typing one character less. :)


To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/CAPGFgA0-mw-Gsyg5p-J9L_tph41%2Bi98DV4ii304YG1m02eXU0Q%40mail.gmail.com.

Justin Israel

unread,
Mar 19, 2018, 3:00:27 PM3/19/18
to python_in...@googlegroups.com


On Mon, Mar 19, 2018, 10:45 PM Marcus Ottosson <konstr...@gmail.com> wrote:

I find examples are often the best way of getting a point across, and I think what Justin is saying is that in place of this..


It's really a team effort. I'm more of a big picture idea man, and you are like the front man in the band. 

import maya.cmds as _temp_cmds

You do..

import maya.cmds

And then use maya.cmds wherever you would normally use _temp_cmds. This way, nothing is redefined and nothing needs cleaning up. And you’ve even saved yourself from typing one character less. :)


On 19 March 2018 at 00:28, Justin Israel <justin...@gmail.com> wrote:
On Mon, Mar 19, 2018 at 1:06 PM Michael Boon <boon...@gmail.com> wrote:


On Friday, 16 March 2018 11:44:02 UTC+11, Justin Israel wrote:

On Fri, Mar 16, 2018, 11:47 AM Michael Boon <boon...@gmail.com> wrote:
No matter what name I import maya.cmds as (including simply importing it as maya.cmds) I add that name to the global namespace.
I think the robust approach is to choose an obviously temp name (or check for the existence of a name and back it up, but that seems like overkill), and delete it afterwards
import maya.cmds as _temp_cmds
# ... Do stuff with the __doc__ ...
del _temp_cmds

We are missing each other on this point. 

Argh and I hate that :\
 
I'm advocating the other way around. What is 100% expected is to use the exact fully qualified module path that Maya ships with as opposed to picking your own alias that you like best. I agree that in both cases you leave behind an imported module but at least one of them is full qualified. You shouldn't delete any of them after either, since you could be deleting something previously imported unkess you check first. 
 
What's better about a fully qualified module name, and what makes it "100% expected"? Do you just mean that it's relatively unambiguous what "maya.cmds" is? Both approaches have the problem that they could theoretically change the way scripts behave depending on whether my plugin is loaded or not. One redefines "cmds" and the other redefines "maya".

In my mind, the "maya" root namespace is shipped with Maya's site-package, so if I am going to leave symbols in the shared global python namespace I would want to leave them full qualified instead of choosing aliases or "from" imports. 

But we are probably overly nitpicking this point to death :-) 

Yeah this is unlikely to have any practical effects. I still hate the fact that I don't understand what you mean!

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/CAFRtmOAFs%2BTdA3CahbeGzU-fJdk2kWp%3D_dwB_j5WvpgJaLzO2w%40mail.gmail.com.

Marcus Ottosson

unread,
Mar 19, 2018, 3:43:28 PM3/19/18
to python_in...@googlegroups.com
Haha!

To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/CAPGFgA0L1WdxCiQt_KDmxaetOnoADE6LpMgYgVvDmGuG%2BUoAhg%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages