Common Schemas

The following schemas are used throughout multiple packages.

class BaseFilterRuleSchema(*, only: Union[Sequence[str], Set[str]] = None, exclude: Union[Sequence[str], Set[str]] = (), many: bool = False, context: Dict = None, load_only: Union[Sequence[str], Set[str]] = (), dump_only: Union[Sequence[str], Set[str]] = (), partial: Union[bool, Sequence[str], Set[str]] = False, unknown: str = None)[source]

The basic filter rule validator and processor.

Because in many cases we will be using the filter definitions passed from the filters API endpoints, we need a common way to process and validate that the filters that are being passed are indeed valid filters before converting them into the appropriate format for the specified endpoint. This base schema lacks the output formatting necessary for use within the endpoints themselves and instead serves as starting point for subclassing.

filters

The filter ruleset (to be loaded by load_filters)

Type

dict

filter_check

The flag determining if we should be checking against the filter ruleset. There are cases where we simply want to pass the data through into the desired format, and not validate the content aside from basic formatting.

Type

bool

name

The name of the filter.

Type

str

oper

The filter operator.

Type

str

value

The filter value.

Type

str

Examples

Performing a validation with a given filter definition ruleset:

>>> schema = BaseFilterRuleSchema()
>>> schema.load_filters(filterset)
>>> schema.load(('port.port', 'eq', '137'))

Performing a validation without a ruleset:

>>> schema = BaseFilterRuleSchema()
>>> schema.load(('port.port', 'eq', '137'))

Performing a validation against multiple filters at the same time:

>>> schema = BaseFilterRuleSchema()
>>> schema.load_filters(filterset)
>>> s.load((
...     ('port.port', 'eq', '137'),
...     ('port.port', 'eq', '443')),
...     many=True
... )