
    yIfI                        d Z ddlmZ ddlZddlmZmZmZ ddlm	Z	 ddZ
ddZddZd dZd!dZd"dZ ej        d          ZddZd#dZd$dZdZdS )%z6Expand tox factor expressions to tox environment list.    )annotationsN)chaingroupbyproduct)Iteratorvaluestrname
str | Nonereturnc                   |8t          t          j        d t          |          D                                 nt                      g }t	          |           D ]V\  }}||r|                    |           |D ]4}t          fd|D                       r|                    |            n5Wd                    |          S )Nc                &    g | ]}d  |D             S )c              3      K   | ]	\  }}|V  
d S N ).0i_s      P/var/www/piapp/venv/lib/python3.11/site-packages/tox/config/loader/ini/factor.py	<genexpr>z,filter_for_env.<locals>.<listcomp>.<genexpr>   s&      !2!21!!2!2!2!2!2!2    r   )r   as     r   
<listcomp>z"filter_for_env.<locals>.<listcomp>   s'     U U Uq!2!2!2!2!2 U U Ur   c              3  ,   K   | ]\  }}|v |z  V  d S r   r   )r   a_namenegatecurrents      r   r   z!filter_for_env.<locals>.<genexpr>   s1      PP')V3PPPPPPr   
)setr   from_iterablefind_factor_groupsexpand_factorsappendalljoin)r   r
   overallfactorscontentgroupr   s         @r   filter_for_envr*   
   s    [_[kE U U<Nt<T<T U U UVVWWWqtqvqv  G*511  ? (w'''   PPPP%PPPPP NN7+++E 99Wr   Iterator[str]c              #     K   t                      }t          |           D ]8\  }}|1|D ].}t          |          }||vr|V  |                    |           /9d S r   )r   r"   explode_factoradd)r   seenr'   r   r)   envs         r   	find_envsr1      sy      55D$U++ " "
  " "$U++d??IIIHHSMMM" "r   c              #  P   K   t          |           D ]}t          |          V  d S r   )r!   r-   )r   r)   s     r   extend_factorsr3   &   s>      #E** $ $U######$ $r   r)   list[tuple[str, bool]]c                @    d                     d | D                       S )N-c                    g | ]\  }}|S r   r   )r   r
   r   s      r   r   z"explode_factor.<locals>.<listcomp>,   s    ///gdAT///r   )r%   )r)   s    r   r-   r-   +   s#    88/////000r   9Iterator[tuple[list[list[tuple[str, bool]]] | None, str]]c              #    K   |                      d          D ]}d }t          j        d|          }|r|                                nd|}}|dk    rg	 t	          t          |d |                                                             }||dz   d                                          }n# t          $ r Y nw xY w||fV  d S )Nr   z:(\s|$)   )splitresearchstartlistr!   strip
ValueError)r   liner'   marker_search	marker_atr(   s         r   r"   r"   /   s      D!!  7;	*d336CK]00222T7	??81$z	z2B2H2H2J2JKKLL y1}/5577     w s   6B((
B54B5 Iterator[list[tuple[str, bool]]]c              #  t   K   t          |           D ]%}d |                    d          D             }|V  &dS )z\Transform '{py,!pi}-{a,b},c' to [{'py', 'a'}, {'py', 'b'}, {'pi', 'a'}, {'pi', 'b'}, {'c'}].c                ,    g | ]}t          |          S r   )name_with_negate)r   fs     r   r   z&find_factor_groups.<locals>.<listcomp>A   s!    >>>!"1%%>>>r   r6   N)expand_env_with_negationr<   )r   r0   results      r   r!   r!   >   sO      '..  >>syy~~>>> r   z!?[\w._][\w._-]*c              #    K   t          t          j        d|           t                    D ]\  }}|rd                    |                                          }t          j        d|          }d |D             }t          | D ]V}d                    |          }t          d |                    d          D                       st          |          |V  WdS )	zHTransform '{py,!pi}-{a,b},c' to ['py-a', 'py-b', '!pi-a', '!pi-b', 'c'].z((?:{[^}]+})+)|,)key z	{([^}]+)}c                L    g | ]!}d  |                     d          D             "S )c                6    g | ]}|                                 S r   )rA   r   r   s     r   r   z7expand_env_with_negation.<locals>.<listcomp>.<listcomp>N   s     999Aaggii999r   ,)r<   )r   elems     r   r   z,expand_env_with_negation.<locals>.<listcomp>N   s1    OOOd99C999OOOr   c              3  J   K   | ]}t                               |          V  d S r   )
_FACTOR_RE	fullmatchrR   s     r   r   z+expand_env_with_negation.<locals>.<genexpr>Q   s0      SSq://22SSSSSSr   r6   N)	r   r=   r<   boolr%   rA   r   r$   rB   )r   rN   r)   	group_strelementspartsvariantvariant_strs           r   rK   rK   H   s      bh':EBBMMM 	" 	"
U 	",,..Ixi88HOOhOOOE"E? " " ggg..SSK<M<Mc<R<RSSSSS 2$[111!!!!!	" 	"r   factortuple[str, bool]c                D    t          |           }|r
| dd          n| }||fS )Nr;   )
is_negated)r^   negatedrL   s      r   rI   rI   V   s/      G".VABBZZF7?r   rX   c                ,    |                      d          S )N!)
startswith)r^   s    r   ra   ra   \   s    S!!!r   )r"   r3   r*   r1   )r   r	   r
   r   r   r	   )r   r	   r   r+   )r)   r4   r   r	   )r   r	   r   r8   )r   r	   r   rF   )r^   r	   r   r_   )r^   r	   r   rX   )__doc__
__future__r   r=   	itertoolsr   r   r   typingr   r*   r1   r3   r-   r"   r!   compilerV   rK   rI   ra   __all__r   r   r   <module>rl      s)   < < " " " " " " 				 - - - - - - - - - -         "" " " "$ $ $ $
1 1 1 1       RZ+,,
" " " "   " " " "r   