Skip to content

v0.3.10

Choose a tag to compare

@nashabanov nashabanov released this 11 Apr 01:09
· 14 commits to main since this release

Added

  • Full support for multiple_of constraint. Added MultipleOf constraint in conformly-style semantics and Field(multiple_of=...) support for Pydantic models. Values are now generated respecting the step, including invalid value generation (NOT_MULTIPLE violation).
  • Special string semantic types. Introduced Email, IPv4, IPv6, IPvAny, Url, HttpUrl as semantic markers (subclasses of SpecialStr) for type-safe schema definitions.
  • Basic UUID support. Implemented canonical RFC 4122 v4 generation Fully integrated with the violation system (TOO_SHORT, TOO_LONG, WRONG_UUID_FORMAT, WRONG_UUID_CHARACTER).
  • Specialized generators. Implemented realistic data generation for new string semantics.
  • Constraint composition. Some special types (Email) support MinLength/MaxLength constraints (e.g., Annotated[Email, MinLength(10)]), while Pattern is restricted to avoid semantic conflicts.
  • Basic list[T] support. Generation of list[str], list[Annotated[T, Constraint]], and list[Model] with automatic element-wise constraint enforcement.

Changed

  • Type resolution architecture. extract_runtime_type_and_constraints now preserves semantic types (e.g., Email) for generator routing, instead of collapsing them to str.
  • StringSemantic extensibility. StringSemantic.kind now accepts extended FieldKind values (EMAIL) for specialized generator dispatch.
  • New module fields. Contains special string markers and registry for type mapping with pydantic types and field_kinds.
  • Collection-aware parsing. New collection_type field in FieldSpec cleanly separates container types from leaf types, unifying type extraction across adapters.
  • BREAKING: public API was made flatten (constraints, fields and core functions now imports from conformly main module)
  • Hide internal logic in _internal module.