Ë
    ÌiÍ  ã                  ó  — d dl mZ d dlmZmZ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 d dlmZ d d	lmZ d d
lmZ d dlmZmZmZ d dlmZmZmZmZm Z m!Z! d dl"m#Z#  G d„ de	ee   «      Z$ G d„ de	e
ee   «      Z%y)é    )Úannotations)ÚListÚOptionalÚSequence)Úoverride)ÚHashableBaseModelÚModelWithMetadataParsing)Ú"PydanticSemanticLayerElementConfig)ÚPydanticDimension)ÚPydanticEntity)ÚPydanticMeasure)ÚPydanticMetadata)ÚPydanticNodeRelation)ÚProtocolHintÚSemanticModelÚSemanticModelDefaults)ÚDimensionReferenceÚEntityReferenceÚLinkableElementReferenceÚMeasureReferenceÚSemanticModelReferenceÚTimeDimensionReference)ÚFieldc                  ó*   — e Zd ZU edd„«       Zded<   y)ÚPydanticSemanticModelDefaultsc                ó   — | S ©N© ©Úselfs    úw/var/www/html/strategist-ai/venv/lib/python3.12/site-packages/dbt_semantic_interfaces/implementations/semantic_model.pyÚ_implements_protocolz2PydanticSemanticModelDefaults._implements_protocol$   ó   € àˆó    úOptional[str]Úagg_time_dimensionN)Úreturnr   )Ú__name__Ú
__module__Ú__qualname__r   r"   Ú__annotations__r   r$   r!   r   r   #   s   … Øòó ðð &Ô%r$   r   c                  ó¨  — e Zd ZU dZed'd„«       Zded<   ded<   ded<   d	ed
<   ded<    ee¬«      Z	ded<    ee¬«      Z
ded<    ee¬«      Zded<   dZded<   ded<   ded<   ed(d„«       Zed(d„«       Zed)d„«       Zed*d„«       Zed+d„«       Zed+d„«       Zed,d„«       Zed+d „«       Zed-d!„«       Zd.d"„Zd/d#„Zd0d$„Z	 	 	 	 d1d%„Zed2d&„«       Zy)3ÚPydanticSemanticModelzDescribes a semantic model.c                ó   — | S r   r   r   s    r!   r"   z*PydanticSemanticModel._implements_protocol.   r#   r$   ÚstrÚnamez'Optional[PydanticSemanticModelDefaults]Údefaultsr%   Údescriptionr   Únode_relationÚprimary_entity)Údefault_factoryzSequence[PydanticEntity]ÚentitieszSequence[PydanticMeasure]ÚmeasureszSequence[PydanticDimension]Ú
dimensionsNÚlabelzOptional[PydanticMetadata]Úmetadataz,Optional[PydanticSemanticLayerElementConfig]Úconfigc                óT   — | j                   D �cg c]  }|j                  ‘Œ c}S c c}w r   )r6   Ú	reference©r    Úis     r!   Úentity_referencesz'PydanticSemanticModel.entity_references@   ó   € à%)§]¡]Ö3 �—“Ò3Ð3ùÒ3ó   �%c                óT   — | j                   D �cg c]  }|j                  ‘Œ c}S c c}w r   )r8   r=   r>   s     r!   Údimension_referencesz*PydanticSemanticModel.dimension_referencesD   s   € à%)§_¡_Ö5 �—“Ò5Ð5ùÒ5rB   c                óT   — | j                   D �cg c]  }|j                  ‘Œ c}S c c}w r   )r7   r=   r>   s     r!   Úmeasure_referencesz(PydanticSemanticModel.measure_referencesH   rA   rB   c                ój   — t        | j                  D �cg c]  }|j                  d u‘Œ c}«      S c c}w r   )Úanyr8   Úvalidity_params©r    Údims     r!   Úhas_validity_dimensionsz-PydanticSemanticModel.has_validity_dimensionsL   s*   € ä¸t¿¹ÖO¸�C×'Ñ'¨tÒ3ÒOÓPÐPùÒOs   ”0c                óÀ   — | j                   D �cg c](  }|j                  sŒ|j                  j                  sŒ'|‘Œ* }}|sy t        |«      dk(  sJ d«       ‚|d   S c c}w )Né   zZFound more than one validity start dimension. This should have been blocked in validation!r   )r8   rI   Úis_startÚlen)r    rK   Úvalidity_start_dimss      r!   Úvalidity_start_dimensionz.PydanticSemanticModel.validity_start_dimensionP   sh   € à.2¯o©oÖv sÀ×ATÓATÐY\×YlÑYl×YuÓYušsÐvÐÐvÙ"ØäÐ#Ó$¨Ò)ð	hàgó	hØ)à" 1Ñ%Ð%ùò wó   �A¡A¸Ac                óÀ   — | j                   D �cg c](  }|j                  sŒ|j                  j                  sŒ'|‘Œ* }}|sy t        |«      dk(  sJ d«       ‚|d   S c c}w )NrN   zXFound more than one validity end dimension. This should have been blocked in validation!r   )r8   rI   Úis_endrP   )r    rK   Úvalidity_end_dimss      r!   Úvalidity_end_dimensionz,PydanticSemanticModel.validity_end_dimensionZ   sh   € à,0¯O©OÖr S¸s×?RÓ?RÐWZ×WjÑWj×WqÓWqšSÐrÐÐrÙ ØäÐ!Ó" aÒ'ð	fàeó	fØ'à  Ñ#Ð#ùò srS   c                ób   — | j                   xs g D �cg c]  }|j                  sŒ|‘Œ c}S c c}w r   )r8   Úis_partitionrJ   s     r!   Ú
partitionsz PydanticSemanticModel.partitionsd   s'   € à#Ÿ™Ò4°"ÖI˜¸×8HÓ8H’ÒIÐIùÒIs   “,¥,c                óv   — | j                   }|sy t        |«      dkD  rt        d| j                  › �«      ‚|d   S )NrN   z'too many partitions for semantic_model r   )rZ   rP   Ú
ValueErrorr0   )r    rZ   s     r!   Ú	partitionzPydanticSemanticModel.partitionh   s>   € à—_‘_ˆ
ÙØÜˆz‹?˜QÒÜÐFÀtÇyÁyÀkÐRÓSÐSØ˜!‰}Ðr$   c                ó.   — t        | j                  ¬«      S )N)Úsemantic_model_name)r   r0   r   s    r!   r=   zPydanticSemanticModel.referenceq   s   € ä%¸$¿)¹)ÔDÐDr$   c                ó–   — | j                   D ]  }|j                  |k(  sŒ|c S  t        d|j                  › d| j                  › d�«      ‚©NzNo dimension with name (ú) in semantic_model with name (ú))r7   r=   r\   Úelement_namer0   )r    Úmeasure_referenceÚmeasures      r!   Úget_measurez!PydanticSemanticModel.get_measureu   s\   € Ø—}‘}ò 	ˆGØ× Ñ Ð$5Ó5Ø’ð	ô Ø&Ð'8×'EÑ'EÐ&FÐFeÐfj×foÑfoÐepÐpqÐró
ð 	
r$   c                ó‚   — | j                   D ]  }|j                  |k(  sŒ|c S  t        d|› d| j                  › d�«      ‚ra   )r8   r=   r\   r0   )r    Údimension_referencerK   s      r!   Úget_dimensionz#PydanticSemanticModel.get_dimension~   sP   € Ø—?‘?ò 	ˆCØ�}‰}Ð 3Ó3Ø’
ð	ô Ð3Ð4GÐ3HÐHgÐhl×hqÑhqÐgrÐrsÐtÓuÐur$   c                ó‚   — | j                   D ]  }|j                  |k(  sŒ|c S  t        d|› d| j                  › d�«      ‚)NzNo entity with name (rb   rc   )r6   r=   r\   r0   )r    Úentity_referenceÚentitys      r!   Ú
get_entityz PydanticSemanticModel.get_entity…   sR   € Ø—m‘mò 	ˆFØ×ÑÐ#3Ó3Ø’ð	ô Ð0Ð1AÐ0BÐBaÐbf×bkÑbkÐalÐlmÐnÓoÐor$   c                óÔ   — | j                  |¬«      }| j                  �| j                  j                  nd }|j                  xs |}|€J d|j                  › d�«       ‚t	        |¬«      S )N)re   z'Aggregation time dimension for measure zµ is not set! This should either be set directly on the measure specification in the model, or else defaulted to the primary time dimension in the data source containing the measure.©rd   )rg   r1   r&   r0   r   )r    re   rf   Údefault_agg_time_dimensionÚagg_time_dimension_names        r!   Ú&checked_agg_time_dimension_for_measurez<PydanticSemanticModel.checked_agg_time_dimension_for_measureŒ   s}   € ð ×"Ñ"Ð5FÐ"ÓGˆØIMÏÉÐIb T§]¡]×%EÒ%EÐhlÐ"à")×"<Ñ"<Ò"ZÐ@ZÐØ&Ð2ð 	
Ø5°g·l±l°^ð D-ð .ó	
Ð2ô
 &Ð3JÔKÐKr$   c                óJ   — | j                   �t        | j                   ¬«      S d S )Nrp   )r4   r   r   s    r!   Úprimary_entity_referencez.PydanticSemanticModel.primary_entity_referenceš   s$   € àDH×DWÑDWÐDcŒ¨D×,?Ñ,?Ô@ÐmÐimÐmr$   )r'   r   )r'   zList[LinkableElementReference])r'   zList[MeasureReference])r'   Úbool)r'   zOptional[PydanticDimension])r'   zList[PydanticDimension])r'   r   )re   r   r'   r   )ri   r   r'   r   )rl   r   r'   r   )re   r   r'   r   )r'   zOptional[EntityReference])r(   r)   r*   Ú__doc__r   r"   r+   r   Úlistr6   r7   r8   r9   Úpropertyr@   rD   rF   rL   rR   rW   rZ   r]   r=   rg   rj   rn   rs   ru   r   r$   r!   r-   r-   +   ss  … Ù%àòó ðð ƒIØ5Ó5ØÓØ'Ó'à!Ó!Ù).¸tÔ)D€HÐ&ÓDÙ*/ÀÔ*E€HÐ'ÓEÙ.3ÀDÔ.I€JÐ+ÓIØ€Eˆ=Óà(Ó(Ø8Ó8àò4ó ð4ð ò6ó ð6ð ò4ó ð4ð òQó ðQð ò&ó ð&ð ò$ó ð$ð òJó ðJð òó ðð òEó ðEó
óvópðLØ!1ðLà	óLð ònó ñnr$   r-   N)&Ú
__future__r   Útypingr   r   r   Útyping_extensionsr   Ú,dbt_semantic_interfaces.implementations.baser   r	   Ú6dbt_semantic_interfaces.implementations.element_configr
   Ú:dbt_semantic_interfaces.implementations.elements.dimensionr   Ú7dbt_semantic_interfaces.implementations.elements.entityr   Ú8dbt_semantic_interfaces.implementations.elements.measurer   Ú0dbt_semantic_interfaces.implementations.metadatar   Ú5dbt_semantic_interfaces.implementations.node_relationr   Ú!dbt_semantic_interfaces.protocolsr   r   r   Ú"dbt_semantic_interfaces.referencesr   r   r   r   r   r   Údsi_pydantic_shimr   r   r-   r   r$   r!   ú<module>r‡      sw   ðÝ "ç +Ñ +å &÷õõ YÝ RÝ TÝ MÝ V÷ñ ÷
÷ õ $ô&Ð$5°|ÐDYÑ7Zô &ôqnÐ-Ð/GÈÐVcÑIdõ qnr$   