sgn.validator
¶
Validators for simplifying element validation.
PadConstraint
dataclass
¶
Declarative pad topology constraint enforced by a validator.
When a validator from this module is used as a decorator, the constraint
it enforces is attached to the decorated method as a pad_constraint
attribute, so that tools (e.g. sgn-inspect) can introspect the pad
topology an element expects without instantiating it. Stacked validator
decorators merge their constraints.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sink_pads
|
int | None
|
int, optional, the exact number of sink pads required, or None if unconstrained |
None
|
source_pads
|
int | None
|
int, optional, the exact number of source pads required, or None if unconstrained |
None
|
pad_names_match
|
bool
|
bool, whether source and sink pad names are required to match |
False
|
Source code in src/sgn/validator.py
merge(other)
¶
Combine this constraint with another, with the other's counts taking precedence where both are set.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
other
|
PadConstraint
|
The constraint to merge on top of this one |
required |
Returns:
| Type | Description |
|---|---|
PadConstraint
|
The combined constraint |
Source code in src/sgn/validator.py
many_to_one(arg)
¶
Validator for many-to-one transforms.
Can be used as a decorator or called directly::
# As a decorator
class MyTransform(TransformElement):
@validator.many_to_one
def validate(self) -> None:
pass
# Called directly
class MyTransform(TransformElement):
def __post_init__(self):
super().__post_init__()
validator.many_to_one(self)
Source code in src/sgn/validator.py
num_pads(sink_pads=None, source_pads=None)
¶
Validator for specific number of sink and source pads.
Can be used as a decorator or called directly::
# As a decorator
class MyTransform(TransformElement):
@validator.num_pads(sink_pads=2, source_pads=1)
def validate(self) -> None:
# Additional custom validation
pass
# Called directly
class MyTransform(TransformElement):
def __post_init__(self):
super().__post_init__()
validator.num_pads(sink_pads=2, source_pads=1)(self)
Source code in src/sgn/validator.py
one_to_many(arg)
¶
Validator for one-to-many transforms.
Can be used as a decorator or called directly::
# As a decorator
class MyTransform(TransformElement):
@validator.one_to_many
def validate(self) -> None:
pass
# Called directly
class MyTransform(TransformElement):
def __post_init__(self):
super().__post_init__()
validator.one_to_many(self)
Source code in src/sgn/validator.py
one_to_one(arg)
¶
Validator for one-to-one transforms.
Can be used as a decorator or called directly::
# As a decorator
class MyTransform(TransformElement):
@validator.one_to_one
def validate(self) -> None:
pass
# Called directly
class MyTransform(TransformElement):
def __post_init__(self):
super().__post_init__()
validator.one_to_one(self)
Source code in src/sgn/validator.py
pad_names_match(arg)
¶
Validator that source and sink pad names match.
Can be used as a decorator or called directly::
# As a decorator
class MyTransform(TransformElement):
@validator.pad_names_match
def validate(self) -> None:
pass
# Called directly
class MyTransform(TransformElement):
def __post_init__(self):
super().__post_init__()
validator.pad_names_match(self)
Source code in src/sgn/validator.py
single_pad(arg)
¶
Validator for single-pad sinks.
Can be used as a decorator or called directly::
# As a decorator
class MySink(SinkElement):
@validator.single_pad
def validate(self) -> None:
pass
# Called directly
class MySink(SinkElement):
def __post_init__(self):
super().__post_init__()
validator.single_pad(self)