Ë
    ÌiP
  ã                  ó¬   — d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZmZ dZ G d	„ d
e«      Z G d„ de«      Z G d„ dee«      Zy)é    )Úannotations)ÚOptional)ÚHashableBaseModelÚModelWithMetadataParsing)Ú"PydanticSemanticLayerElementConfig)ÚPydanticMetadata)ÚDimensionReferenceÚTimeDimensionReference)ÚDimensionTypeÚTimeGranularityz
YYYY-MM-DDc                  ó.   — e Zd ZU dZdZded<   dZded<   y)ÚPydanticDimensionValidityParamsa   Parameters identifying a given dimension as an entity for validity state.

    This construct is used for supporting SCD Type II tables, such as might be
    created via dbt's snapshot feature, or generated via periodic loads from external
    dimension semantic models. In either of those cases, there is typically a time dimension
    associated with the SCD semantic model that indicates the start and end times of a
    validity window, where the dimension value is valid for any time within that range.
    FÚboolÚis_startÚis_endN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r   © ó    ú{/var/www/html/strategist-ai/venv/lib/python3.12/site-packages/dbt_semantic_interfaces/implementations/elements/dimension.pyr   r      s   … ñð €HˆdÓØ€FˆDÔr   r   c                  ó*   — e Zd ZU dZded<   dZded<   y)ÚPydanticDimensionTypeParamszXPydanticDimension type params add additional context to some types (time) of dimensions.r   Útime_granularityNú)Optional[PydanticDimensionValidityParams]Úvalidity_params)r   r   r   r   r   r   r   r   r   r   r   $   s   … Ùbà%Ó%ØAE€OÐ>ÔEr   r   c                  ó®   — e Zd ZU dZded<   ded<   ded<   dZd	ed
<   ded<   dZded<   ded<   dZded<   ded<   edd„«       Z	edd„«       Z
edd„«       Zy)ÚPydanticDimensionzDescribes a dimension.ÚstrÚnamezOptional[str]Údescriptionr   ÚtypeFr   Úis_partitionz%Optional[PydanticDimensionTypeParams]Útype_paramsNÚexprzOptional[PydanticMetadata]ÚmetadataÚlabelz,Optional[PydanticSemanticLayerElementConfig]Úconfigc                ó.   — t        | j                  ¬«      S ©N)Úelement_name)r	   r"   ©Úselfs    r   Ú	referencezPydanticDimension.reference8   s   € ä!¨t¯y©yÔ9Ð9r   c                ój   — | j                   t        j                  u rt        | j                  ¬«      S d S r,   )r$   r   ÚTIMEr
   r"   r.   s    r   Útime_dimension_referencez*PydanticDimension.time_dimension_reference<   s)   € àAEÇÁÌm×N`ÑN`ÑA`Ô%°4·9±9Ô=ÐjÐfjÐjr   c                óH   — | j                   r| j                   j                  S y)zÁReturns the PydanticDimensionValidityParams property, if it exists.

        This is to avoid repeatedly checking that type params is not None before doing anything with ValidityParams
        N)r&   r   r.   s    r   r   z!PydanticDimension.validity_params@   s"   € ð ×ÒØ×#Ñ#×3Ñ3Ð3àr   )Úreturnr	   )r5   z Optional[TimeDimensionReference])r5   r   )r   r   r   r   r   r%   r'   r)   Úpropertyr0   r3   r   r   r   r   r    r    +   s‚   … Ù à
ƒIØÓØ
ÓØ€L�$ÓØ6Ó6Ø€Dˆ-ÓØ(Ó(Ø€Eˆ=ÓØ8Ó8àò:ó ð:ð òkó ðkð òó ñr   r    N)Ú
__future__r   Útypingr   Ú,dbt_semantic_interfaces.implementations.baser   r   Ú6dbt_semantic_interfaces.implementations.element_configr   Ú0dbt_semantic_interfaces.implementations.metadatar   Ú"dbt_semantic_interfaces.referencesr	   r
   Ú"dbt_semantic_interfaces.type_enumsr   r   ÚISO8601_FMTr   r   r    r   r   r   ú<module>r?      sW   ðÝ "å ÷õõ N÷÷ Nà€ôÐ&7ô ôFÐ"3ô FôÐ)Ð+Cõ r   