houdinihelp package

Submodules

houdinihelp.api module

class houdinihelp.api.NodeInfo(table, scopeop, namespace, corename, version, ext, section)

Bases: tuple

corename

Alias for field number 3

ext

Alias for field number 5

namespace

Alias for field number 2

scopeop

Alias for field number 1

section

Alias for field number 6

table

Alias for field number 0

version

Alias for field number 4

houdinihelp.api.components_to_path(table, scopeop, ns, name, version, snap_version=False)
houdinihelp.api.find_parm(root, parmid, label)

Tries to find a parameter in a help document, based on the parameter ID and its label.

houdinihelp.api.gather_node_paths(node, pathset)
houdinihelp.api.getFormattedTooltip(url)
houdinihelp.api.getHelpForId(helpid)
houdinihelp.api.getParmTooltip(op_table_name, op_type, version, namespace, scopeop, parm_token, parm_label, is_spare)
houdinihelp.api.getParsedHtmlHelp(url, content)
houdinihelp.api.getParsedTooltip(url, content)
houdinihelp.api.getTooltip(url)
houdinihelp.api.get_pages()
houdinihelp.api.get_searcher()
houdinihelp.api.hasHelp(url)

Returns True if the URL is something the help system can handle, e.g. “op:Object/geo”.

houdinihelp.api.hstring(text)
houdinihelp.api.initialize(*args, **kwargs)
houdinihelp.api.load_example(source, launch=False)
houdinihelp.api.load_module_from_houdini(module_name, search_distro=True, search_houdini_modules=True)
houdinihelp.api.memoize(func)
houdinihelp.api.nodeHelpTemplate(table, namespace, name, version)
houdinihelp.api.nodetype_to_path(nodetype, snap_version=False)

Takes a hou.NodeType object and returns the equivalent help path.

houdinihelp.api.open_wiki_preview(baseurl, path, content)
houdinihelp.api.patch_socket_server_error_handler()
houdinihelp.api.path_to_components(path)

Takes a help path and returns a named tuple of the following components:

  • table - the node category name, e.g. Object.
  • scopeop - if the node has a scope, the name of the scope node,
    otherwise an empty string.
  • namespace - the node’s namespace, or an empty string.
  • name - the node’s “core” name.
  • version - the node’s version string.
  • ext - the filename extension given in the path (if any).
  • section - an asset section name, or an empty string.
houdinihelp.api.path_to_nodetype(path)
houdinihelp.api.startHelpServer(port=48626)
houdinihelp.api.urlToPath(url)

Translates a URL from Houdini (e.g. “op:Sop/copy”) and translates it into a help server path (e.g. “/nodes/sop/copy”).

houdinihelp.cli module

houdinihelp.examples module

class houdinihelp.examples.ExampleRef(category, target, hdafile, typename)

Bases: object

create_in(network)
description()
example_type()
classmethod from_definition(defn)
target_type()
houdinihelp.examples.add_examples_from_hdafile(filepath)
houdinihelp.examples.can_have_example(node)
houdinihelp.examples.create_example(fornode, typename)
houdinihelp.examples.examples_for(node)
houdinihelp.examples.examples_menu(node)
houdinihelp.examples.examples_menu_choice(kwargs)
houdinihelp.examples.rebuild_example_index()
houdinihelp.examples.refs_for_hdafile(filepath)
houdinihelp.examples.remove_examples_from_hdafile(filepath)
houdinihelp.examples.save_node_example(subnet)
houdinihelp.examples.setup_examples()
houdinihelp.examples.start_node_example(node)
houdinihelp.examples.update_examples_callback(event_type, library_path)

houdinihelp.hcoloring module

class houdinihelp.hcoloring.HScriptLexer(**options)

Bases: pygments.lexer.RegexLexer

aliases = ['hscript', 'Hscript']
filenames = ['*.cmd']
mimetypes = ['application/x-hscript']
name = 'HScript'
tokens = {'curly': [('}', Token.Keyword, '#pop'), (':-', Token.Keyword), ('[^}:]+', Token.Punctuation), (':', Token.Punctuation)], 'paren': [('\\)', Token.Keyword, '#pop'), ('[^)]*', Token.Punctuation)], 'root': [('\\b(set|if|then|else|endif|for|to|step|foreach|while|end|break|continue)\\s*\\b', Token.Keyword), ('^\\s*([A-Za-z][A-Za-z0-9_]+)\\s*\\b', Token.Name.Builtin), ('\\s(-[A-Za-z][A-Za-z0-9_]*)', Token.Operator.Word), ('#.*\\n', Token.Comment), ('(\\b\\w+\\s*)(=)', <function callback>), ('[\\[\\]{}\\(\\)=]+', Token.Operator), ('(==|!=|<|>|<=|>=|&&|\\|\\|)', Token.Operator), ('\\$\\(', Token.Keyword, 'paren'), ('\\${', Token.Keyword, 'curly'), ('`.+`', Token.Literal.String.Backtick), ('(\\d+\\.)?(\\d+)(?= |\\Z)', Token.Literal.Number), ('\\$#?(\\w+|.)', Token.Name.Variable), ('"(\\\\\\\\|\\\\[0-7]+|\\\\.|[^"])*"', Token.Literal.String.Double), ("'(\\\\\\\\|\\\\[0-7]+|\\\\.|[^'])*'", Token.Literal.String.Single), ('\\s+', Token.Text), ('[^=\\s\\n]+', Token.Text)]}
class houdinihelp.hcoloring.VexLexer(**options)

Bases: pygments.lexer.RegexLexer

aliases = ['vex']
filenames = ['*.vex']
mimetypes = ['application/x-vex']
name = 'VEX'
tokens = {'dqstring': [('"', Token.Literal.String, '#pop'), ('\\\\([\\\\abfnrtv"\\\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', Token.Literal.String.Escape), ('[^\\\\"\\n]+', Token.Literal.String), ('\\\\\\n', Token.Literal.String), ('\\\\', Token.Literal.String)], 'function': ['whitespace', 'statements', (';', Token.Text), ('{', Token.Keyword, '#push'), ('}', Token.Keyword, '#pop')], 'if0': [('^\\s*#if.*?(?<!\\\\)\\n', Token.Comment, '#push'), ('^\\s*#endif.*?(?<!\\\\)\\n', Token.Comment, '#pop'), ('.*?\\n', Token.Comment)], 'macro': [('[^/\\n]+', Token.Comment.Preproc), ('/[*](.|\\n)*?[*]/', Token.Comment), ('//.*?\\n', Token.Comment, '#pop'), ('/', Token.Comment.Preproc), ('(?<=\\\\)\\n', Token.Comment.Preproc), ('\\n', Token.Comment.Preproc, '#pop')], 'rdqstring': [('"', Token.Literal.String, '#pop'), ('[^\\\\"\\n]+', Token.Literal.String), ('\\\\\\n', Token.Literal.String), ('\\\\', Token.Literal.String)], 'root': ['whitespace', ('((?:[a-zA-Z0-9_*\\s])+?(?:\\s|[*]))([a-zA-Z_][a-zA-Z0-9_]*)(\\s*\\([^;]*?\\))((?:\\s|//.*?\\n|/[*].*?[*]/)+)({)', <function callback>, 'function'), ('((?:[a-zA-Z0-9_*\\s])+?(?:\\s|[*]))([a-zA-Z_][a-zA-Z0-9_]*)(\\s*\\([^;]*?\\))((?:\\s|//.*?\\n|/[*].*?[*]/)+)(;)', <function callback>), ('', Token.Text, 'statement')], 'rsqstring': [('[\\\'"]', Token.Literal.String, '#pop'), ("[^\\\\\\'\\n]+", Token.Literal.String), ('\\\\\\n', Token.Literal.String), ('\\\\', Token.Literal.String)], 'sqstring': [('[\\\'"]', Token.Literal.String, '#pop'), ('\\\\([\\\\abfnrtv"\\\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', Token.Literal.String.Escape), ("[^\\\\\\'\\n]+", Token.Literal.String), ('\\\\\\n', Token.Literal.String), ('\\\\', Token.Literal.String)], 'statement': ['whitespace', 'statements', ('[{}]', Token.Keyword), (';', Token.Text, '#pop')], 'statements': [('"', Token.Literal.String, 'dqstring'), ("\\'", Token.Literal.String, 'sqstring'), ('r"', Token.Literal.String, 'rdqstring'), ("r\\'", Token.Literal.String, 'rsqstring'), ('(0x[0-9a-fA-F]|0[0-7]+|(\\d+\\.\\d*|\\.\\d+)|\\d+)e[+-]\\d+[lL]?', Token.Literal.Number.Float), ('0x[0-9a-fA-F]+[Ll]?', Token.Literal.Number.Hex), ('0[0-7]+[Ll]?', Token.Literal.Number.Oct), ('(\\d+\\.\\d*|\\.\\d+)', Token.Literal.Number.Float), ('\\d+', Token.Literal.Number.Integer), ('[~!%^&*()+=|\\[\\]:,.<>/?-]', Token.Text), ('(break|continue|do|else|export|forpoints|illuminance|gather|for|foreach|if|return|while|const|_Pragma)\\b', Token.Keyword), ('(int|float|vector|vector2|vector4|matrix|matrix3|string|bsdf|void|lpeaccumulator)\\b', Token.Keyword.Type), ('__(vex|vex_major|vex_minor)\\b', Token.Keyword.Reserved), ('__(LINE|FILE|DATE|TIME)__\\b', Token.Keyword.Reserved), ('[a-zA-Z_][a-zA-Z0-9_]*:', Token.Name.Label), ('[a-zA-Z_][a-zA-Z0-9_]*', Token.Name)], 'whitespace': [('^\\s*#if\\s+0', Token.Comment.Preproc, 'if0'), ('^\\s*#', Token.Comment.Preproc, 'macro'), ('\\n', Token.Text), ('\\s+', Token.Text), ('\\\\\\n', Token.Text), ('//.*?\\n', Token.Comment), ('/[*](.|\\n)*?[*]/', Token.Comment)]}

houdinihelp.hconfig module

class houdinihelp.hconfig.HoudiniAppConfig

Bases: houdinihelp.hconfig.HoudiniBaseConfig

AUTO_COMPILE_SCSS = False
CACHE_DIR = 'E:\\ikrima\\home\\houdini\\snippets\\houPyDocs\\$HOUDINI_USER_PREF_DIR\\config\\Help'
DEBUG = False
DOCUMENTS = [{'classname': 'houdinihelp.hstores.HiddenNodeStore', 'type': 'wrapper', 'child': ['C:\\Program Files\\Side Effects Software\\Houdini 17.0.439\\houdini\\help', {'classname': 'houdinihelp.hstores.HoudiniPathStore', 'type': 'object'}, {'classname': 'houdinihelp.hstores.AssetStore', 'type': 'object'}, {'classname': 'houdinihelp.hstores.ShelfStore', 'type': 'object'}, {'classname': 'bookish.stores.ZipTree', 'args': {'dirpath': 'C:\\Program Files\\Side Effects Software\\Houdini 17.0.439\\houdini\\help'}, 'type': 'object'}]}]
ENABLE_BACKGROUND_INDEXING = False
INDEX_DIR = 'C:\\Program Files\\Side Effects Software\\Houdini 17.0.439\\houdini\\config\\Help\\index'
LOGLEVEL = 'WARNING'
class houdinihelp.hconfig.HoudiniBaseConfig

Bases: bookish.config.DefaultConfig

AUTO_COMPILE_SCSS = False
CATEGORIES = '\n _ tool\n node/sop node/dop node/obj node/vop node/out node/cop2 node/chop node/vex\n attribute vex example homclass hommethod homfunction hommodule\n expression hscript property env_variable\n '
EXTRA_SHORTCUTS = []
HOUDINI_BUILD_VERSION = ''
HOUDINI_MAJOR_VERSION = ''
HOUDINI_MINOR_VERSION = ''
HOUDINI_VERSION = ''
HSCRIPT_LEXER

alias of houdinihelp.hcoloring.HScriptLexer

PAGES_CLASS

alias of houdinihelp.hpages.HoudiniPages

SEARCHABLES
SEARCH_TEMPLATE = '/templates/hresults.jinja2'
SHORTCUTS = [{'query': 'type:node', 'shortcut': 'n', 'desc': 'All nodes'}, {'query': 'category:node/sop', 'shortcut': 's', 'desc': 'Geometry nodes (SOPs)'}, {'query': 'category:node/dop', 'shortcut': 'd', 'desc': 'Dynamics nodes (DOPs)'}, {'query': 'category:node/obj', 'shortcut': 'o', 'desc': 'Object nodes'}, {'query': '(category:vex OR category:node/vop)', 'shortcut': 'v', 'desc': 'VEX and VOPs'}, {'query': 'category:node/vop', 'shortcut': 'vo', 'desc': 'VOPs'}, {'query': 'category:vex', 'shortcut': 'vx', 'desc': 'VEX functions'}, {'query': '(category:node/out OR type:property)', 'shortcut': 'r', 'desc': 'Render nodes and properties'}, {'query': 'category:hom*', 'shortcut': 'p', 'desc': 'Python scripting (HOM)'}, {'query': 'type:expression', 'shortcut': 'e', 'desc': 'Expression functions'}]
SUPPORT_DOCUMENTS = [{'source': 'C:\\Program Files\\Side Effects Software\\Houdini 17.0.439\\houdini\\python2.7libs\\bookish\\templates', 'type': 'mount', 'target': '/templates'}, {'source': 'C:\\Program Files\\Side Effects Software\\Houdini 17.0.439\\houdini\\python2.7libs\\bookish\\grammars', 'type': 'mount', 'target': '/grammars'}, {'source': 'C:\\Program Files\\Side Effects Software\\Houdini 17.0.439\\houdini\\python2.7libs\\bookish\\static', 'static': True, 'type': 'mount', 'target': '/static'}, {'source': 'C:\\Program Files\\Side Effects Software\\Houdini 17.0.439\\houdini\\python2.7libs\\houdinihelp\\templates', 'type': 'mount', 'target': '/templates'}, {'source': 'C:\\Program Files\\Side Effects Software\\Houdini 17.0.439\\houdini\\python2.7libs\\houdinihelp\\static', 'static': True, 'type': 'mount', 'target': '/static'}]
TEMPLATE = '/templates/hpage.jinja2'
TEXTIFY_CLASS

alias of houdinihelp.htextify.HoudiniTextifier

VEX_LEXER

alias of houdinihelp.hcoloring.VexLexer

WIKI_STYLE = '/templates/hwiki.jinja2'
class houdinihelp.hconfig.HoudiniDevConfig

Bases: houdinihelp.hconfig.HoudiniBaseConfig

AUTO_COMPILE_SCSS = False
CACHE_DIR = 'E:\\ikrima\\home\\houdini\\snippets\\houPyDocs\\$SH\\help/build\\cache'
DEBUG = True
DOCUMENTS = [('E:\\ikrima\\home\\houdini\\snippets\\houPyDocs\\$SH\\help/documents',), {'source': 'E:\\ikrima\\home\\houdini\\snippets\\houPyDocs\\$SH\\support/icons', 'static': True, 'type': 'mount', 'target': '/icons'}]
EDITABLE = True
EDIT_STORE = ('E:\\ikrima\\home\\houdini\\snippets\\houPyDocs\\$SH\\help/documents',)
ENABLE_BACKGROUND_INDEXING = False
INDEX_DIR = 'E:\\ikrima\\home\\houdini\\snippets\\houPyDocs\\$SH\\help/build\\index'
build_dir = 'E:\\ikrima\\home\\houdini\\snippets\\houPyDocs\\$SH\\help/build'
main_docs = ('E:\\ikrima\\home\\houdini\\snippets\\houPyDocs\\$SH\\help/documents',)
source_base = 'E:\\ikrima\\home\\houdini\\snippets\\houPyDocs\\$SH'

houdinihelp.hotkeys module

class houdinihelp.hotkeys.HotkeyFileParser
ctx_exp = <_sre.SRE_Pattern object>
json_obj()
json_text()
key_exp = <_sre.SRE_Pattern object>
parse_dir(dirpath)
parse_file(filepath)
print_json()
houdinihelp.hotkeys.actions_to_json(actions)
houdinihelp.hotkeys.find_actions(pages)
houdinihelp.hotkeys.hotkey_json_from_docs(pages)
houdinihelp.hotkeys.hotkey_json_from_file(filepath)
houdinihelp.hotkeys.hotkey_to_wiki(hotkey)
houdinihelp.hotkeys.parse_key(string)

houdinihelp.hpages module

class houdinihelp.hpages.Actions(use_hou=True)

Bases: bookish.wiki.pipeline.Processor

apply(block, context, action_context='')
before = ('groups',)
name = 'hactions'
class houdinihelp.hpages.ContentFroms

Bases: bookish.wiki.pipeline.Modifier

Finds the “#contentfrom:” property and replaces it with an include.

after = ('hierarchy',)
before = ('properties', 'includes')
modify(block, context)
name = 'hcontentfrom'
class houdinihelp.hpages.ExampleFiles

Bases: bookish.wiki.pipeline.Processor

For example files, computes the nodes and example files and adds them as annotations on the document.

For node docs, searches for examples related to the node.

For everything else, looks for example loader markup.

apply(block, context)
before = ('includes',)
name = 'hexamples'
class houdinihelp.hpages.ExampleSearches

Bases: bookish.wiki.pipeline.Processor

apply(block, context, root=None)
static make_load_example(hit, context, root)
class houdinihelp.hpages.HomClasses

Bases: bookish.wiki.pipeline.Processor

Post-processor for several features related to HOM pages, such as listing subclasses and methods inherited from superclasses.

apply(block, context)
before = ('annotate',)
name = 'homclasses'
class houdinihelp.hpages.HomTitles

Bases: bookish.wiki.pipeline.Processor

Aesthetic processor that just takes the dotted prefix of a class/function name (e.g. hou.Node) and puts the part up to the last dot in the pre-title.

after = ('properties',)
apply(block, context)
before = ('title',)
name = 'homtitles'
class houdinihelp.hpages.HoudiniIds

Bases: bookish.wiki.pipeline.Processor

Pre-processor for converting names of methods etc. into IDs.

apply(block, context)
name = 'hids'
class houdinihelp.hpages.HoudiniNodes

Bases: bookish.wiki.pipeline.Processor

Sets any missing node-specific information based on HOM calls.

after = ('properties', 'includes')
apply(block, context)
name = 'nodes'
class houdinihelp.hpages.HoudiniPages(*args, **kwargs)

Bases: bookish.wiki.wikipages.WikiPages

use_hou = True
class houdinihelp.hpages.HoudiniPagesWithoutHou(*args, **kwargs)

Bases: houdinihelp.hpages.HoudiniPages

use_hou = False
class houdinihelp.hpages.HoudiniShortcuts(use_hou=True)

Bases: bookish.wiki.pipeline.TextModifier

Implements Houdini-specific link features such as “opdef:” syntax and convenience schemes such as “Node:” and “Hom:”.

apply(block, context)
before = ('promote', 'includes', 'joinkeys')
do_properties = ('icon',)
name = 'hshortcuts'
opdef_exp = <_sre.SRE_Pattern object>
text(text, context)
class houdinihelp.hpages.Itemize

Bases: bookish.wiki.pipeline.Processor

after = ('properties', 'sections', 'includes', 'sortheadings')
apply(block, context)
before = ('groups',)
name = 'itemize'
sections = ('parameters', 'attributes')
class houdinihelp.hpages.Replacements

Bases: bookish.wiki.pipeline.Processor

If a searcher is available, this processor finds any documents that “replace” the current path, and adds information about them to a “replacedby” list on the document root, making them available to display in the document. This is to support linking from HScript commands to the replacement HOM equivalents.

apply(block, context)
fields = ('title', 'path', 'type', 'summary', 'icon')
name = 'hreplacements'
prefixes = ('/commands/', '/expressions/', '/nodes/')
class houdinihelp.hpages.RewriteReplaces

Bases: bookish.wiki.pipeline.Processor

A long time ago, instead of putting /commands/ophide as the path in a replaces property, someone wrote Cmd:ophide somehow assuming that would work. I should really go back and just replace them all, but rewriting them at runtime isn’t so bad, and who knows who might try the same thing again someday, so I might as well make it work.

Also, someone else decided they wanted that instead of using a page property, they wanted to write a @replaces section with links inside, so I have to support that too. This processor looks for such a section and translates it into a page property.

This has to run as a preprocessor (so the results are visible to the indexer, which currently skips postprocessing), so it’s split from the “Replacments” post-processor which does the reverse lookup on “replaced” pages.

apply(block, context, root=None, in_replaces=False)
fields = ('title', 'path', 'type', 'summary', 'icon')
name = 'hreplaces'
split_expr = <_sre.SRE_Pattern object>
class houdinihelp.hpages.Suites

Bases: bookish.wiki.pipeline.Processor

apply(block, context)
name = 'suites'
retain = {'vexsuite': ['summary', 'usage_group', 'arg_group']}
class houdinihelp.hpages.VexPages

Bases: bookish.wiki.pipeline.Processor

after = ('hierarchy',)
apply(block, context)
before = ('groups',)
name = 'vex'
houdinihelp.hpages.get_shortcut(scheme, value)
houdinihelp.hpages.parse_shortcut(path)

houdinihelp.hsearch module

class houdinihelp.hsearch.HoudiniSearchables(*args, **kwargs)

Bases: sphinx.ext.autodoc.importer._MockObject

schema()
houdinihelp.hsearch.find_parms(block)

Recursively finds dt blocks inside containers (but doesn’t recurse inside the dt blocks). This is necessary because for bad historical reasons nodes docs don’t mark parameters as items like they should.

houdinihelp.hsearch.usages_for_otl(otlpath)

houdinihelp.hstores module

class houdinihelp.hstores.AssetStore(config=None)

Bases: bookish.stores.StringStore

Maps assets (and HDK nodes with embedded help) onto paths under /nodes/ in the virtual file system.

content(path, encoding='utf8')

Convenience method to return the string content of the file at the given path.

Parameters:encoding

the name of the encoding to use to decode the file’s bytes. Default is "utf8". If you use encoding=None the

method returns the raw bytestring.
delete(path)

Deletes the underlying file for the given path.

etag(path)
exists(path)

Returns True if the given path exists in this store.

is_dir(path)

Returns True if the given path represents a directory in this store.

last_modified(path)

Returns a datetime object

list_all(path='/')
move(path, newpath)

Moves the underlying file to the new path.

tags()
writable(path)

Returns True if the given path can be created/overwritten.

write_file(path, bytestring)
class houdinihelp.hstores.HiddenNodeStore(child)

Bases: bookish.stores.HideStore

class houdinihelp.hstores.HoudiniPathStore(path='help')

Bases: bookish.stores.OverlayStore

Overlays HOUDINIPATH/help directories onto the virtual file system.

tags()
class houdinihelp.hstores.ShelfStore

Bases: bookish.stores.StringStore

A provider which translates requests for help under /shelf/ into calls to HOM to load embedded help content from shelf tools.

content(path, encoding='utf8')

Convenience method to return the string content of the file at the given path.

Parameters:encoding

the name of the encoding to use to decode the file’s bytes. Default is "utf8". If you use encoding=None the

method returns the raw bytestring.
delete(path)

Deletes the underlying file for the given path.

exists(path)

Returns True if the given path exists in this store.

is_dir(path)

Returns True if the given path represents a directory in this store.

list_dir(path)

Lists the file names under the given path.

move(path, newpath)

Moves the underlying file to the new path.

nodeexp = <_sre.SRE_Pattern object>
prefix = '/shelf/'
tags()
write_file(path, bytestring)

houdinihelp.htextify module

class houdinihelp.htextify.HoudiniFormattedTextifier(root, left=0, top=0, bottom=0, width=72, vars=None, charfilter=True)

Bases: houdinihelp.htextify.HoudiniTextifier

code_span(span)
em_span(span)
strong_span(span)
var_span(span)
class houdinihelp.htextify.HoudiniTextifier(root, left=0, top=0, bottom=0, width=72, vars=None, charfilter=True)

Bases: bookish.text.textify.BookishTextifier

root_block(block)
summary_block(block)
title_block(block)
usage_block(block)
usage_group_block(block)

houdinihelp.server module

houdinihelp.server.get_houdini_app(dev=None, use_houdini_path=True, auto_compile_scss=None, bgindex=None, config_file=None, config_obj=None, logfile=None, loglevel=None, debug=None)
houdinihelp.server.is_dev()
houdinihelp.server.start_app_server(host='0.0.0.0', port=48626, debug=None, bgindex=None, config_file=None, config_obj=None, dev=None, auto_compile_scss=None, **kwargs)
houdinihelp.server.start_dev_server(host='0.0.0.0', port=8080, debug=None, bgindex=None, config_file=None, config_obj=None, dev=None, auto_compile_scss=None, **kwargs)
houdinihelp.server.start_server(host='0.0.0.0', port=8080, debug=False, bgindex=None, config_file=None, config_obj=None, dev=None, use_houdini_path=True, auto_compile_scss=None, **kwargs)

houdinihelp.vex module

class houdinihelp.vex.AnyType(name)

Bases: houdinihelp.vex.RegexVexPart

Represents a metasyntactic wilcard matching any type, e.g. <type>. This is not actually part of VEX, but is used in the documentation to the docs clearer and more compact.

exp = <_sre.SRE_Pattern object>
classmethod expected()
is_meta()
matches(other)

Returns True if this “template” signature matches the given “target” signature.

Note that this is NOT the same as being equal to other. Equality testing is exact, whereas this method tests whether other can match this object’s template pattern.

meta_name()
string()

Returns a plain string representation of the part.

wiki()

Returns a wiki text representation of the part.

class houdinihelp.vex.Argument(t, out, ident, optional=None)

Bases: houdinihelp.vex.VexPart

Represents an argument in the function signature. This is a compound object containing the various parts of the argument (type, output indicator, name, optional).

basetype()
eq_exp = <_sre.SRE_Pattern object>
is_meta()
matches(other)

Returns True if this “template” signature matches the given “target” signature.

Note that this is NOT the same as being equal to other. Equality testing is exact, whereas this method tests whether other can match this object’s template pattern.

meta_name()
string()

Returns a plain string representation of the part.

typecode()
wiki()

Returns a wiki text representation of the part.

class houdinihelp.vex.ArgumentList(args)

Bases: houdinihelp.vex.VexPart

Represents zero or more arguments in a function signature.

check_meta_types(arglist, typemap)
matches(other)

Returns True if this “template” signature matches the given “target” signature.

Note that this is NOT the same as being equal to other. Equality testing is exact, whereas this method tests whether other can match this object’s template pattern.

separator_exp = <_sre.SRE_Pattern object>
string()

Returns a plain string representation of the part.

wiki()

Returns a wiki text representation of the part.

class houdinihelp.vex.ArrayType(subtype)

Bases: houdinihelp.vex.VexPart

Represents an array type. This is a wrapper around a VexPart instance representing the item type.

basetype()
classmethod expected()
is_meta()
matches(other)

Returns True if this “template” signature matches the given “target” signature.

Note that this is NOT the same as being equal to other. Equality testing is exact, whereas this method tests whether other can match this object’s template pattern.

meta_name()
string()

Returns a plain string representation of the part.

typecode()
wiki()

Returns a wiki text representation of the part.

class houdinihelp.vex.Context(doc_mode=True)

Bases: object

Used the pass configuration down to the various parsing parts.

Parameters:doc_mode – True if we are parsing a documentation template, False if we are parsing a signature from vcc -X.
class houdinihelp.vex.ContextRewriteReporter(funcdir, extension='.txt')

Bases: houdinihelp.vex.Reporter

wrong_contexts(fnname, stated, actual)
class houdinihelp.vex.GlobalVar(type_, name, readable, writable)

Bases: object

class houdinihelp.vex.Identifier(name)

Bases: houdinihelp.vex.RegexVexPart

Function name or argument name.

exp = <_sre.SRE_Pattern object>
classmethod expected()
matches(other)

Returns True if this “template” signature matches the given “target” signature.

Note that this is NOT the same as being equal to other. Equality testing is exact, whereas this method tests whether other can match this object’s template pattern.

string()

Returns a plain string representation of the part.

wiki()

Returns a wiki text representation of the part.

class houdinihelp.vex.MissingIdentifier

Bases: houdinihelp.vex.VexPart

Represents a missing name (as in a target parsed from vcc -X output, which doesn’t have argument names).

classmethod expected()
matches(other)

Returns True if this “template” signature matches the given “target” signature.

Note that this is NOT the same as being equal to other. Equality testing is exact, whereas this method tests whether other can match this object’s template pattern.

string()

Returns a plain string representation of the part.

wiki()

Returns a wiki text representation of the part.

exception houdinihelp.vex.NoMatch(cls, string, pos, expected)

Bases: exceptions.Exception

Raised by a VexPart when what it’s trying to parse doesn’t match the given string. This is usually caught by a caller so the caller can try a different pattern, but it may bubble all the way up if the given string is not a valid VEX signature.

class houdinihelp.vex.PrintReporter(file=None, print_footer=True)

Bases: houdinihelp.vex.Reporter

extra_context(name)
extra_doc(fnname)
extra_doc_signature(fnname, sig)
extra_global(glob, context)
finish(checker)
missing_doc(fnname, contexts)
missing_doc_signature(fnname, vccsig, docsigs)
missing_global(glob, context)
missing_statement_doc(sname, contexts)
parser_error(fnname, string, exception)
wrong_contexts(fnname, stated, actual)
wrong_function_name(fnname, wrong_string)
class houdinihelp.vex.RegexVexPart

Bases: houdinihelp.vex.VexPart

Middleware class for subclasses that parse using a regex.

exp = None
classmethod expected()
matches(other)

Returns True if this “template” signature matches the given “target” signature.

Note that this is NOT the same as being equal to other. Equality testing is exact, whereas this method tests whether other can match this object’s template pattern.

string()

Returns a plain string representation of the part.

wiki()

Returns a wiki text representation of the part.

class houdinihelp.vex.Reporter

Bases: object

compared_signatures(docsig, vccsig, matched)
extra_context(name)
extra_doc(fnname)
extra_doc_signature(fnname, sig)
extra_global(glob, context)
finish(checker)
marked_deprecated(signature)
missing_doc(fnname, contexts)
missing_doc_signature(fnname, vccsig, docsigs)
missing_global(glob, context)
missing_statement_doc(statementname, contexts)
parsed_doc_page(fnname)
parsed_doc_sig(sig)
parsed_signature(context, sig)
parser_error(fnname, string, exception)
start(checker)
wrong_contexts(fnname, stated, actual)
wrong_function_name(fnname, wrong_string)
class houdinihelp.vex.Signature(rtype, ident, arglist, original=None)

Bases: houdinihelp.vex.VexPart

Top-level object represents the entire signature. Contains the return type, function name, and argument list.

check_meta_types(other)
matches(other)

Returns True if this “template” signature matches the given “target” signature.

Note that this is NOT the same as being equal to other. Equality testing is exact, whereas this method tests whether other can match this object’s template pattern.

classmethod parse_concrete(string)
classmethod parse_template(string)
string()

Returns a plain string representation of the part.

wiki()

Returns a wiki text representation of the part.

class houdinihelp.vex.TypeAtom(name)

Bases: houdinihelp.vex.RegexVexPart

Represents an atomic type or struct.

basetype()
exp = <_sre.SRE_Pattern object>
matches(other)

Returns True if this “template” signature matches the given “target” signature.

Note that this is NOT the same as being equal to other. Equality testing is exact, whereas this method tests whether other can match this object’s template pattern.

string()

Returns a plain string representation of the part.

typecode()
wiki()

Returns a wiki text representation of the part.

class houdinihelp.vex.TypeChoice(names)

Bases: houdinihelp.vex.RegexVexPart

Reresents a choice between two or more types, e.g. int|float. This is not actually part of VEX, but is used in the documentation to the docs clearer and more compact.

atom_pattern = '(int|float|vector|vector2|vector4|matrix2|matrix3|matrix4|matrix|string|bsdf|light|material|void|lpeaccumulator)'
exp = <_sre.SRE_Pattern object>
classmethod expected()
matches(other)

Returns True if this “template” signature matches the given “target” signature.

Note that this is NOT the same as being equal to other. Equality testing is exact, whereas this method tests whether other can match this object’s template pattern.

string()

Returns a plain string representation of the part.

typecode()
wiki()

Returns a wiki text representation of the part.

class houdinihelp.vex.VariadicArgs(pairs=False)

Bases: houdinihelp.vex.VexPart

Represents variadic arguments (…) in a function signature.

matches(other)

Returns True if this “template” signature matches the given “target” signature.

Note that this is NOT the same as being equal to other. Equality testing is exact, whereas this method tests whether other can match this object’s template pattern.

string()

Returns a plain string representation of the part.

wiki()

Returns a wiki text representation of the part.

class houdinihelp.vex.VexChecker(reporter=None)

Bases: object

add_signature(context, sig)
build(vccpath, app)
check_contexts(fnname, contexts)
check_statements()
compare_function_names()
context_set_to_string(contextset)
match_all_signatures()
match_globals()
match_signatures(fnname)
overdocumented()
parse_vcc_output(vccpath)
parse_vex_docs(app)
string_to_context_set(string)
undocumented()
class houdinihelp.vex.VexPart

Bases: object

Base class for parsing bits of a VEX signature. The parsing methods are class methods that return a tree of instances representing the parsed signature.

classmethod choice(ctx, string, pos, choices)
classmethod expect(string, pos, text)
classmethod expect_regex(string, pos, expr)
classmethod expected()
is_meta()
matches(other)

Returns True if this “template” signature matches the given “target” signature.

Note that this is NOT the same as being equal to other. Equality testing is exact, whereas this method tests whether other can match this object’s template pattern.

classmethod optional(ctx, string, pos, optcls)
classmethod optional_text(string, pos, optstring)
classmethod parse(string, pos=0, **kwargs)

Parses the given string and returns a VexPart tree or raises NoMatch. Any keyword arguments are passed to the Context() constructor.

string()

Returns a plain string representation of the part.

classmethod take(ctx, string, pos)
classmethod take_type(ctx, string, pos, allow_array=True)
typecode()
wiki()

Returns a wiki text representation of the part.

classmethod ws(string, pos, required=False)
ws_exp = <_sre.SRE_Pattern object>
class houdinihelp.vex.VexType

Bases: houdinihelp.vex.VexPart

houdinihelp.vex.parse_vex(vexstring)

Parses the given signature string into a VexPart object.

houdinihelp.vex.vex_to_wiki(vexstring)

Parses the given signature string and returns a wiki json representation.

houdinihelp.vex.wikiconcat(*args)

Concatenates pieces of wiki text and returns a new wiki text list.

houdinihelp.vex.wikispan(text, typename, role='vexmarkup')

Returns a wiki json span with the given type and role.

Module contents