
    yIf                        d 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 d
dlmZmZmZmZ e
rddlmZ ddlmZ ddlmZ  G d de          Z dgZ!dS )zLoad.    )annotations)defaultdict)ConfigParser)chain)TYPE_CHECKINGIterableIterator)	IniLoader)	find_envs)Section   )Source)COREPKG_ENV_PREFIXTEST_ENV_PREFIX
IniSection)Path)OverrideMap)	ConfigSetc                  z     e Zd ZdZeZd'd( fd	Zd)dZd*dZd+dZ	d,dZ
d-dZd.dZd/d Zd/d!Zd0d%Zd1d&Z xZS )2	IniSourcez8Configuration sourced from a ini file (such as tox.ini).Npathr   content
str | NonereturnNonec                X   t                                          |           t          d           | _        |/|                                st
          |                                }| j                            |t          |                     t          t                    | _        d S )N)interpolation)super__init__r   _parserexists
ValueError	read_textread_stringstrr   list_section_mapping)selfr   r   	__class__s      I/var/www/piapp/venv/lib/python3.11/site-packages/tox/config/source/ini.pyr    zIniSource.__init__   s    #$777?;;== !  nn&&G  #d))444=H=N=N    sectionr   c                6    t          |j        |j                  S N)r   prefixnamer)   r-   s     r+   transform_sectionzIniSource.transform_section'   s    '.',777r,   Iterator[IniSection]c              #  n   K   | j                                         D ]}t          j        |          V  d S r/   )r!   sectionsr   from_keyr2   s     r+   r6   zIniSource.sections*   sG      |,,.. 	/ 	/G%g......	/ 	/r,   override_mapr   IniLoader | Nonec                T   | j                             |j                  pg D ]-}|j        "t	          j        |          j        |j        k    r n.|j        }| j                            |          r7t          || j        |                    |j        g           | j
        |          S d S )N)r-   parser	overridescore_sectionsection_key)r(   getr1   r0   r   r7   keyr!   has_sectionr
   CORE_SECTION)r)   r-   r8   r@   s       r+   
get_loaderzIniSource.get_loader.   s    (,,W\::@b 	 	C~%)9#)>)>)E)W)W *X +C<##C(( 	|&**7;;;!.    tr,   c                    | j         S r/   )rB   r)   s    r+   get_core_sectionzIniSource.get_core_section@   s      r,   base	list[str]
in_sectionIterator[Section]c              #     K   |D ]8}t          j        |          }|V  |j        t          |j        |          V  9d S r/   )r   r7   r0   )r)   rG   rI   a_baser-   s        r+   get_base_sectionszIniSource.get_base_sectionsC   s[       	< 	<F )&11GMMM , !2F;;;;;		< 	<r,   itemr&   $tuple[Section, list[str], list[str]]c                H    t          j        |          t          gt          gfS r/   )r   test_envr   r   )r)   rN   s     r+   get_tox_env_sectionzIniSource.get_tox_env_sectionJ   s     "4((?*;n=MMMr,   core_configr   Iterator[str]c              #     K   t                      }|                     |          D ]}||vr|                    |           |V   d S r/   )set_discover_tox_envsadd)r)   rS   seenr1   s       r+   envszIniSource.envsM   sZ      uu++K88 	 	D4


	 	r,   c              #    K   dfd}t          |d                   }|E d {V  t                       ||           |                                 D ]L}|j        rC ||j                   |j        D ]+}| j        |                             |j                   |V  ,M|                                 D ]}|                     |          E d {V  d S )NrZ   Iterable[str]r   r   c                j                         t          j        d | D                                  d S )Nc              3  @   K   | ]}|                     d           V  dS )-N)split).0es     r+   	<genexpr>zIIniSource._discover_tox_envs.<locals>.register_factors.<locals>.<genexpr>V   s,      4P4PaQWWS\\4P4P4P4P4P4Pr,   )updater   from_iterable)rZ   known_factorss    r+   register_factorsz6IniSource._discover_tox_envs.<locals>.register_factorsU   s7      !44P4P44P4P4P!P!PQQQQQr,   env_list)rZ   r\   r   r   )	r'   rV   r6   is_test_envnamesr(   appendr@   _discover_from_section)r)   rS   rg   explicitr-   r1   rf   s         @r+   rW   zIniSource._discover_tox_envsT   s3     	R 	R 	R 	R 	R 	R J/00"%%%""" }} 	 	G"   ///#M  D)$/66w{CCCJJJJ}} 	K 	KG227MJJJJJJJJJJ	K 	Kr,   r   rf   set[str]c              #     K   | j         |j                                                 D ]=}t          |          D ]+}t	          |                    d                    |z
  r|V  ,>d S )Nr_   )r!   r@   valuesr   rV   r`   )r)   r-   rf   valueenvs        r+   rl   z IniSource._discover_from_sectionh   sy      \'+.5577 	 	E ''  syy~~&&6 III	 	r,   c                @    t          |           j         d| j         dS )Nz(path=))type__name__r   rE   s    r+   __repr__zIniSource.__repr__n   s$    t**%99TY9999r,   r/   )r   r   r   r   r   r   )r-   r   r   r   )r   r4   )r-   r   r8   r   r   r9   )r   r   )rG   rH   rI   r   r   rJ   )rN   r&   r   rO   )rS   r   r   rT   )r-   r   rf   rn   r   rT   )r   r&   )rv   
__module____qualname____doc__r   rB   r    r3   r6   rC   rF   rM   rR   rZ   rW   rl   rw   __classcell__)r*   s   @r+   r   r      s$       BBLO O O O O O O8 8 8 8/ / / /   $! ! ! !< < < <N N N N   K K K K(   : : : : : : : :r,   r   N)"rz   
__future__r   collectionsr   configparserr   	itertoolsr   typingr   r   r	   tox.config.loader.inir
   tox.config.loader.ini.factorr   tox.config.loader.sectionr   apir   ini_sectionr   r   r   r   pathlibr   tox.config.loader.apir   tox.config.setsr   r   __all__ r,   r+   <module>r      s]    " " " " " " # # # # # # % % % % % %       4 4 4 4 4 4 4 4 4 4 + + + + + + 2 2 2 2 2 2 - - - - - -       J J J J J J J J J J J J *111111))))))W: W: W: W: W: W: W: W:v r,   