maya.utils.converter.rules¶
Conversion rules for tik.maya → maya.cmds transformation.
Rules define how specific tik.maya patterns should be expanded into their maya.cmds equivalents. Each rule is a deterministic, testable unit of transformation.
Rule categories: 1. Language-level expressions (always convertible) 2. Blessed helpers (explicitly registered, opt-in)
Classes¶
Base class for all conversion rules. |
|
Convert Curve.create() to cmds.curve(...). |
|
Convert node.select() to cmds.select(node, replace=True). |
|
Convert Joint.create() to cmds.joint(...). |
|
Convert Locator.create() to cmds.spaceLocator(...). |
|
Convert Mesh.create() to cmds.poly* or cmds.createNode('mesh', ...). |
|
Convert node.add_attr(name, **kwargs) to cmds.addAttr(...). |
|
Convert node.delete() to cmds.delete(node). |
|
Convert node.duplicate() to cmds.duplicate(node). |
|
Convert node.rename(name) to cmds.rename(node, name). |
|
Convert plug.connect(other) to cmds.connectAttr(src, dst). |
|
Convert node["attr"].get() to cmds.getAttr('node.attr'). |
|
Convert plug.lock() to cmds.setAttr(plug.path, lock=True). |
|
Convert src_plug >> dst_plug to cmds.connectAttr(...). |
|
Convert node["attr"].set(value) to cmds.setAttr('node.attr', value). |
|
Convert plug.unlock() to cmds.setAttr(plug.path, lock=False). |
|
Convert node["attr"].value (read) to cmds.getAttr('node.attr'). |
|
Convert node["attr"].value = x to cmds.setAttr('node.attr', x). |
|
Convert resolve(name) to name (pass-through for string node names). |
|
Context information available during rule matching. |
|
Result of a successful rule match. |
|
Convert Transform.create() to cmds.createNode('transform', ...). |
|
Convert transform.freeze() to cmds.makeIdentity(...). |
|
Convert transform property assignment to cmds.setAttr. |
Functions¶
|
Return the default set of conversion rules. |
Module Contents¶
- class ConversionRule¶
Bases:
abc.ABCBase class for all conversion rules.
A rule defines: - A pattern to match in the AST - A transformation to apply when matched - Metadata about the rule (name, category, etc.)
- abstractmethod convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert the matched AST node to maya.cmds code.
- Args:
node: AST node that matched this rule. context: Context with variable type information.
- Returns:
RuleMatch with the converted code.
- abstractmethod matches(node: ast.AST, context: RuleContext) bool¶
Check if this rule applies to the given AST node.
- Args:
node: AST node to check. context: Context with variable type information.
- Returns:
True if this rule can convert the node.
- category: str = 'general'¶
- description: str = ''¶
- name: str = 'unnamed_rule'¶
- class CurveCreateRule¶
Bases:
ConversionRuleConvert Curve.create() to cmds.curve(…).
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert to cmds.curve(…).
- matches(node: ast.AST, context: RuleContext) bool¶
Match Curve.create(…) calls.
- category = 'node_creation'¶
- description = 'Convert Curve.create() to cmds.curve'¶
- name = 'curve_create'¶
- class DagNodeSelectRule¶
Bases:
ConversionRuleConvert node.select() to cmds.select(node, replace=True).
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert to cmds.select(…).
- matches(node: ast.AST, context: RuleContext) bool¶
Match node.select() patterns.
- category = 'node_methods'¶
- description = 'Convert DagNode.select() to cmds.select'¶
- name = 'dagnode_select'¶
- class JointCreateRule¶
Bases:
ConversionRuleConvert Joint.create() to cmds.joint(…).
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert to cmds.joint(…).
- matches(node: ast.AST, context: RuleContext) bool¶
Match Joint.create(…) calls.
- category = 'node_creation'¶
- description = 'Convert Joint.create() to cmds.joint'¶
- name = 'joint_create'¶
- class LocatorCreateRule¶
Bases:
ConversionRuleConvert Locator.create() to cmds.spaceLocator(…).
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert to cmds.spaceLocator(…).
- matches(node: ast.AST, context: RuleContext) bool¶
Match Locator.create(…) calls.
- category = 'node_creation'¶
- description = 'Convert Locator.create() to cmds.spaceLocator'¶
- name = 'locator_create'¶
- class MeshCreateRule¶
Bases:
ConversionRuleConvert Mesh.create() to cmds.poly* or cmds.createNode(‘mesh’, …).
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert to appropriate cmds call.
- matches(node: ast.AST, context: RuleContext) bool¶
Match Mesh.create(…) calls.
- POLY_PRIMITIVES¶
- category = 'node_creation'¶
- description = 'Convert Mesh.create() to cmds.poly* commands'¶
- name = 'mesh_create'¶
- class NodeAddAttrRule¶
Bases:
ConversionRuleConvert node.add_attr(name, **kwargs) to cmds.addAttr(…).
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert to cmds.addAttr(…).
- matches(node: ast.AST, context: RuleContext) bool¶
Match node.add_attr() patterns.
- category = 'node_methods'¶
- description = 'Convert Node.add_attr() to cmds.addAttr'¶
- name = 'node_add_attr'¶
- class NodeDeleteRule¶
Bases:
ConversionRuleConvert node.delete() to cmds.delete(node).
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert to cmds.delete(…).
- matches(node: ast.AST, context: RuleContext) bool¶
Match node.delete() patterns.
- category = 'node_methods'¶
- description = 'Convert Node.delete() to cmds.delete'¶
- name = 'node_delete'¶
- class NodeDuplicateRule¶
Bases:
ConversionRuleConvert node.duplicate() to cmds.duplicate(node).
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert to cmds.duplicate(…).
- matches(node: ast.AST, context: RuleContext) bool¶
Match node.duplicate() patterns.
- category = 'node_methods'¶
- description = 'Convert Node.duplicate() to cmds.duplicate'¶
- name = 'node_duplicate'¶
- class NodeRenameRule¶
Bases:
ConversionRuleConvert node.rename(name) to cmds.rename(node, name).
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert to cmds.rename(…).
- matches(node: ast.AST, context: RuleContext) bool¶
Match node.rename(…) patterns.
- category = 'node_methods'¶
- description = 'Convert Node.rename() to cmds.rename'¶
- name = 'node_rename'¶
- class PlugConnectRule¶
Bases:
ConversionRuleConvert plug.connect(other) to cmds.connectAttr(src, dst).
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert to cmds.connectAttr(…).
- matches(node: ast.AST, context: RuleContext) bool¶
Match plug.connect(other) patterns.
- category = 'connections'¶
- description = 'Convert Plug.connect() to cmds.connectAttr'¶
- name = 'plug_connect'¶
- class PlugGetRule¶
Bases:
ConversionRuleConvert node[“attr”].get() to cmds.getAttr(‘node.attr’).
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert to cmds.getAttr(…).
- matches(node: ast.AST, context: RuleContext) bool¶
Match node[“attr”].get() or node[“attr”].value patterns.
- category = 'attribute_access'¶
- description = 'Convert Plug.get() to cmds.getAttr'¶
- name = 'plug_get'¶
- class PlugLockRule¶
Bases:
ConversionRuleConvert plug.lock() to cmds.setAttr(plug.path, lock=True).
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert to cmds.setAttr(…, lock=True).
- matches(node: ast.AST, context: RuleContext) bool¶
Match node[“attr”].lock() patterns.
- category = 'attribute_methods'¶
- description = 'Convert Plug.lock() to cmds.setAttr with lock flag'¶
- name = 'plug_lock'¶
- class PlugRshiftRule¶
Bases:
ConversionRuleConvert src_plug >> dst_plug to cmds.connectAttr(…).
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert to cmds.connectAttr(…).
- matches(node: ast.AST, context: RuleContext) bool¶
Match plug >> other_plug patterns.
- category = 'connections'¶
- description = 'Convert >> operator connection to cmds.connectAttr'¶
- name = 'plug_rshift_connect'¶
- class PlugSetRule¶
Bases:
ConversionRuleConvert node[“attr”].set(value) to cmds.setAttr(‘node.attr’, value).
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert to cmds.setAttr(…).
- matches(node: ast.AST, context: RuleContext) bool¶
Match node[“attr”].set(value) patterns.
- category = 'attribute_access'¶
- description = 'Convert Plug.set() to cmds.setAttr'¶
- name = 'plug_set'¶
- class PlugUnlockRule¶
Bases:
ConversionRuleConvert plug.unlock() to cmds.setAttr(plug.path, lock=False).
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert to cmds.setAttr(…, lock=False).
- matches(node: ast.AST, context: RuleContext) bool¶
Match node[“attr”].unlock() patterns.
- category = 'attribute_methods'¶
- description = 'Convert Plug.unlock() to cmds.setAttr with lock=False'¶
- name = 'plug_unlock'¶
- class PlugValueGetRule¶
Bases:
ConversionRuleConvert node[“attr”].value (read) to cmds.getAttr(‘node.attr’).
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert to cmds.getAttr(…).
- matches(node: ast.AST, context: RuleContext) bool¶
Match node[“attr”].value read patterns.
- category = 'attribute_access'¶
- description = 'Convert Plug.value property read to cmds.getAttr'¶
- name = 'plug_value_get'¶
- class PlugValueSetRule¶
Bases:
ConversionRuleConvert node[“attr”].value = x to cmds.setAttr(‘node.attr’, x).
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert to cmds.setAttr(…).
- matches(node: ast.AST, context: RuleContext) bool¶
Match node[“attr”].value = x assignment patterns.
Note: This matches Assign nodes where target is attr.value on subscript.
- category = 'attribute_access'¶
- description = 'Convert Plug.value property assignment to cmds.setAttr'¶
- name = 'plug_value_set'¶
- class ResolveRule¶
Bases:
ConversionRuleConvert resolve(name) to name (pass-through for string node names).
Handles: - resolve(‘nodeName’) - tm.resolve(‘nodeName’) - tik.maya.resolve(‘nodeName’)
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert resolve(name) to just name.
- matches(node: ast.AST, context: RuleContext) bool¶
Match resolve(…) calls in various forms.
- category = 'utilities'¶
- description = 'Convert resolve() to direct node name usage'¶
- name = 'resolve_call'¶
- class RuleContext¶
Context information available during rule matching.
Provides access to tracked variable names and their types, allowing rules to make informed decisions about conversions.
- get_variable_type(name: str) str | None¶
Get the tracked type for a variable name.
- imports: Dict[str, str]¶
- source_lines: List[str]¶
- variable_types: Dict[str, str]¶
- class RuleMatch¶
Result of a successful rule match.
- confidence: float = 1.0¶
- converted_code: str¶
- notes: str | None = None¶
- original_node: ast.AST¶
- rule_name: str¶
- class TransformCreateRule¶
Bases:
ConversionRuleConvert Transform.create() to cmds.createNode(‘transform’, …).
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert to cmds.createNode(‘transform’, …).
- matches(node: ast.AST, context: RuleContext) bool¶
Match Transform.create(…) calls.
- category = 'node_creation'¶
- description = 'Convert Transform.create() to cmds.createNode'¶
- name = 'transform_create'¶
- class TransformFreezeRule¶
Bases:
ConversionRuleConvert transform.freeze() to cmds.makeIdentity(…).
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert to cmds.makeIdentity(…).
- matches(node: ast.AST, context: RuleContext) bool¶
Match transform.freeze() patterns.
- category = 'transform_methods'¶
- description = 'Convert Transform.freeze() to cmds.makeIdentity'¶
- name = 'transform_freeze'¶
- class TransformPropertySetRule¶
Bases:
ConversionRuleConvert transform property assignment to cmds.setAttr.
- convert(node: ast.AST, context: RuleContext) RuleMatch¶
Convert to cmds.setAttr(…).
- matches(node: ast.AST, context: RuleContext) bool¶
Match node.property = value patterns for known properties.
- PROPERTY_MAP¶
- category = 'properties'¶
- description = 'Convert transform property assignment to cmds.setAttr'¶
- name = 'transform_property_set'¶
- get_default_rules() List[ConversionRule]¶
Return the default set of conversion rules.
- Returns:
List of ConversionRule instances in priority order.