§
    øyIf
  ã                  óä   — d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
mZmZmZ ddlmZmZmZ e	r 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  ede¬¦  «        Z G d„ d¦  «        ZdgZdS )é    )ÚannotationsN)ÚOrderedDictÚdefaultdict)ÚPath)ÚTYPE_CHECKINGÚAnyÚIteratorÚSequenceÚTypeVaré   )Ú	ConfigSetÚCoreConfigSetÚEnvConfigSet)ÚLoaderÚOverrideMap)ÚParsed)ÚMemoryLoader)ÚSection)ÚSourceÚT)Úboundc                  óÜ   — e Zd ZdZd6d„Zd7d„Zed8d„¦   «         Zed8d„¦   «         Zd9d„Z	d:d„Z
d;d„Zd<d„Zed=d„¦   «         Zed>d „¦   «         Zed?d"„¦   «         Z	 d@dAd/„Z	 	 dBdCd3„ZdDd5„Zd#S )EÚConfigz"Main configuration object for tox.Úconfig_sourcer   Úoptionsr   Úrootr   Úpos_argsúSequence[str] | NoneÚwork_dirÚreturnÚNonec                ód  — |€d nt          |¦  «        | _        || _        || _        || _        t          t          ¦  «        | _        |j        D ]'}| j        |j	                  
                    |¦  «         Œ(|| _        t          ¦   «         | _        d | _        t          t          ¦  «        | _        d S ©N)ÚtupleÚ	_pos_argsÚ	_work_dirÚ_rootÚ_optionsr   ÚlistÚ
_overridesÚoverrideÚ	namespaceÚappendÚ_srcr   Ú_key_to_conf_setÚ	_core_setÚmemory_seed_loaders)Úselfr   r   r   r   r   r+   s          úC/var/www/piapp/venv/lib/python3.11/site-packages/tox/config/main.pyÚ__init__zConfig.__init__   s¤   € ð "*Ð!1˜˜µu¸X±´ˆŒØ!ˆŒØˆŒ
ØˆŒå'2µ4Ñ'8Ô'8ˆŒØÔ(ð 	Að 	AˆHØŒO˜HÔ.Ô/×6Ò6°xÑ@Ô@Ð@Ð@à!ˆŒ	ÝGRÁ}Ä}ˆÔØ/3ˆŒÝITÕUYÑIZÔIZˆÔ Ð Ð ó    Úto_pathúPath | Noneútuple[str, ...] | Nonec                ó>  — | j         ��|��t          j        ¦   «         |k    rõg }t          j                             t          |¦  «        ¦  «        }| j         D ]°}t          |¦  «        }|                     ¦   «         rv|                     ¦   «         sbt          j                             t          |¦  «        ¦  «        }t          j         	                    ||¦  «        }| 
                    |¦  «         Œ›| 
                    |¦  «         Œ±t          |¦  «        S | j         S )z…
        :param to_path: if not None rewrite relative posargs paths from cwd to to_path
        :return: positional argument
        )r%   r   ÚcwdÚosÚpathÚabspathÚstrÚexistsÚis_absoluteÚrelpathr-   r$   )r2   r6   ÚargsÚto_path_strÚargÚpath_argÚpath_arg_strÚrelatives           r3   r   zConfig.pos_args/   sí   € ð
 Œ>Ñ%¨'Ñ*=Å$Ä(Á*Ä*ÐPWÒBWÐBWØˆDåœ'Ÿ/š/­#¨g©,¬,Ñ7Ô7ˆKØ”~ð 	%ð 	%�Ý ™9œ9�Ø—?’?Ñ$Ô$ð %¨X×-AÒ-AÑ-CÔ-Cð %å#%¤7§?¢?µ3°x±=´=Ñ#AÔ#A�Lå!œwŸš¨|¸[ÑIÔI�HØ—K’K Ñ)Ô)Ð)Ð)à—K’K Ñ$Ô$Ð$Ð$Ý˜‘;”;ÐØŒ~Ðr5   c                ó   — | j         S )z+:return: working directory for this project)r&   ©r2   s    r3   r   zConfig.work_dirE   s   € ð Œ~Ðr5   c                ó   — | j         j        S )z5:return: the location of the tox configuration source)r.   r<   rI   s    r3   Úsrc_pathzConfig.src_pathJ   s   € ð ŒyŒ~Ðr5   úIterator[str]c                ó@   — | j                              | j        ¦  «        S )z<:return: an iterator that goes through existing environments)r.   ÚenvsÚcorerI   s    r3   Ú__iter__zConfig.__iter__O   s   € àŒy�~Š~˜dœiÑ(Ô(Ð(r5   úIterator[Section]c              #  óH   K  — | j                              ¦   «         E d {V —† d S r#   )r.   ÚsectionsrI   s    r3   rS   zConfig.sectionsS   s2   è è € Ø”9×%Ò%Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'r5   r>   c                ó@   — t          | ¦  «        j        › d| j        ›d�S )Nz(config_source=ú))ÚtypeÚ__name__r.   rI   s    r3   Ú__repr__zConfig.__repr__V   s$   € Ý�t‘*”*Ô%ÐDÐD°d´iÐDÐDÐDÐDr5   ÚitemÚboolc                ó:   ‡— t          ˆfd„| D ¦   «         ¦  «        S )z/:return: check if an environment already existsc              3  ó(   •K  — | ]}|‰k    ¯|V — Œd S r#   © )Ú.0ÚnamerY   s     €r3   ú	<genexpr>z&Config.__contains__.<locals>.<genexpr>[   s'   øè è € Ð9Ð9˜D¨D°DªL¨L�4¨L¨L¨L¨LÐ9Ð9r5   )Úany)r2   rY   s    `r3   Ú__contains__zConfig.__contains__Y   s&   ø€ åÐ9Ð9Ð9Ð9 DÐ9Ñ9Ô9Ñ9Ô9Ð9r5   ÚparsedÚsourcec                óÚ   — |j         €|j        j        n|j         }|j        €|j        j        n|j        }|                     ¦   «         }|                     ¦   «         } | |||||¬¦  «        S )z Make a tox configuration object.N)r   r   r   r   r   )Úroot_dirr<   Úparentr   Úresolve)Úclsrc   r   rd   r   r   s         r3   ÚmakezConfig.make]   sz   € ð
 ,2¬?Ð+B�V”[Ô'Ð'ÈÌˆØ/5¬Ð/F˜œÔ+Ð+ÈFÌOˆà�|Š|‰~Œ~ˆØ×#Ò#Ñ%Ô%ˆØˆsØ ØØØØð
ñ 
ô 
ð 	
r5   c                ó   — | j         S r#   )r(   rI   s    r3   r   zConfig.optionso   s
   € àŒ}Ðr5   r   c                ó  — | j         �| j         S | j                             ¦   «         }t          | || j        | j        ¦  «        }|j                             | j                             |g | j	        |¬¦  «        ¦  «         || _         |S )z:return: the core configurationN)ÚbaseÚoverride_mapÚconf)
r0   r.   Úget_core_sectionr   r'   rK   ÚloadersÚextendÚget_loadersr*   )r2   Úcore_sectionrO   s      r3   rO   zConfig.cores   s~   € ð Œ>Ð%Ø”>Ð!Ø”y×1Ò1Ñ3Ô3ˆÝ˜T <°´¸T¼]ÑKÔKˆØŒ×Ò˜DœI×1Ò1°,ÀRÐVZÔVeÐlpÐ1ÑqÔqÑrÔrÐrØˆŒØˆr5   NÚsectionr   rm   úlist[str] | NoneÚof_typeútype[T]Úfor_envú
str | Nonerq   úSequence[Loader[Any]] | Noner   c                óÒ  — |j         |pdd                     |pg ¦  «        f}	 | j        |         S # t          $ r¬  || ||¦  «        }|| j        |<   |�3|j                             | j                             |g ¦  «        ¦  «         | j         	                    ||| j
        |¦  «        D ]}|j                             |¦  «         Œ|�|j                             |¦  «         |cY S w xY w)NÚ ú-)ÚkeyÚjoinr/   ÚKeyErrorrq   rr   r1   Úgetr.   rs   r*   r-   )	r2   ru   rm   rw   ry   rq   r   Úconf_setÚloaders	            r3   Úget_section_configzConfig.get_section_config~   s  € ð Œk˜7˜= b¨#¯(ª(°4°:¸2Ñ*>Ô*>Ð>ˆð	ØÔ(¨Ô-Ð-øÝð 		ð 		ð 		Ø�w˜t W¨gÑ6Ô6ˆHØ)1ˆDÔ! #Ñ&ØÐ"ØÔ ×'Ò'¨Ô(@×(DÒ(DÀWÈbÑ(QÔ(QÑRÔRÐRØœ)×/Ò/°¸¸t¼ÐPXÑYÔYð 0ð 0�ØÔ ×'Ò'¨Ñ/Ô/Ð/Ð/ØÐ"ØÔ ×'Ò'¨Ñ0Ô0Ð0ØˆOˆOˆOð		øøøs   £0 °B3C&Ã%C&FÚpackager   c                ó„   — | j                              |¦  «        \  }}}|                      ||r|n|t          ||¬¦  «        S )a‘  
        Return the configuration for a given tox environment (will create if not exist yet).

        :param item: the name of the environment is
        :param package: a flag indicating if the environment is of type packaging or not (only used for creation)
        :param loaders: loaders to use for this configuration (only used for creation)
        :return: the tox environments config
        )rm   rw   ry   rq   )r.   Úget_tox_env_sectionr…   r   )r2   rY   r†   rq   ru   Ú	base_testÚbase_pkgs          r3   Úget_envzConfig.get_env”   sU   € ð (,¤y×'DÒ'DÀTÑ'JÔ'JÑ$ˆ�˜HØ×&Ò&ØØ$Ð3��¨)Ý ØØð 'ñ 
ô 
ð 	
r5   r_   c                óœ   ‡‡— | j                              ‰¦  «        \  Š}}ˆˆfd„| j                             ¦   «         D ¦   «         | _        d S )Nc                óV   •— i | ]%\  }}|d          ‰j         k    ¯|d         ‰k    ¯"||“Œ&S )r   r   )r   )r^   ÚkÚvr_   ru   s      €€r3   ú
<dictcomp>z$Config.clear_env.<locals>.<dictcomp>­   sF   ø€ Ð xÐ xÐ x©$¨!¨QÐSTÐUVÔSWÐ[bÔ[fÒSfÐSfÐklÐmnÔkoÐswÒkwÐkw  AÐkwÐkwÐkwr5   )r.   rˆ   r/   Úitems)r2   r_   Ú_Ú__ru   s    `  @r3   Ú	clear_envzConfig.clear_env«   sS   øø€ Øœ×6Ò6°tÑ<Ô<‰ˆ��BØ xÐ xÐ xÐ xÐ x°$Ô2G×2MÒ2MÑ2OÔ2OÐ xÑ xÔ xˆÔÐÐr5   )r   r   r   r   r   r   r   r   r   r   r    r!   )r6   r7   r    r8   )r    r   )r    rL   )r    rQ   )r    r>   )rY   r>   r    rZ   )rc   r   r   r   rd   r   r    r   )r    r   )r    r   r#   )ru   r   rm   rv   rw   rx   ry   rz   rq   r{   r    r   )FN)rY   r>   r†   rZ   rq   r{   r    r   )r_   r>   r    r!   )rW   Ú
__module__Ú__qualname__Ú__doc__r4   r   Úpropertyr   rK   rP   rS   rX   rb   Úclassmethodrj   r   rO   r…   r‹   r”   r]   r5   r3   r   r      s“  € € € € € Ø,Ð,ð[ð [ð [ð [ð,ð ð ð ð, ðð ð ñ „Xðð ðð ð ñ „Xðð)ð )ð )ð )ð(ð (ð (ð (ðEð Eð Eð Eð:ð :ð :ð :ð ð
ð 
ð 
ñ „[ð
ð" ðð ð ñ „Xðð ðð ð ñ „Xðð  15ðð ð ð ð ð2 Ø04ð	
ð 
ð 
ð 
ð 
ð.yð yð yð yð yð yr5   r   ) Ú
__future__r   r;   Úcollectionsr   r   Úpathlibr   Útypingr   r   r	   r
   r   Úsetsr   r   r   Útox.config.loader.apir   r   Ú
cli.parserr   Úloader.memoryr   Úloader.sectionr   rd   r   r   r   Ú___all__r]   r5   r3   ú<module>r¤      sY  ðØ "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø Ð Ð Ð Ð Ð Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bà 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8àð Ø9Ð9Ð9Ð9Ð9Ð9Ð9Ð9à"Ð"Ð"Ð"Ð"Ð"Ø+Ð+Ð+Ð+Ð+Ð+Ø'Ð'Ð'Ð'Ð'Ð'ØÐÐÐÐÐð €GˆC�yÐ!Ñ!Ô!€ðWyð Wyð Wyð Wyð Wyñ Wyô Wyð Wyðv ð€€€r5   