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
intvs.int— should succeed. - One comparing
intvs.float— should fail.
Prints:
"int vs int: OK""int vs float: EXCEPTION"