Skip to content

Custom Constraint Implementation

Tip

You may check how built-in Constraints are implemented here.

You may create your own custom Constraint implementation by following steps.

  1. Run AutoSetSyntax: Create New Constraint from the command palette1.
  2. It will create a template like

    Example

    from __future__ import annotations
    
    from AutoSetSyntax.plugin import AbstractConstraint, ViewSnapshot
    
    
    class MyOwnConstraint(AbstractConstraint):
        """Your custom `Constraint` must inherit `AbstractConstraint` and implement the `test` method."""
    
        def is_droppable(self) -> bool:
            # Optionally, you can implement `is_droppable` to indicate that this object
            # can be dropped under certain circumstances by the optimizer.
            return False
    
        def test(self, view_snapshot: ViewSnapshot) -> bool:
            # Your job is to implement this function, at least.
            # This function tests the `view_snapshot`.
            return False
    
  3. Decide the constraint name of your Constraint.

    Say, if your class name is MyOwnConstraint, the constraint name is decided by

    1. Remove Constraint suffix from the class name. (MyOwnConstraint » MyOwn)
    2. Convert it into snake case. (MyOwn » my_own)

    That is, you can use it via "constraint": "my_own" in a constraint rule.

  4. At least, implement the test method.

  5. Save your implementation in Packages/AutoSetSyntax-Custom/constraints/. Conventionally, the file name used is the constraint name, my_own.py.

  6. Restart ST and check whether your implementation is loaded via Debug Information.


  1. Command palette: Ctrl+P for Windows/Linux. Cmd+P for macOS.