python_technical_primitives.patterns.base ========================================= .. py:module:: python_technical_primitives.patterns.base .. autoapi-nested-parse:: Base Specification class for DIY Specification pattern. No external dependencies - we own this code. Attributes ---------- .. autoapisummary:: python_technical_primitives.patterns.base.T Classes ------- .. autoapisummary:: python_technical_primitives.patterns.base.Specification Module Contents --------------- .. py:data:: T .. py:class:: Specification Bases: :py:obj:`abc.ABC`, :py:obj:`Generic`\ [\ :py:obj:`T`\ ] Base class for all specifications. Supports boolean composition (&, |, ~) and error tracking. Example: >>> class AdultSpec(Specification[User]): ... description = "User must be 18+" ... def is_satisfied_by(self, user): ... return user.age >= 18 >>> >>> spec = AdultSpec() & VerifiedEmailSpec() >>> if spec(user): ... process_user(user) .. py:attribute:: description :type: str :value: 'No description provided.' .. py:method:: is_satisfied_by(candidate: T) -> bool :abstractmethod: Check if candidate satisfies specification. .. py:property:: errors :type: Dict[str, str] Get errors from last validation.