On Fri, Mar 16, 2018 at 9:29 AM Michael Boon <boons...@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.


>
>
>
> On Thursday, 15 March 2018 18:23:00 UTC+11, Justin Israel wrote:
>
>>
>>
>> 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 <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 python_inside_maya+unsubscr...@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
>>>>>>> <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 python_inside_maya+unsubscr...@googlegroups.com.
>>>>>>> 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 python_inside_maya+unsubscr...@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
>>>>> <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 python_inside_maya+unsubscr...@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
>>> <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 python_inside_maya+unsubscr...@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
> <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 python_inside_maya+unsubscr...@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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to