ó
     “,j '  ã                  óø   • S SK Jr  S SKrS SKrS SKJr  S SKJrJrJ	r	J
r
Jr  \R                  S:¼  a  S SKJr  OS SKJr  SSKJrJr  SS	KJrJr  SS
KJrJr   " S S\5      rS rSS jrSS.       SS jjrg)é    )ÚannotationsN)ÚPath)ÚAnyÚDictÚListÚOptionalÚUnion)é   é   )ÚSelfé   )ÚConfectionErrorÚConfigValidationError)Úparse_configÚserialize_config)ÚValidationErrorÚensure_schemac                  ó,  • \ rS rSr% SrS\S'    SSSS.       SS jjjrSS jrSS	 jr S     SS
 jjr	SS jr
SS jrS0 SS.       SS jjrSS.SS jjrSS.SS jjrS0 S.       SS jjrSS.S S jjrS0 S.       S!S jjrSrg)"ÚConfigé   zUDict subclass to save TOML-style configuration format from/to string, file
or bytes.
ÚboolÚis_interpolatedN©r   Úsection_orderc               óž  • [         R                  U 5        Uc  0 n[        U[         [        45      (       d  [	        S[        U5       35      eUb  X l        O.[        U[        5      (       a  UR                  U l        OSU l        Ub  X0l        O.[        U[        5      (       a  UR                  U l        O/ U l        U R                  U5        g)z2Initialize a new Config object with optional data.NzDCan't initialize Config with data. Expected dict or Config but got: T)	ÚdictÚ__init__Ú
isinstancer   r   Útyper   r   Úupdate)ÚselfÚdatar   r   s       Ú C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\confection/_config.pyr   ÚConfig.__init__   s·   € ô 	�‰�dÔØ‰<ØˆDÜ˜$¤¤v ×/Ñ/Ü!ð#Ü#'¨£: ,ð0óð ð Ñ&Ø#2Õ Ü˜œf×%Ñ%Ø#'×#7Ñ#7ˆDÕ à#'ˆDÔ ØÑ$Ø!.ÕÜ˜œf×%Ñ%Ø!%×!3Ñ!3ˆDÕà!#ˆDÔà�‰�DÕó    c                ó\   • [        U 5      " 5       R                  U R                  5       5      $ )zNInterpolate (resolve var references) a config.

Returns a copy of the object.
)r   Úfrom_strÚto_str)r!   s    r#   ÚinterpolateÚConfig.interpolate<   s!   € ô �DŒz‹|×$Ñ$ T§[¡[£]Ó3Ð3r%   c                óx   • [         R                  " U 5      n[        U 5      " UU R                  U R                  S9$ )zDeepcopy the config.r   )ÚcopyÚdeepcopyr   r   r   )r!   Úconfigs     r#   r,   ÚConfig.copyG   s6   € ä—’˜tÓ$ˆÜ�DŒzØØ ×0Ñ0Ø×,Ñ,ñ
ð 	
r%   c                óØ   • U R                  5       n[        U5      R                  5       n[        XUS9n[        U 5      " UUR                  =(       a    UR                  UR
                  S9$ )z>Deep merge the config with updates, using current as defaults.©Úremove_extrar   )r,   r   Údeep_merge_configsr   r   r   )r!   Úupdatesr2   ÚdefaultsÚmergeds        r#   ÚmergeÚConfig.mergeP   s^   € ð —9‘9“;ˆÜ˜“/×&Ñ&Ó(ˆÜ# GÀLÑQˆÜ�DŒzØØ$×4Ñ4×P¸×9PÑ9PØ"×0Ñ0ñ
ð 	
r%   c                óF   • [        U5      n[        [        U 5      X5        U $ )zXValidate the config against a schema. Raises ConfigValidationError
if validation fails.
)r   Ú_validate_recursiver   )r!   Úschemas     r#   ÚvalidateÚConfig.validate]   s!   € ô ˜vÓ&ˆÜœD ›J¨Ô5Øˆr%   c                óp  • [        U5      nUR                  R                  SS5      nUR                  R	                  5        Hž  u  p4X0;  a%  UR                  5       (       d  UR                  X'   M/  X0;   d  M6  [        X   [        5      (       d  MO  UR                  n[        U[        5      (       d  Mr  [        US5      (       d  M…  [        U5      n[        X   U5        M      US:X  aL  [        UR                  R                  5       5      n[        U R                  5       5       H  nX‡;  d  M
  X	 M     U $ )z„Fill in missing values from schema defaults and remove extra
fields if the schema forbids them. Modifies in place and returns self.
ÚextraÚallowÚmodel_fieldsÚforbid)r   Úmodel_configÚgetrA   ÚitemsÚis_requiredÚdefaultr   r   Ú
annotationr   ÚhasattrÚ_fill_defaults_recursiveÚsetÚkeysÚlist)	r!   r;   r?   ÚnameÚfieldÚfield_schemaÚ
sub_schemaÚknownÚkeys	            r#   Úfill_defaultsÚConfig.fill_defaultse   sþ   € ô ˜vÓ&ˆØ×#Ñ#×'Ñ'¨°Ó9ˆà!×.Ñ.×4Ñ4Ö6‰KˆDØÓ¨×(9Ñ(9×(;Ñ(;Ø"Ÿ]™]�“
Ø•¤*¨T©Z¼×">Ó">Ø$×/Ñ/�Ü˜l¬D×1Ó1´gØ  .÷7ó 7ô "/¨|Ó!<�JÜ,¨T©Z¸ÖDñ 7ð �HÓÜ˜×+Ñ+×0Ñ0Ó2Ó3ˆEÜ˜DŸI™I›KÖ(�ØÕ#Øš	ñ )ð ˆr%   T)r)   Ú	overridesr;   c               óê   • U R                  5         U R                  [        XUS95        U(       a  U(       a  U R                  5       n X l        Ub"  U R                  U5        U R                  U5        U $ )zLoad the config from a string.©r)   rV   )Úclearr    r   r)   r   rT   r<   )r!   Útextr)   rV   r;   s        r#   r'   ÚConfig.from_str~   s`   € ð 	�
‰
ŒØ�‰”L È)ÑTÔUÞžð ×#Ñ#Ó%ˆDØ*ÔØÑØ×Ñ˜vÔ&Ø�M‰M˜&Ô!Øˆr%   ©r)   c               ó   • [        XS9$ )zWrite the config to a string.r\   )r   ©r!   r)   s     r#   r(   ÚConfig.to_str“   s   € ä Ñ>Ð>r%   c               ó>   • U R                  US9R                  S5      $ )z&Serialize the config to a byte string.r\   Úutf8)r(   Úencoder^   s     r#   Úto_bytesÚConfig.to_bytes—   s   € à�{‰{ {ˆ{Ð3×:Ñ:¸6ÓBÐBr%   rX   c               ó@   • U R                  UR                  S5      X#S9$ )z#Load the config from a byte string.ra   rX   )r'   Údecode)r!   Ú
bytes_datar)   rV   s       r#   Ú
from_bytesÚConfig.from_bytes›   s*   € ð �}‰}Ø×Ñ˜fÓ%°;ð ð 
ð 	
r%   c               óØ   • [        U[        5      (       a  [        U5      OUnUR                  SSS9 nUR	                  U R                  US95        SSS5        g! , (       d  f       g= f)zSerialize the config to a file.Úwra   ©Úencodingr\   N)r   Ústrr   ÚopenÚwriter(   )r!   Úpathr)   Úfile_s       r#   Úto_diskÚConfig.to_disk§   sN   € ä'¨¬c×2Ñ2Œt�DŒz¸ˆØ�Y‰Y�s VˆYÑ,°Ø�K‰K˜Ÿ™°˜Ð<Ô=÷ -×,Ö,ús   ³AÁ
A)c               óÚ   • [        U[        5      (       a  [        U5      OUnUR                  SSS9 nUR	                  5       nSSS5        U R                  WX#S9$ ! , (       d  f       N= f)zLoad config from a file.Úrra   rl   NrX   )r   rn   r   ro   Úreadr'   )r!   rq   r)   rV   rr   rZ   s         r#   Ú	from_diskÚConfig.from_disk­   sY   € ô (¨¬c×2Ñ2Œt�DŒz¸ˆØ�Y‰Y�s VˆYÑ,°Ø—:‘:“<ˆD÷ -à�}‰}˜T¨{ˆ}ÐPÐP÷ -Õ,ús   ³AÁ
A*)N)r"   z)Optional[Union[Dict[str, Any], 'Config']]r   zOptional[bool]r   zOptional[List[str]]ÚreturnÚNone)rz   r   )F)r4   zUnion[Dict[str, Any], 'Config']r2   r   rz   r   )rZ   rn   r)   r   rV   úDict[str, Any]rz   r   )r)   r   rz   rn   )r)   r   rz   Úbytes)rg   r}   r)   r   rV   r|   rz   r   )rq   úUnion[str, Path]r)   r   rz   r{   )rq   r~   r)   r   rV   r|   rz   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r   r)   r,   r7   r<   rT   r'   r(   rc   rh   rs   rx   Ú__static_attributes__© r%   r#   r   r      sM  ‡ ñð Óð ;?ð ð +/Ø-1ñ à7ð ð (ð	 ð
 +ð ð 
ö ôD	4ô
ð NSð
Ø6ð
ØFJð
à	õ
ôôð: !Ø$&Øñàðð ð	ð
 "ðð 
õð* -1÷ ?ð /3÷ Cð !Ø$&ñ

àð

ð ð	

ð
 "ð

ð 
õ

ð FJ÷ >ð !Ø$&ñQàðQð ð	Qð
 "ðQð 
÷Qð Qr%   r   c                óV  • UR                   R                  SS5      nUR                  R                  5        Hœ  u  p4X0;  a%  UR	                  5       (       d  UR
                  X'   M/  X0;   d  M6  [        X   [        5      (       d  MO  UR                  n[        U[        5      (       d  Mr  [        US5      (       d  M…  [        X   [        U5      5        Mž     US:X  aM  [        UR                  R                  5       5      n[        U R                  5       5       H  nXv;  d  M
  X	 M     gg)z>Fill defaults and strip extras recursively for nested schemas.r?   r@   rA   rB   N)rC   rD   rA   rE   rF   rG   r   r   rH   r   rI   rJ   r   rK   rL   rM   )r"   r;   r?   rN   rO   rP   rR   rS   s           r#   rJ   rJ   »   sä   € à×Ñ×#Ñ# G¨WÓ5€EØ×*Ñ*×0Ñ0Ö2‰ˆØÓ E×$5Ñ$5×$7Ñ$7ØŸ™ˆD‹JØ�\œj¨©´T×:Ó:Ø ×+Ñ+ˆLÜ˜,¬×-Ó-´'¸,È×2WÓ2WÜ(¨©´]À<Ó5PÖQñ 3ð �ÓÜ�F×'Ñ'×,Ñ,Ó.Ó/ˆÜ˜Ÿ	™	›Ö$ˆCØÕØ’Iò %ð r%   c                óÐ  •  UR                  U 5        UR                  R                  5        Hx  u  pgUR                  n[        U[        5      (       d  M(  [        US5      (       d  M;  X`;   d  MB  [        X   [        5      (       d  M[  U(       a  U SU 3OUn	[        X   X‚U	S	9  Mz     g! [         a1  nU(       a  SU S3OSn[        UUR                  5       SU 3S9SeSnAff = f)
z>Validate data against a schema, recursing into nested schemas.z in [Ú]Ú zConfig validation error)r.   ÚerrorsÚtitleNÚmodel_validateÚ.)Úparent)r�   r   r   r‹   rA   rE   rH   r   r   rI   r   r:   )
r"   r;   r.   r�   ÚeÚsectionrN   rO   rH   Úchild_parents
             r#   r:   r:   Ì   sÚ   € ðØ×Ñ˜dÔ#ð ×*Ñ*×0Ñ0Ö2‰ˆØ×%Ñ%ˆ
ä�z¤4×(Ó(Ü˜
Ð$4×5Ó5Ø•Ü˜4™:¤t×,Ó,æ17˜f˜X Q t fÑ-¸TˆLÜ ¡
¨JÀ|ÔTò 3øô ó Þ'-�E˜&˜ Ñ#°2ˆÜ#ØØ—8‘8“:Ø+¨G¨9Ð5ñ
ð ð		ûðús   ‚B* Â*
C%Â4,C Ã C%Fr1   c               ó¾  • U(       a+  [        U R                  5       5      nU H  nXA;  d  M
  X	 M     UR                  5        GH  u  pE[        U[        5      (       aä  U R                  U0 5      n[        U[        5      (       d  MD  U Vs/ s H  owR                  S5      (       d  M  UPM     nnU(       a  US   OSn	U(       a*  U Vs/ s H  owR                  S5      (       d  M  UPM     snO/ n
U
(       a  U
S   OSnU	(       a  U(       a  X–;   a  Xi   XY   :w  a  MÛ  U(       a  Xµ;  d
  Xk   X[   :w  a  Mó  [        XeUS9nMÿ  X@;  d  GM  XPU'   GM     U $ s  snf s  snf )zDeep merge two configs.Ú@r   Nr1   )rM   rL   rE   r   r   Ú
setdefaultÚ
startswithr3   )r.   r5   r2   rL   rS   ÚvalueÚnodeÚkÚvalue_promisesÚvalue_promiseÚnode_promisesÚnode_promises               r#   r3   r3   ä   s.  € ö ä�F—K‘K“MÓ"ˆÛˆCØÕ"Ø’Kñ ð —n‘n×&‰
ˆÜ�eœT×"Ñ"Ø×$Ñ$ S¨"Ó-ˆDÜ˜d¤D×)Ñ)ÙÙ).ÓDª A·,±,¸s×2CŸa©ˆNÐDÞ1?˜N¨1Ò-ÀTˆMÞFJ©ÓBª 1·±¸S×0AŸQ©ÒBÐPRˆMÞ/<˜=¨Ò+À$ˆLö Þ à!Ó)ØÑ+¨uÑ/CÓCñ ÞØÓ)¨TÑ-?À5ÑCVÓ-VáÜ)¨$ÀLÑQŠHØÖØ�3ŒKñ5 'ð6 €Mùò- EùâBs   ÂEÂ(EÃ	EÃ&E)rŠ   )r.   úUnion[Dict[str, Any], Config]r5   rž   r2   r   rz   rž   )Ú
__future__r   r,   ÚsysÚpathlibr   Útypingr   r   r   r   r	   Úversion_infor   Útyping_extensionsÚ_errorsr   r   Ú_parserr   r   Ú
validationr   r   r   r   rJ   r:   r3   r†   r%   r#   Ú<module>r¨      s~   ðÝ "ã Û 
Ý ß 3Õ 3à×Ñ�wÓÞå&ç ;ß 3ß 6ôfQˆTô fQòRô"Uð8 ñ	(Ø)ð(à+ð(ð ð	(ð
 #ö(r%   