o
    l>j]                     @  sp   d Z ddlmZ ddlZddlmZmZ ddlmZm	Z	 ed Z
	ddddddZG dd deZg dZdS )z6Configuration and base models for CloudKit validation.    )annotationsN)Literalcast)	BaseModel
ConfigDict)allowignoreforbidr   )defaultexplicitCloudKitExtraMode | Noner
   CloudKitExtraModereturnc                C  sP   | dur| S t dp|  }|dv rtt|S |dv r dS |dv r&dS |S )aX  
    Resolve the validation mode for CloudKit wire models.

    ``PYICLOUD_CK_EXTRA`` accepts ``allow``, ``ignore``, or ``forbid``.
    Convenience booleans remain supported for local debugging:
      - ``true/1/on/strict`` -> ``forbid``
      - ``false/0/off/lenient`` -> ``allow``

    ``explicit`` takes precedence over the environment.
    NPYICLOUD_CK_EXTRA>   r   r	   r   >   1onyestruestrictr	   >   0noofffalselenientr   )osgetenvstriplowerr   r   )r   r
   raw r   R/home/thesage/.local/lib/python3.10/site-packages/pyicloud/common/cloudkit/base.py!resolve_cloudkit_validation_extra   s   
r!   c                   @  s   e Zd ZdZedddZdS )CKModela  
    Shared base model for CloudKit wire payloads.

    Wire models stay permissive by default so unexpected Apple fields are
    preserved. Strict reverse-engineering mode is applied at validation call
    sites via ``model_validate(..., extra="forbid")``.
    r   T)extraarbitrary_types_allowedN)__name__
__module____qualname____doc__r   model_configr   r   r   r    r"   ,   s    
r"   )r"   r   r!   )N)r   r   r
   r   r   r   )r(   
__future__r   r   typingr   r   pydanticr   r   r   r!   r"   __all__r   r   r   r    <module>   s    