examples.11_same_type_validation_strategy

Demonstrates strict same-type enforcement between two reference values using SameTypeValidationStrategy.

This example shows:
  • How two reference values are compared for exact type equality.
  • The strategy succeeds only if both reference types match exactly.
  • When types differ, the validation fails with Status.EXCEPTION.
Run directly:

python examples/11_same_type_validation_strategy.py

Expected output:

int vs int: OK int vs float: EXCEPTION

 1"""Demonstrates strict same-type enforcement between two reference values
 2using :class:`SameTypeValidationStrategy`.
 3
 4This example shows:
 5  * How two reference values are compared for exact type equality.
 6  * The strategy succeeds only if both reference types match exactly.
 7  * When types differ, the validation fails with `Status.EXCEPTION`.
 8
 9Run directly:
10
11    python examples/11_same_type_validation_strategy.py
12
13Expected output:
14
15    int vs int: OK
16    int vs float: EXCEPTION
17"""
18
19import sys
20import pathlib
21
22# ---------------------------------------------------------------------------
23# Make repo root importable when running this file directly
24# ---------------------------------------------------------------------------
25sys.path.insert(0, str(pathlib.Path(__file__).resolve().parents[1]))
26
27from constrained_values.strategies import SameTypeValidationStrategy
28
29
30def main() -> None:
31    """Run the same-type validation demonstration.
32
33    Creates two :class:`SameTypeValidationStrategy` instances:
34      * One comparing `int` vs. `int` — should succeed.
35      * One comparing `int` vs. `float` — should fail.
36
37    Prints:
38        * `"int vs int: OK"`
39        * `"int vs float: EXCEPTION"`
40    """
41    print("int vs int:", SameTypeValidationStrategy(1, 2).validate("payload").status.name)
42    print("int vs float:", SameTypeValidationStrategy(1, 2.0).validate(None).status.name)
43
44
45if __name__ == "__main__":
46    main()
def main() -> None:
31def main() -> None:
32    """Run the same-type validation demonstration.
33
34    Creates two :class:`SameTypeValidationStrategy` instances:
35      * One comparing `int` vs. `int` — should succeed.
36      * One comparing `int` vs. `float` — should fail.
37
38    Prints:
39        * `"int vs int: OK"`
40        * `"int vs float: EXCEPTION"`
41    """
42    print("int vs int:", SameTypeValidationStrategy(1, 2).validate("payload").status.name)
43    print("int vs float:", SameTypeValidationStrategy(1, 2.0).validate(None).status.name)

Run the same-type validation demonstration.

Creates two SameTypeValidationStrategy instances:

  • One comparing int vs. int — should succeed.
  • One comparing int vs. float — should fail.
Prints:
  • "int vs int: OK"
  • "int vs float: EXCEPTION"