123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- """
- Copyright (c) Contributors to the Open 3D Engine Project.
- For complete copyright and license terms please see the LICENSE at the root of this distribution.
- SPDX-License-Identifier: Apache-2.0 OR MIT
- """
- # -------------------------------------------------------------------------
- import pymel.core as pmc
- import sys
- import types
- def syspath():
- print 'sys.path:'
- for p in sys.path:
- print ' ' + p
- def info(obj):
- """Prints information about the object."""
- lines = ['Info for %s' % obj.name(),
- 'Attributes:']
- # Get the name of all attributes
- for a in obj.listAttr():
- lines.append(' ' + a.name())
- lines.append('MEL type: %s' % obj.type())
- lines.append('MRO:')
- lines.extend([' ' + t.__name__ for t in type(obj).__mro__])
- result = '\n'.join(lines)
- print result
- def _is_pymel(obj):
- try: # (1)
- module = obj.__module__ # (2)
- except AttributeError: # (3)
- try:
- module = obj.__name__ # (4)
- except AttributeError:
- return None # (5)
- return module.startswith('pymel') # (6)
- def _py_to_helpstr(obj):
- if isinstance(obj, basestring):
- return 'search.html?q=%s' % (obj.replace(' ', '+'))
- if not _is_pymel(obj):
- return None
- if isinstance(obj, types.ModuleType):
- return ('generated/%(module)s.html#module-%(module)s' %
- dict(module=obj.__name__))
- if isinstance(obj, types.MethodType):
- return ('generated/classes/%(module)s/'
- '%(module)s.%(typename)s.html'
- '#%(module)s.%(typename)s.%(methname)s' % dict(
- module=obj.__module__,
- typename=obj.im_class.__name__,
- methname=obj.__name__))
- if isinstance(obj, types.FunctionType):
- return ('generated/functions/%(module)s/'
- '%(module)s.%(funcname)s.html'
- '#%(module)s.%(funcname)s' % dict(
- module=obj.__module__,
- funcname=obj.__name__))
- if not isinstance(obj, type):
- obj = type(obj)
- return ('generated/classes/%(module)s/'
- '%(module)s.%(typename)s.html'
- '#%(module)s.%(typename)s' % dict(
- module=obj.__module__,
- typename=obj.__name__))
- def test_py_to_helpstr():
- def dotest(obj, ideal):
- result = _py_to_helpstr(obj)
- assert result == ideal, '%s != %s' % (result, ideal)
- dotest('maya rocks', 'search.html?q=maya+rocks')
- dotest(pmc.nodetypes,
- 'generated/pymel.core.nodetypes.html'
- '#module-pymel.core.nodetypes')
- dotest(pmc.nodetypes.Joint,
- 'generated/classes/pymel.core.nodetypes/'
- 'pymel.core.nodetypes.Joint.html'
- '#pymel.core.nodetypes.Joint')
- dotest(pmc.nodetypes.Joint(),
- 'generated/classes/pymel.core.nodetypes/'
- 'pymel.core.nodetypes.Joint.html'
- '#pymel.core.nodetypes.Joint')
- dotest(pmc.nodetypes.Joint().getTranslation,
- 'generated/classes/pymel.core.nodetypes/'
- 'pymel.core.nodetypes.Joint.html'
- '#pymel.core.nodetypes.Joint.getTranslation')
- dotest(pmc.joint,
- 'generated/functions/pymel.core.animation/'
- 'pymel.core.animation.joint.html'
- '#pymel.core.animation.joint')
- dotest(object(), None)
- dotest(10, None)
- dotest([], None)
- dotest(sys, None)
- def test_py_to_helpstrFAIL():
- assert 1 == 2, '1 != 2'
- import webbrowser # (1)
- HELP_ROOT_URL = ('http://help.autodesk.com/cloudhelp/2018/ENU/Maya-Tech-Docs/PyMel/')# (2)
- def pmhelp(obj): # (3)
- """Gives help for a pymel or python object.
- If obj is not a PyMEL object, use Python's built-in
- `help` function.
- If obj is a string, open a web browser to a search in the
- PyMEL help for the string.
- Otherwise, open a web browser to the page for the object.
- """
- tail = _py_to_helpstr(obj)
- if tail is None:
- help(obj) # (4)
- else:
- webbrowser.open(HELP_ROOT_URL + tail) # (5)
- if __name__ == '__main__':
- test_py_to_helpstr()
- print 'Tests ran successfully.'
|