Ë
    èlÖi  ã                   ó  — d dl Z d dlmZmZmZmZmZmZmZm	Z	 d dl
mZmZ d dlmZ d dlmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZ d dlm Z  d dl!m"Z"m#Z# d dl$m%Z% d dl&m'Z'm(Z(  G d„ de«      Z) G d„ de#«      Z*y)é    N)ÚAbstractSetÚAnyÚ
CollectionÚIterableÚListÚOptionalÚSetÚType)ÚBaseAdapterÚBaseRelation)ÚNodeType)Ú	RunResultÚ	RunStatus)ÚMacroGenerator)Úgenerate_runtime_model_context)ÚManifest)ÚResourceTypeSelector)ÚREFABLE_NODE_TYPES)Ú
BaseRunnerÚresource_types_from_args)Ú(_validate_materialization_relations_dict)ÚGraphRunnableModeÚGraphRunnableTask)ÚdbtClassMixin)ÚCompilationErrorÚDbtInternalErrorc                   óJ   — e Zd Zdd„Zdd„Zd„ Zdefd„Zdede	e
   fd	„Zd
„ Zy)ÚCloneRunnerÚreturnNc                  ó   — y ©N© ©Úselfs    úS/var/www/html/strategist-ai/venv_dbt/lib/python3.12/site-packages/dbt/task/clone.pyÚbefore_executezCloneRunner.before_execute   ó   € Øó    c                  ó   — y r!   r"   )r$   Úresults     r%   Úafter_executezCloneRunner.after_execute   r'   r(   c                 ó`  —  |d   d«      }|r&t         j                  }t        |j                  «      }nt         j                  }d}i }|r6t	        |j                  t
        «      r|j                  j                  d¬«      }t        ||g t        j                  «       j                  d||d d ¬«	      S )NÚload_resultÚmainzNo-opT)Ú	omit_noner   )	ÚnodeÚstatusÚtimingÚ	thread_idÚexecution_timeÚmessageÚadapter_responseÚfailuresÚbatch_results)r   ÚSuccessÚstrÚresponseÚ
isinstancer   Úto_dictr   Ú	threadingÚcurrent_threadÚname)r$   ÚmodelÚcontextr*   r1   r5   r6   s          r%   Ú_build_run_model_resultz#CloneRunner._build_run_model_result   s¤   € Ø'�˜Ñ'¨Ó/ˆÙÜ×&Ñ&ˆFÜ˜&Ÿ/™/Ó*‰Gä×&Ñ&ˆFØˆGØÐÙ”j §¡´-Ô@Ø%Ÿ™×6Ñ6ÀÐ6ÓFÐÜØØØÜ×.Ñ.Ó0×5Ñ5ØØØ-ØØô

ð 
	
r(   Úmanifestc                 ó   — | j                   S r!   ©r0   )r$   rD   s     r%   ÚcompilezCloneRunner.compile1   s   € à�y‰yÐr(   r*   c                 ó  — t        |t        «      r5dj                  t        |j                  «       «      «      }t	        ||¬«      ‚t        |t
        «      rt        ||«      S dj                  t        |«      «      }t	        ||¬«      ‚)Nz]The materialization ("{}") did not explicitly return a list of relations to add to the cache.rF   zXInvalid return value from materialization, expected a dict with key "relations", got: {})r<   r:   ÚformatÚget_materializationr   Údictr   )r$   r*   rA   Úmsgs       r%   Ú_materialization_relationsz&CloneRunner._materialization_relations5   s{   € Ü�fœcÔ"ð9ß9?¹ÄÀE×D]ÑD]ÓD_Ó@`Ó9að ô # 3¨UÔ3Ð3ä�fœdÔ#Ü;¸FÀEÓJÐJð,ß,2©F´3°v³;Ó,?ð 	ô ˜s¨Ô/Ð/r(   c                 óp  — t        || j                  |«      }|j                  | j                  j                  d| j                  j                  «       «      }d|vrt        dj                  |«      «      ‚|d   }| j                  j                  |«      }	  t        ||«      «       }| j                  j                  ||«       | j                  ||«      D ]-  }| j                  j                  |j                  d¬«      «       Œ/ | j                  ||«      S # | j                  j                  ||«       w xY w)NÚcloneÚconfigz=Invalid materialization context generated, missing config: {}T)Údbt_created)r   rP   Ú"find_materialization_macro_by_nameÚproject_nameÚadapterÚtyper   rI   Úpre_model_hookr   Úpost_model_hookrM   Úcache_addedÚincorporaterC   )	r$   rA   rD   rB   Úmaterialization_macroÚcontext_configÚhook_ctxr*   Úrelations	            r%   ÚexecutezCloneRunner.executeF   s   € Ü0°¸¿¹ÀXÓNˆØ (× KÑ KØ�K‰K×$Ñ$ g¨t¯|©|×/@Ñ/@Ó/Bó!
Ðð ˜7Ñ"Ü"ØO×VÑVÐW^Ó_óð ð ! Ñ*ˆà—<‘<×.Ñ.¨~Ó>ˆð	CØC”^Ð$9¸7ÓCÓEˆFà�L‰L×(Ñ(¨¸ÔBà×7Ñ7¸ÀÓFò 	MˆHØ�L‰L×$Ñ$ X×%9Ñ%9ÀdÐ%9Ó%KÕLð	Mð ×+Ñ+¨E°7Ó;Ð;øð �L‰L×(Ñ(¨¸ÕBús   ÂD ÄD5)r   N)Ú__name__Ú
__module__Ú__qualname__r&   r+   rC   r   rG   r   r   r   rM   r^   r"   r(   r%   r   r      s:   „ óóò
ð. ó ð0°ð 0ÀÀ\Ñ@Ró 0ó"<r(   r   c                   ó¸   ‡ — e Zd Zdefd„Zdefd„Zdee   fd„Z	de
e   dee   fd„Zdedee   defˆ fd„Zedee   fd	„«       Zdefd
„Zdeee      fd„Zˆ xZS )Ú	CloneTaskr   c                  ó   — y)NFr"   r#   s    r%   Úraise_on_first_errorzCloneTask.raise_on_first_error`   s   € Ør(   c                 ó"   — t         j                  S r!   )r   ÚIndependentr#   s    r%   Úget_run_modezCloneTask.get_run_modec   s   € Ü ×,Ñ,Ð,r(   c                 ó"   — | j                  «       S r!   )Ú_get_previous_stater#   s    r%   Ú_get_deferred_manifestz CloneTask._get_deferred_manifestf   s   € ð ×'Ñ'Ó)Ð)r(   Úselected_uidsc                 ó.  — | j                   €t        d«      ‚t        «       }| j                   j                  j	                  «       D ]Ì  }|j
                  |vrŒ|j                  sŒ|j                  rŒ,|j                  j                  | j                  |«      }|j                  |j                  «       «       |j                  sŒ~|j                  j                  | j                  |j                  «      }|j                  |j                  «       «       ŒÎ |S )Nz&manifest was None in get_model_schemas)rD   r   ÚsetÚnodesÚvaluesÚ	unique_idÚis_relationalÚis_ephemeralÚRelationÚcreate_fromrP   ÚaddÚwithout_identifierÚdefer_relation)r$   rT   rl   r*   r0   r]   Úother_relations          r%   Úget_model_schemaszCloneTask.get_model_schemask   sâ   € Ø�=‰=Ð Ü"Ð#KÓLÐLÜ$'£Eˆà—M‘M×'Ñ'×.Ñ.Ó0ò 	DˆDØ�~‰~ ]Ñ2ØØ×!Ó!¨$×*;Ó*;Ø"×+Ñ+×7Ñ7¸¿¹ÀTÓJ�Ø—
‘
˜8×6Ñ6Ó8Ô9ð ×&Ó&Ø%,×%5Ñ%5×%AÑ%AØŸ™ T×%8Ñ%8ó&�Nð —J‘J˜~×@Ñ@ÓBÕCð	Dð ˆr(   rT   c                 ó  •— |j                  d«      5  | j                  «        t        ‰| �  ||«      }| j	                  ||«       | j                  ||«      }| j                  ||«       t        j                  cd d d «       S # 1 sw Y   y xY w)NÚmaster)Úconnection_namedÚdefer_to_manifestÚsuperrz   Úcreate_schemasÚpopulate_adapter_cacher   r9   )r$   rT   rl   Úschemas_to_createÚschemas_to_cacheÚ	__class__s        €r%   Ú
before_runzCloneTask.before_run€   s‚   ø€ Ø×%Ñ% hÓ/ñ 	%Ø×"Ñ"Ô$ä %¡Ñ 9¸'À=Ó QÐØ×Ñ Ð):Ô;Ø#×5Ñ5°g¸}ÓMÐØ×'Ñ'¨Ð1AÔBÜ×$Ñ$÷	%÷ 	%ò 	%ús   “A&BÂBc                 ó´   — t        | j                  t        t        «      t        t        «      «      }|D �cg c]  }|t        v sŒ|‘Œ }}t	        |«      S c c}w r!   )r   Úargsrn   r   Úlist)r$   Úresource_typesÚrts      r%   r‰   zCloneTask.resource_typesŠ   sQ   € ä/GØ�I‰I”sÔ-Ó.´Ô4FÓ0Gó0
ˆð
 (6ÖR ¸Ô?QÒ9Qš"ÐRˆÐRÜ�NÓ#Ð#ùò Ss   ¶AÁAc                 óº   — | j                   }| j                  �| j                  €t        d«      ‚t	        | j                  | j                  | j
                  |¬«      S )Nz<manifest and graph must be set to get perform node selection)ÚgraphrD   Úprevious_stater‰   )r‰   rD   rŒ   r   r   r�   )r$   r‰   s     r%   Úget_node_selectorzCloneTask.get_node_selector”   sS   € Ø×,Ñ,ˆà�=‰=Ð  D§J¡JÐ$6Ü"Ð#aÓbÐbÜ#Ø—*‘*Ø—]‘]Ø×.Ñ.Ø)ô	
ð 	
r(   c                 ó   — t         S r!   )r   )r$   Ú_s     r%   Úget_runner_typezCloneTask.get_runner_type    s   € ÜÐr(   )r_   r`   ra   Úboolre   r   rh   r   r   rk   r   r:   r	   r   rz   r   r   r   r…   Úpropertyr   r   r‰   r   rŽ   r
   r   r‘   Ú__classcell__)r„   s   @r%   rc   rc   _   s«   ø„ ð dó ð-Ð/ó -ð*¨°Ñ(:ó *ð
¸À¹ð È#ÈlÑJ[ó ð*% +ð %¸kÈ#Ñ>Nð %ÐS\õ %ð ð$  X¡ò $ó ð$ð

Ð#7ó 

ð H¨T°*Ñ-=Ñ$>÷ r(   rc   )+r>   Útypingr   r   r   r   r   r   r	   r
   Údbt.adapters.baser   r   Údbt.artifacts.resources.typesr   Údbt.artifacts.schemas.runr   r   Údbt.clients.jinjar   Údbt.context.providersr   Údbt.contracts.graph.manifestr   Ú	dbt.graphr   Údbt.node_typesr   Údbt.task.baser   r   Údbt.task.runr   Údbt.task.runnabler   r   Údbt_common.dataclass_schemar   Údbt_common.exceptionsr   r   r   rc   r"   r(   r%   ú<module>r£      sV   ðÛ ß T× TÓ Tç 7Ý 2ß :Ý ,Ý @Ý 1Ý *Ý -ß >Ý Aß BÝ 5ß DôI<�*ô I<ôXBÐ!õ Br(   