def __gethelp__(self): """ the function will get the help string via the command of mc.help, then re-format the string into a list and add some valuable data to the attribute flags and flag_type. """ _dict = [] for ln in mc.help(self.__cmd__.__name__).split("\n"): if str(ln).strip().startswith("-"): ent = [] for i in ln.strip().split(" "): if i: ent.append(i) flags = [f[1:] for f in ent[:2]] sn, ln = flags self.flags += flags typ = None if len(ent) > 2: typ = ent[2:] typ = [str(t) for t in typ] entry = [flags, typ] self.flag_typ[str(sn)] = typ self.flag_typ[str(ln)] = typ _dict.append(entry) return _dict
def helpNonVerbose(thing, title='Python Library Documentation: %s', forceload=0): """ Utility method to return python help in the form of a string thing - str or unicode name to get help on title - format string for help result forceload - argument to pydoc.resolve, force object's module to be reloaded from file returns formated help string """ result = "" try: thingStr = thing.encode(cmds.about(codeset=True)) except: thingStr = str(thing) try: # Possible two-stage object resolution! # Sometimes we get docs for strings, other times for objects # try: object, name = pydoc.resolve(thingStr, forceload) except: # Get an object from a string thingObj=eval(thingStr,sys.modules['__main__'].__dict__) object, name = pydoc.resolve(thingObj, forceload) desc = pydoc.describe(object) module = inspect.getmodule(object) if name and '.' in name: desc += ' in ' + name[:name.rfind('.')] elif module and module is not object: desc += ' in module ' + module.__name__ doc = None text = pydoc.TextDoc() if not (inspect.ismodule(object) or inspect.isclass(object) or inspect.isroutine(object) or inspect.isgetsetdescriptor(object) or inspect.ismemberdescriptor(object) or isinstance(object, property)): # If the passed object is a piece of data or an instance, # document its available methods instead of its value. object = type(object) desc += ' object' # if the object is a maya command without a proper docstring, # then tack on the help for it elif module is cmds and inspect.isroutine(object): try: if len(object.__doc__) == 0: doc = cmds.help(object.__name__) except: pass if not doc: doc = text.document(object, name) result = pydoc.plain(title % desc + '\n\n' + doc) # Remove multiple empty lines result = "\n".join([ line for line in result.splitlines() if line.strip()]) except: pass return result
def getCmdInfoBasic( command ): typemap = { 'string' : unicode, 'length' : float, 'float' : float, 'angle' : float, 'int' : int, 'unsignedint' : int, 'on|off' : bool, 'script' : callable, 'name' : 'PyNode' } flags = {} shortFlags = {} removedFlags = {} try: lines = cmds.help( command ).split('\n') except RuntimeError: pass else: synopsis = lines.pop(0) # certain commands on certain platforms have an empty first line if not synopsis: synopsis = lines.pop(0) #_logger.debug(synopsis) if lines: lines.pop(0) # 'Flags' #_logger.debug(lines) for line in lines: line = line.replace( '(Query Arg Mandatory)', '' ) line = line.replace( '(Query Arg Optional)', '' ) tokens = line.split() try: tokens.remove('(multi-use)') multiuse = True except ValueError: multiuse = False #_logger.debug(tokens) if len(tokens) > 1 and tokens[0].startswith('-'): args = [ typemap.get(x.lower(), util.uncapitalize(x) ) for x in tokens[2:] ] numArgs = len(args) # lags with no args in mel require a boolean val in python if numArgs == 0: args = bool # numArgs will stay at 0, which is the number of mel arguments. # this flag should be renamed to numMelArgs #numArgs = 1 elif numArgs == 1: args = args[0] longname = str(tokens[1][1:]) shortname = str(tokens[0][1:]) if longname in keyword.kwlist: removedFlags[ longname ] = shortname longname = shortname elif shortname in keyword.kwlist: removedFlags[ shortname ] = longname shortname = longname #sometimes the longname is empty, so we'll use the shortname for both elif longname == '': longname = shortname flags[longname] = { 'longname' : longname, 'shortname' : shortname, 'args' : args, 'numArgs' : numArgs, 'docstring' : '' } if multiuse: flags[longname].setdefault('modes', []).append('multiuse') shortFlags[shortname] = longname #except: # pass #_logger.debug("could not retrieve command info for", command) res = { 'flags': flags, 'shortFlags': shortFlags, 'description' : '', 'example': '', 'type' : 'other' } if removedFlags: res['removedFlags'] = removedFlags return res
''' More Loops ''' # enumerate # Showing all the files in a directory. ''' Help and Web Pages ''' # string # maya help & showHelp commands cmds.help( 'textScrollList', language='python', doc=True ) cmds.showHelp( 'http://www.autodesk.com/', absolute=True ) # google search # http://www.google.com/search?sourceid=chrome&ie=UTF-8&q= def googleSearch( item ): google = r'http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=' cmds.showHelp( google + item, absolute=True ) googleSearch( "python" ) ''' Standard Library '''