Ë
    èlÖi.  ã                   ó°   — d dl Z d dlmZmZ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mZmZmZmZ  e j&                  e«      Z G d„ dee   ee   «      Zy)	é    N)ÚGenericÚListÚSequence)ÚSemanticManifestTÚSemanticModel)ÚSemanticModelReference)Ú
EntityType)ÚFileContextÚSemanticManifestValidationRuleÚSemanticModelContextÚValidationErrorÚValidationIssueÚvalidate_safelyc                   ó€   — e Zd ZdZe ed¬«      dedee   fd„«       «       Z	e ed¬«      de
dee   fd	„«       «       Zy
)ÚNaturalEntityConfigurationRulezLEnsures that entities marked as EntityType.NATURAL are configured correctly.z…checking that each semantic model has no more than one natural entity, and that natural entities are used in the appropriate contexts)Úwhats_being_doneÚsemantic_modelÚreturnc           
      ór  — g }t        t        j                  | j                  ¬«      t	        | j
                  ¬«      ¬«      }t        | j                  D �cg c]+  }|j                  t        j                  u sŒ |j
                  ‘Œ- c}«      }t        |«      dkD  r;t        |d| j
                  › dt        |«      › d|› d�¬	«      }|j                  |«       |rV| j                  D �cg c]  }|j                  sŒ|‘Œ c}s/t        |d
| j
                  › d|› d�¬	«      }|j                  |«       |S c c}w c c}w )N)Úmetadata)Úsemantic_model_name)Úfile_contextr   é   zISemantic models can have at most one natural entity, but semantic model `z` has z  distinct natural entities set! ú.)ÚcontextÚmessagezºThe use of `natural` entities is currently supported only in conjunction with a validity window defined in the set of time dimensions associated with the semantic model. Semantic model `z` uses a natural entity (z() but does not define a validity window!)r   r
   Úfrom_metadatar   r   ÚnameÚsetÚentitiesÚtyper	   ÚNATURALÚlenr   ÚappendÚ
dimensionsÚvalidity_params)r   Úissuesr   ÚentityÚnatural_entity_namesÚerrorÚdims          úq/var/www/html/strategist-ai/venv_dbt/lib/python3.12/site-packages/dbt_semantic_interfaces/validations/entities.pyÚ)_validate_semantic_model_natural_entitieszHNaturalEntityConfigurationRule._validate_semantic_model_natural_entities   s5  € ð )+ˆÜ&Ü$×2Ñ2¸N×<SÑ<SÔTÜ1Àn×FYÑFYÔZô
ˆô
  #Ø'5×'>Ñ'>Öd˜VÀ&Ç+Á+ÔQ[×QcÑQcÒBcˆV�[‹[Òdó 
Ðô Ð#Ó$ qÒ(Ü#ØðØ"×'Ñ'Ð(¨¬sÐ3GÓ/HÐ.IÐIiØ'Ð(¨ð+ôˆEð �M‰M˜%Ô Ù¸×8QÑ8QÖ(i°ÐUX×UhÓUhªÓ(iÜ#Øðà"×'Ñ'Ð(Ð(AÐBVÐAWð X#ð$ôˆEð �M‰M˜%Ô àˆùò) eùò )js   Á!D/Á7D/Ã%D4Ã7D4zKchecking that entities marked as EntityType.NATURAL are properly configuredÚsemantic_manifestc                 ó^   — g }| j                   D ]  }|t        j                  |¬«      z  }Œ |S )z/Validate entities marked as EntityType.NATURAL.)r   )Úsemantic_modelsr   r-   )r.   r'   r   s      r,   Úvalidate_manifestz0NaturalEntityConfigurationRule.validate_manifest;   sF   € ð )+ˆØ/×?Ñ?ò 	ˆNØÔ4×^Ñ^Ø-ð _ó ñ ‰Fð	ð
 ˆó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústaticmethodr   r   r   r   r-   r   r1   © r2   r,   r   r      sv   „ ÙVàÙðDôðÀ-ð ÐT\Ð]lÑTmò óó ðð< ÙÐ&sÔtðÐ->ð À8ÈOÑC\ò ó uó ñr2   r   )ÚloggingÚtypingr   r   r   Ú!dbt_semantic_interfaces.protocolsr   r   Ú"dbt_semantic_interfaces.referencesr   Ú"dbt_semantic_interfaces.type_enumsr	   Ú5dbt_semantic_interfaces.validations.validator_helpersr
   r   r   r   r   r   Ú	getLoggerr3   Úloggerr   r8   r2   r,   ú<module>rA      sQ   ðÛ ß *Ñ *ç NÝ EÝ 9÷÷ ð 
ˆ×	Ñ	˜8Ó	$€ô2Ð%CÐDUÑ%VÐX_Ð`qÑXrõ 2r2   