Ë
    ›¾jœ  ã                   óÀ  — d dl Z d dlZd dlmZ d dlmZmZmZmZ d dl	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 ddlmZ ddlmZmZ ej@                  fdee!   dee!   dee!ef   fd„Z"d#dee!   de#dee!ef   fd„Z$dedefd„Z%d e«       fdede#dee!ef   dee!ef   fd„Z& e«       ddfdee!ef   dee!ef   d e!d!e!dee!ef   f
d"„Z'y)$é    N)ÚPath)ÚAnyÚDictÚListÚOptional)ÚNoSuchOption)Úsplit_arg_string)ÚConfig)Úmsgé   )ÚPROJECT_FILE)ÚProjectConfigSchemaÚvalidateé   )ÚENV_VARS)ÚSimpleFrozenDict)Úlogger)Úshow_validation_errorÚvalidate_project_commandsÚargsÚenv_varÚreturnc                 ó<  — |r t         j                  j                  |d«      nd}t        t	        |«      «      }t        | d¬«      }|r*|D �cg c]	  }||vsŒ|‘Œ }}t        j                  d|«       |rt        j                  dt        |«      «       i |¥|¥S c c}w )a®  Generate a dictionary of config overrides based on the extra arguments
    provided on the CLI, e.g. --training.batch_size to override
    "training.batch_size". Arguments without a "." are considered invalid,
    since the config only allows top-level sections to exist.

    env_vars (Optional[str]): Optional environment variable to read from.
    RETURNS (Dict[str, Any]): The parsed dict, keyed by nested config setting.
    Ú T)Úis_clizConfig overrides from CLI: %sz'Config overrides from env variables: %s)ÚosÚenvironÚgetÚ_parse_overridesr	   r   ÚdebugÚlist)r   r   Ú
env_stringÚenv_overridesÚcli_overridesÚkÚkeyss          ú\/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/weasel/util/config.pyÚparse_config_overridesr(      s‘   € ñ 18”—‘—‘ ¨Ô,¸R€JÜ$Ô%5°jÓ%AÓB€MÜ$ T°$Ô7€MÙØ(ÖC�a¨A°]Ò,B’ÐCˆÐCÜ�‰Ð4°dÔ;ÙÜ�‰Ð>ÄÀ]Ó@SÔTØ-ˆmÐ-˜}Ð-Ð-ùò	 Ds   Á	BÁBr   c                 óà  — i }| ré| j                  d«      }d|› d�}|j                  d«      r¤|}|j                  dd«      }d|vr'|rt        |«      ‚t	        j
                  |› d�d¬	«       d
|v r(|j                  d
d«      \  }}|j                  dd«      }n*| r| d   j                  d«      rd}n| j                  d«      }t        |«      ||<   nt	        j
                  |› d�d¬	«       | rŒé|S )Nr   zInvalid config override 'ú'z--r   ú.z#: can't override top-level sectionsr   ©Úexitsú=ú-Ú_Útruez: name should start with --)ÚpopÚ
startswithÚreplacer   r   ÚfailÚsplitÚ_parse_override)r   r   ÚresultÚoptÚerrÚorig_optÚvalues          r'   r   r   *   só   € Ø€FÙ
Ø�h‰h�q‹kˆØ)¨#¨¨aÐ0ˆØ�>‰>˜$ÔØˆHØ—+‘+˜d BÓ'ˆCØ˜#‰~ÙÜ& xÓ0Ð0ä—H‘H ˜uÐ$GÐHÐPQÕRØ�c‰zØ ŸY™Y s¨AÓ.‘
��UØ—k‘k # sÓ+‘á˜t A™w×1Ñ1°$Ô7Ø"‘Eà ŸH™H Q›K�EÜ)¨%Ó0ˆF�3ŠKä�H‰H˜�uÐ7Ð8ÀÕBò+ ð, €Mó    r<   c                 ób   — 	 t        j                  | «      S # t        $ r t        | «      cY S w xY w)N)ÚsrslyÚ
json_loadsÚ
ValueErrorÚstr)r<   s    r'   r7   r7   E   s1   € ðÜ×Ñ Ó&Ð&øÜò Ü�5‹zÒðús   ‚ —.­.TÚpathÚinterpolateÚ	overridesc                 óÄ  — | t         z  }|j                  «       st        j                  dt         › �|d¬«       dt         › d�}	 t	        j
                  |«      }t        t        «      }|rDt        j                  |«       t        dj                  |«      «       t        j                  d«       t        |«       |r+t         › d�}t        |d	¬
«      5  t        ||«      }ddd«       |j!                  dg «      D ]*  }	| |	z  }
|
j                  «       rŒ|
j#                  d¬«       Œ, |S # t        $ r"}t        j                  ||d¬«       Y d}~Œõd}~ww xY w# 1 sw Y   ŒxxY w)al  Load the project.yml file from a directory and validate it. Also make
    sure that all directories defined in the config exist.

    path (Path): The path to the project directory.
    interpolate (bool): Whether to substitute project variables.
    overrides (Dict[str, Any]): Optional config overrides.
    RETURNS (Dict[str, Any]): The loaded project.yml.
    zCan't find r   r,   zInvalid z(. Double-check that the YAML is correct.Nú
z validation errorF)ÚtitleÚ	hint_fillÚdirectoriesT)Úparents)r   Úexistsr   r5   r?   Ú	read_yamlrA   r   r   ÚprintÚjoinÚsysÚexitr   r   Úsubstitute_project_variablesr   Úmkdir)rC   rD   rE   Úconfig_pathÚinvalid_errÚconfigÚeÚerrorsr:   ÚsubdirÚdir_paths              r'   Úload_project_configr[   Q   s=  € ð œÑ%€KØ×ÑÔÜ�‰�;œ|˜nÐ-¨{À!ÕDØœ\˜NÐ*RÐS€Kð*Ü—‘ Ó-ˆô Ô)¨6Ó2€FÙÜ�‰�ÔÜˆd�i‰i˜ÓÔ Ü�‰�ŒÜ˜fÔ%ÙÜ�Ð/Ð0ˆÜ"¨¸Ô>ñ 	EÜ1°&¸)ÓDˆF÷	Eð —*‘*˜]¨BÓ/ò )ˆØ˜&‘=ˆØ�‰Õ Ø�N‰N 4ˆNÕ(ð)ð €Møô# ò *Ü�‰�˜a q×)Ò)ûð*ú÷	Eð 	Eús$   ÁD( ÃEÄ(	EÄ1EÅEÅEÚvarsÚenvrV   ÚkeyÚenv_keyc           	      óš  — | j                  |i «       | j                  |i «       | |   j                  «       D ]4  \  }}t        t        j                  j                  |d«      «      | |   |<   Œ6 t        d| || |   || |   i«      }t        «       j                  |j                  «       |¬«      }|j                  «       }t        |d   «      S )a€  Interpolate variables in the project file using the config system.

    config (Dict[str, Any]): The project config.
    overrides (Dict[str, Any]): Optional config overrides.
    key (str): Key containing variables in project config.
    env_key (str): Key containing environment variable mapping in project config.
    RETURNS (Dict[str, Any]): The interpolated project config.
    r   Úproject)rE   )Ú
setdefaultÚitemsr7   r   r   r   r
   Úfrom_strÚto_strrD   Údict)rV   rE   r^   r_   Ú
config_varr   ÚcfgÚinterpolateds           r'   rR   rR   v   sÃ   € ð ×Ñ�c˜2ÔØ
×Ñ�g˜rÔ"à% g™×4Ñ4Ó6ò SÑˆ
�GÜ&5´b·j±j·n±nÀWÈbÓ6QÓ&Rˆˆw‰˜
Ò#ðSô
 �)˜V S¨&°©+°wÀÀwÁÐPÓ
Q€CÜ
‹(×
Ñ
˜CŸJ™J›L°IÐ
Ó
>€CØ—?‘?Ó$€LÜ�˜YÑ'Ó(Ð(r=   )F)(r   rP   Úpathlibr   Útypingr   r   r   r   r?   Úclickr   Úclick.shell_completionr	   Ú
confectionr
   Úwasabir   Úcli.mainr   Úschemasr   r   Úenvironmentr   Úfrozenr   Úloggingr   Ú
validationr   r   ÚCONFIG_OVERRIDESrB   r(   Úboolr   r7   r[   rR   © r=   r'   ú<module>ry      s@  ðÛ 	Û 
Ý ß ,Ó ,ã Ý Ý 3Ý Ý å #ß 3Ý !Ý $Ý ß Hð /7×.GÑ.Gñ.Ø
ˆs‰)ð.Ø& s™mð.à	ˆ#ˆsˆ(�^ó.ñ,˜4 ™9ð ¨dð ¸tÀCÈÀH¹~ó ð6	˜3ð 	 3ó 	ð %)ÑFVÓFXñ"Ø
ð"Ø!ð"Ø59¸#¸s¸(±^ð"à	ˆ#ˆsˆ(�^ó"ñN !1Ó 2ØØñ	)Ø��c�‰Nð)à�C˜�H‰~ð)ð 
ð)ð ð	)ð
 
ˆ#ˆsˆ(�^ô)r=   