PythonRule
- class PythonRule(script: Executable)
A
PythonRule
doesn’t get applied to Shapes. Instead it allows for the dynamic execution of Python code within aRuleSequence
orProgram
. This code is executed withexec
, with globals set todynamic_evaluation_context
. This means any statement that changes the globals (setting variables, importing, etc.) will be reflected in future PythonRules and in the dynamic evaluation ofReplacementRule
andJumpRule
parameters.Attributes
The
RuleApplicationType
to use when selecting a match to apply the rule to.Methods
- apply_to(shape: Shape, communication_layer: CommunicationLayer, in_automation: bool = False, _to_design: ndarray = array([0., 0., 0.])) Tuple[Rule, List[Tuple[Shape, Shape]], Shape, Shape, Shape, Shape]
-
- Parameters:
shape – The shape to apply this rule to.
communication_layer – The
CommunicationLayer
to use during rule application.in_automation – Whether this rule is being applied as part of an automation (e.g.: as part of a
RuleSequence
orProgram
)._to_design – Vector used to relocate the matches to the design in application previews and enumerations. This is needed because the
ShapeMachine
engine internally shifts itsinitial_design
to the origin to reduce floating-point error.
- Returns:
The shape created as a result of rule application.
- application_type
The
RuleApplicationType
to use when selecting a match to apply the rule to.