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 :)

On Friday, 16 March 2018 09:23:54 UTC+11, Marcus Ottosson wrote:
>
> 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!
> ​
>
> On 15 March 2018 at 20:46, Justin Israel <[email protected] 
> <javascript:>> wrote:
>
>>
>>
>> On Fri, Mar 16, 2018 at 9:29 AM Michael Boon <[email protected] 
>> <javascript:>> 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.
>>  
>>
>>>
>>>
>>>
>>> On Thursday, 15 March 2018 18:23:00 UTC+11, Justin Israel wrote:
>>>
>>>>
>>>>
>>>> On Thu, Mar 15, 2018, 5:27 PM Michael Boon <[email protected]> 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 <[email protected]> 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 <[email protected]> 
>>>>>>>> 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 <https://go.microsoft.com/fwlink/?LinkId=550986> 
>>>>>>>>> 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 [email protected].
>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>> https://groups.google.com/d/msgid/python_inside_maya/24a69ba7-2dfb-447a-bcba-3a3b71150600%40googlegroups.com
>>>>>>>>>  
>>>>>>>>> <https://groups.google.com/d/msgid/python_inside_maya/24a69ba7-2dfb-447a-bcba-3a3b71150600%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>> .
>>>>>>>>> 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 [email protected].
>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>> https://groups.google.com/d/msgid/python_inside_maya/5aa8787f.51951c0a.13a94.16ae%40mx.google.com
>>>>>>>>>  
>>>>>>>>> <https://groups.google.com/d/msgid/python_inside_maya/5aa8787f.51951c0a.13a94.16ae%40mx.google.com?utm_medium=email&utm_source=footer>
>>>>>>>>> .
>>>>>>>>> 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 [email protected].
>>>>>>> To view this discussion on the web visit 
>>>>>>> https://groups.google.com/d/msgid/python_inside_maya/519946dd-0c8b-4107-8f2a-f02a93ee0a5b%40googlegroups.com
>>>>>>>  
>>>>>>> <https://groups.google.com/d/msgid/python_inside_maya/519946dd-0c8b-4107-8f2a-f02a93ee0a5b%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>> 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 [email protected].
>>>>> To view this discussion on the web visit 
>>>>> https://groups.google.com/d/msgid/python_inside_maya/778c97d2-c68f-49ef-b898-ac9514af0449%40googlegroups.com
>>>>>  
>>>>> <https://groups.google.com/d/msgid/python_inside_maya/778c97d2-c68f-49ef-b898-ac9514af0449%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>> 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 [email protected] 
>>> <javascript:>.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/python_inside_maya/2db6f03b-097b-4161-baf2-8004f861306c%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/python_inside_maya/2db6f03b-097b-4161-baf2-8004f861306c%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> 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 [email protected] <javascript:>.
>> 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
>>  
>> <https://groups.google.com/d/msgid/python_inside_maya/CAPGFgA2wELhdm-1yx3SuZzzWD00r7MS%2BhXDm0SgX%3D%3DUhb%2BmSdg%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>> 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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/python_inside_maya/7a756b16-2987-4b9a-a4d3-e0004ffbb969%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to