julee.util.validation.repository¶
Repository validation utilities for ensuring architectural contracts.
This module provides functions to validate repository implementations against their defined Protocols using @runtime_checkable.
Attributes¶
Exceptions¶
Raised when repository contract validation fails |
Functions¶
|
Validate and return a repository with proper type annotation. |
|
Validate that a repository implementation satisfies a protocol contract. |
Module Contents¶
- exception julee.util.validation.repository.RepositoryValidationError[source]¶
Bases:
ExceptionRaised when repository contract validation fails
- julee.util.validation.repository.ensure_repository_protocol(repository, protocol)[source]¶
Validate and return a repository with proper type annotation.
This provides both runtime validation and static type checking benefits.
- Parameters:
repository (object) – The repository implementation to validate
protocol (type[P]) – The protocol class to validate against
- Returns:
The validated repository (type checker knows it satisfies the protocol)
- Raises:
RepositoryValidationError – If validation fails
- Return type:
Example
>>> from julee.util.validation.repository import ensure_repository_protocol >>> from julee.domain.repositories import DocumentRepository >>> repo = MinioDocumentRepository() >>> validated_repo = ensure_repository_protocol(repo, DocumentRepository) >>> # Type checker now knows validated_repo satisfies DocumentRepository
- julee.util.validation.repository.validate_repository_protocol(repository, protocol)[source]¶
Validate that a repository implementation satisfies a protocol contract.
Uses Python’s built-in isinstance() with @runtime_checkable for robust, idiomatic protocol validation.
- Parameters:
repository (object) – The repository implementation to validate
protocol (type[P]) – The protocol class to validate against
- Raises:
RepositoryValidationError – If validation fails
Example
>>> from julee.util.validation.repository import validate_repository_protocol >>> from julee.domain.repositories import DocumentRepository >>> repo = MinioDocumentRepository() >>> validate_repository_protocol(repo, DocumentRepository)