Ë
    èlÖi2  ã            
       ó$  — d dl Z d dlmZ d dlmZmZmZmZ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 d dlmZmZ d d	lmZmZmZmZmZmZmZmZ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e)de)dee)ef   de	e)e)f   fd„Z* G d„ dee$   «      Z+y)é    N)Údeepcopy)ÚAnyÚDictÚGenericÚListÚOptionalÚTuple)Údeprecations)ÚNodeVersion)ÚGENERIC_TEST_KWARGS_NAMEÚget_rendered)ÚUnpatchedSourceDefinition)ÚUnparsedModelUpdateÚUnparsedNodeUpdate)
Ú%CustomMacroPopulatingConfigValueErrorÚSameKeyNestedErrorÚTagNotStringErrorÚTagsNotListOfStringsErrorÚTestArgIncludesModelErrorÚTestArgsNotDictErrorÚTestDefinitionDictLengthErrorÚTestNameNotStringErrorÚTestTypeErrorÚUnexpectedTestNamePatternError)Ú	get_flags)ÚTestable)Úmd5)ÚUndefinedMacroErrorÚ	test_typeÚ	test_nameÚargsÚreturnc           	      ód  — g }t        |«      D ]„  }|dk(  rŒ	||   }t        |t        «      rt        |j	                  «       «      }n%t        |t        t
        f«      rt        |«      }n|g}|j                  |D �cg c]  }t        |«      ‘Œ c}«       Œ† |D �cg c]  }t        j                  dd|«      ‘Œ }	}dj                  |	«      }
dj                  | |«      }dj                  ||
«      }t        |«      dk\  r&|d d }t        |«      }dj                  ||«      }||fS |}||fS c c}w c c}w )NÚmodelz[^0-9a-zA-Z_]+Ú_Ú__ú{}_{}é@   é   )ÚsortedÚ
isinstanceÚdictÚlistÚvaluesÚtupleÚextendÚstrÚreÚsubÚjoinÚformatÚlenr   )r   r    r!   Ú	flat_argsÚarg_nameÚarg_valÚpartsÚpartÚargÚclean_flat_argsÚuniqueÚtest_identifierÚ	full_nameÚtest_trunc_identifierÚlabelÚ
short_names                   úe/var/www/html/strategist-ai/venv_dbt/lib/python3.12/site-packages/dbt/parser/generic_test_builders.pyÚsynthesize_generic_test_namesrE      s5  € ð €IÜ˜4“Lò 8ˆà�wÒØØ�x‘.ˆä�gœtÔ$Ü˜Ÿ™Ó)Ó*‰EÜ˜¤$¬ Ô/Ü˜“M‰Eà�IˆEà×Ñ°Ö6¨œ#˜d�)Ò6Õ7ð8ð FOÖO¸c”r—v‘vÐ.°°SÕ9ÐO€OÐOØ�Y‰Y�Ó'€Fð —n‘n Y°	Ó:€OØ—‘˜°Ó7€Iä
ˆ9ƒ~˜ÒØ /°°Ð 4ÐÜ�I“ˆØ—^‘^Ð$9¸5ÓAˆ
ð �yÐ Ð ð ˆ
à�yÐ Ð ùò' 7ùâOs   Á:D(
ÂD-c                   ó8  — e Zd ZdZ ej
                  d«      ZdZ	 	 ddee	e
f   dede	dee	e
f   d	ee	   d
ee   ddfd„Zd„ Zdee	e
f   dee	e
f   fd„Zdefd„Ze	 ddee	ee	e
f   f   fd„«       Zdee	   fd„Zde	fd„Zdee	e	f   fd„Zde	fd„Zde	fd„Zd„ Zy)ÚTestBuilderzáAn object to hold assorted test settings and perform basic parsing

    Test names have the following pattern:
        - the test name itself may be namespaced (package.test)
        - or it may not be namespaced (test)

    zX((?P<test_namespace>([a-zA-Z_][0-9a-zA-Z_]*))\.)?(?P<test_name>([a-zA-Z_][0-9a-zA-Z_]*)))ÚseverityÚtagsÚenabledÚwhereÚlimitÚwarn_ifÚerror_ifÚ	fail_calcÚstore_failuresÚstore_failures_asÚmetaÚdatabaseÚschemaÚaliasNÚ	data_testÚtargetÚpackage_nameÚ
render_ctxÚcolumn_nameÚversionr"   c                 óŠ  — | j                  ||j                  |j                  ||«      \  }}|| _        d| j                  v r
t	        «       ‚|| _        || _        || _        || _        || _	        | j                  «       | j                  d<   | j                  j                  |«      }	|	€t        |«      ‚|	j                  «       }
|
d   | _        |
d   | _        i | _        | j                   j#                  | j%                  «       «       d| j                  v rD| j                   j#                  | j'                  | j                  j)                  di «      «      «       | j                  �| j                  | _        d| _        d| j                  v r!| j                  d   | _        | j                  d= d| _        d| _        d| j                  v r6| j                  d   | _        | j                  d   | _        | j                  d= y | j1                  «       \  }}|| _        || _        ||k7  rd| j                   vr|| j                   d<   y y y )	Nr$   r    Útest_namespaceÚconfigÚ ÚdescriptionÚnamerU   )Úextract_test_argsÚoriginal_file_pathra   r!   r   rX   rW   r[   rY   rZ   Úbuild_model_strÚTEST_NAME_PATTERNÚmatchr   Ú	groupdictÚ	namespacer^   ÚupdateÚ_process_legacy_argsÚ_render_valuesÚpopr`   Úcompiled_nameÚfqn_nameÚget_synthetic_test_names)ÚselfrV   rW   rX   rY   rZ   r[   r    Ú	test_argsrf   ÚgroupsrC   r@   s                rD   Ú__init__zTestBuilder.__init__g   s  € ð  $×5Ñ5Ø�v×0Ñ0°&·+±+¸{ÈLó 
Ñˆ	�9ð %.ˆŒ	Ø�d—i‘iÑÜ+Ó-Ð-Ø!-ˆÔØ &ˆŒØ.5ˆŒØ*4ˆŒØ*5ˆÔØ!×1Ñ1Ó3ˆ�	‰	�'Ñà×&Ñ&×,Ñ,¨YÓ7ˆØˆ=Ü0°Ó;Ð;à—‘Ó"ˆØ Ñ,ˆŒ	Ø$Ð%5Ñ6ˆŒØ&(ˆŒà�‰×Ñ˜4×4Ñ4Ó6Ô7ð �t—y‘yÑ Ø�K‰K×Ñ˜t×2Ñ2°4·9±9·=±=ÀÈ2Ó3NÓOÔPà�>‰>Ð%Ø $§¡ˆDÔð !#ˆÔà˜DŸI™IÑ%Ø#Ÿy™y¨Ñ7ˆDÔØ—	‘	˜-Ð(ð
 #%ˆÔØˆŒà�T—Y‘YÑð "&§¡¨6Ñ!2ˆDÔØ ŸI™I fÑ-ˆDŒMØ—	‘	˜&Ñ!à$(×$AÑ$AÓ$CÑ!ˆJ˜	Ø!+ˆDÔØ%ˆDŒMà˜YÒ&¨7¸$¿+¹+Ñ+EØ'1�—‘˜GÒ$ð ,FÐ&ó    c                 ó@  — i }| j                   D ]}  }| j                  j                  |d «      }|r)d| j                  v r|| j                  d   v r
t        «       ‚|s-d| j                  v r| j                  d   j                  |d «      }|||<   Œ | j	                  |«      S )Nr^   )ÚCONFIG_ARGSr!   rl   r   rk   )rp   r^   ÚkeyÚvalues       rD   rj   z TestBuilder._process_legacy_args®   sœ   € ØˆØ×#Ñ#ò 	 ˆCØ—I‘I—M‘M # tÓ,ˆEÙ˜ T§Y¡YÑ.°3¸$¿)¹)ÀHÑ:MÑ3MÜ(Ó*Ð*Ù˜X¨¯©Ñ2ØŸ	™	 (Ñ+×/Ñ/°°TÓ:�ØˆF�3ŠKð	 ð ×"Ñ" 6Ó*Ð*rt   r^   c           	      óB  — i }|j                  «       D ]6  \  }}t        |t        «      r	 t        || j                  d¬«      }|€Œ2|||<   Œ8 |S # t
        $ rG}t        | j                  j                  | j                  | j                  ||j                  ¬«      ‚d }~ww xY w)NT)Únative)Útarget_namerZ   ra   rw   Úerr_msg)Úitemsr+   r1   r   rY   r   r   rW   ra   rZ   Úmsg)rp   r^   Úrendered_configrw   rx   Úes         rD   rk   zTestBuilder._render_valuesº   s¡   € ØˆØ Ÿ,™,›.ò 	-‰JˆC�Ü˜%¤Ô%ð	Ü(¨°·±ÈÔM�Eð Ñ Ø',� Ò$ð	-ð Ðøô +ò Ü?Ø$(§K¡K×$4Ñ$4Ø$(×$4Ñ$4Ø!ŸY™YØØ !§¡ôð ûðús   ªAÁ	BÁABÂBc                 ó\   — t        dj                  t        | j                  «      «      «      S )Nzinvalid target type "{}")Ú	TypeErrorr5   ÚtyperW   ©rp   s    rD   Ú	_bad_typezTestBuilder._bad_typeÌ   s"   € ÜÐ3×:Ñ:¼4ÀÇÁÓ;LÓMÓNÐNrt   c           
      ó  — t        | t        «      st        | «      ‚d| j                  «       v r| j	                  d«      }| }n:t        | j                  «       «      } t        | «      dk7  rt        | «      ‚| d   \  }}t        |t        «      st        |«      ‚t        |t        «      st        |«      ‚t        |«      }|�||d<   t        «       j                  r€|j	                  di «      }|sRt        d„ |j                  «       D «       «      r2|r	d|› d|› d�nd|› d�}t!        j"                  d	d
|› d|› d|› d�¬«       t        |t        «      ri |¥|¥}||fS d|v r!t!        j"                  dd
|› d|d   › d�¬«       ||fS )Nr    é   r   rZ   Ú	argumentsc              3   ó$   K  — | ]  }|d v–— Œ
 y­w))r^   rZ   r`   ra   N© )Ú.0Úks     rD   ú	<genexpr>z0TestBuilder.extract_test_args.<locals>.<genexpr>ð   s   è ø€ ò %ØNO�ÐIÔIñ%ùs   ‚ú'z' in package 'z6missing-arguments-property-in-generic-test-deprecationú`z` defined on z (ú))r    z.arguments-property-in-generic-test-deprecationz` ()r+   r,   r   Úkeysrl   r-   r}   r6   r   r   r1   r   r   r   Ú'require_generic_test_arguments_propertyÚanyr
   Úwarn)	rV   Ú	file_pathÚresource_namerZ   rX   r    rq   rˆ   Úresources	            rD   rb   zTestBuilder.extract_test_argsÏ   s´  € ô ˜)¤TÔ*Ü 	Ó*Ð*ð
 ˜)Ÿ.™.Ó*Ñ*Ø!Ÿ™ kÓ2ˆIØ!‰Iô
 ˜YŸ_™_Ó.Ó/ˆIÜ�9‹~ Ò"Ü3°IÓ>Ð>Ø#,¨Q¡<Ñ ˆI�yä˜)¤TÔ*Ü& yÓ1Ð1Ü˜)¤SÔ)Ü(¨Ó3Ð3Ü˜YÓ'ˆ	ØÐ"Ø'2ˆI�mÑ$ô ‹;×>Ò>Ø!Ÿ™ k°2Ó6ˆIÙ¤ñ %ØS\×SaÑSaÓScô%ô "ñ
 $ð ˜� n°\°NÀ!ÑDà˜]˜O¨1Ð-ð ô
 ×!Ñ!ØLØ ! ) ¨M¸(¸À2ÀiÀ[ÐPQÐRõô ˜)¤TÔ*Ø6˜yÐ6¨IÐ6�	ð ˜)Ð#Ð#ð ˜IÑ%Ü×ÑØ@Ø˜i˜[¨¨I°kÑ,BÐ+CÀ1ÐEõð
 ˜)Ð#Ð#rt   c                 óä   — | j                   j                  dg «      }t        |t        «      r|g}t        |t        «      st        |«      ‚|D ]  }t        |t        «      rŒt        |«      ‚ |d d  S )NrI   )r^   Úgetr+   r1   r-   r   r   )rp   rI   Útags      rD   rI   zTestBuilder.tags  sk   € Ø�{‰{�‰˜v rÓ*ˆÜ�dœCÔ Ø�6ˆDÜ˜$¤Ô%Ü+¨DÓ1Ð1Øò 	-ˆCÜ˜c¤3Õ'Ü'¨Ó,Ð,ð	-ð ‘Aˆwˆrt   c                 óŒ   — dj                  | j                  «      }| j                  �dj                  | j                  |«      }|S )Nztest_{}z{}.{})r5   ra   rh   )rp   Ú
macro_names     rD   rœ   zTestBuilder.macro_name  s:   € Ø×%Ñ% d§i¡iÓ0ˆ
Ø�>‰>Ð%Ø Ÿ™¨¯©¸
ÓCˆJØÐrt   c                 ó  — | j                   j                  }t        | j                   t        «      r>| j                  }| j                  r‡| j                   j                  › d| j                  › �}nat        | j                   t
        «      r| j                  }n:t        | j                   t        «      rd| j                  z   }n| j                  «       ‚| j                  �dj                  | j                  |«      }t        ||| j                  «      S )NÚ_vÚsource_r'   )rW   ra   r+   r   r[   r   r   r…   rh   r5   rE   r!   )rp   r{   ra   s      rD   ro   z$TestBuilder.get_synthetic_test_names  sÂ   € à—k‘k×&Ñ&ˆÜ�d—k‘kÔ#6Ô7Ø—9‘9ˆDØ�|Š|Ø!%§¡×!1Ñ!1Ð 2°"°T·\±\°NÐC‘Ü˜Ÿ™Ô%7Ô8Ø—9‘9‰DÜ˜Ÿ™Ô%>Ô?Ø˜tŸy™yÑ(‰Dà—.‘.Ó"Ð"Ø�>‰>Ð%Ø—>‘> $§.¡.°$Ó7ˆDÜ,¨T°;ÀÇ	Á	ÓJÐJrt   c                 ó  — dj                  | j                  j                  «       D ��cg c]>  \  }}|› d�t        |t        «      rd|j                  dd«      z   dz   n
t	        |«      z   ‘Œ@ c}}«      }|rd|› d�S yc c}}w )Nú,ú=ú"z\"z
{{ config(ú) }}r_   )r4   r^   r}   r+   r1   Úreplace)rp   rw   rx   Úconfigss       rD   Úconstruct_configzTestBuilder.construct_config(  s�   € Ø—(‘(ð #'§+¡+×"3Ñ"3Ó"5÷ñ �C˜ð �%�q�	ô " %¬Ô-ð ˜5Ÿ=™=¨¨eÓ4Ñ4°sÒ:ä˜U›ó	óó

ˆñ Ø! ' ¨&Ð1Ð1àùós   ©AA=
c                 ój   — dj                  | j                  «       | j                  «       t        ¬«      S )Nz*{{{{ {macro}(**{kwargs_name}) }}}}{config})Úmacror^   Úkwargs_name)r5   rœ   r§   r   r„   s    rD   Úbuild_raw_codezTestBuilder.build_raw_code;  s4   € Ø<×DÑDØ—/‘/Ó#Ø×(Ñ(Ó*Ü0ð Eó 
ð 	
rt   c                 ó¼  — | j                   }t        | j                   t        «      r;| j                  rd|j                  › d| j                  › d�}n‡d|j                  › d�}nvt        | j                   t
        «      rd|j                  › d�}nKt        | j                   t        «      r1d|j                  j                  › d|j                  j                  › d�}d› d�S )Nzref('z', version='z')zsource('z', 'z{{ get_where_subquery(r¤   )	rW   r+   r   r[   ra   r   r   ÚsourceÚtable)rp   ÚtargÚ
target_strs      rD   rd   zTestBuilder.build_model_strB  s¶   € Ø�{‰{ˆÜ�d—k‘kÔ#6Ô7Ø�|Š|Ø$ T§Y¡Y K¨|¸D¿L¹L¸>ÈÐL‘
à$ T§Y¡Y K¨rÐ2‘
Ü˜Ÿ™Ô%7Ô8Ø  §¡ ¨2Ð.‰JÜ˜Ÿ™Ô%>Ô?Ø# D§K¡K×$4Ñ$4Ð#5°T¸$¿*¹*¿/¹/Ð9JÈ"ÐMˆJØ)¨*¨°VÐ<Ð<rt   )NN)NNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r2   Úcompilere   rv   r   r1   r   r   r   r   rs   rj   rk   r‚   r…   Ústaticmethodr	   rb   r   rI   rœ   ro   r§   r«   rd   rŠ   rt   rD   rG   rG   G   sP  „ ñð #˜Ÿ
™
ð	3óÐð
€Kð. &*Ø)-ñE2à˜˜S˜‘>ðE2ð ðE2ð ð	E2ð
 ˜˜c˜‘NðE2ð ˜c‘]ðE2ð ˜+Ñ&ðE2ð 
óE2òN
+ð T¨#¨s¨(¡^ð ¸¸SÀ#¸X¹ó ð$O˜9ó Oð àQUñ4$à	ˆs�D˜˜c˜‘NÐ"Ñ	#ò4$ó ð4$ðl	�d˜3‘ió 	ð˜Có ðK¨%°°S°©/ó Kð" #ó ð&
 ó 
ó=rt   rG   ),r2   Úcopyr   Útypingr   r   r   r   r   r	   Údbtr
   Údbt.artifacts.resourcesr   Údbt.clients.jinjar   r   Údbt.contracts.graph.nodesr   Údbt.contracts.graph.unparsedr   r   Údbt.exceptionsr   r   r   r   r   r   r   r   r   r   Ú	dbt.flagsr   Údbt.parser.commonr   Ú	dbt.utilsr   Údbt_common.exceptions.macrosr   r1   rE   rG   rŠ   rt   rD   ú<module>rÃ      s†   ðÛ 	Ý ß <× <å Ý /ß DÝ ?ß P÷÷ ÷ õ  Ý &Ý Ý <ð(!Øð(!Ø"ð(!Ø*.¨s°C¨x©.ð(!à
ˆ3�ˆ8�_ó(!ôVF=�'˜(Ñ#õ F=rt   