
    yIf                        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 eee	gef         Z G d d          ZdZd	S )
    )annotations)Path)CallableIteratorMapping)ConfigLoadArgs)Failc                  f    e Zd Zd$d
Zd%dZd&dZed'd            Zd(d)dZd*dZ	d+dZ
ddd,d#ZdS )-SetEnvrawstrnameenv_name
str | Nonerootr   returnNonec                   d| _         i | _        i | _        g | _        g | _        d | _        |||c| _        | _        | _        ddl	m
}m} |                                D ]}|                                r|                    d          r0| j                            |t!          d          d                     [	 |                     |          \  }}	d|v rd|d}
t%          |
          	 |	| j        |<   # t$          $ r>  ||          D ].}t'          ||          r| j                            |            n/ Y w xY wd S )	NFc                    | S N )scs     F/var/www/piapp/venv/lib/python3.11/site-packages/tox/config/set_env.py<lambda>z!SetEnv.__init__.<locals>.<lambda>   s            )MatchExpressionfind_replace_exprzfile|{invalid line  in set_env)changed_materialized_raw_needs_replacement
_env_files	_replacer_name	_env_name_rootloader.ini.replacer   r   
splitlinesstrip
startswithappendlen_extract_key_value
ValueError
isinstance)selfr   r   r   r   r   r   linekeyvaluemsgexprs               r   __init__zSetEnv.__init__   s   -/$&	-/%'#1>15x.
DNDJJJJJJJJJNN$$ 	/ 	/Dzz|| /??7++ /O**4G+?@@@@/%)%<%<T%B%B
U#::"E$"E"E"EC",S//1 & */	# & " " "$5$5d$;$; " "D)$@@ & $ 7 > >t D D D %& " !&	"/	/ 	/s   :1C77AD?>D?r8   Replacerargsr   c                T    || _         | j        D ]}|                     ||           d S r   )r(   r'   _read_env_file)r5   r8   r=   filenames       r   use_replacerzSetEnv.use_replacer+   s=     	0 	0H$////	0 	0r   r@   c                   t          |                     ||                                                    }|                                r|n	| j        |z  }|                                s| d}t          |          |                                                                D ]P}|	                                }|r|
                    d          r.|                     |          \  }}|| j        |<   Qd S )Nz does not exist for set_env#)r   r(   copyis_absoluter+   existsr	   	read_textr-   r.   r/   r2   r%   )r5   r@   r=   env_filer9   env_liner7   r8   s           r   r?   zSetEnv._read_env_file0   s     x==>>'3355P884:;P   	:::Cs))O **,,7799 	# 	#H~~''H x22377 00::JC"DIcNN	# 	#r   r6   tuple[str, str]c                    |                      d          \  }}}|r(|                                |                                fS d| d}t          |          )N=r!   r"   )	partitionr.   r3   )r6   r7   sepr8   r9   s        r   r2   zSetEnv._extract_key_value@   sX    ..--S% 	.99;;--1d111oor   NitemConfigLoadArgs | Nonec                f   || j         v r| j         |         S | j        |         }|t          g | j        | j                  n|}|j                            d|            |                     ||          }|                    dd          }|| j         |<   | j        	                    |d            |S )Nzenv:z\#rC   )
r$   r%   r   r)   r*   chainr0   r(   replacepop)r5   rO   r=   r   results        r   loadzSetEnv.loadH   s    4%%%%d++ioAE~b$*dn===SW
---(((T**s++#)4 	dD!!!r   objectboolc                N    t          |t                    o|t          |           v S r   )r4   r   iter)r5   rO   s     r   __contains__zSetEnv.__contains__T   s"    $$$;d);;r   Iterator[str]c              #     K    j                                         E d {V  t           j                                                  E d {V   j        r j                            d          }                     |t          g  j         j	                            }t           fd|                                D                       } j                            |           |                                E d {V   j        d S d S )Nr   c              3  F   K   | ]}|                     |          V  d S r   )r2   ).0sub_liner5   s     r   	<genexpr>z"SetEnv.__iter__.<locals>.<genexpr>^   s7      ttkst4228<<ttttttr   )r$   keyslistr%   r&   rT   r(   r   r)   r*   dictr-   update)r5   r6   expanded_linesub_raws   `   r   __iter__zSetEnv.__iter__W   s%     %**,,,,,,,,,	(()))))))))% 	&*..q11D NN4DJPTP^1_1_``Mtttt]MeMeMgMgtttttGIW%%%||~~%%%%%%% % 	& 	& 	& 	& 	&r   T)overrideparamMapping[str, str] | SetEnvri   c                   |D ]Y}|s|| j         vrL|| j        vrCt          |t                    r|                    |          n||         }|| j        |<   d| _        Zd S )NT)r%   r$   r4   r   rV   r#   )r5   rj   ri   r7   r8   s        r   re   zSetEnv.updateb   sx     	$ 	$C $Cty00S@R5R5R+5eV+D+DT

3%PS**/"3'#	$ 	$r   )
r   r   r   r   r   r   r   r   r   r   )r8   r<   r=   r   r   r   )r@   r   r=   r   r   r   )r6   r   r   rJ   r   )rO   r   r=   rP   r   r   )rO   rW   r   rX   )r   r\   )rj   rk   ri   rX   r   r   )__name__
__module____qualname__r;   rA   r?   staticmethodr2   rV   r[   rh   re   r   r   r   r   r      s        / / / /<0 0 0 0
# # # #     \
 
 
 
 
< < < <	& 	& 	& 	& MQ $ $ $ $ $ $ $ $r   r   )r   N)
__future__r   pathlibr   typingr   r   r   tox.config.loader.apir   tox.tox_env.errorsr	   r   r<   r   __all__r   r   r   <module>rw      s    " " " " " "       . . . . . . . . . . 0 0 0 0 0 0 # # # # # #S.)3./\$ \$ \$ \$ \$ \$ \$ \$~ r   