1   Maya Command Signature Scraper: For people who just really want to check their maya.cmds signatures

1.1   Synopsis

If you’re looking into this tool, you’re looking for a programmatic way of getting Maya function signatures. The current version of the tool has unfiltered prints as status logs...so that might be a deterrent... I personally built it so that I could compare my maya command calls against kwargs/args Maya expects to reduce errors.

Hope you’ll find it useful! Once you install you will now have a CLI tool called mayasig.

1.1.1   Features

  • Caching
  • Up to date with online help docs
  • Temp file generator
  • JSON file output
  • CLI access
  • Dict output

1.2   Installation

1.2.1   Windows, etc.

A universal installation method (that works on Windows, Mac OS X, Linux, …, and always provides the latest version) is to use pip:

# Make sure we have an up-to-date version of pip and setuptools:
$ pip install --upgrade pip setuptools
$ pip install mayaSigScraper-cli

(If pip installation fails for some reason, you can try easy_install mayaSigScraper-cli as a fallback.)

1.3   Usage

1.3.1   Bash

mayasig

Usage:
  mayasig [-m|--mayaversion VERSION] [-d|--depth DEPTH] (MAYA_CMDS ...)
  mayasig (-h|--help)
  mayasig (--version)

Options:
  -h --help                         Show this screen.
  --version                         Show version.
  -m VERSION --mayaversion VERSION  If you want to override which Maya docs we query (tested with 2015/2016/2017) [default: 2017]
  -d DEPTH --depth DEPTH            The depth verbosity of the return dictionary [default: 1]
  MAYA_CMDS                         Maya commands to query/scrape from the help and return signatures for

Examples:
  mayasig group

Help:
  For help using this tool, please open an issue on the Github repository:
  https://github.com/andresmweber/mayasig-cli

1.3.2   Python Package Usage

Feel free to access from the package instead via the two package-level convenience functions:

maya_signatures.cache
maya_signatures.scrape

In order to access full functionality from the scraper class you can access a package level instance of maya_signatures.commands.scrape.Scraper using:

maya_signatures.scraper
import maya_signatures
maya_signatures.scrape('ls')
# Result:
#   storing args  ('ls',)  storing kwargs  {}
#   Successfully loaded json data, loading into cache...
#   Retrieving cached value for input http://help.autodesk.com/cloudhelp/2017/ENU/Maya-Tech-Docs/CommandsPython/ls.html
#   wrote out tmp file C:\Users\andre\dev\maya_signature_builder\scrape.json

maya_signatures.scraper.build_command_stub('ls')
#  Result: def ls(*args, textures=bool, selection=bool, defaultNodes=bool, templated=bool, visible=bool, references=bool, flatten=bool, nodeTypes=bool, persistentNodes=bool, intermediateObjects=bool, long=bool, leaf=bool, recursive=bool, objectsOnly=bool, lockedNodes=bool, cameras=bool, tail=int, absoluteName=bool, lights=bool, live=bool, renderSetups=bool, containerType=str, preSelectHilite=bool, type=str, containers=bool, shortNames=bool, renderResolutions=bool, head=int, showType=bool, dependencyNodes=bool, orderedSelection=bool, renderQualities=bool, readOnly=bool, referencedNodes=bool, showNamespace=bool, invisible=bool, hilite=bool, untemplated=bool, partitions=bool, ghost=bool, uuid=bool, sets=bool, geometry=bool, assemblies=bool, noIntermediate=bool, modified=bool, allPaths=bool, shapes=bool, materials=bool, excludeType=str, planes=bool, exactType=str, renderGlobals=bool, undeletable=bool, dagObjects=bool, transforms=bool):
#              pass
maya_signatures.scrape('group')
#  Result: storing args  ('group',)  storing kwargs  {}
#  Successfully loaded json data, loading into cache...
#  Could not find key http://help.autodesk.com/cloudhelp/2017/ENU/Maya-Tech-Docs/CommandsPython/group.html in cached values...retrieving...
#  Trying to find command for web page:
#          http://help.autodesk.com/cloudhelp/2017/ENU/Maya-Tech-Docs/CommandsPython/group.html
#  wrote out tmp file C:\Users\andre\dev\maya_signature_builder\scrape.json
maya_signatures.scraper.get_command_flags('group')
#  Result: [('name', 'n'), ('parent', 'p'), ('relative', 'r'), ('useAsGroup', 'uag'), ('world', 'w'), ('empty', 'em'), ('absolute', 'a')]

1.4   Class Documentation

The maya online help command signature scraping command.

class maya_signatures.commands.scrape.Scrape(*args, **kwargs)

Bases: maya_signatures.commands.base.Base

BASEURL = 'http://help.autodesk.com/cloudhelp/{MAYAVERSION}/ENU/Maya-Tech-Docs/CommandsPython/'
build_command_stub(command, shortname=False, combined=False)

Builds a Python stub for the given command.

  • parameters, types, return::
    param command:str, valid maya command
    param shortname:
     bool, whether or not we want to use the shortname of the flags
    param combined:bool, whether we use both short name and long name of flags (will invalidate stub...)
    return:str, Python formatted function stub for the given command
cache_file

Provides the cache file path

  • parameters, types, return::
    return:str
cached

Provides the raw cache with urls as the dictionary keys

  • parameters, types, return::
    return:dict
get_command_flags(command)

Returns only the flags for the given command

  • parameters, types, return::
    param command:str, maya command
    return:list(list(str, str)), list of lists of flags in format: [<long name>, <short name>]
query(commands)

Builds URLs then stores all queried commands within the instance :param commands: list(str) or str, valid maya command(s) :return: None

reset_cache()

Clears the cache file of contents.

  • parameters, types, return::
    return:None
run()

CLI interface command runner

  • parameters, types, return::
    return:dict, command signatures dictionary sorted the commands as the keys
stored_commands

Provides a list of commands that are currently stored.

  • parameters, types, return::
    return:list

1.5   Version Support

This package supports the Maya 2015, 2016 and 2017 help docs so far so please be aware. I might back port a couple versions of the maya online help, but this is totally dependent on time.