Ë
    èlÖi $  ã                   ó*  — d dl mZmZmZmZmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZmZmZ d d
lmZ 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* ddl(m+Z+ ddl,m-Z. ddl/m0Z1 ddl2m3Z4  G d„ de+«      Z5y)é    )ÚDictÚIterableÚListÚOptionalÚSetÚType)ÚBaseRelation)Ú
NodeStatus)Ú	RunResult)ÚFlags)ÚRuntimeConfig)ÚManifest)ÚDbtInternalError)ÚGraphÚ
GraphQueueÚResourceTypeSelector)ÚNodeType)ÚExposureRunner)ÚSavedQueryRunner)Ú
BaseRunnerÚresource_types_from_args)ÚMicrobatchModelRunneré   )ÚFunctionRunner)ÚModelRunner)ÚRunTask)Ú
SeedRunner)ÚSnapshotRunner)Ú
TestRunnerc                   óF  ‡— e Zd ZdZej
                  ej                  ej                  ej                  gZ	e
j                  ee
j                  ee
j                  ee
j"                  ee
j&                  ee
j(                  ee
j,                  ee
j0                  eiZ eej9                  «       D � �ch c]  }|’Œ c}} «      Zdedede ddfˆfd„Z!dde"de#e
   fd	„Z$d
e%e&   de'e(   fˆfd„Z)de*fd„Z+d„ Z,d„ Z-de.fd„Z/d„ Z0d„ Z1dde2fd„Z3de4e5e6      fˆfd„Z7dd„Z8ˆxZ9S c c}} w )Ú	BuildTaska=  The Build task processes all assets of a given process and attempts to
    'build' them in an opinionated fashion.  Every resource type outlined in
    RUNNER_MAP will be processed by the mapped runners class.

    I.E. a resource of type Model is handled by the ModelRunner which is
    imported as run_model_runner.ÚargsÚconfigÚmanifestÚreturnNc                 óT   •— t         ‰| �  |||«       t        «       | _        i | _        y ©N)ÚsuperÚ__init__ÚsetÚselected_unit_testsÚmodel_to_unit_test_map)Úselfr"   r#   r$   Ú	__class__s       €úS/var/www/html/strategist-ai/venv_dbt/lib/python3.12/site-packages/dbt/task/build.pyr)   zBuildTask.__init__4   s&   ø€ Ü‰Ñ˜˜v xÔ0Ü(+«ˆÔ Ø79ˆÕ#ó    Úno_unit_testsc                 óü   — t        | j                  t        | j                  «      t        | j                  «      «      }|du r1t        j
                  |v r|j                  t        j
                  «       t        |«      S )NT)r   r"   r*   ÚALL_RESOURCE_VALUESr   ÚUnitÚremoveÚlist©r-   r1   Úresource_typess      r/   r8   zBuildTask.resource_types9   s_   € Ü1Ø�I‰I”s˜4×3Ñ3Ó4´c¸$×:RÑ:RÓ6Só
ˆð ˜DÑ ¤X§]¡]°nÑ%DØ×!Ñ!¤(§-¡-Ô0Ü�NÓ#Ð#r0   Úselected_uidsc                 óp  •— t         ‰| �  ||«      }t        «       }| j                  r$| j                  j                  j                  «       ng D ]V  }|j                  |v sŒ|j                  j                  | j                  |«      }|j                  |j                  «       «       ŒX |j                  |«      S r'   )r(   Úget_model_schemasr*   r$   Ú	functionsÚvaluesÚ	unique_idÚRelationÚcreate_fromr#   ÚaddÚwithout_identifierÚunion)r-   Úadapterr9   Úmodel_schemasÚfunction_schemasÚfunctionÚrelationr.   s          €r/   r;   zBuildTask.get_model_schemasD   s£   ø€ ô ™Ñ1°'¸=ÓIˆô /2«eÐà04·²ˆD�M‰M×#Ñ#×*Ñ*Ô,À2ò	DˆHð ×!Ñ! ]Ò2Ø"×+Ñ+×7Ñ7¸¿¹ÀXÓN�Ø ×$Ñ$ X×%@Ñ%@Ó%BÕCð	Dð ×"Ñ"Ð#3Ó4Ð4r0   c                 ó  — | j                  «       }| j                  d¬«      }|j                  |d¬«      }| j                  d¬«      }|j                  |d¬«      }||z
  }|| _        | j	                  |«       |j                  |«      S )NF)r1   )ÚspecÚwarn_on_no_nodesT)Úget_selection_specÚget_node_selectorÚget_selectedr+   Úbuild_model_to_unit_test_mapÚget_graph_queue)r-   rJ   Úfull_selectorÚfull_selected_nodesÚselector_wo_unit_testsÚselected_nodes_wo_unit_testsr+   s          r/   rP   zBuildTask.get_graph_queueU   s¦   € à×&Ñ&Ó(ˆð ×.Ñ.¸UÐ.ÓCˆà+×8Ñ8¸dÐUZÐ8Ó[Ðð "&×!7Ñ!7ÀdÐ!7Ó!KÐà'=×'JÑ'JØ¨ð (Kó (
Ð$ð 2Ð4PÑPÐØ#6ˆÔ Ø×)Ñ)Ð*=Ô>ð &×5Ñ5°dÓ;Ð;r0   c                 ót  — | j                   dk(  r'| j                  t        | j                  «      z   | _        | j                  j                  «       }|j                  t        j                  k(  r8| j                  r,|j                  | j                  v r| j                  |||«       y | j                  |||«       y ©Nr   )Ú	run_countÚ	num_nodesÚlenr+   Ú	job_queueÚgetÚresource_typer   ÚModelr,   r>   Ú!handle_model_with_unit_tests_nodeÚhandle_job_queue_node)r-   ÚpoolÚcallbackÚnodes       r/   Úhandle_job_queuezBuildTask.handle_job_queuep   sŽ   € Ø�>‰>˜QÒØ!Ÿ^™^¬c°$×2JÑ2JÓ.KÑKˆDŒNØ�~‰~×!Ñ!Ó#ˆà×Ñ¤(§.¡.Ò0Ø×+Ò+Ø—‘ $×"=Ñ"=Ñ=à×2Ñ2°4¸¸xÕHð ×&Ñ& t¨T°8Õ<r0   c                 óÔ   — | j                  «        ||g}| j                  j                  j                  r | | j                  |Ž «       y |j                  | j                  ||¬«       y )N)r"   ra   )Ú_raise_set_errorr#   r"   Úsingle_threadedÚ call_model_and_unit_tests_runnerÚapply_async)r-   rb   r`   ra   r"   s        r/   r^   z+BuildTask.handle_model_with_unit_tests_node~   s\   € Ø×ÑÔØ�dˆ|ˆØ�;‰;×Ñ×+Ò+ÙÐ:�T×:Ñ:¸DÐAÕBà×Ñ˜T×BÑBÈÐX`ÐÕar0   c                 ó  — | j                   sJ ‚| j                  |j                     D ]ª  }| j                   j                  |   }| j	                  |«      }|j                  | j
                  v r|j                  d ¬«       | j                  |«      }| j                  |«       |j                  | j                  v sŒ’d | j
                  |j                  <   Œ¬ | j	                  |«      }|j                  j                  | j
                  v rA| j
                  j                  |j                  j                  «      }|j                  |¬«       t        |t        «      r"|j                  | «       |j!                  |«       | j                  |«      S ©N)Úcause)r$   r,   r>   Ú
unit_testsÚ
get_runnerÚ_skipped_childrenÚdo_skipÚcall_runnerÚ_handle_resultÚstatusÚMARK_DEPENDENT_ERRORS_STATUSESrb   ÚpopÚ
isinstancer   Úset_parent_taskÚset_pool)	r-   rb   r`   Úunit_test_unique_idÚunit_test_nodeÚunit_test_runnerÚresultÚrunnerrk   s	            r/   rg   z*BuildTask.call_model_and_unit_tests_runner†   sG  € Ø�}Š}Ðˆ}Ø#'×#>Ñ#>¸t¿~¹~Ñ#Nò 	>ÐØ!Ÿ]™]×5Ñ5Ð6IÑJˆNØ#Ÿ™¨~Ó>Ðà�~‰~ ×!7Ñ!7Ñ7à ×(Ñ(¨tÐ(Ô4Ø×%Ñ%Ð&6Ó7ˆFØ×Ñ Ô'Ø�}‰} × CÑ CÒCð :>�×&Ñ& t§~¡~Ò6ð	>ð —‘ Ó&ˆØ�;‰;× Ñ  D×$:Ñ$:Ñ:Ø×*Ñ*×.Ñ.¨v¯{©{×/DÑ/DÓEˆEØ�N‰N ˆNÔ'ä�fÔ3Ô4Ø×"Ñ" 4Ô(Ø�O‰O˜DÔ!à×Ñ Ó'Ð'r0   c                 óœ  — | j                  «        | j                  |«      }|j                  j                  | j                  v rA| j                  j                  |j                  j                  «      }|j                  |¬«       t        |t        «      r"|j                  | «       |j                  |«       |g}| j                  |||«       y rj   )re   rm   rb   r>   rn   rt   ro   ru   r   rv   rw   Ú_submit)r-   rb   r`   ra   r|   rk   r"   s          r/   r_   zBuildTask.handle_job_queue_node¡   s    € Ø×ÑÔØ—‘ Ó&ˆð �;‰;× Ñ  D×$:Ñ$:Ñ:Ø×*Ñ*×.Ñ.¨v¯{©{×/DÑ/DÓEˆEØ�N‰N ˆNÔ'ä�fÔ3Ô4Ø×"Ñ" 4Ô(Ø�O‰O˜DÔ!àˆxˆØ�‰�T˜4 Õ*r0   c                 óÖ   — i }|D ][  }| j                   j                  |   }|j                  j                  d   }||vrg ||<   ||   j	                  |j
                  «       Œ] || _        y rV   )r$   rl   Ú
depends_onÚnodesÚappendr>   r,   )r-   r+   Údctrx   Ú	unit_testÚmodel_unique_ids         r/   rO   z&BuildTask.build_model_to_unit_test_map³   sw   € ØˆØ#6ò 	=ÐØŸ™×0Ñ0Ð1DÑEˆIØ'×2Ñ2×8Ñ8¸Ñ;ˆOØ cÑ)Ø')��OÑ$Ø�Ñ ×'Ñ'¨	×(;Ñ(;Õ<ð	=ð '*ˆÕ#r0   c                 óÄ   — | j                   �| j                  €t        d«      ‚| j                  |«      }t	        | j                  | j                   | j
                  |¬«      S )Nz4manifest and graph must be set to get node selection)Úgraphr$   Úprevious_stater8   )r$   r‡   r   r8   r   rˆ   r7   s      r/   rM   zBuildTask.get_node_selector¾   sX   € Ø�=‰=Ð  D§J¡JÐ$6Ü"Ð#YÓZÐZà×,Ñ,¨]Ó;ˆä#Ø—*‘*Ø—]‘]Ø×.Ñ.Ø)ô	
ð 	
r0   c                 óÀ   •— |j                   t        j                  k(  rt        ‰| �  |«      t
        k(  rt
        S | j                  j                  |j                   «      S r'   )r\   r   r]   r(   Úget_runner_typer   Ú
RUNNER_MAPr[   )r-   rb   r.   s     €r/   rŠ   zBuildTask.get_runner_typeË   sI   ø€ à×Ñ¤(§.¡.Ò0Ü‘Ñ'¨Ó-Ô1FÒFä(Ð(à�‰×"Ñ" 4×#5Ñ#5Ó6Ð6r0   c                 óŠ   — | j                   €t        d«      ‚| j                  j                  | j                   d¬«      | _        y )Nz2compile_manifest called before manifest was loadedT)Úadd_test_edges)r$   r   ÚcompilerÚcompiler‡   )r-   s    r/   Úcompile_manifestzBuildTask.compile_manifestÕ   s8   € Ø�=‰=Ð Ü"Ð#WÓXÐXØ ŸM™M×1Ñ1°$·-±-ÐPTÐ1ÓUˆ�
r0   )F)r%   N):Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   ÚErrorÚFailÚSkippedÚPartialSuccessrs   r   r]   Úrun_model_runnerÚSnapshotÚsnapshot_model_runnerÚSeedÚseed_runnerÚTestÚtest_runnerr4   Ú
SavedQueryÚsaved_query_runnerÚExposureÚexposure_runnerÚFunctionÚfunction_runnerr‹   Ú	frozensetÚkeysr3   r   r   r   r)   Úboolr   r8   r   Ústrr   r	   r;   r   rP   rc   r^   r   rg   r_   rO   r   rM   r   r   r   rŠ   r�   Ú__classcell__)Ú.0Úxr.   s   00@r/   r!   r!      sa  ø„ ñ%ð 	×ÑØ�‰Ø×ÑØ×!Ñ!ð	&Ð"ð 	�‰Ð(Ø×ÑÐ0Ø�‰�{Ø�‰�{Ø�‰�{Ø×ÑÐ/Ø×Ñ˜?Ø×Ñ˜?ð	€Jñ $°
·±Ó0A×$B¨1¢QÓ$BÓCÐð:˜Uð :¨Mð :ÀXð :ÐRVõ :ñ
	$¨Dð 	$¸TÀ(¹^ó 	$ð5¸À¹ð 5È#ÈlÑJ[õ 5ð"< ó <ò6=òbð(¸ió (ò6+ò$*ñ
Ð8Ló 
ð7 x°°ZÑ0@Ñ'Aõ 7÷VùóG %Cs   Â-	D
r!   N)6Útypingr   r   r   r   r   r   Údbt.adapters.baser	   Údbt.artifacts.schemas.resultsr
   Údbt.artifacts.schemas.runr   Údbt.cli.flagsr   Údbt.config.runtimer   Údbt.contracts.graph.manifestr   Údbt.exceptionsr   Ú	dbt.graphr   r   r   Údbt.node_typesr   Údbt.runnersr   r£   r   r¡   Údbt.task.baser   r   Údbt.task.runr   rG   r   r¥   Úrunr   r™   r   Úseedr   r�   Úsnapshotr   r›   Útestr   rŸ   r!   © r0   r/   ú<module>r¿      sW   ðß <× <å *Ý 4Ý /Ý Ý ,Ý 1Ý +ß =Ñ =Ý #Ý 9Ý >ß >Ý .å 7Ý 0Ý Ý +Ý =Ý +ôV�õ Vr0   