Ë
    Ìiò? ã                   ó>  — d dl Z d dlZd dl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mZmZ d dl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 d d
lmZm Z m!Z! d dl"m#Z#m$Z$m%Z%m&Z&m'Z' d dl(m)Z)m*Z*m+Z+m,Z, d dl-m.Z. d dl/m0Z0m1Z1m2Z2 d dl3m4Z4 d dl5m6Z6m7Z7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z> d dl?m@Z@mAZA d dlBmCZCmDZD d dlEmFZF d dlGmHZHmIZI d dlJmKZKmLZL d dlMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZY d dlZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZl d dlmmnZn d dlompZp d dlqmrZrmsZs d dltmuZumvZv d dlwmxZx d d lymzZz d d!l{m|Z| d d"l}m~Z~ d d#lm€Z€m�Z�m‚Z‚mƒZƒ d d$l„m…Z…m†Z†m‡Z‡ erd dlˆZˆ e‰«       ZŠ G d%„ d&«      Z‹ G d'„ d(«      ZŒ G d)„ d*e �j                  ¬+«      ZŽ G d,„ d-eŽ«      Z� G d.„ d/eŽ«      Z� G d0„ d1eŽ«      Z‘ G d2„ d3eŽ«      Z’ G d4„ d5e«      Z“ G d6„ d7e“«      Z” G d8„ d9e“«      Z• G d:„ d;eŒ«      Z– G d<„ d=eŒ«      Z— G d>„ d?e�«      Z˜eeHeRf   Z™ G d@„ dAe�«      Zš G dB„ dCeš«      Z› G dD„ dEeš«      Zœ G dF„ dGe�«      Z� G dH„ dIe�«      Zž G dJ„ dKe�«      ZŸ G dL„ dMe‘«      Z  G dN„ dOe‘«      Z¡ G dP„ dQe6«      Z¢ G dR„ dSe¢«      Z£ G dT„ dUe¢«      Z¤ G dV„ dWe¤«      Z¥ G dX„ dYe’«      Z¦ G dZ„ d[e’«      Z§ G d\„ d]e«      Z¨ G d^„ d_e¨«      Z© G d`„ dae¨«      Zª G db„ dce¨«      Z« G dd„ dee¨«      Z¬ G df„ dge««      Z­ edh«      Z® G di„ djeF«      Z¯ G dk„ dle¯«      Z° G dm„ dne¯«      Z± G do„ dpe¯«      Z² G dq„ dre²«      Z³ G ds„ dte²«      Z´dueRdve2dweIdxe<dyeeµef   f
dz„Z¶d{eYdve2dweIdyeeµef   fd|„Z·d}eQdve2dweIdyeeµef   fd~„Z¸dueRdve2dweIdyeeµef   fd„Z¹d}exdve2dweId€eeµ   dyeeµef   f
d�„Zºd{eYdve2dweIdyeeµef   fd‚„Z»dƒePdve2dweIdyeeµef   fd„„Z¼ G d…„ d†eŽ«      Z½ G d‡„ dˆeŽ«      Z¾ G d‰„ dŠeŽ«      Z¿d‹eOdve2dweId€eµdyeeµef   f
dŒ„ZÀ G d�„ dŽeŽ«      ZÁd�eVdve2dweId€eµdyeeµef   f
d�„ZÂ G d‘„ d’e¯«      ZÃdueRdve2dweIdxe<d“e@dyeeµef   fd”„ZÄy)•é    N)Údeepcopy)ÚTYPE_CHECKINGÚAnyÚCallableÚDictÚIterableÚListÚMappingÚOptionalÚTupleÚTypeÚTypeVarÚUnion)ÚProtocol)Úselected_resources)ÚColumn)ÚEventTimeFilterÚRelationType)ÚAdapterResponse)ÚMissingConfigError)Úget_adapterÚget_adapter_package_namesÚget_adapter_type_names)Ú
NodeConfigÚNodeVersionÚRefArgsÚ
SeedConfigÚSourceConfig)ÚMacroGeneratorÚ
MacroStackÚUnitTestMacroGeneratorÚget_rendered)Ú"statically_parse_unrendered_config)ÚIsFQNResourceÚProjectÚRuntimeConfig)ÚDEFAULT_ENV_PLACEHOLDER)ÚVarÚcontextmemberÚcontextproperty)Ú	FQNLookup)ÚContextConfig)Úwrapped_exports)ÚMacroResolverÚTestMacroNamespace)ÚMacroNamespaceÚMacroNamespaceBuilder)ÚManifestContext)ÚDisabledÚManifest)ÚMetricReferenceÚResolvedMetricReference)Ú
AccessTypeÚExposureÚFunctionNodeÚMacroÚManifestNodeÚ	ModelNodeÚResourceÚSeedNodeÚSemanticModelÚSnapshotNodeÚSourceDefinitionÚUnitTestNode)ÚCompilationErrorÚConflictingConfigKeysErrorÚDbtReferenceErrorÚEnvVarMissingErrorÚInlineModelConfigErrorÚLoadAgateTableNotSeedErrorÚLoadAgateTableValueErrorÚMacroDispatchArgErrorÚMacroResultAlreadyLoadedErrorÚMetricArgsErrorÚNumberSourceArgsErrorÚ&OperationsCannotRefEphemeralNodesErrorÚParsingErrorÚPersistDocsValueTypeErrorÚRefArgsErrorÚRefBadContextErrorÚSecretEnvVarLocationErrorÚTargetNotFoundError)Ú	get_flags)ÚMicrobatchBuilder)ÚModelLanguageÚNodeType)Ú	MultiDictÚargs_to_dict)ÚMacroProtocol)ÚSECRET_ENV_PREFIX)Úget_invocation_context©Úget_metadata_vars)ÚDbtInternalErrorÚDbtRuntimeErrorÚDbtValidationErrorÚMacrosSourcesUnWriteableError)ÚAttrDictÚcast_to_strÚmergec                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚRelationProxyc                 ó\   — |j                   j                  | _        |j                  | _        y ©N)ÚconfigÚquotingÚ_quoting_configÚRelationÚ_relation_type)ÚselfÚadapters     úV/var/www/html/strategist-ai/venv/lib/python3.12/site-packages/dbt/context/providers.pyÚ__init__zRelationProxy.__init__s   s"   € Ø&Ÿ~™~×5Ñ5ˆÔØ%×.Ñ.ˆÕó    c                 ó.   — t        | j                  |«      S rj   )Úgetattrro   )rp   Úkeys     rr   Ú__getattr__zRelationProxy.__getattr__w   s   € Ü�t×*Ñ*¨CÓ0Ð0rt   c                 óŒ   — t        | j                  |j                  di «      «      |d<    | j                  j                  |i |¤ŽS )NÚquote_policy)rf   rm   Úpopro   Úcreate©rp   ÚargsÚkwargss      rr   r|   zRelationProxy.createz   sC   € Ü!& t×';Ñ';¸V¿Z¹ZÈÐXZÓ=[Ó!\ˆˆ~ÑØ)ˆt×"Ñ"×)Ñ)¨4Ð:°6Ñ:Ð:rt   N)Ú__name__Ú
__module__Ú__qualname__rs   rx   r|   © rt   rr   rh   rh   r   s   „ ò/ò1ó;rt   rh   c            	       ó¤   — e Zd ZdZdefd„Zd„ Zed„ «       Zd„ Z	d„ Z
dee   fd	„Zddee   deee      fd„Z	 	 ddedee   deee      defd„Zy
)ÚBaseDatabaseWrapperzn
    Wrapper for runtime database interaction. Applies the runtime quote policy
    via a relation proxy.
    Ú	namespacec                 ó@   — || _         t        |«      | _        || _        y rj   )Ú_adapterrh   rn   Ú
_namespace)rp   rq   r†   s      rr   rs   zBaseDatabaseWrapper.__init__…   s   € ØˆŒÜ% gÓ.ˆŒØ#ˆ�rt   c                 ó   — t        d«      ‚)Nz!subclasses need to implement this)ÚNotImplementedError©rp   Únames     rr   rx   zBaseDatabaseWrapper.__getattr__Š   s   € Ü!Ð"EÓFÐFrt   c                 ó.   — | j                   j                  S rj   )rˆ   rk   ©rp   s    rr   rk   zBaseDatabaseWrapper.config�   s   € à�}‰}×#Ñ#Ð#rt   c                 ó6   — | j                   j                  «       S rj   )rˆ   Útyper�   s    rr   r‘   zBaseDatabaseWrapper.type‘   s   € Ø�}‰}×!Ñ!Ó#Ð#rt   c                 ó6   — | j                   j                  «       S rj   )rˆ   Úcommit_if_has_connectionr�   s    rr   ÚcommitzBaseDatabaseWrapper.commit”   s   € Ø�}‰}×5Ñ5Ó7Ð7rt   Úreturnc                 óT   — t        | j                  j                  «       «      dgz   }|S )NÚdefault)r   rˆ   r‘   )rp   Úsearch_prefixess     rr   Ú_get_adapter_macro_prefixesz/BaseDatabaseWrapper._get_adapter_macro_prefixes—   s(   € ô
 1°·±×1CÑ1CÓ1EÓFÈ)ÈÑTˆØÐrt   Nc                 ó>  — d g}|€d g}|S t        |t        «      ri| j                  j                  j	                  |«      }|r|}|S |s:|| j                  j                  j
                  v r| j                  j                  |g}|S t        dt        |«      › d|› d�«      ‚)NzIn adapter.dispatch, got a z macro_namespace argument ("z3"), but macro_namespace should be None or a string.)	Ú
isinstanceÚstrrˆ   rk   Úget_macro_search_orderÚdependenciesÚproject_namerC   r‘   )rp   r†   Úsearch_packagesÚmacro_search_orders       rr   Ú_get_search_packagesz(BaseDatabaseWrapper._get_search_packagesŸ   s»   € Ø04¨vˆàÐØ#˜fˆOð Ðô ˜	¤3Ô'Ø!%§¡×!5Ñ!5×!LÑ!LÈYÓ!WÐÙ!Ø"4�ð Ðñ (¨I¸¿¹×9MÑ9M×9ZÑ9ZÑ,ZØ#'§;¡;×#;Ñ#;¸YÐ"G�ð Ðô #Ø-¬d°9«oÐ->ð ?Ø�KÐRðTóð rt   Ú
macro_nameÚmacro_namespaceÚpackagesc                 ó  — d|v r,|j                  dd«      \  }}d|› d|› d|› d�}t        |«      ‚|�t        |«      ‚| j                  |«      }g }|D ]m  }	| j	                  «       D ]X  }
|
› d|› �}	 | j
                  j                  |	|«      }|	€|j                  |«       n|j                  |	› d|› �«       |€ŒT|c c S  Œo dj                  d	„ |D «       «      }d
|› d|› d|› �}t        |«      ‚# t        $ r d }Y Œqw xY w)Nú.é   z*In adapter.dispatch, got a macro name of "zP", but "." is not a valid macro name component. Did you mean `adapter.dispatch("z", macro_namespace="z")`?Ú__z, c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrj   )Úrepr)Ú.0Úas     rr   ú	<genexpr>z/BaseDatabaseWrapper.dispatch.<locals>.<genexpr>Þ   s   è ø€ Ò7¨œT !ŸWÑ7ùs   ‚zIn dispatch: No macro named 'z' found within namespace: 'z'
    Searched for: )	ÚsplitrC   rJ   r¢   r™   r‰   Úget_from_packageÚappendÚjoin)rp   r£   r¤   r¥   Úsuggest_macro_namespaceÚsuggest_macro_nameÚmsgr    ÚattemptsÚpackage_nameÚprefixÚsearch_nameÚmacroÚsearcheds                 rr   ÚdispatchzBaseDatabaseWrapper.dispatch²   sn  € ð �*ÑØ:D×:JÑ:JÈ3ÐPQÓ:RÑ7Ð#Ð%7à<¸Z¸Lð I&à&8Ð%9ð :$Ø$;Ð#<¸DðBð ô # 3Ó'Ð'àÐÜ'¨
Ó3Ð3à×3Ñ3°OÓDˆàˆà+ò 	!ˆLØ×:Ñ:Ó<ò !�Ø!' ¨¨:¨,Ð7�ð!à ŸO™O×<Ñ<¸\È;ÓW�Eð  Ð'Ø—O‘O KÕ0à—O‘O | n°A°k°]Ð$CÔDàÑ$Ø ”Lñ!!ð	!ð& —9‘9Ñ7¨hÔ7Ó7ˆØ-¨j¨\Ð9TÐUdÐTeÐezð  |Dð  {Eð  FˆÜ˜sÓ#Ð#øô (ò !ð !’Eð!ús   Á1C1Ã1C?Ã>C?rj   ©NN)r€   r�   r‚   Ú__doc__r0   rs   rx   Úpropertyrk   r‘   r”   r	   rœ   r™   r   r¢   r   r¼   rƒ   rt   rr   r…   r…      s¨   „ ñð
$¨>ó $ò
Gð ñ$ó ð$ò$ò8ð¨T°#©Yó ñ¨h°s©mð ÀtÈHÐUXÉMÑGZó ð, *.Ø(,ñ	.$àð.$ð " #™ð.$ð ˜4 ™9Ñ%ð	.$ð
 
ô.$rt   r…   c                   ó®   — e Zd Zd„ Zed„ «       Zed„ «       Zedee   fd„«       Z	de
defd„Zde
dee   fd„Zej                   d	edeeeef   fd
„«       Zy)ÚBaseResolverc                 ó<   — || _         || _        || _        || _        y rj   )Ú
db_wrapperÚmodelrk   Úmanifest)rp   rÃ   rÄ   rk   rÅ   s        rr   rs   zBaseResolver.__init__ä   s   € Ø$ˆŒØˆŒ
ØˆŒØ ˆ�rt   c                 ó.   — | j                   j                  S rj   )rk   rŸ   r�   s    rr   Úcurrent_projectzBaseResolver.current_projectê   s   € à�{‰{×'Ñ'Ð'rt   c                 ó.   — | j                   j                  S rj   )rÃ   rn   r�   s    rr   rn   zBaseResolver.Relationî   s   € à�‰×'Ñ'Ð'rt   r•   c                 óL   — t        | j                  j                  dd«      rdS d S )NÚEMPTYFr   )rv   rk   r~   r�   s    rr   Úresolve_limitzBaseResolver.resolve_limitò   s"   € ä˜DŸK™K×,Ñ,¨g°uÔ=ˆqÐGÀ4ÐGrt   Útargetc                 óø  — d}d}d}t        |j                  d«      r|j                  j                  €yt        |d«      �r|j                  �rt	        |j                  t
        «      rô|j                  j                  «       D ]×  \  }}|j                  |j                  j                  k(  sŒ*d}t        j                  |j                  |j                  r|j                  nd«      }t        |d«      r|j                  �|j                  }nNt        |d«      rBt        |j                  d	«      r,|j                  j                  �|j                  j                  } n |sxt        |d«      rBt        |j                  d	«      r,|j                  j                  �|j                  j                  }t        j                  |j                  j                  d«      }|r|�|j                  S |j                  j                  S )
zIGet the event time field name with proper quoting based on configuration.FNÚ
event_timeÚ ÚcolumnsTÚquoterl   Úcolumn)Úhasattrrk   rÎ   rÐ   r›   ÚdictÚitemsr�   r   r|   Ú	data_typerÑ   rl   rÒ   Úquoted)rp   rÌ   Úshould_quoteÚcolumn_foundrÒ   Ú_Úcolumn_infos          rr   Ú_resolve_event_time_field_namez+BaseResolver._resolve_event_time_field_nameö   s”  € ð ˆØˆØˆô �v—}‘} lÔ3°v·}±}×7OÑ7OÐ7WØô �6˜9Õ%¨&¯.«.¼ZÈÏÉÔX\Ô=]Ø"(§.¡.×"6Ñ"6Ó"8ò ‘��;Ø×#Ñ# v§}¡}×'?Ñ'?Ó?Ø#'�Lä#Ÿ]™]Ø#×(Ñ(À;×CXÒCX¨+×*?Ò*?Ð^`ó�Fô ˜{¨GÔ4¸×9JÑ9JÐ9VØ'2×'8Ñ'8™ô   ¨	Ô2Ü# F§N¡N°HÔ=Ø"ŸN™N×1Ñ1Ð=à'-§~¡~×'<Ñ'<˜Ùð#ñ( ä˜ 	Ô*Ü˜FŸN™N¨HÔ5Ø—N‘N×)Ñ)Ð5à%Ÿ~™~×4Ñ4�ä—]‘] 6§=¡=×#;Ñ#;¸RÓ@ˆFñ ˜FÐ.Ø—=‘=Ð à—=‘=×+Ñ+Ð+rt   c                 óV  — d }t        | j                  j                  dd «      d u}| j                  |«      }t	        |j                  t
        t        t        f«      �rÌ|j                  j                  �rµt	        | j                  t        t        f«      �r”t	        | j                  t        «      �r| j                  j                  j                  dk(  �rõ| j                  j                  j                  dk(  �rÑ| j                  j                  | j                  j                   ¬«      �r | j                  j"                  ��‰|�r:| j                  j                  j$                  j&                  | j                  j"                  j(                  kD  r*| j                  j                  j$                  j&                  n| j                  j"                  j(                  }| j                  j                  j$                  j*                  | j                  j"                  j,                  k  r*| j                  j                  j$                  j*                  n| j                  j"                  j,                  }t/        |||¬«      }|S t/        || j                  j"                  j(                  | j                  j"                  j,                  ¬«      }|S |r^t/        || j                  j                  j$                  j&                  | j                  j                  j$                  j*                  ¬«      }|S )NÚsampleÚincrementalÚ
microbatch)rŸ   )Ú
field_nameÚstartÚend)rv   rk   r~   rÜ   r›   r   r   r   rÎ   rÄ   r<   r@   ÚmaterializedÚincremental_strategyrÅ   Úuse_microbatch_batchesrŸ   ÚbatchrÞ   râ   Úevent_time_startrã   Úevent_time_endr   )rp   rÌ   Úevent_time_filterÚsample_moderá   râ   rã   s          rr   Úresolve_event_time_filterz&BaseResolver.resolve_event_time_filter'  sO  € Ø ÐÜ˜dŸk™k×.Ñ.°¸$Ó?ÀtÐKˆØ×8Ñ8¸Ó@ˆ
ô �v—}‘}¤z´:¼|Ð&LÕMØ—‘×(Ó(Ü˜4Ÿ:™:¬	´<Ð'@ÕAô
 ˜4Ÿ:™:¤yÕ1Ø—J‘J×%Ñ%×2Ñ2°mÓCØ—J‘J×%Ñ%×:Ñ:¸lÓJØ—M‘M×8Ñ8ÀdÇkÁk×F^ÑF^Ð8Õ_Ø—J‘J×$Ñ$Ñ0ò ð  Ÿ;™;×+Ñ+×2Ñ2×8Ñ8¸4¿:¹:×;KÑ;K×;\Ñ;\Ò\ð Ÿ™×(Ñ(×/Ñ/×5Ò5à!ŸZ™Z×-Ñ-×>Ñ>ð ð  Ÿ;™;×+Ñ+×2Ñ2×6Ñ6¸¿¹×9IÑ9I×9XÑ9XÒXð Ÿ™×(Ñ(×/Ñ/×3Ò3à!ŸZ™Z×-Ñ-×<Ñ<ð ô
 )8Ø#-Ø#Øô)Ð%ð, !Ð ô )8Ø#-Ø"Ÿj™j×.Ñ.×?Ñ?Ø ŸJ™J×,Ñ,×;Ñ;ô)Ð%ð !Ð ñ Ü$3Ø)ØŸ+™+×*Ñ*×1Ñ1×7Ñ7ØŸ™×(Ñ(×/Ñ/×3Ñ3ô%Ð!ð !Ð rt   r~   c                  ó   — y rj   rƒ   ©rp   r~   s     rr   Ú__call__zBaseResolver.__call__b  ó   € àrt   N)r€   r�   r‚   rs   r¿   rÇ   rn   r   ÚintrË   r;   rœ   rÜ   r   rì   ÚabcÚabstractmethodr   rh   r5   rï   rƒ   rt   rr   rÁ   rÁ   ã   s²   „ ò!ð ñ(ó ð(ð ñ(ó ð(ð ðH˜x¨™}ò Hó ðHð/,°\ð /,Àcó /,ðb9!°ð 9!ÀÈ/ÑAZó 9!ðv 	×Ñð˜cð  e¨C°ÀÐ,OÑ&Pò ó ñrt   rÁ   )Ú	metaclassc            
       ó¦   — e Zd Zej                  	 ddedee   dee   defd„«       Z	dedee   dee   de
fd„Zdedee   dee   fd„Zd	edefd
„Zy)ÚBaseRefResolverNr�   ÚpackageÚversionr•   c                  ó   — y rj   rƒ   ©rp   r�   r÷   rø   s       rr   ÚresolvezBaseRefResolver.resolveh  s   € ð rt   c                 ó   — t        |||¬«      S )N©r÷   r�   rø   )r   rú   s       rr   Ú_repack_argszBaseRefResolver._repack_argsm  s   € ô ˜w¨T¸7ÔCÐCrt   c                 ó  — t        |t        «      st        dt        |«      › �«      ‚|�'t        |t        «      st        dt        |«      › �«      ‚|�3t        |t        t        t
        f«      st        dt        |«      › �«      ‚y y )Nz1The name argument to ref() must be a string, got z<The package argument to ref() must be a string or None, got zJThe version argument to ref() must be a string, int, float, or None - got )r›   rœ   rC   r‘   rñ   Úfloatrú   s       rr   Úvalidate_argszBaseRefResolver.validate_argsr  s”   € Ü˜$¤Ô$Ü"ØCÄDÈÃJÀ<ÐPóð ð Ð¤z°'¼3Ô'?Ü"ØNÌtÐT[Ë}ÈoÐ^óð ð Ð¤z°'¼CÄÄeÐ;LÔ'MÜ"Ø\Ô]aÐbiÓ]jÐ\kÐlóð ð (NÐrt   r~   c                 ó  — d }d }t        |«      dk(  r|d   }n+t        |«      dk(  r|\  }}nt        | j                  |¬«      ‚|j                  d«      xs |j                  d«      }| j	                  |||«       | j                  |||«      S )Nr¨   r   é   ©Únoder~   rø   Úv)ÚlenrQ   rÄ   Úgetr  rû   )rp   r~   r   r÷   rø   r�   s         rr   rï   zBaseRefResolver.__call__‚  s…   € à!%ˆØ)-ˆäˆt‹9˜Š>Ø˜‘7‰DÜ�‹Y˜!Š^Ø ‰MˆG‘Tä D§J¡J°TÔ:Ð:à—*‘*˜YÓ'Ò:¨6¯:©:°c«?ˆØ×Ñ˜4 ¨'Ô2Ø�|‰|˜D '¨7Ó3Ð3rt   r½   )r€   r�   r‚   rò   ró   rœ   r   r   rh   rû   r   rþ   r  rï   rƒ   rt   rr   rö   rö   g  s°   „ Ø×ÑàY]ñØðØ"*¨3¡-ðØAIÈ+ÑAVðà	òó ððDØðDØ"*¨3¡-ðDØ:BÀ;Ñ:OðDà	óDð
 #ð °¸±ð ÈÐQ\ÑH]ó ð 4˜cð 4°ô 4rt   rö   c                   óZ   — e Zd Zej                  dedefd„«       Zdedefd„Zdedefd„Z	y)	ÚBaseSourceResolverÚsource_nameÚ
table_namec                  ó   — y rj   rƒ   ©rp   r  r  s      rr   rû   zBaseSourceResolver.resolve”  rð   rt   c                 ó    — t        |t        «      st        dt        |«      › �«      ‚t        |t        «      st        dt        |«      › �«      ‚y )NzCThe source name (first) argument to source() must be a string, got zCThe table name (second) argument to source() must be a string, got ©r›   rœ   rC   r‘   r  s      rr   r  z BaseSourceResolver.validate_args˜  sa   € Ü˜+¤sÔ+Ü"ðÜ# KÓ0Ð1ð3óð ô ˜*¤cÔ*Ü"ðÜ# JÓ/Ð0ð2óð ð +rt   r~   r•   c                 ó¬   — t        |«      dk7  rt        || j                  ¬«      ‚| j                  |d   |d   «       | j	                  |d   |d   «      S )Nr  ©r  r   r¨   )r  rM   rÄ   r  rû   rî   s     rr   rï   zBaseSourceResolver.__call__¤  sO   € Üˆt‹9˜Š>Ü'¨°4·:±:Ô>Ð>Ø×Ñ˜4 ™7 D¨¡GÔ,Ø�|‰|˜D ™G T¨!¡WÓ-Ð-rt   N)
r€   r�   r‚   rò   ró   rœ   rû   r  rh   rï   rƒ   rt   rr   r
  r
  “  sN   „ Ø×Ñð 3ð °Cò ó ðð
¨ð 
¸#ó 
ð.˜cð . mô .rt   r
  c                   óŒ   — e Zd Zej                  d
dedee   defd„«       Zdedee   de	e   fd„Z
dedee   fd„Zdedefd	„Zy)ÚBaseMetricResolverNr�   r÷   r•   c                  ó   — y rj   rƒ   ©rp   r�   r÷   s      rr   rû   zBaseMetricResolver.resolve¬  s   € ØTWrt   c                 ó   — |€|gS ||gS rj   rƒ   r  s      rr   rþ   zBaseMetricResolver._repack_args¯  ó   € Øˆ?Ø�6ˆMà˜T�?Ð"rt   c                 ó¦   — t        |t        «      st        dt        |«      › �«      ‚|�(t        |t        «      st        dt        |«      › �«      ‚y y )Nz4The name argument to metric() must be a string, got z?The package argument to metric() must be a string or None, got r  r  s      rr   r  z BaseMetricResolver.validate_argsµ  s`   € Ü˜$¤Ô$Ü"ØFÄtÈDÃzÀlÐSóð ð Ð¤z°'¼3Ô'?Ü"ØQÔRVÐW^ÓR_ÐQ`Ðaóð ð (@Ðrt   r~   c                 óÌ   — d }t        |«      dk(  r|d   }n+t        |«      dk(  r|\  }}nt        | j                  |¬«      ‚| j                  ||«       | j	                  ||«      S ©Nr¨   r   r  r  )r  rL   rÄ   r  rû   ©rp   r~   r÷   r�   s       rr   rï   zBaseMetricResolver.__call__À  sa   € à!%ˆäˆt‹9˜Š>Ø˜‘7‰DÜ�‹Y˜!Š^Ø ‰MˆG‘Tä! t§z¡z¸Ô=Ð=Ø×Ñ˜4 Ô)Ø�|‰|˜D 'Ó*Ð*rt   rj   )r€   r�   r‚   rò   ró   rœ   r   r5   rû   r	   rþ   r  rï   rƒ   rt   rr   r  r  «  su   „ Ø×ÑÙW˜CÐW¨(°3©-ÐWÀ?ÒWó ØWð# ð #¨x¸©}ð #ÀÀcÁó #ð	 #ð 	°¸±ó 	ð+˜cð + oô +rt   r  c                   ó„   — e Zd Zej                  d
dedee   fd„«       Zdedee   dee   fd„Z	dedee   fd„Z
defd	„Zy)ÚBaseFunctionResolverNr�   r÷   c                  ó   — y rj   rƒ   r  s      rr   rû   zBaseFunctionResolver.resolveÏ  s   € ØADrt   r•   c                 ó   — |€|gS ||gS rj   rƒ   r  s      rr   rþ   z!BaseFunctionResolver._repack_argsÒ  r  rt   c                 ó¦   — t        |t        «      st        dt        |«      › �«      ‚|�(t        |t        «      st        dt        |«      › �«      ‚y y )Nz6The name argument to function() must be a string, got zAThe package argument to function() must be a string or None, got r  r  s      rr   r  z"BaseFunctionResolver.validate_argsØ  s`   € Ü˜$¤Ô$Ü"ØHÌÈdËÈÐUóð ð Ð¤z°'¼3Ô'?Ü"ØSÔTXÐY`ÓTaÐSbÐcóð ð (@Ðrt   r~   c                 óÌ   — d }t        |«      dk(  r|d   }n+t        |«      dk(  r|\  }}nt        | j                  |¬«      ‚| j                  ||«       | j	                  ||«      S r  )r  rQ   rÄ   r  rû   r  s       rr   rï   zBaseFunctionResolver.__call__ã  sa   € à!%ˆäˆt‹9˜Š>Ø˜‘7‰DÜ�‹Y˜!Š^Ø ‰MˆG‘Tä D§J¡J°TÔ:Ð:Ø×Ñ˜4 Ô)Ø�|‰|˜D 'Ó*Ð*rt   rj   )r€   r�   r‚   rò   ró   rœ   r   rû   r	   rþ   r  rï   rƒ   rt   rr   r  r  Î  si   „ Ø×ÑÙD˜CÐD¨(°3©-ÒDó ØDð# ð #¨x¸©}ð #ÀÀcÁó #ð	 #ð 	°¸±ó 	ð+˜cô +rt   r  c                   ó   — e Zd Zdee   fd„Zy)ÚConfigÚcontext_configc                  ó   — y rj   rƒ   ©rp   rÄ   r%  s      rr   rs   zConfig.__init__ò  s   � rt   N)r€   r�   r‚   r   r,   rs   rƒ   rt   rr   r$  r$  ñ  s   „ ØK¨h°}Ñ.EÔKrt   r$  c                   óh   — e Zd Zdee   fd„Zd„ Zd„ Zd„ Zdd„Z	dd„Z
dd	„Zdd
„Zdefd„Zdefd„Zy)ÚParseConfigObjectr%  c                 ó    — || _         || _        y rj   )rÄ   r%  r'  s      rr   rs   zParseConfigObject.__init__÷  s   € ØˆŒ
Ø,ˆÕrt   c                 ó¢   — dD ]I  }||v sŒ|j                  dd«      }||v rt        ||| j                  ¬«      ‚|j                  |«      ||<   ŒK |S )N)Úpre_hookÚ	post_hookrÚ   ú-r  )ÚreplacerD   rÄ   r{   )rp   rk   ÚoldkeyÚnewkeys       rr   Ú_transform_configz#ParseConfigObject._transform_configû  s]   € Ø/ò 	4ˆFØ˜ÒØŸ™¨¨SÓ1�Ø˜VÑ#Ü4°V¸VÈ$Ï*É*ÔUÐUØ!'§¡¨FÓ!3��v’ð	4ð ˆrt   c                 óØ  — t        |«      dk(  rt        |«      dk(  r|d   }n5t        |«      dk(  rt        |«      dkD  r|}nt        | j                  ¬«      ‚| j                  |«      }| j                  €t        d«      ‚t        «       j                  r<t        | j                  j                  «      }|r| j                  j                  |«       | j                  j                  |«       y)Nr¨   r   r  z/At parse time, did not receive a context configrÏ   )r  rG   rÄ   r2  r%  ra   rU   Ú-state_modified_compare_more_unrendered_valuesr#   Úraw_codeÚadd_unrendered_config_callÚadd_config_call)rp   r~   r   ÚoptsÚunrendered_configs        rr   rï   zParseConfigObject.__call__  sÇ   € Üˆt‹9˜Š>œc &›k¨QÒ.Ø˜‘7‰DÜ�‹Y˜!Š^¤ F£¨a¢Ø‰Dä(¨d¯j©jÔ9Ð9à×%Ñ% dÓ+ˆð ×ÑÐ&Ü!Ð"SÓTÐTô ‹;×DÒDÜ BÀ4Ç:Á:×CVÑCVÓ WÐÙ Ø×#Ñ#×>Ñ>Ð?PÔQð 	×Ñ×+Ñ+¨DÔ1Ørt   c                 ó(   — | j                  ||i«      S rj   ©rï   ©rp   r�   Úvalues      rr   ÚsetzParseConfigObject.set  ó   € Ø�}‰}˜d E˜]Ó+Ð+rt   Nc                  ó   — y©NrÏ   rƒ   ©rp   r�   Ú	validators      rr   ÚrequirezParseConfigObject.require   ó   € Ørt   c                  ó   — yrA  rƒ   rB  s      rr   Úmeta_requirezParseConfigObject.meta_require#  rE  rt   c                  ó   — yrA  rƒ   ©rp   r�   r—   rC  s       rr   r  zParseConfigObject.get&  rE  rt   c                  ó   — yrA  rƒ   rI  s       rr   Úmeta_getzParseConfigObject.meta_get)  rE  rt   r•   c                  ó   — y©NFrƒ   r�   s    rr   Úpersist_relation_docsz'ParseConfigObject.persist_relation_docs,  ó   € Ørt   c                  ó   — yrM  rƒ   r�   s    rr   Úpersist_column_docsz%ParseConfigObject.persist_column_docs/  rO  rt   rj   r½   )r€   r�   r‚   r   r,   rs   r2  rï   r>  rD  rG  r  rK  ÚboolrN  rQ  rƒ   rt   rr   r)  r)  ö  sN   „ ð-¨h°}Ñ.Eó -òòò2,óóóóð tó ð Tô rt   r)  c                   ó~   — e Zd Zddee   fd„Zd„ Zd„ Zd„ Ze	fd„Z
e	fd„Zdd	„Zdd
„Zdd„Zdd„Zdefd„Zdefd„Zy)ÚRuntimeConfigObjectNr%  c                 ó   — || _         y rj   ©rÄ   r'  s      rr   rs   zRuntimeConfigObject.__init__4  s	   € Øˆ�
rt   c                  ó   — yrA  rƒ   r}   s      rr   rï   zRuntimeConfigObject.__call__8  rE  rt   c                 ó(   — | j                  ||i«      S rj   r;  r<  s      rr   r>  zRuntimeConfigObject.set;  r?  rt   c                 ó   —  ||«       y rj   rƒ   )rp   rC  r=  s      rr   Ú	_validatezRuntimeConfigObject._validate>  s
   € Ù�%Õrt   c                 óÖ   — t        | j                  d«      s|}n&| j                  j                  j                  ||«      }|t        u r!t        | j                  j                  |¬«      ‚|S ©Nrk   )Ú	unique_idr�   )rÓ   rÄ   rk   r  Ú_MISSINGr   r]  ©rp   r�   r—   Úresults       rr   Ú_lookupzRuntimeConfigObject._lookupA  sU   € ä�t—z‘z 8Ô,Ø‰Fà—Z‘Z×&Ñ&×*Ñ*¨4°Ó9ˆFØ”XÑÜ$¨t¯z©z×/CÑ/CÈ$ÔOÐOØˆrt   c                 óÖ   — t        | j                  d«      s|}n&| j                  j                  j                  ||«      }|t        u r!t        | j                  j                  |¬«      ‚|S r\  )rÓ   rÄ   rk   rK  r^  r   r]  r_  s       rr   Ú_lookup_metaz RuntimeConfigObject._lookup_metaK  sU   € ä�t—z‘z 8Ô,Ø‰Fà—Z‘Z×&Ñ&×/Ñ/°°gÓ>ˆFØ”XÑÜ$¨t¯z©z×/CÑ/CÈ$ÔOÐOØˆrt   c                 óP   — | j                  |«      }|�| j                  ||«       |S rj   ©ra  rZ  ©rp   r�   rC  Ú	to_returns       rr   rD  zRuntimeConfigObject.requireU  s*   € Ø—L‘L Ó&ˆ	àÐ Ø�N‰N˜9 iÔ0àÐrt   c                 óP   — | j                  |«      }|�| j                  ||«       |S rj   ©rc  rZ  rf  s       rr   rG  z RuntimeConfigObject.meta_require]  s,   € Ø×%Ñ% dÓ+ˆ	àÐ Ø�N‰N˜9 iÔ0àÐrt   c                 óV   — | j                  ||«      }|�|�| j                  ||«       |S rj   re  ©rp   r�   r—   rC  rg  s        rr   r  zRuntimeConfigObject.gete  s1   € Ø—L‘L  wÓ/ˆ	àÐ  WÐ%8Ø�N‰N˜9 iÔ0àÐrt   c                 óV   — | j                  ||«      }|�|�| j                  ||«       |S rj   ri  rk  s        rr   rK  zRuntimeConfigObject.meta_getm  s3   € Ø×%Ñ% d¨GÓ4ˆ	àÐ  WÐ%8Ø�N‰N˜9 iÔ0àÐrt   r•   c                 ó‚   — | j                  di ¬«      }t        |t        «      st        |«      ‚|j                  dd«      S )NÚpersist_docs©r—   ÚrelationF©r  r›   rÔ   rP   ©rp   rn  s     rr   rN  z)RuntimeConfigObject.persist_relation_docsu  s<   € Ø—x‘x ¸�xÓ;ˆÜ˜,¬Ô-Ü+¨LÓ9Ð9à×Ñ 
¨EÓ2Ð2rt   c                 ó‚   — | j                  di ¬«      }t        |t        «      st        |«      ‚|j                  dd«      S )Nrn  ro  rÐ   Frq  rr  s     rr   rQ  z'RuntimeConfigObject.persist_column_docs|  s<   € Ø—x‘x ¸�xÓ;ˆÜ˜,¬Ô-Ü+¨LÓ9Ð9à×Ñ 	¨5Ó1Ð1rt   rj   r½   )r€   r�   r‚   r   r,   rs   rï   r>  rZ  r^  ra  rc  rD  rG  r  rK  rR  rN  rQ  rƒ   rt   rr   rT  rT  3  sb   „ ñ¨h°}Ñ.Eó òò,òð %-ó ð *2ó óóóóð3 tó 3ð2 Tô 2rt   rT  c                   ó   — e Zd ZdZd„ Zy)ÚParseDatabaseWrapperz_The parser subclass of the database wrapper applies any explicit
    parse-time overrides.
    c                 óV  — || j                   j                  v xr || j                   j                  v }|r| j                   j                  |   S || j                   j                  v rt        | j                   |«      S t	        dj                  | j                  j                  |«      «      ‚©Nz!'{}' object has no attribute '{}')rˆ   Ú_available_Ú_parse_replacements_rv   ÚAttributeErrorÚformatÚ	__class__r€   )rp   r�   Úoverrides      rr   rx   z ParseDatabaseWrapper.__getattr__Š  s�   € Ø˜4Ÿ=™=×4Ñ4Ð4Òc¸ÀÇÁ×AcÑAcÐ9cˆáØ—=‘=×5Ñ5°dÑ;Ð;Ø�T—]‘]×.Ñ.Ñ.Ü˜4Ÿ=™=¨$Ó/Ð/ä Ø3×:Ñ:¸4¿>¹>×;RÑ;RÐTXÓYóð rt   N©r€   r�   r‚   r¾   rx   rƒ   rt   rr   ru  ru  …  s   „ ñó
rt   ru  c                   ó   — e Zd ZdZd„ Zy)ÚRuntimeDatabaseWrapperzUThe runtime database wrapper exposes everything the adapter marks
    available.
    c                 ó¼   — || j                   j                  v rt        | j                   |«      S t        dj	                  | j
                  j                  |«      «      ‚rw  )rˆ   rx  rv   rz  r{  r|  r€   rŒ   s     rr   rx   z"RuntimeDatabaseWrapper.__getattr__œ  sM   € Ø�4—=‘=×,Ñ,Ñ,Ü˜4Ÿ=™=¨$Ó/Ð/ä Ø3×:Ñ:¸4¿>¹>×;RÑ;RÐTXÓYóð rt   Nr~  rƒ   rt   rr   r€  r€  —  s   „ ñórt   r€  c            	       ó4   — e Zd Z	 ddedee   dee   defd„Zy)ÚParseRefResolverNr�   r÷   rø   r•   c                 óÎ   — | j                   j                  j                  | j                  |||«      «       | j                  j                  | j                  | j                   «      S rj   )rÄ   Úrefsr±   rþ   rn   Úcreate_fromrk   rú   s       rr   rû   zParseRefResolver.resolve§  sJ   € ð 	�
‰
�‰×Ñ˜t×0Ñ0°°wÀÓHÔIð �}‰}×(Ñ(¨¯©°d·j±jÓAÐArt   r½   )r€   r�   r‚   rœ   r   r   rh   rû   rƒ   rt   rr   rƒ  rƒ  ¦  s8   „ àY]ñBØðBØ"*¨3¡-ðBØAIÈ+ÑAVðBà	ôBrt   rƒ  c            
       ón   — e Zd Z	 	 ddedee   dee   defd„Zdedefd„Z	d	ededee   dee   ddf
d
„Z
y)ÚRuntimeRefResolverNÚtarget_nameÚtarget_packageÚtarget_versionr•   c                 ód  — | j                   j                  | j                  |||| j                  | j                  j                  «      }|�t        |t        «      r)t        | j                  |d||t        |t        «      ¬«      ‚| j                   j                  | j                  || j                  j                  «      rNt        | j                  j                  |j                  t        j                  t        |j                   «      ¬«      ‚| j                   j#                  | j                  || j                  j                  «      rEt        | j                  j                  |j                  t        j$                  |j                  ¬«      ‚| j'                  ||||«       | j)                  |«      S )Nr  )r  r‰  Útarget_kindrŠ  r‹  Údisabled)r]  Úref_unique_idÚaccessÚscope)rÅ   Úresolve_refrÄ   rÇ   r·   r›   r3   rT   Úis_invalid_private_refrk   rž   rE   r]  r7   ÚPrivatere   ÚgroupÚis_invalid_protected_refÚ	ProtectedÚvalidateÚcreate_relation)rp   r‰  rŠ  r‹  Útarget_models        rr   rû   zRuntimeRefResolver.resolve´  sc  € ð —}‘}×0Ñ0Ø�J‰JØØØØ× Ñ Ø�J‰J×#Ñ#ó
ˆð Ð¤:¨l¼HÔ#EÜ%Ø—Z‘ZØ'Ø"Ø-Ø-Ü# L´(Ó;ôð ð �]‰]×1Ñ1Ø�J‰J˜ d§k¡k×&>Ñ&>ô
ô $ØŸ*™*×.Ñ.Ø*×4Ñ4Ü!×)Ñ)Ü! ,×"4Ñ"4Ó5ô	ð ð �]‰]×3Ñ3Ø�J‰J˜ d§k¡k×&>Ñ&>ô
ô $ØŸ*™*×.Ñ.Ø*×4Ñ4Ü!×+Ñ+Ø"×/Ñ/ô	ð ð 	�‰�l K°ÀÔPØ×#Ñ# LÓ1Ð1rt   rš  c                 ó`  — |j                   r]| j                  j                  |j                  d «       | j                  j                  || j                  | j                  |«      ¬«      S t        |d«      rø|j                  rì| j                  j                  j                  rÌ| j                  j                  j                  r|j                  t        j                  vsDt!        | j                  «      j#                  |j$                  |j&                  |j(                  «      sL| j                  j+                  | j                  |j                  | j                  | j                  |«      ¬«      S | j                  j+                  | j                  || j                  | j                  |«      ¬«      S )N©Úlimitrê   Údefer_relation)Úis_ephemeral_modelrÄ   Úset_cter]  rn   Úcreate_ephemeral_fromrË   rì   rÓ   rž  rk   r~   ÚdeferÚfavor_stater   ÚSELECTED_RESOURCESr   Úget_relationÚdatabaseÚschemaÚ
identifierr†  )rp   rš  s     rr   r™  z"RuntimeRefResolver.create_relationå  sd  € Ø×*Ò*Ø�J‰J×Ñ˜|×5Ñ5°tÔ<Ø—=‘=×6Ñ6ØØ×(Ñ(Ø"&×"@Ñ"@ÀÓ"Nð 7ó ð ô �LÐ"2Ô3Ø×+Ò+Ø—‘× Ñ ×&Ò&ð —K‘K×$Ñ$×0Ò0Ø$×.Ñ.Ô6H×6[Ñ6[Ñ[ô # 4§;¡;Ó/×<Ñ<Ø ×)Ñ)¨<×+>Ñ+>À×@WÑ@Wôð
 —=‘=×,Ñ,Ø—‘Ø×+Ñ+Ø×(Ñ(Ø"&×"@Ñ"@ÀÓ"Nð	 -ó ð ð —=‘=×,Ñ,Ø—‘ØØ×(Ñ(Ø"&×"@Ñ"@ÀÓ"Nð	 -ó ð rt   Úresolvedc                 ó°   — |j                   | j                  j                  j                  vr*| j	                  |||«      }t        | j                  |¬«      ‚y )Nr  )r]  rÄ   Ú
depends_onÚnodesrþ   rR   )rp   r©  r‰  rŠ  r‹  r~   s         rr   r˜  zRuntimeRefResolver.validate  sM   € ð ×Ñ T§Z¡Z×%:Ñ%:×%@Ñ%@Ñ@Ø×$Ñ$ [°.À.ÓQˆDÜ$¨$¯*©*¸4Ô@Ð@ð Art   r½   )r€   r�   r‚   rœ   r   r   rh   rû   r;   r™  r˜  rƒ   rt   rr   rˆ  rˆ  ³  s—   „ ð )-Ø04ñ	/2àð/2ð ! ™ð/2ð ! Ñ-ð	/2ð
 
ó/2ðb$¨Lð $¸]ó $ðL	Aàð	Að ð	Að ! ™ð		Að
 ! Ñ-ð	Að 
ô	Art   rˆ  c            
       óP   ‡ — e Zd Zdededee   dee   ddf
d„Zdedefˆ fd	„Z	ˆ xZ
S )
ÚOperationRefResolverr©  r‰  rŠ  r‹  r•   Nc                  ó   — y rj   rƒ   )rp   r©  r‰  rŠ  r‹  s        rr   r˜  zOperationRefResolver.validate  s   € ð 	rt   rš  c                 ó|   •— |j                   r!t        |j                  | j                  ¬«      ‚t        ‰| �  |«      S ©Nr  )rŸ  rN   r�   rÄ   Úsuperr™  )rp   rš  r|  s     €rr   r™  z$OperationRefResolver.create_relation!  s8   ø€ Ø×*Ò*ô 9¸×9JÑ9JÐQU×Q[ÑQ[Ô\Ð\ä‘7Ñ*¨<Ó8Ð8rt   )r€   r�   r‚   r;   rœ   r   r   r˜  rh   r™  Ú__classcell__©r|  s   @rr   r®  r®    sY   ø„ ðàðð ðð ! ™ð	ð
 ! Ñ-ðð 
óð9¨Lð 9¸]÷ 9ñ 9rt   r®  c            	       ó^   ‡ — e Zd Zedee   fd„«       Z	 	 ddedee   dee   de	fˆ fd„Z
ˆ xZS )ÚRuntimeUnitTestRefResolverr•   c                  ó   — y rj   rƒ   r�   s    rr   rË   z(RuntimeUnitTestRefResolver.resolve_limit+  ó   € ð rt   r‰  rŠ  r‹  c                 ó&   •— t         ‰| �  |||«      S rj   )r²  rû   )rp   r‰  rŠ  r‹  r|  s       €rr   rû   z"RuntimeUnitTestRefResolver.resolve0  s   ø€ ô ‰w‰˜{¨N¸NÓKÐKrt   r½   )r€   r�   r‚   r¿   r   rñ   rË   rœ   r   rh   rû   r³  r´  s   @rr   r¶  r¶  *  sg   ø„ Øð˜x¨™}ò ó ðð )-Ø04ñ	LàðLð ! ™ðLð ! Ñ-ð	Lð
 
÷Lñ Lrt   r¶  c                   ó   — e Zd Zdedefd„Zy)ÚParseSourceResolverr  r  c                 ó°   — | j                   j                  j                  ||g«       | j                  j	                  | j
                  | j                   «      S rj   )rÄ   Úsourcesr±   rn   r†  rk   r  s      rr   rû   zParseSourceResolver.resolve;  s>   € à�
‰
×Ñ×!Ñ! ;°
Ð";Ô<Ø�}‰}×(Ñ(¨¯©°d·j±jÓAÐArt   N©r€   r�   r‚   rœ   rû   rƒ   rt   rr   r»  r»  :  s   „ ðB 3ð B°Cô Brt   r»  c                   ó   — e Zd Zdedefd„Zy)ÚRuntimeSourceResolverr  r  c           	      ó„  — | j                   j                  ||| j                  | j                  j                  «      }|�t        |t        «      r,t        | j                  |› d|› �dt        |t        «      ¬«      ‚ G d„ d«      }| j                  j                   |«       || j                  | j                  |«      ¬«      S )Nr§   Úsource©r  r‰  r�  rŽ  c                   ó&   — e Zd ZU i Zeeef   ed<   y)ú>RuntimeSourceResolver.resolve.<locals>.SourceQuotingBaseConfigrl   N©r€   r�   r‚   rl   r   rœ   r   Ú__annotations__rƒ   rt   rr   ÚSourceQuotingBaseConfigrÅ  U  ó   … Ø&(ˆG�T˜#˜s˜(‘^Ô(rt   rÈ  rœ  )rÅ   Úresolve_sourcerÇ   rÄ   r·   r›   r3   rT   rn   r†  rË   rì   )rp   r  r  Útarget_sourcerÈ  s        rr   rû   zRuntimeSourceResolver.resolveB  sº   € ØŸ™×4Ñ4ØØØ× Ñ Ø�J‰J×#Ñ#ó	
ˆð Ð ¤J¨}¼hÔ$GÜ%Ø—Z‘ZØ*˜m¨1¨Z¨LÐ9Ø$Ü$ ]´HÓ=ô	ð ÷	)ñ 	)ð �}‰}×(Ñ(Ù#Ó%ØØ×$Ñ$Ø"×<Ñ<¸]ÓKð	 )ó 
ð 	
rt   Nr¾  rƒ   rt   rr   rÀ  rÀ  A  s   „ ð
 3ð 
°Cô 
rt   rÀ  c                   ó8   — e Zd Zedee   fd„«       Zdedefd„Zy)ÚRuntimeUnitTestSourceResolverr•   c                  ó   — y rj   rƒ   r�   s    rr   rË   z+RuntimeUnitTestSourceResolver.resolve_limita  r¸  rt   r  r  c           	      ó  — | j                   j                  ||| j                  | j                  j                  «      }|�t        |t        «      r,t        | j                  |› d|› �dt        |t        «      ¬«      ‚| j                  j                  |j                  d «       | j                  j                  |j                  «      }| j                  j                  | j                  j                  |¬«      j                  d¬«      S )Nr§   rÂ  rÃ  )r‘   r¨  F)r¨  )rÅ   rÊ  rÇ   rÄ   r·   r›   r3   rT   r   r]  rn   Úadd_ephemeral_prefixÚcte_namer|   ÚCTErÑ   )rp   r  r  rË  r¨  s        rr   rû   z%RuntimeUnitTestSourceResolver.resolvef  sâ   € ØŸ™×4Ñ4ØØØ× Ñ Ø�J‰J×#Ñ#ó	
ˆð Ð ¤J¨}¼hÔ$GÜ%Ø—Z‘ZØ*˜m¨1¨Z¨LÐ9Ø$Ü$ ]´HÓ=ô	ð ð 	�
‰
×Ñ˜=×2Ñ2°DÔ9à—]‘]×7Ñ7¸×8NÑ8NÓOˆ
Ø�}‰}×#Ñ#Ø—‘×"Ñ"Ø!ð $ó 
÷ ‰%˜5ˆ%Ó
!ð	"rt   N)	r€   r�   r‚   r¿   r   rñ   rË   rœ   rû   rƒ   rt   rr   rÍ  rÍ  `  s2   „ Øð˜x¨™}ò ó ðð" 3ð "°Cô "rt   rÍ  c                   ó(   — e Zd Zddedee   defd„Zy)ÚParseMetricResolverNr�   r÷   r•   c                 ó„   — | j                   j                  j                  | j                  ||«      «       t	        ||«      S rj   )rÄ   Úmetricsr±   rþ   r5   r  s      rr   rû   zParseMetricResolver.resolveƒ  s4   € Ø�
‰
×Ñ×!Ñ! $×"3Ñ"3°D¸'Ó"BÔCä˜t WÓ-Ð-rt   rj   ©r€   r�   r‚   rœ   r   r5   rû   rƒ   rt   rr   rÔ  rÔ  ‚  s    „ ñ.˜Cð .¨(°3©-ð .À?ô .rt   rÔ  c                   ó(   — e Zd Zddedee   defd„Zy)ÚRuntimeMetricResolverNr‰  rŠ  r•   c                 óü   — | j                   j                  ||| j                  | j                  j                  «      }|�t        |t        «      rt        | j                  |d|¬«      ‚t        || j                   «      S )NÚmetric)r  r‰  r�  rŠ  )	rÅ   Úresolve_metricrÇ   rÄ   r·   r›   r3   rT   r6   )rp   r‰  rŠ  Útarget_metrics       rr   rû   zRuntimeMetricResolver.resolveŠ  ss   € ØŸ™×4Ñ4ØØØ× Ñ Ø�J‰J×#Ñ#ó	
ˆð Ð ¤J¨}¼hÔ$GÜ%Ø—Z‘ZØ'Ø$Ø-ô	ð ô ' }°d·m±mÓDÐDrt   rj   r×  rƒ   rt   rr   rÙ  rÙ  ‰  s%   „ ñE 3ð E¸À¹ð EÐQ`ô Ert   rÙ  c                   ób   ‡ — e Zd Zdeeef   dededdfˆ fd„Zde	e
   fd„Zdeeef   fd„Zˆ xZS )	ÚModelConfiguredVarÚcontextrk   r  r•   Nc                 óP   •— |  || _         t        ‰| �	  ||j                  |¬«       y r±  )Ú_configr²  rs   Úcli_vars)rp   rà  rk   r  r|  s       €rr   rs   zModelConfiguredVar.__init__Ÿ  s'   ø€ ñ 	Ø&,ˆŒÜ‰Ñ˜ &§/¡/¸ÐÕ=rt   c              #   óÐ   K  — | j                   j                  «       }| j                  j                  }|| j                   j                  k7  r||v r||   –— | j                   –— y ­wrj   )râ  Úload_dependenciesÚ_noder·   rŸ   )rp   rž   r·   s      rr   Úpackages_for_nodez$ModelConfiguredVar.packages_for_node©  sV   è ø€ Ø—|‘|×5Ñ5Ó7ˆØ—z‘z×.Ñ.ˆà˜4Ÿ<™<×4Ñ4Ò4Ø˜|Ñ+Ø" <Ñ0Ò0Ø�l‰lÓùs   ‚A$A&c                 óœ  — t        | j                  t        «      r| j                  }nt        | j                  j                  «      }| j
                  j                  j                  }t        «       }| j                  «       D ]-  }|j                  |j                  j                  ||«      «       Œ/ |j                  | j                  «       |S rj   )r›   ræ  r$   r+   r·   râ  Úcredentialsr‘   rY   rç  ÚaddÚvarsÚvars_forÚ	_cli_vars)rp   Úsearch_nodeÚadapter_typeÚmergedÚprojects        rr   Ú_generate_mergedz#ModelConfiguredVar._generate_merged²  s•   € ä�d—j‘j¤-Ô0ØŸ*™*‰Kä# D§J¡J×$;Ñ$;Ó<ˆKà—|‘|×/Ñ/×4Ñ4ˆä“ˆØ×-Ñ-Ó/ò 	IˆGØ�J‰J�w—|‘|×,Ñ,¨[¸,ÓGÕHð	Ià�
‰
�4—>‘>Ô"Øˆrt   )r€   r�   r‚   r   rœ   r   r&   r=   rs   r   r%   rç  r
   rò  r³  r´  s   @rr   rß  rß  ž  s\   ø„ ð>à�c˜3�h‘ð>ð ð>ð ð	>ð
 
õ>ð 8¨GÑ#4ó ð '¨#¨s¨(Ñ"3÷ rt   rß  c                   ó   — e Zd Zd„ Zy)ÚParseVarc                  ó   — y rj   rƒ   )rp   Úvar_names     rr   Úget_missing_varzParseVar.get_missing_varÃ  ó   € àrt   N)r€   r�   r‚   r÷  rƒ   rt   rr   rô  rô  Â  s   „ órt   rô  c                   ó   — e Zd Zy)Ú
RuntimeVarN)r€   r�   r‚   rƒ   rt   rr   rú  rú  È  s   „ Ørt   rú  c                   ó:   ‡ — e Zd Zdeeef   dededdfˆ fd„Zˆ xZ	S )ÚUnitTestVarrà  rk   r  r•   Nc                 ó  •— d }t        |t        «      sJ ‚|j                  rP|j                  j                  r:t	        |«      }|j
                  j                  |j                  j                  «       t        ‰| �!  ||xs ||¬«       y r±  )	r›   rB   Ú	overridesrë  r   rã  Úupdater²  rs   )rp   rà  rk   r  Úconfig_copyr|  s        €rr   rs   zUnitTestVar.__init__Í  sn   ø€ ð ˆÜ˜$¤Ô-Ð-Ð-Ø�>Š>˜dŸn™n×1Ò1Ü" 6Ó*ˆKØ× Ñ ×'Ñ'¨¯©×(;Ñ(;Ô<ä‰Ñ˜ +Ò"7°¸dÐÕCrt   )
r€   r�   r‚   r   rœ   r   r&   r=   rs   r³  r´  s   @rr   rü  rü  Ì  sA   ø„ ðDà�c˜3�h‘ðDð ðDð ð	Dð
 
÷Dñ Drt   rü  c                   ó$   — e Zd Zddedee   fd„Zy)ÚParseFunctionResolverNr�   r÷   c                 óì   — | j                   j                  j                  | j                  ||«      «       | j                  j                  | j                  | j                   t        j                  ¬«      S )N)r‘   )	rÄ   Ú	functionsr±   rþ   rn   r†  rk   r   ÚFunctionr  s      rr   rû   zParseFunctionResolver.resolveÞ  sQ   € à�
‰
×Ñ×#Ñ# D×$5Ñ$5°d¸GÓ$DÔEØ�}‰}×(Ñ(¨¯©°d·j±jÄ|×G\ÑG\Ð(Ó]Ð]rt   rj   ©r€   r�   r‚   rœ   r   rû   rƒ   rt   rr   r  r  Ý  s   „ ñ^˜Cð ^¨(°3©-ô ^rt   r  c                   ó$   — e Zd Zddedee   fd„Zy)ÚRuntimeFunctionResolverNr�   r÷   c           	      ó˜  — | j                   j                  ||| j                  | j                  j                  «      }|�t        |t        «      r't        | j                  |dt        |t        «      ¬«      ‚ G d„ d«      }| j                  j                   |«       || j                  | j                  |«      t        j                  ¬«      S )NÚfunctionrÃ  c                   ó&   — e Zd ZU i Zeeef   ed<   y)ú@RuntimeFunctionResolver.resolve.<locals>.SourceQuotingBaseConfigrl   NrÆ  rƒ   rt   rr   rÈ  r  ø  rÉ  rt   rÈ  )r�  rê   r‘   )rÅ   Úresolve_functionrÇ   rÄ   r·   r›   r3   rT   rn   r†  rË   rì   r   r  )rp   r�   r÷   Útarget_functionrÈ  s        rr   rû   zRuntimeFunctionResolver.resolveå  s¸   € ØŸ-™-×8Ñ8ØØØ× Ñ Ø�J‰J×#Ñ#ó	
ˆð Ð"¤j°Ä(Ô&KÜ%Ø—Z‘ZØ Ø&Ü$ _´hÓ?ô	ð ÷	)ñ 	)ð �}‰}×(Ñ(Ù#Ó%ØØ×$Ñ$Ø"×<Ñ<¸_ÓMÜ×&Ñ&ð )ó 
ð 	
rt   rj   r  rƒ   rt   rr   r  r  ä  s   „ ñ
˜Cð 
¨(°3©-ô 
rt   r  c                   óˆ   — e Zd ZU eed<   ee   ed<   ee   ed<   ee   ed<   ee	   ed<   ee
   ed<   ee   ed<   ee   ed<   y	)
ÚProviderÚexecuter$  ÚDatabaseWrapperr(   ÚrefrÂ  rÛ  r
  N)r€   r�   r‚   rR  rÇ  r   r$  r…   rß  rö   r
  r  r  rƒ   rt   rr   r  r  
  sX   … ØƒMØ�‰LÓØÐ-Ñ.Ó.Ø	Ð Ñ	!Ó!Ø	ˆoÑ	ÓØÐ#Ñ$Ó$ØÐ#Ñ$Ó$ØÐ'Ñ(Ô(rt   r  c                   ó,   — e Zd ZdZeZeZeZ	e
ZeZeZeZy)ÚParseProviderFN)r€   r�   r‚   r  r)  r$  ru  r  rô  r(   rƒ  r  r»  rÂ  rÔ  rÛ  r  r
  rƒ   rt   rr   r  r    s*   „ Ø€GØ€FØ*€OØ
€CØ
€CØ €FØ €FØ$�Hrt   r  c                   ó,   — e Zd ZdZeZeZeZ	e
ZeZeZeZy)ÚGenerateNameProviderFN)r€   r�   r‚   r  rT  r$  ru  r  rú  r(   rƒ  r  r»  rÂ  rÔ  rÛ  r  r
  rƒ   rt   rr   r  r     s*   „ Ø€GØ €FØ*€OØ
€CØ
€CØ €FØ €FØ$�Hrt   r  c                   ó,   — e Zd ZdZeZeZeZ	e
ZeZeZeZy)ÚRuntimeProviderTN)r€   r�   r‚   r  rT  r$  r€  r  rú  r(   rˆ  r  rÀ  rÂ  rÙ  rÛ  r  r
  rƒ   rt   rr   r  r  +  s*   „ Ø€GØ €FØ,€OØ
€CØ
€CØ"€FØ"€FØ&�Hrt   r  c                   ó,   — e Zd ZdZeZeZeZ	e
ZeZeZeZy)ÚRuntimeUnitTestProviderTN)r€   r�   r‚   r  rT  r$  r€  r  rü  r(   r¶  r  rÍ  rÂ  rÙ  rÛ  r  r
  rƒ   rt   rr   r  r  6  s*   „ Ø€GØ €FØ,€OØ
€CØ
$€CØ*€FØ"€FØ&�Hrt   r  c                   ó   — e Zd ZeZy)ÚOperationProviderN)r€   r�   r‚   r®  r  rƒ   rt   rr   r  r  A  s   „ Ø
�Crt   r  ÚTc            
       ó’  ‡ — e Zd Zdedededee   ddf
ˆ fd„Zd„ Z	 e
«       deeef   fd	„«       Z e
«       d
„ «       Z e
«       deeee   f   fd„«       Z e«       dedee   fd„«       Z e«       	 d:dededed   defd„«       Z e«       ee   ee   ee   dfdeded   defd„«       Z e
«       d„ «       Z e«       dedefd„«       Z e«       dedefd„«       Z e«       dededefd„«       Z e«       d;d„«       Z e
«       defd„«       Z e
«       defd„«       Z e
«       defd„«       Z e
«       defd„«       Z e
d«      de fd „«       Z! e
«       de"fd!„«       Z# e
«       deeef   fd"„«       Z$ e
«       defd#„«       Z% e
«       defd$„«       Z& e
«       de'fd%„«       Z( e
d&«      de)fd'„«       Z* e
«       deeef   fd(„«       Z+ e
«       de,e-   fd)„«       Z. e
«       deeef   fd*„«       Z/ e
«       deeef   fd+„«       Z0 e
d,«      deeef   fd-„«       Z1 e
«       dee2eeef         fd.„«       Z3 e
«       dee2eeef         fd/„«       Z4 e
«       dee   fd0„«       Z5 e
«       defd1„«       Z6 e«       defd2„«       Z7 e«       d:d3ed4ee   defd5„«       Z8 e
«       de2e   fd6„«       Z9 e«       d7ed8ede:fd9„«       Z;ˆ xZ<S )<ÚProviderContextrk   rÅ   Úproviderr%  r•   Nc                 ó6  •— |€t        d|› �«      ‚|  || _        t        ‰| �  |||j                  «       i | _        || _        || _        t        | j                  «      | _
        | j                  j                  | j                  | j                  «      | _        y )Nz#Invalid provider given to context: )r`   rÄ   r²  rs   r·   Úsql_resultsr%  r!  r   rk   rq   r  r†   rÃ   )rp   rÄ   rk   rÅ   r!  r%  r|  s         €rr   rs   zProviderContext.__init__K  s†   ø€ ð ÐÜ"Ð%HÈÈ
Ð#SÓTÐTáØCHˆŒ
Ü‰Ñ˜ ¨5×+=Ñ+=Ô>Ø:<ˆÔØ7EˆÔØ"*ˆŒÜ" 4§;¡;Ó/ˆŒàŸ-™-×7Ñ7¸¿¹ÀdÇnÁnÓUˆ�rt   c                 óÖ   — t        | j                  j                  j                  «      }t	        | j                  j
                  | j                  | j                  || j                  «      S rj   )	r   rk   ré  r‘   r1   rŸ   Úsearch_packageÚmacro_stackrÄ   )rp   Úinternal_packagess     rr   Ú_get_namespace_builderz&ProviderContext._get_namespace_builderb  sS   € Ü5°d·k±k×6MÑ6M×6RÑ6RÓSÐÜ$Ø�K‰K×$Ñ$Ø×ÑØ×ÑØØ�J‰Jó
ð 	
rt   c                 ó   — t        «       S rj   r^   r�   s    rr   Údbt_metadata_envsz!ProviderContext.dbt_metadata_envsl  s   € ä Ó"Ð"rt   c                 ó@   — t        | j                  j                  «      S rj   )rZ   rk   r~   r�   s    rr   Úinvocation_args_dictz$ProviderContext.invocation_args_dictp  s   € ä˜DŸK™K×,Ñ,Ó-Ð-rt   c                 ó   — | j                   S rj   )r#  r�   s    rr   Ú_sql_resultszProviderContext._sql_resultst  s   € à×ÑÐrt   r�   c                 ó¼   — || j                   v rN|dk(  r| j                   d   S | j                   |   €t        |«      ‚| j                   |   }d | j                   |<   |S y )NÚmain)r#  rK   )rp   r�   Úret_vals      rr   Úload_resultzProviderContext.load_resultx  st   € à�4×#Ñ#Ñ#ð �vŠ~Ø×'Ñ'¨Ñ/Ð/ð ×!Ñ! $Ñ'Ð/Ü3°DÓ9Ð9ð ×*Ñ*¨4Ñ0�Ø)-�× Ñ  Ñ&Ø�ð rt   ÚresponseÚagate_tableúagate.Tablec                 óŠ   — ddl m} |€|j                  «       }t        ||j	                  |«      |dœ«      | j
                  |<   y)Nr   ©Úagate_helper)r3  ÚdataÚtablerÏ   )Údbt_common.clientsr8  Úempty_tablerd   Ú	as_matrixr#  )rp   r�   r3  r4  r8  s        rr   Ústore_resultzProviderContext.store_result�  sN   € õ 	4àÐØ&×2Ñ2Ó4ˆKä!)à$Ø$×.Ñ.¨{Ó;Ø$ñó"
ˆ×Ñ˜Ñð rt   c                 óD   — t        |||¬«      }| j                  |||«      S )N)Ú_messageÚcodeÚrows_affected)r   r>  )rp   r�   ÚmessagerA  rB  r4  r3  s          rr   Ústore_raw_resultz ProviderContext.store_raw_resultŸ  s'   € ô #¨G¸$ÈmÔ\ˆØ× Ñ   x°Ó=Ð=rt   c                 óD   — dt         t        gd f   fd„}t        d|i«      S )Nr•   c                  ó$   ‡ — dt         dd fˆ fd„}|S )Nr=  r•   c                 óÌ   •— ‰D ]'  }t        |t        «      rt        | |«      r y | |k(  sŒ' y  t        dj                  | dj	                  t        t        ‰«      «      «      «      ‚)Nz#Expected value "{}" to be one of {}ú,)r›   r‘   rb   r{  r²   Úmaprœ   )r=  Úargr~   s     €rr   Úinnerz?ProviderContext.validation.<locals>.validate_any.<locals>.inner®  sd   ø€ Øò �CÜ! #¤tÔ,´¸EÀ3Ô1GÙØ #›Ùð	ô
 )Ø9×@Ñ@ÀÈÏÉÔQTÔUXÐZ^ÓQ_ÓH`Óaóð rt   )r  )r~   rK  s   ` rr   Úvalidate_anyz0ProviderContext.validation.<locals>.validate_any­  s   ø€ ðœQð  4õ ð ˆLrt   Úany)r   r  rd   )rp   rL  s     rr   Ú
validationzProviderContext.validation«  s2   € ð	¤8¬Q¨C°¨IÑ#6ó 	ô à�|ðó
ð 	
rt   Úpayloadc                 óÔ  — t        | j                  t        t        f«      rt	        | j                  ¬«      ‚d }t        | j                  t
        «      r�| j                  j                  j                  d«      dk(  rh| j                  j                  �Rt        j                  | j                  j                  j                  | j                  j                  j                  «      }| j                  j                  | j                  j                  d|¬«      | j                  _        | j                  j!                  | j                  j"                  | j                  j                  |«       y)Nr  rå   rà   Úrun)Úsplit_suffixrÏ   )r›   rÄ   r:   rA   rc   r<   rk   r  rç   rV   Úformat_batch_startrè   Ú
batch_sizeÚget_target_write_pathÚtarget_pathÚ
build_pathÚ
write_nodeÚproject_root)rp   rO  rR  s      rr   ÚwritezProviderContext.writeÀ  s  € ô �d—j‘j¤5Ô*:Ð";Ô<Ü/°T·Z±ZÔ@Ð@àˆä�t—z‘z¤9Ô-Ø—
‘
×!Ñ!×%Ñ%Ð&<Ó=ÀÒMØ—
‘
× Ñ Ð,ä,×?Ñ?Ø—
‘
× Ñ ×1Ñ1Ø—
‘
×!Ñ!×,Ñ,óˆLð
 !%§
¡
× @Ñ @Ø�K‰K×#Ñ# U¸ð !Aó !
ˆ�
‰
Ôð 	�
‰
×Ñ˜dŸk™k×6Ñ6¸¿
¹
×8MÑ8MÈwÔWØrt   Ústringc                 óD   — t        || j                  | j                  «      S rj   )r"   Ú_ctxrÄ   )rp   r[  s     rr   ÚrenderzProviderContext.render×  s   € ä˜F D§I¡I¨t¯z©zÓ:Ð:rt   Úmessage_if_exceptionÚfuncc                 óZ   — 	  ||i |¤ŽS # t         $ r t        || j                  «      ‚w xY wrj   )Ú	ExceptionrC   rÄ   )rp   r_  r`  r~   r   s        rr   Útry_or_compiler_errorz%ProviderContext.try_or_compiler_errorÛ  s;   € ð	EÙ˜Ð( Ñ(Ð(øÜò 	EÜ"Ð#7¸¿¹ÓDÐDð	Eús   ‚
 Š *c                 ó\  — ddl m} t        | j                  t        «      s+t        | j                  j                  | j                  ¬«      ‚| j                  j                  | j                  j                  k7  rHt        j                  j                  | j                  j                  | j                  j                  «      nd}t        j                  j                  | j                  j                  || j                  j                  «      }t        j                  j!                  |«      s`| j                  j"                  sJ ‚t        j                  j                  | j                  j"                  | j                  j                  «      }| j                  j                  j$                  }| j                  j                  j&                  }	 |j)                  |||¬«      }t        j                  j/                  |«      |_        |S # t*        $ r}t-        || j                  ¬«      ‚d }~ww xY w)Nr   r7  r  r§   )Útext_columnsÚ	delimiter)r;  r8  r›   rÄ   r>   rH   Úresource_typer·   rk   rŸ   ÚosÚpathr²   Úpackages_install_pathrY  Úoriginal_file_pathÚexistsÚ	root_pathÚcolumn_typesrf  Úfrom_csvÚ
ValueErrorrI   ÚabspathÚoriginal_abspath)rp   r8  Úpackage_pathri  rn  rf  r:  Úes           rr   Úload_agate_tablez ProviderContext.load_agate_tableä  sy  € å3ä˜$Ÿ*™*¤hÔ/Ü,¨T¯Z©Z×-EÑ-EÈDÏJÉJÔWÐWð
 �z‰z×&Ñ&¨$¯+©+×*BÑ*BÒBô �G‰G�L‰L˜Ÿ™×:Ñ:¸D¿J¹J×<SÑ<SÔTàð 	ô
 �w‰w�|‰|˜DŸK™K×4Ñ4°lÀDÇJÁJ×DaÑDaÓbˆÜ�w‰w�~‰~˜dÔ#Ø—:‘:×'Ò'Ð'Ð'Ü—7‘7—<‘< §
¡
× 4Ñ 4°d·j±j×6SÑ6SÓTˆDà—z‘z×(Ñ(×5Ñ5ˆØ—J‘J×%Ñ%×/Ñ/ˆ	ð	?Ø ×)Ñ)¨$¸\ÐU^Ð)Ó_ˆEô "$§¡§¡°Ó!6ˆÔØˆøô	 ò 	?Ü*¨1°4·:±:Ô>Ð>ûð	?ús   ÇH È	H+ÈH&È&H+c                 óŽ   — | j                   j                  | j                  | j                  | j                  | j
                  «      S )aK  The most important function in dbt is `ref()`; it's impossible to
        build even moderately complex models without it. `ref()` is how you
        reference one model within another. This is a very common behavior, as
        typically models are built to be "stacked" on top of one another. Here
        is how this looks in practice:

        > model_a.sql:

            select *
            from public.raw_data

        > model_b.sql:

            select *
            from {{ref('model_a')}}


        `ref()` is, under the hood, actually doing two important things. First,
        it is interpolating the schema into your model file to allow you to
        change your deployment schema via configuration. Second, it is using
        these references between models to automatically build the dependency
        graph. This will enable dbt to deploy models in the correct order when
        using dbt run.

        The `ref` function returns a Relation object.

        ## Advanced ref usage

        There is also a two-argument variant of the `ref` function. With this
        variant, you can pass both a package name and model name to `ref` to
        avoid ambiguity. This functionality is not commonly required for
        typical dbt usage.

        > model.sql:

            select * from {{ ref('package_name', 'model_name') }}"
        )r!  r  rÃ   rÄ   rk   rÅ   r�   s    rr   r  zProviderContext.ref   s0   € ðN �}‰}× Ñ  §¡°$·*±*¸d¿k¹kÈ4Ï=É=ÓYÐYrt   c                 óŽ   — | j                   j                  | j                  | j                  | j                  | j
                  «      S rj   )r!  rÂ  rÃ   rÄ   rk   rÅ   r�   s    rr   rÂ  zProviderContext.source)  ó-   € à�}‰}×#Ñ# D§O¡O°T·Z±ZÀÇÁÈdÏmÉmÓ\Ð\rt   c                 óŽ   — | j                   j                  | j                  | j                  | j                  | j
                  «      S rj   )r!  rÛ  rÃ   rÄ   rk   rÅ   r�   s    rr   rÛ  zProviderContext.metric-  rx  rt   c                 óŽ   — | j                   j                  | j                  | j                  | j                  | j
                  «      S rj   )r!  r
  rÃ   rÄ   rk   rÅ   r�   s    rr   r
  zProviderContext.function1  s0   € à�}‰}×%Ñ% d§o¡o°t·z±zÀ4Ç;Á;ÐPT×P]ÑP]Ó^Ð^rt   c                 ób   — | j                   j                  | j                  | j                  «      S )a¤  The `config` variable exists to handle end-user configuration for
        custom materializations. Configs like `unique_key` can be implemented
        using the `config` variable in your own materializations.

        For example, code in the `incremental` materialization like this:

            {% materialization incremental, default -%}
            {%- set unique_key = config.get('unique_key') -%}
            ...

        is responsible for handling model code that looks like this:

            {{
              config(
                materialized='incremental',
                unique_key='id'
              )
            }}


        ## config.get

        name: The name of the configuration variable (required)
        default: The default value to use if this configuration is not provided
            (optional)

        The `config.get` function is used to get configurations for a model
        from the end-user. Configs defined in this way are optional, and a
        default value can be provided.

        Example usage:

            {% materialization incremental, default -%}
              -- Example w/ no default. unique_key will be None if the user does not provide this configuration
              {%- set unique_key = config.get('unique_key') -%}
              -- Example w/ default value. Default to 'id' if 'unique_key' not provided
              {%- set unique_key = config.get('unique_key', default='id') -%}
              ...

        ## config.require

        name: The name of the configuration variable (required)

        The `config.require` function is used to get configurations for a model
        from the end-user. Configs defined using this function are required,
        and failure to provide them will result in a compilation error.

        Example usage:

            {% materialization incremental, default -%}
              {%- set unique_key = config.require('unique_key') -%}
              ...
        )r!  r$  rÄ   r%  r�   s    rr   Ú
ctx_configzProviderContext.ctx_config5  s&   € ðn �}‰}×#Ñ# D§J¡J°×0CÑ0CÓDÐDrt   c                 ó.   — | j                   j                  S )aº  `execute` is a Jinja variable that returns True when dbt is in
        "execute" mode.

        When you execute a dbt compile or dbt run command, dbt:

        - Reads all of the files in your project and generates a "manifest"
            comprised of models, tests, and other graph nodes present in your
            project. During this phase, dbt uses the `ref` statements it finds
            to generate the DAG for your project. *No SQL is run during this
            phase*, and `execute == False`.
        - Compiles (and runs) each node (eg. building models, or running
            tests). SQL is run during this phase, and `execute == True`.

        Any Jinja that relies on a result being returned from the database will
        error during the parse phase. For example, this SQL will return an
        error:

        > models/order_payment_methods.sql:

            {% set payment_method_query %}
            select distinct
            payment_method
            from {{ ref('raw_payments') }}
            order by 1
            {% endset %}
            {% set results = run_query(relation_query) %}
            {# Return the first column #}
            {% set payment_methods = results.columns[0].values() %}

        The error returned by dbt will look as follows:

            Encountered an error:
                Compilation Error in model order_payment_methods (models/order_payment_methods.sql)
            'None' has no attribute 'table'

        This is because Line #11 assumes that a table has been returned, when,
        during the parse phase, this query hasn't been run.

        To work around this, wrap any problematic Jinja in an
        `{% if execute %}` statement:

        > models/order_payment_methods.sql:

            {% set payment_method_query %}
            select distinct
            payment_method
            from {{ ref('raw_payments') }}
            order by 1
            {% endset %}
            {% set results = run_query(relation_query) %}
            {% if execute %}
            {# Return the first column #}
            {% set payment_methods = results.columns[0].values() %}
            {% else %}
            {% set payment_methods = [] %}
            {% endif %}
        )r!  r  r�   s    rr   r  zProviderContext.executen  s   € ðv �}‰}×$Ñ$Ð$rt   c                 ó,   — t        | j                  «      S )au  The exceptions namespace can be used to raise warnings and errors in
        dbt userspace.


        ## raise_compiler_error

        The `exceptions.raise_compiler_error` method will raise a compiler
        error with the provided message. This is typically only useful in
        macros or materializations when invalid arguments are provided by the
        calling model. Note that throwing an exception will cause a model to
        fail, so please use this variable with care!

        Example usage:

        > exceptions.sql:

            {% if number < 0 or number > 100 %}
              {{ exceptions.raise_compiler_error("Invalid `number`. Got: " ~ number) }}
            {% endif %}

        ## warn

        The `exceptions.warn` method will raise a compiler warning with the
        provided message. If the `--warn-error` flag is provided to dbt, then
        this warning will be elevated to an exception, which is raised.

        Example usage:

        > warn.sql:

            {% if number < 0 or number > 100 %}
              {% do exceptions.warn("Invalid `number`. Got: " ~ number) %}
            {% endif %}
        )r-   rÄ   r�   s    rr   Ú
exceptionszProviderContext.exceptions«  s   € ôH ˜tŸz™zÓ*Ð*rt   c                 óB   — | j                   j                  j                  S rj   )rk   ré  r¦  r�   s    rr   r¦  zProviderContext.databaseÑ  s   € à�{‰{×&Ñ&×/Ñ/Ð/rt   c                 óB   — | j                   j                  j                  S rj   )rk   ré  r§  r�   s    rr   r§  zProviderContext.schemaÕ  s   € à�{‰{×&Ñ&×-Ñ-Ð-rt   c                 óz   — | j                   j                  | j                  | j                  | j                  ¬«      S )N)rà  rk   r  )r!  r(   r]  rk   rÄ   r�   s    rr   ÚvarzProviderContext.varÙ  s3   € à�}‰}× Ñ Ø—I‘IØ—;‘;Ø—‘ð !ó 
ð 	
rt   rq   c                 ó   — | j                   S )a(  `adapter` is a wrapper around the internal database adapter used by
        dbt. It allows users to make calls to the database in their dbt models.
        The adapter methods will be translated into specific SQL statements
        depending on the type of adapter your project is using.
        )rÃ   r�   s    rr   Úctx_adapterzProviderContext.ctx_adapterá  s   € ð �‰Ðrt   c                 ó\   — | j                   j                  | j                  j                  dœS )N)rn   r   )rÃ   rn   rq   r   r�   s    rr   ÚapizProviderContext.apiê  s(   € ð Ÿ™×0Ñ0Ø—l‘l×)Ñ)ñ
ð 	
rt   c                 ó.   — | j                   j                  S rj   )rq   r   r�   s    rr   rÒ   zProviderContext.columnñ  s   € à�|‰|×"Ñ"Ð"rt   c                 ó   — | j                   S rj   )rÌ   r�   s    rr   ÚenvzProviderContext.envõ  s   € à�{‰{Ðrt   c                 ó.   — | j                   j                  S )a¯  The `graph` context variable contains information about the nodes in
        your dbt project. Models, sources, tests, and snapshots are all
        examples of nodes in dbt projects.

        ## The graph context variable

        The graph context variable is a dictionary which maps node ids onto dictionary representations of those nodes. A simplified example might look like:

            {
              "model.project_name.model_name": {
                "config": {"materialzed": "table", "sort": "id"},
                "tags": ["abc", "123"],
                "path": "models/path/to/model_name.sql",
                ...
              },
              "source.project_name.source_name": {
                "path": "models/path/to/schema.yml",
                "columns": {
                  "id": { .... },
                  "first_name": { .... },
                },
                ...
              }
            }

        The exact contract for these model and source nodes is not currently
        documented, but that will change in the future.

        ## Accessing models

        The `model` entries in the `graph` dictionary will be incomplete or
        incorrect during parsing. If accessing the models in your project via
        the `graph` variable, be sure to use the `execute` flag to ensure that
        this code only executes at run-time and not at parse-time. Do not use
        the `graph` variable to build you DAG, as the resulting dbt behavior
        will be undefined and likely incorrect.

        Example usage:

        > graph-usage.sql:

            /*
              Print information about all of the models in the Snowplow package
            */
            {% if execute %}
              {% for node in graph.nodes.values()
                 | selectattr("resource_type", "equalto", "model")
                 | selectattr("package_name", "equalto", "snowplow") %}

                {% do log(node.unique_id ~ ", materialized: " ~ node.config.materialized, info=true) %}

              {% endfor %}
            {% endif %}
            /*
              Example output
            ---------------------------------------------------------------
            model.snowplow.snowplow_id_map, materialized: incremental
            model.snowplow.snowplow_page_views, materialized: incremental
            model.snowplow.snowplow_web_events, materialized: incremental
            model.snowplow.snowplow_web_page_context, materialized: table
            model.snowplow.snowplow_web_events_scroll_depth, materialized: incremental
            model.snowplow.snowplow_web_events_time, materialized: incremental
            model.snowplow.snowplow_web_events_internal_fixed, materialized: ephemeral
            model.snowplow.snowplow_base_web_page_context, materialized: ephemeral
            model.snowplow.snowplow_base_events, materialized: ephemeral
            model.snowplow.snowplow_sessions_tmp, materialized: incremental
            model.snowplow.snowplow_sessions, materialized: table
            */

        ## Accessing sources

        To access the sources in your dbt project programatically, use the "sources" attribute.

        Example usage:

        > models/events_unioned.sql

            /*
              Union all of the Snowplow sources defined in the project
              which begin with the string "event_"
            */
            {% set sources = [] -%}
            {% for node in graph.sources.values() -%}
              {%- if node.name.startswith('event_') and node.source_name == 'snowplow' -%}
                {%- do sources.append(source(node.source_name, node.name)) -%}
              {%- endif -%}
            {%- endfor %}
            select * from (
              {%- for source in sources %}
                {{ source }} {% if not loop.last %} union all {% endif %}
              {% endfor %}
            )
            /*
              Example compiled SQL
            ---------------------------------------------------------------
            select * from (
              select * from raw.snowplow.event_add_to_cart union all
              select * from raw.snowplow.event_remove_from_cart union all
              select * from raw.snowplow.event_checkout
            )
            */

        )rÅ   Ú
flat_graphr�   s    rr   ÚgraphzProviderContext.graphù  s   € ðR �}‰}×'Ñ'Ð'rt   rÄ   c                 óf  — | j                   j                  d¬«      }d|v r|d   |d<   t        | j                   d«      rr| j                   j                  j                  du rPd|v rL|d   j                  «       D ]6  }d|v sŒ|d   }| j                  j                  j                  |«      }||d<   Œ8 |S )NT©Ú	omit_noneÚcompiled_codeÚcompiled_sqlÚcontractrÐ   rÖ   )	rÄ   Úto_dictrÓ   r“  Úalias_typesÚvaluesrq   r   Útranslate_type)rp   Ú	model_dctrÒ   Úorig_data_typeÚnew_data_types        rr   Ú	ctx_modelzProviderContext.ctx_modeld  s½   € à—J‘J×&Ñ&°Ð&Ó6ˆ	ð ˜iÑ'Ø(1°/Ñ(BˆI�nÑ%ô �D—J‘J 
Ô+Ø—
‘
×#Ñ#×/Ñ/°4Ñ7Ø˜YÑ&à# IÑ.×5Ñ5Ó7ò 8�Ø &Ò(Ø%+¨KÑ%8�Nà$(§L¡L×$7Ñ$7×$FÑ$FÀ~Ó$V�MØ*7�F˜;Ò'ð8ð Ðrt   c                  ó   — y rj   rƒ   r�   s    rr   Ú	pre_hookszProviderContext.pre_hooksy  rø  rt   c                  ó   — y rj   rƒ   r�   s    rr   Ú
post_hookszProviderContext.post_hooks}  rø  rt   c                  ó   — y rj   rƒ   r�   s    rr   ÚsqlzProviderContext.sql�  rø  rt   c                 ó6   — | j                   j                  «       S rj   )rq   Údate_functionr�   s    rr   Úsql_nowzProviderContext.sql_now…  s   € à�|‰|×)Ñ)Ó+Ð+rt   c                 ó<   — dj                  |¬«      }t        |«      ‚)z9This was deprecated in v0.18 in favor of adapter.dispatcha  The "adapter_macro" macro has been deprecated. Instead, use the `adapter.dispatch` method to find a macro and call the result.  For more information, see: https://docs.getdbt.com/reference/dbt-jinja-functions/dispatch) adapter_macro was called for: {macro_name})r£   )r{  rC   )rp   r�   r~   r   rµ   s        rr   Úadapter_macrozProviderContext.adapter_macro‰  s(   € ð:÷ ;A¹&ÈD¸&Ó:Qð 	ô ˜sÓ#Ð#rt   rƒ  r—   c                 óv  — d}|j                  t        «      rt        |«      ‚t        «       j                  }||v r||   }n|�|}|�ét        | j                  d«      rt        | j                  dd«      du rdnd}| j                  r¨|s¦||v r|nt        | j                  j                  |<   | j                  j                  | j                  j                  v rW| j                  j                  | j                  j                     }|j                  dk7  r|j                  j                  |«       |S t        |«      ‚)zæThe env_var() function. Return the environment variable named 'var'.
        If there is no such environment variable set, return the default.

        If the default is None, raise an exception for an undefined variable.
        NÚcompiledFTr§  )Ú
startswithr\   rS   r]   rŠ  rÓ   rÄ   rv   r'   rÅ   Úenv_varsÚfile_idÚfilesÚparse_file_typer±   rF   )rp   rƒ  r—   Úreturn_valuerŠ  Ú	compilingÚsource_files          rr   Úenv_varzProviderContext.env_var•  s   € ð ˆØ�>‰>Ô+Ô,Ü+¨CÓ0Ð0ä$Ó&×*Ñ*ˆà�#‰:Ø˜s™8‰LØÐ Ø"ˆLàÐ#ô
 ˜4Ÿ:™: zÔ2Ü˜DŸJ™J¨
°EÓ:¸dÑBñ ð ð	 ð �zŠz¡)ð %(¨3¡J‘LÔ4Kð —‘×&Ñ& sÑ+ð
 —:‘:×%Ñ%¨¯©×)<Ñ)<Ñ<Ø"&§-¡-×"5Ñ"5°d·j±j×6HÑ6HÑ"I�Kà"×2Ñ2°hÒ>à#×,Ñ,×3Ñ3°CÔ8ØÐä$ SÓ)Ð)rt   c                 ó"   — t         j                  S )zþThe `selected_resources` variable contains a list of the resources
        selected based on the parameters provided to the dbt command.
        Currently, is not populated for the command `run-operation` that
        doesn't support `--select`.
        )r   r¤  r�   s    rr   r   z"ProviderContext.selected_resourcesÄ  s   € ô "×4Ñ4Ð4rt   Úparsed_modelr‘  c                 ó,  — | j                   j                  dk(  r7| j                   j                  d   dk(  rd| j                   j                  d   v s)t        d|d   › d| j                   j                  › d	�«      ‚| j                  j                  ||«      S )
Nr  r¨   zmacro.dbt.statementÚmaterializationr   z>submit_python_job is not intended to be called here, at model Úaliasz, with macro call_stack r§   )Úcontext_macro_stackÚdepthÚ
call_stackra   rq   Úsubmit_python_job)rp   r³  r‘  s      rr   rº  z!ProviderContext.submit_python_jobÍ  sº   € ð ×$Ñ$×*Ñ*¨aÒ/Ø×(Ñ(×3Ñ3°AÑ6Ð:OÒOØ! T×%=Ñ%=×%HÑ%HÈÑ%KÑKä!ØPÐQ]Ð^eÑQfÐPgÐgð  AE÷  AYñ  AY÷  Adñ  Adð  @eð  efð  góð ð �|‰|×-Ñ-¨l¸MÓJÐJrt   rj   )r•   r5  )=r€   r�   r‚   r&   r4   r  r   r,   rs   r(  r*   r   rœ   r*  r,  rd   r.  r)   r2  r   r>  rD  rN  rZ  r^  r   rc  ru  r  rÂ  rÛ  r
  r$  r|  rR  r  r  r¦  r§  rß  rƒ  r…   r…  r‡  r   r   rÒ   rŠ  r�  r›  r	   r�  rŸ  r¡  r¤  r¦  r±  r   r   rº  r³  r´  s   @rr   r   r   I  s~  ø„ ðVð ðVð ð	Vð
 ðVð ! Ñ/ðVð 
õVò.
ñ Óð# 4¨¨S¨¡>ò #ó ð#ñ Óñ.ó ð.ñ Óð ˜d 3¨°Ñ(:Ð#:Ñ;ò  ó ð ñ ƒ_ð ð ¨°Ñ(:ò ó ðñ( ƒ_àOSñØðØ#&ðØ5=¸mÑ5Lðà	òó ðñ" ƒ_ð ˜‘Ø�c‰]Ø˜s‘mØ/3ñ	>àð	>ð ˜mÑ,ð	>ð 
ò	>ó ð	>ñ Óñ
ó ð
ñ( ƒ_ð˜Sð  Sò ó ðñ, ƒ_ð;˜Sð ; Sò ;ó ð;ñ ƒ_ðEØ$'ðEØ/7ðEà	òEó ðEñ ƒ_òó ðñ6 Óð&Z�Xò &Zó ð&ZñP Óð]˜ò ]ó ð]ñ Óð]˜ò ]ó ð]ñ Óð_˜(ò _ó ð_ñ �XÓð6E˜Fò 6Eó ð6Eñp Óð:%˜ò :%ó ð:%ñx Óð#+˜D  c ™Nò #+ó ð#+ñJ Óð0˜#ò 0ó ð0ñ Óð.˜ò .ó ð.ñ Óð
Ð'ò 
ó ð
ñ �YÓðÐ0ò ó  ðñ Óð
�T˜#˜s˜(‘^ò 
ó ð
ñ Óð#˜˜V™ò #ó ð#ñ Óð�T˜#˜s˜(‘^ò ó ðñ Óðh(�t˜C ˜H‘~ò h(ó ðh(ñT �WÓð˜4  S ™>ò ó ðñ( Óð˜8 D¨¨c°3¨h©Ñ$8Ñ9ò ó ðñ Óð˜H T¨$¨s°C¨x©.Ñ%9Ñ:ò ó ðñ Óð�X˜c‘]ò ó ðñ Óð,˜ò ,ó ð,ñ ƒ_ð	$ #ò 	$ó ð	$ñ ƒ_ñ,*˜3ð ,*¨°#©ð ,*À#ò ,*ó ð,*ñ\ Óð5 D¨¡Iò 5ó ð5ñ ƒ_ð
K¨dð 
KÀ3ð 
KÈ?ò 
Kó ô
Krt   r   c                   óB   ‡ — e Zd ZdZdededededee	   ddfˆ fd	„Z
ˆ xZS )
ÚMacroContexta7  Internally, macros can be executed like nodes, with some restrictions:

    - they don't have all values available that nodes do:
       - 'this', 'pre_hooks', 'post_hooks', and 'sql' are missing
       - 'schema' does not use any 'model' information
    - they can't be configured with config() directives
    rÄ   rk   rÅ   r!  r%  r•   Nc                 ób   •— t         ‰| �  ||||d «       |€|j                  | _        y || _        y rj   )r²  rs   rŸ   Ú_search_package)rp   rÄ   rk   rÅ   r!  r%  r|  s         €rr   rs   zMacroContext.__init__ä  s6   ø€ ô 	‰Ñ˜ ¨°(¸DÔAàÐ!à#)×#6Ñ#6ˆDÕ à#1ˆDÕ rt   )r€   r�   r‚   r¾   r[   r&   r4   r  r   rœ   rs   r³  r´  s   @rr   r¼  r¼  Û  sP   ø„ ñð2àð2ð ð2ð ð	2ð
 ð2ð ! ™ð2ð 
÷2ñ 2rt   r¼  c                   ó^   — e Zd ZU eed<    e«       dee   fd„«       Z e«       defd„«       Z	y)ÚSourceContextrÄ   r•   c                 óv   — | j                   j                  j                  | j                  | j                  «      S rj   ©rÃ   rn   r†  rk   rÄ   r�   s    rr   ÚthiszSourceContext.thisú  ó'   € à�‰×'Ñ'×3Ñ3°D·K±KÀÇÁÓLÐLrt   c                 ó   — | j                   S rj   rV  r�   s    rr   Úsource_nodezSourceContext.source_nodeþ  s   € à�z‰zÐrt   N)
r€   r�   r‚   rA   rÇ  r*   r   rh   rÃ  rÆ  rƒ   rt   rr   rÀ  rÀ  õ  sM   … ð ÓáÓðM�h˜}Ñ-ò Mó ðMñ ÓðÐ-ò ó ñrt   rÀ  c                   óP  — e Zd ZU eed<    e«       deeee	f      fd„«       Z
 e«       deeee	f      fd„«       Z e«       dee   fd„«       Z e«       dee   fd„«       Z e«       defd„«       Z e«       defd„«       Z e«       dee   fd	„«       Z e«       dee   fd
„«       Zy)ÚModelContextrÄ   r•   c                 ó  — | j                   j                  t        j                  t        j                  t        j
                  fv rg S | j                   j                  j                  D �cg c]  }|j                  d¬«      ‘Œ c}S c c}w ©NTr�  )	rÄ   rg  rX   ÚSourceÚTestÚUnitrk   r,  r”  ©rp   Úhs     rr   r�  zModelContext.pre_hooks  sf   € à�:‰:×#Ñ#¬¯©¼¿¹ÌÏÉÐ'VÑVØˆIð 04¯z©z×/@Ñ/@×/IÑ/Iö
Ø*+ˆA�I‰I ˆIÕ%ò
ð 	
ùò 
ó   Á*Bc                 ó  — | j                   j                  t        j                  t        j                  t        j
                  fv rg S | j                   j                  j                  D �cg c]  }|j                  d¬«      ‘Œ c}S c c}w rÊ  )	rÄ   rg  rX   rË  rÌ  rÍ  rk   r-  r”  rÎ  s     rr   rŸ  zModelContext.post_hooks  sf   € à�:‰:×#Ñ#¬¯©¼¿¹ÌÏÉÐ'VÑVØˆIð 04¯z©z×/@Ñ/@×/JÑ/Jö
Ø*+ˆA�I‰I ˆIÕ%ò
ð 	
ùò 
rÐ  c                 óF  — t        | j                  dd «      r]| j                  j                  j                  dk(  r:d| j                  j
                  j                  xs t        | j
                  «      › �S t        | j                  dd «      r| j                  j                  S y )Nrž  Úclonezselect * from Úextra_ctes_injected)	rv   rÄ   rk   r~   Úwhichrž  Úrelation_namerœ   r‘  r�   s    rr   r‘  zModelContext.compiled_code  s€   € ô �4—:‘:Ð/°Ô6¸4¿;¹;×;KÑ;K×;QÑ;QÐU\Ò;\à# D§J¡J×$=Ñ$=×$KÑ$KÒ$gÌsÐSW×SfÑSfÓOgÐ#hÐiÐiÜ�T—Z‘ZÐ!6¸Ô=à—:‘:×+Ñ+Ð+àrt   c                 ój   — | j                   j                  t        j                  k(  r| j                  S y rj   )rÄ   ÚlanguagerW   r¡  r‘  r�   s    rr   r¡  zModelContext.sql$  s+   € ð �:‰:×Ñ¤-×"3Ñ"3Ò3Ø×%Ñ%Ð%àrt   c                 ól   — t        | j                  d| j                  j                  j                  «      S )Nr¦  )rv   rÄ   rk   ré  r¦  r�   s    rr   r¦  zModelContext.database,  s%   € ä�t—z‘z :¨t¯{©{×/FÑ/F×/OÑ/OÓPÐPrt   c                 ól   — t        | j                  d| j                  j                  j                  «      S )Nr§  )rv   rÄ   rk   ré  r§  r�   s    rr   r§  zModelContext.schema0  s%   € ä�t—z‘z 8¨T¯[©[×-DÑ-D×-KÑ-KÓLÐLrt   c                 óÆ   — | j                   j                  t        j                  k(  ry| j                  j
                  j                  | j                  | j                   «      S )a  `this` makes available schema information about the currently
        executing model. It's is useful in any context in which you need to
        write code that references the current model, for example when defining
        a `sql_where` clause for an incremental model and for writing pre- and
        post-model hooks that operate on the model in some way. Developers have
        options for how to use `this`:

            |------------------|------------------|
            | dbt Model Syntax | Output           |
            |------------------|------------------|
            |     {{this}}     | "schema"."table" |
            |------------------|------------------|
            |  {{this.schema}} | schema           |
            |------------------|------------------|
            |  {{this.table}}  | table            |
            |------------------|------------------|
            |  {{this.name}}   | table            |
            |------------------|------------------|

        Here's an example of how to use `this` in `dbt_project.yml` to grant
        select rights on a table to a different db user.

        > example.yml:

            models:
              project-name:
                post-hook:
                  - "grant select on {{ this }} to db_reader"
        N)rÄ   rg  rX   Ú	OperationrÃ   rn   r†  rk   r�   s    rr   rÃ  zModelContext.this4  sD   € ð> �:‰:×#Ñ#¤x×'9Ñ'9Ò9ØØ�‰×'Ñ'×3Ñ3°D·K±KÀÇÁÓLÐLrt   c                 óº   — t        | j                  dd«      rD| j                  j                  j	                  | j
                  | j                  j                  «      S y)zÄ
        For commands which add information about this node's corresponding
        production version (via a --state artifact), access the Relation
        object for that stateful other
        rž  N)rv   rÄ   rÃ   rn   r†  rk   rž  r�   s    rr   rž  zModelContext.defer_relationW  sJ   € ô �4—:‘:Ð/°Ô6Ø—?‘?×+Ñ+×7Ñ7Ø—‘˜TŸZ™Z×6Ñ6óð ð rt   N)r€   r�   r‚   r;   rÇ  r*   r	   r   rœ   r   r�  rŸ  r   r‘  r¡  r¦  r§  rh   rÃ  rž  rƒ   rt   rr   rÈ  rÈ    s,  … ØÓáÓð
˜4  S¨# X¡Ñ/ò 
ó ð
ñ Óð
˜D  c¨3 h¡Ñ0ò 
ó ð
ñ Óð	˜x¨™}ò 	ó ð	ñ Óð�X˜c‘]ò ó ðñ ÓðQ˜#ò Qó ðQñ ÓðM˜ò Mó ðMñ Óð M�h˜}Ñ-ò  Mó ð MñD Óð ¨Ñ 7ò ó ñrt   rÈ  c                   óz   ‡ — e Zd ZU eed<    e«       ddedee   defˆ fd„«       Z e	«       dee   fd„«       Z
ˆ xZS )ÚUnitTestContextrÄ   rƒ  r—   r•   c                 óÚ   •— | j                   j                  rE|| j                   j                  j                  v r#| j                   j                  j                  |   S t        ‰| �  ||«      S )aT  The env_var() function. Return the overriden unit test environment variable named 'var'.

        If there is no unit test override, return the environment variable named 'var'.

        If there is no such environment variable set, return the default.

        If the default is None, raise an exception for an undefined variable.
        )rÄ   rþ  rª  r²  r±  )rp   rƒ  r—   r|  s      €rr   r±  zUnitTestContext.env_vari  sU   ø€ ð �:‰:×Ò C¨4¯:©:×+?Ñ+?×+HÑ+HÑ$HØ—:‘:×'Ñ'×0Ñ0°Ñ5Ð5ä‘7‘? 3¨Ó0Ð0rt   c                 ó8  — | j                   j                  r„| j                  j                  | j                   j                  «      }| j                   j	                  |j
                  d «       | j                  j                  j                  |j                  «      S y rj   )
rÄ   Úthis_input_node_unique_idrÅ   Úexpectr   r]  rq   rn   rÐ  r¨  )rp   Ú	this_nodes     rr   rÃ  zUnitTestContext.thisx  sk   € à�:‰:×/Ò/ØŸ™×,Ñ,¨T¯Z©Z×-QÑ-QÓRˆIØ�J‰J×Ñ˜y×2Ñ2°DÔ9Ø—<‘<×(Ñ(×=Ñ=¸i×>RÑ>RÓSÐSØrt   rj   )r€   r�   r‚   rB   rÇ  r)   rœ   r   r±  r*   rÃ  r³  r´  s   @rr   rß  rß  f  sX   ø… ØÓáƒ_ñ1˜3ð 1¨°#©ð 1À#ô 1ó ð1ñ Óð�h˜s‘mò ó ôrt   rß  c                   ó>   — e Zd ZU eed<    e«       dee   fd„«       Zy)ÚFunctionContextrÄ   r•   c                 óv   — | j                   j                  j                  | j                  | j                  «      S rj   rÂ  r�   s    rr   rÃ  zFunctionContext.this„  rÄ  rt   N)	r€   r�   r‚   r9   rÇ  r*   r   rh   rÃ  rƒ   rt   rr   ræ  ræ  �  s,   … ØÓáÓðM�h˜}Ñ-ò Mó ñMrt   ræ  rÄ   rk   rÅ   r%  r•   c                 óP   — t        | ||t        «       |«      }|j                  «       S rj   )rÈ  r  r”  )rÄ   rk   rÅ   r%  Úctxs        rr   Úgenerate_parser_model_contextrê  Š  s&   € ô �u˜f h´³ÀÓ
P€Cð �;‰;‹=Ðrt   Ú	unit_testc                 ó°   — t        || j                  t        j                  |j                  «      }t        | ||t        «       |«      }|j                  «       S rj   )r,   ÚfqnrX   rÍ  rŸ   rß  r  r”  )rë  rk   rÅ   r%  ré  s        rr   Ú!generate_parser_unit_test_contextrî  ™  sJ   € ô #ØØ�‰Ü�‰Ø×Ñó	€Nô ˜) V¨X´}³ÈÓ
W€Cà�;‰;‹=Ðrt   rº   c                 óP   — t        | ||t        «       d «      }|j                  «       S rj   )r¼  r  r”  )rº   rk   rÅ   ré  s       rr   Ú$generate_generate_name_macro_contextrð  ¨  s&   € ô
 �u˜f hÔ0DÓ0FÈÓ
M€CØ�;‰;‹=Ðrt   c                 óP   — t        | ||t        «       d «      }|j                  «       S rj   )rÈ  r  r”  )rÄ   rk   rÅ   ré  s       rr   Úgenerate_runtime_model_contextrò  ±  s%   € ô
 �u˜f h´Ó0AÀ4Ó
H€CØ�;‰;‹=Ðrt   r·   c                 óP   — t        | ||t        «       |«      }|j                  «       S rj   )r¼  r  r”  )rº   rk   rÅ   r·   ré  s        rr   Úgenerate_runtime_macro_contextrô  º  s&   € ô �u˜f hÔ0AÓ0CÀ\Ó
R€CØ�;‰;‹=Ðrt   c                 óò  — t        | ||t        «       d «      }|j                  «       }| j                  �rB| j                  j                  �r+i }i }| j                  j                  j                  «       D ]˜  \  }}|j                  d«      }	t        |	«      dk(  r|	d   nd }
|	d   }|
€+||v r'||   }t        |t        «      rt        ||«      }|||<   Œ^|
sŒa|
|v sŒf|||
   v sŒn||
   |   }t        |t        «      rt        ||«      }|||
|f<   Œš |j                  «       D ]  \  \  }
}}|||
   |<   |
dk(  sŒ||<   Œ |j                  «       D ]'  \  }}|||<   |d   j                  |«      sŒ ||d   |<   Œ) |S )Nr§   r  r   éÿÿÿÿÚdbt)rß  r  r”  rþ  ÚmacrosrÕ   r¯   r  r›   r   r!   r  )rë  rk   rÅ   ré  Úctx_dictÚglobal_macro_overridesÚpackage_macro_overridesr£   Úmacro_valueÚmacro_name_splitÚmacro_packageÚoriginal_context_valueÚmacro_override_values                rr   Ú"generate_runtime_unit_test_contextr  Ä  sÙ  € ô
 ˜) V¨XÔ7NÓ7PÐRVÓ
W€CØ�{‰{‹}€Hà×Ó˜y×2Ñ2×9Ó9Ø13ÐØ>@Ðð (1×':Ñ':×'AÑ'A×'GÑ'GÓ'Iò 	SÑ#ˆJ˜Ø)×/Ñ/°Ó4ÐÜ36Ð7GÓ3HÈAÒ3MÐ,¨QÒ/ÐSWˆMØ)¨"Ñ-ˆJð Ð$¨°xÑ)?Ø)1°*Ñ)=Ð&ÜÐ4´nÔEÜ"8Ð9OÐQ\Ó"]�KØ5@Ð& zÒ2ò Ø! XÒ-Ø (¨=Ñ"9Ò9à)1°-Ñ)@ÀÑ)LÐ&ÜÐ4´nÔEÜ"8Ð9OÐQ\Ó"]�KØGRÐ'¨¸
Ð(CÒDð+	Sð0 BY×A^ÑA^ÓA`ò 	3Ñ=Ñ'ˆ]˜JÐ)=Ø2FˆH�]Ñ# JÑ/à Ó%Ø'2�˜Ò$ð		3ð 1G×0LÑ0LÓ0Nò 	CÑ,ˆJÐ,Ø#7ˆH�ZÑ à˜‰×"Ñ" :Õ.Ø.B�˜‘ 
Ò+ð		Cð €Ort   r
  c                 óP   — t        | ||t        «       d «      }|j                  «       S rj   )ræ  r  r”  )r
  rk   rÅ   ré  s       rr   Ú!generate_runtime_function_contextr  ù  s&   € ô
 ˜( F¨HÔ6GÓ6IÈ4Ó
P€CØ�;‰;‹=Ðrt   c                   ó   — e Zd Zdefd„Zy)ÚExposureRefResolverr•   c                 ó0  — d }t        |«      dk(  r|d   }n+t        |«      dk(  r|\  }}nt        | j                  |¬«      ‚|j                  d«      xs |j                  d«      }| j                  j                  j                  t        |||¬«      «       y©	Nr¨   r   r  r  rø   r  rý   rÏ   )r  rQ   rÄ   r  r…  r±   r   ©rp   r~   r   r÷   r�   rø   s         rr   rï   zExposureRefResolver.__call__  s}   € ØˆÜˆt‹9˜Š>Ø˜‘7‰DÜ�‹Y˜!Š^Ø ‰MˆG‘Tä D§J¡J°TÔ:Ð:à—*‘*˜YÓ'Ò:¨6¯:©:°c«?ˆà�
‰
�‰×Ñœw¨w¸TÈ7ÔSÔTØrt   N©r€   r�   r‚   rœ   rï   rƒ   rt   rr   r  r    s   „ ð¨3ô rt   r  c                   ó   — e Zd Zdefd„Zy)ÚExposureSourceResolverr•   c                 óª   — t        |«      dk7  rt        || j                  ¬«      ‚| j                  j                  j	                  t        |«      «       y)Nr  r  rÏ   )r  rM   rÄ   r½  r±   Úlistrî   s     rr   rï   zExposureSourceResolver.__call__  s=   € Üˆt‹9˜Š>Ü'¨°4·:±:Ô>Ð>Ø�
‰
×Ñ×!Ñ!¤$ t£*Ô-Ørt   Nr	  rƒ   rt   rr   r  r    ó   „ ð ô rt   r  c                   ó   — e Zd Zdefd„Zy)ÚExposureMetricResolverr•   c                 ó¨   — t        |«      dvrt        | j                  |¬«      ‚| j                  j                  j	                  t        |«      «       y)N)r¨   r  r  rÏ   )r  rL   rÄ   rÖ  r±   r  rî   s     rr   rï   zExposureMetricResolver.__call__  s>   € Üˆt‹9˜FÑ"Ü! t§z¡z¸Ô=Ð=Ø�
‰
×Ñ×!Ñ!¤$ t£*Ô-Ørt   Nr	  rƒ   rt   rr   r  r    r  rt   r  Úexposurec                 ó|   — |j                  «       |   }t        d | ||«      t        d | ||«      t        d | ||«      dœS )N)r  rÂ  rÛ  )rå  r  r  r  )r  rk   rÅ   r·   rñ  s        rr   Úgenerate_parse_exposurer  "  sa   € ð ×&Ñ&Ó(¨Ñ6€Gä"ØØØØó	
ô )ØØØØó	
ô )ØØØØó	
ñð rt   c                   ó   — e Zd Zdefd„Zd„ Zy)ÚSemanticModelRefResolverr•   c                 óV  — d }t        |«      dk(  r|d   }n+t        |«      dk(  r|\  }}nt        | j                  |¬«      ‚|j                  d«      xs |j                  d«      }| j	                  |||«       | j                  j
                  j                  t        |||¬«      «       yr  )r  rQ   rÄ   r  r  r…  r±   r   r  s         rr   rï   z!SemanticModelRefResolver.__call__A  s‘   € ØˆÜˆt‹9˜Š>Ø˜‘7‰DÜ�‹Y˜!Š^Ø ‰MˆG‘Tä D§J¡J°TÔ:Ð:à—*‘*˜YÓ'Ò:¨6¯:©:°c«?ˆØ×Ñ˜4 ¨'Ô2ð 	�
‰
�‰×Ñœw¨w¸TÈ7ÔSÔTØrt   c                 ój   — t        |t        «      s#t        d| j                  j                  › d�«      ‚y )Nz*In a semantic model or metrics section in z, the name argument to ref() must be a string)r›   rœ   rO   rÄ   rk  rú   s       rr   r  z&SemanticModelRefResolver.validate_argsQ  s;   € Ü˜$¤Ô$ÜØ<¸T¿Z¹Z×=ZÑ=ZÐ<[ð \>ð >óð ð %rt   N)r€   r�   r‚   rœ   rï   r  rƒ   rt   rr   r  r  @  s   „ ð¨3ó ó rt   r  Úsemantic_modelc                 óH   — |j                  «       |   }dt        d | ||«      iS )Nr  )rå  r  )r  rk   rÅ   r·   rñ  s        rr   Úgenerate_parse_semantic_modelsr  Z  s8   € ð ×&Ñ&Ó(¨Ñ6€GàÔ'ØØØØó	
ðð rt   c                   óz   ‡ — e Zd Zdedededee   deddfˆ fd„Z	d	„ Z
d
„ Z e«       ddedee   defd„«       Zˆ xZS )ÚTestContextrk   rÅ   r!  r%  Úmacro_resolverr•   Nc                 óâ   •— || _         t        «       | _        t        ‰| �  |||||«       | j                  «        | j                  j                  | j                  | j                  «      | _
        y rj   )r  r    Ú
thread_ctxr²  rs   Ú_build_test_namespacer!  r  rq   r†   rÃ   )rp   rÄ   rk   rÅ   r!  r%  r  r|  s          €rr   rs   zTestContext.__init__o  sY   ø€ ð -ˆÔÜ$›,ˆŒÜ‰Ñ˜ ¨°(¸NÔKØ×"Ñ"Ô$ð Ÿ-™-×7Ñ7¸¿¹ÀdÇnÁnÓUˆ�rt   c                 ó   — i S rj   rƒ   r�   s    rr   Ú_build_namespacezTestContext._build_namespace‚  s   € Øˆ	rt   c                 óš  — g }| j                   j                  j                  d«      }|r|j                  |j                  «       | j
                  j                  rO| j
                  j                  j                  r/|j                  | j
                  j                  j                  «       |j                  «       }|D ]O  }| j                   j                  j                  |«      }|sŒ+|j                  |j                  j                  «       ŒQ t        | j                   | j                  | j
                  | j                  |«      }|| _        y )NÚget_where_subquery)r  Úmacros_by_namer  r±   r]  rÄ   r«  rø  ÚextendÚcopyr/   r]  r   r†   )rp   Údepends_on_macrosr%  Úlookup_macrosÚmacro_unique_idÚlookup_macror¤   s          rr   r!  z!TestContext._build_test_namespace‰  s  € ØÐð "×0Ñ0×?Ñ?×CÑCÐDXÓYÐÙØ×$Ñ$Ð%7×%AÑ%AÔBØ�:‰:× Ò  T§Z¡Z×%:Ñ%:×%AÒ%AØ×$Ñ$ T§Z¡Z×%:Ñ%:×%AÑ%AÔBØ)×.Ñ.Ó0ˆØ,ò 	IˆOØ×.Ñ.×5Ñ5×9Ñ9¸/ÓJˆLÚØ!×(Ñ(¨×)@Ñ)@×)GÑ)GÕHð	Iô
 -Ø×Ñ §¡¨D¯J©J¸¿¹ÐIZó
ˆð )ˆ�rt   rƒ  r—   c                 óP  — d }|j                  t        «      rt        |«      ‚t        «       j                  }||v r||   }n|�|}|�Ö| j
                  rÈ||v r|nt        | j                  j                  |<   | j
                  j                  t        j                  k(  r~| j
                  j                  rh| j                  j                  | j
                  j                     }| j
                  j                  j                  d«      \  }}|j!                  |||«       |S t#        |«      ‚)Nr§   )r©  r\   rS   r]   rŠ  rÄ   r'   rÅ   rª  rg  rX   rÌ  Úfile_key_namer¬  r«  r¯   Úadd_env_varrF   )rp   rƒ  r—   r®  rŠ  r°  Úyaml_keyr�   s           rr   r±  zTestContext.env_var�  sû   € àˆØ�>‰>Ô+Ô,Ü+¨CÓ0Ð0ä$Ó&×*Ñ*ˆØ�#‰:Ø˜s™8‰LØÐ Ø"ˆLàÐ#à�zŠzð %(¨3¡J‘LÔ4Kð —‘×&Ñ& sÑ+ð
 —:‘:×+Ñ+¬x¯}©}Ò<ÀÇÁ×AYÒAYØ"&§-¡-×"5Ñ"5°d·j±j×6HÑ6HÑ"I�Kà'+§z¡z×'?Ñ'?×'EÑ'EÀcÓ'JÑ$�X˜tà×+Ñ+¨C°¸4Ô@ØÐä$ SÓ)Ð)rt   rj   )r€   r�   r‚   r&   r4   r  r   r,   r.   rs   r#  r!  r)   rœ   r±  r³  r´  s   @rr   r  r  n  s‰   ø„ ðVð ðVð ð	Vð
 ðVð ! Ñ/ðVð &ðVð 
õVò&ò)ñ( ƒ_ñ*˜3ð *¨°#©ð *À#ò *ó ô*rt   r  r  c                 óR   — t        | ||t        «       ||«      }|j                  «       S rj   )r  r  r”  )rÄ   rk   rÅ   r%  r  ré  s         rr   Úgenerate_test_contextr2  À  s)   € ô �e˜V X¬}«ÀÐP^Ó
_€Cð �;‰;‹=Ðrt   )Årò   rh  r(  r   Útypingr   r   r   r   r   r	   r
   r   r   r   r   r   Útyping_extensionsr   r÷  r   Údbt.adapters.base.columnr   Údbt.adapters.base.relationr   r   Ú!dbt.adapters.contracts.connectionr   Údbt.adapters.exceptionsr   Údbt.adapters.factoryr   r   r   Údbt.artifacts.resourcesr   r   r   r   r   Údbt.clients.jinjar   r    r!   r"   Údbt.clients.jinja_staticr#   Ú
dbt.configr$   r%   r&   Údbt.constantsr'   Údbt.context.baser(   r)   r*   Údbt.context.configuredr+   Údbt.context.context_configr,   Údbt.context.exceptions_jinjar-   Údbt.context.macro_resolverr.   r/   Údbt.context.macrosr0   r1   Údbt.context.manifestr2   Údbt.contracts.graph.manifestr3   r4   Údbt.contracts.graph.metricsr5   r6   Údbt.contracts.graph.nodesr7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   Údbt.exceptionsrC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   Ú	dbt.flagsrU   Ú+dbt.materializations.incremental.microbatchrV   Údbt.node_typesrW   rX   Ú	dbt.utilsrY   rZ   Údbt_common.clients.jinjar[   Údbt_common.constantsr\   Údbt_common.contextr]   Údbt_common.events.functionsr_   Údbt_common.exceptionsr`   ra   rb   rc   Údbt_common.utilsrd   re   rf   ÚagateÚobjectr^  rh   r…   ÚABCMetarÁ   rö   r
  r  r  r$  r)  rT  ru  r€  rƒ  Ú
ResolveRefrˆ  r®  r¶  r»  rÀ  rÍ  rÔ  rÙ  rß  rô  rú  rü  r  r  r  r  r  r  r  r  r  r   r¼  rÀ  rÈ  rß  ræ  rœ   rê  rî  rð  rò  rô  r  r  r  r  r  r  r  r  r  r2  rƒ   rt   rr   ú<module>rX     sy  ðÛ 
Û 	Ý ÷÷ ÷ ó õ 'å "Ý +ß DÝ =Ý 6÷ñ ÷
õ ÷ó õ Hß <Ñ <Ý 1ß @Ñ @Ý ,Ý 4Ý 8ß Hß DÝ 0ß ;ß P÷÷ ÷ ó ÷÷ ÷ ÷ ÷ õ(  Ý Iß 2ß -Ý 2Ý 2Ý 5Ý 9÷ó ÷ :Ñ 9áÛñ ‹8€÷
;ñ 
;÷a$ñ a$ôHA˜SŸ[š[õ AôH)4�lô )4ôX.˜ô .ô0 +˜ô  +ôF +˜<ô  +ôFLˆXô Lô
:˜ô :ôzN2˜&ô N2ôdÐ.ô ô$Ð0ô ôB�ô Bð �8˜\Ð)Ñ*€
ôaA˜ô aAôH9Ð-ô 9ô&LÐ!3ô Lô BÐ,ô Bô
Ð.ô 
ô>"Ð$6ô "ôD.Ð,ô .ôEÐ.ô Eô*!˜ô !ôHÐ!ô ô	Ð#ô 	ôD�*ô Dô"^Ð0ô ^ô
Ð2ô 
ôL)ˆxô )ô%�Hô %ô%˜8ô %ô'�hô 'ô'˜hô 'ô˜ô ñ ˆCƒL€ôO
K�oô O
Kôd2�?ô 2ô4�Oô ô`�?ô `ôF�lô ô6M�lô MðØðàðð ðð "ð	ð
 
ˆ#ˆsˆ(�^óðØðØ%2ðØ>Fðà	ˆ#ˆsˆ(�^óðØðàðð ðð 
ˆ#ˆsˆ(�^ó	ðØðàðð ðð 
ˆ#ˆsˆ(�^ó	ðØðàðð ðð ˜3‘-ð	ð
 
ˆ#ˆsˆ(�^óð2Øð2àð2ð ð2ð 
ˆ#ˆsˆ(�^ó	2ðjØðàðð ðð 
ˆ#ˆsˆ(�^ó	ô˜,ô ô ˜\ô ô˜\ô ðØðàðð ðð ð	ð
 
ˆ#ˆsˆ(�^óô<˜|ô ð4Ø!ðàðð ðð ð	ð
 
ˆ#ˆsˆ(�^óô(O*�/ô O*ðd
Øð
àð
ð ð
ð "ð	
ð
 "ð
ð 
ˆ#ˆsˆ(�^ô
rt   