§
    øyIfV  ã                  óª   — d Z ddlmZ ddlZddl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mZ e
rdd	l	mZ  G d
„ dee         ¦  «        ZdZdS )zHConvert string configuration values to tox python configuration objects.é    )ÚannotationsN)Úchain©ÚPath)ÚTYPE_CHECKINGÚAnyÚIterator)ÚConvert)ÚCommandÚEnvList)ÚFinalc                  ó,  — e Zd ZU dZedd„¦   «         Zed d„¦   «         Zed!d„¦   «         Zed!d„¦   «         Zed"d„¦   «         Z	ed#d„¦   «         Z
ed$d„¦   «         Zed%d„¦   «         Zh d£Zded<   h d£Zded<    eeez  ¦  «        Zed&d„¦   «         ZdS )'Ú
StrConvertz.A class converting string values to tox types.ÚvalueÚstrÚreturnc                óD   — t          | ¦  «                             ¦   «         S ©N)r   Ústrip©r   s    úQ/var/www/piapp/venv/lib/python3.11/site-packages/tox/config/loader/str_convert.pyÚto_strzStrConvert.to_str   s   € å�5‰zŒz×ÒÑ!Ô!Ð!ó    r   c                ó    — t          | ¦  «        S r   r   r   s    r   Úto_pathzStrConvert.to_path   s   € å�E‰{Œ{Ðr   Úof_typeú	type[Any]úIterator[str]c              #  óÔ   K  — t          |t          ¦  «        sd| v rdnd}|                     dd¦  «        }|                      |¦  «        D ]}|                     ¦   «         } | r| V — Œd S )Nú
ú,úÚ )Ú
issubclassr   ÚreplaceÚsplitr   )r   r   ÚsplitterÚtokens       r   Úto_listzStrConvert.to_list   s   è è € å% g­wÑ7Ô7ÐQ¸4À5¸=¸=�4�4ÈcˆØ×#Ò# D¨"Ñ-Ô-ˆØ—[’[ Ñ*Ô*ð 	ð 	ˆEØ—K’K‘M”MˆEØð Ø���øð	ð 	r   c              #  óL   K  — t                                | |¦  «        E d {V —† d S r   )r   r)   )r   r   s     r   Úto_setzStrConvert.to_set&   s4   è è € å×%Ò% e¨WÑ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5r   útuple[type[Any], type[Any]]úIterator[tuple[str, str]]c              #  ó  K  — |                       d¦  «        D ]p}|                     ¦   «         rZ|                     d¦  «        \  }}} |r+|                     ¦   «         |                      ¦   «         fV — Œ\d|›�}t          |¦  «        ‚Œqd S )Nr    ú=z2dictionary lines must be of form key=value, found )r&   r   Ú	partitionÚ	TypeError)r   r   ÚrowÚkeyÚsepÚmsgs         r   Úto_dictzStrConvert.to_dict*   sœ   è è € à—;’;˜tÑ$Ô$ð 	)ð 	)ˆCØ�yŠy‰{Œ{ð )Ø"%§-¢-°Ñ"4Ô"4‘��S˜%Øð )ØŸ)š)™+œ+ u§{¢{¡}¤}Ð4Ð4Ð4Ð4Ð4àVÈsÐVÐV�CÝ# C™.œ.Ð(ð)ð	)ð 	)r   ÚescapeÚspecial_charsc                ó  — g }t          | ¦  «        D ]`\  }}|                     |¦  «         ||k    r@| |dz
  |…         }||k    rŒ4| |dz   |dz   …         }||h|£vr|                     |¦  «         Œad                     |¦  «        S )zø
        Escape backslash in value that is not followed by a special character.

        This allows windows paths to be written without double backslash, while
        retaining the POSIX backslash escape semantics for quotes and escapes.
        é   é   r#   )Ú	enumerateÚappendÚjoin)r   r7   r8   ÚresultÚixÚcharÚ	last_charÚ	next_chars           r   Ú_win32_process_path_backslashz(StrConvert._win32_process_path_backslash5   s«   € ð ˆÝ! %Ñ(Ô(ð 	*ð 	*‰HˆB�Ø�MŠM˜$ÑÔÐØ�vŠ~ˆ~Ø! " q¡&¨2 +Ô.�	Ø Ò&Ð&ØØ! " q¡&¨2°©6 /Ô2�	Ø VÐ$<¨mÐ$<Ð<Ð<Ø—M’M &Ñ)Ô)Ð)øØ�wŠw�v‰ŒÐr   r   c                óf  — |                       dd¦  «        } t          j        dk    }|rDt          j        d¬¦  «        }t                               | |j        |j        |j        z   ¬¦  «        } t          j        | d¬¦  «        }d|_	        d|_
        g }d}	 |D ]v}|rDt          |¦  «        d	k    r1|d         |d
         k    r|                     d¦  «        r
|d	d
…         }|                     |¦  «         |j                             ¦   «         }Œwn-# t           $ r  |                     | |d…         ¦  «         Y nw xY wt          |¦  «        dk    rd| ›d�}t!          |¦  «        ‚|d         dk    r3|d                              d¦  «        r|d         d	d…         |d<   dg|¢}t#          |¦  «        S )zË
        At this point, ``value`` has already been substituted out, and all punctuation / escapes are final.

        Value will typically be stripped of whitespace when coming from an ini file.
        z\#ú#Úwin32T)Úposix)r7   r8   r#   r   r:   éÿÿÿÿ)ú'ú"Nzattempting to parse z into a command failedú-)r%   ÚsysÚplatformÚshlexr   rD   r7   ÚquotesÚ
whitespaceÚwhitespace_splitÚ
commentersÚlenÚ
startswithr=   ÚinstreamÚtellÚ
ValueErrorr   )r   Úis_winÚsr'   ÚargsÚposÚargr5   s           r   Ú
to_commandzStrConvert.to_commandI   sÚ  € ð —’˜e SÑ)Ô)ˆÝ” Ò(ˆØð 	Ý” $Ð'Ñ'Ô'ˆAÝ×<Ò<ØØ”xØœh¨¬Ñ5ð =ñ ô ˆEõ
 ”;˜u¨DÐ1Ñ1Ô1ˆØ$(ˆÔ!Ø ˆÔØˆØˆð	%Øð /ð /�Øð $�c #™hœh¨šl˜l¨s°1¬v¸¸R¼Ò/@Ð/@ÀSÇ^Â^ÐT^ÑE_ÔE_Ð/@à˜a ˜dœ)�CØ—’˜CÑ Ô Ð ØÔ'×,Ò,Ñ.Ô.��ð/øõ ð 	%ð 	%ð 	%Ø�KŠK˜˜c˜d˜dœÑ$Ô$Ð$Ð$Ð$ð	%øøøåˆt‰9Œ9˜Š>ˆ>ØH¨ÐHÐHÐHˆCÝ˜S‘/”/Ð!Ø�Œ7�cŠ>ˆ>˜d 1œg×0Ò0°Ñ5Ô5ˆ>Ø˜1”g˜a˜b˜b”kˆD�‰GØ�<˜$�<ˆDÝ�t‰}Œ}Ðs   ÂA9D Ä'D:Ä9D:r   c                ó®   ‡— ddl mŠ t          t          j        ˆfd„|                      d¦  «        D ¦   «         ¦  «        ¦  «        }t          |¦  «        S )Nr   )Úextend_factorsc              3  ó.   •K  — | ]} ‰|¦  «        V — Œd S r   © )Ú.0Úexprr`   s     €r   ú	<genexpr>z)StrConvert.to_env_list.<locals>.<genexpr>s   s-   øè è € Ð+_Ð+_ÀT¨N¨N¸4Ñ,@Ô,@Ð+_Ð+_Ð+_Ð+_Ð+_Ð+_r   r    )Útox.config.loader.ini.factorr`   Úlistr   Úfrom_iterabler&   r   )r   Úelementsr`   s     @r   Úto_env_listzStrConvert.to_env_listo   s]   ø€ à?Ð?Ð?Ð?Ð?Ð?å�Ô+Ð+_Ð+_Ð+_Ð+_ÈUÏ[Ê[ÐY]ÑM^ÔM^Ð+_Ñ+_Ô+_Ñ_Ô_Ñ`Ô`ˆÝ�xÑ Ô Ð r   >   Ú1ÚonÚyesÚtruezFinal[set[str]]ÚTRUTHFUL_VALUES>   r#   Ú0ÚnoÚoffÚfalseÚFALSE_VALUESÚboolc                ó  — t          | ¦  «                             ¦   «                              ¦   «         }|t          j        v rdS |t          j        v rdS d| ›dd                     t          j        ¦  «        › �}t          |¦  «        ‚)NTFzvalue z' cannot be transformed to bool, valid: z, )	r   r   Úlowerr   ro   rt   r>   Ú
VALID_BOOLr1   )r   Únormr5   s      r   Úto_boolzStrConvert.to_boolz   s|   € å�5‰zŒz×ÒÑ!Ô!×'Ò'Ñ)Ô)ˆØ•:Ô-Ð-Ð-Ø�4Ø•:Ô*Ð*Ð*Ø�5ài�uÐiÐiÀtÇyÂyÕQ[ÔQfÑGgÔGgÐiÐiˆÝ˜‰nŒnÐr   N)r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   )r   r   r   r,   r   r-   )r   r   r7   r   r8   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   ru   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústaticmethodr   r   r)   r+   r6   rD   r^   rj   ro   Ú__annotations__rt   Úsortedrx   rz   rb   r   r   r   r      s~  € € € € € € Ø8Ð8àð"ð "ð "ñ „\ð"ð ðð ð ñ „\ðð ðð ð ñ „\ðð ð6ð 6ð 6ñ „\ð6ð ð)ð )ð )ñ „\ð)ð ðð ð ñ „\ðð& ð#ð #ð #ñ „\ð#ðJ ð!ð !ð !ñ „\ð!ð (BÐ'AÐ'A€OÐAÐAÐAÑAØ$CÐ$CÐ$C€LÐCÐCÐCÑCØ�˜¨,Ñ6Ñ7Ô7€Jàðð ð ñ „\ðð ð r   r   )r   )r~   Ú
__future__r   rO   rM   Ú	itertoolsr   Úpathlibr   Útypingr   r   r	   Útox.config.loader.convertr
   Útox.config.typesr   r   r   r   r   Ú__all__rb   r   r   ú<module>r‰      s÷   ðØ NÐ Nà "Ð "Ð "Ð "Ð "Ð "à €€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /à -Ð -Ð -Ð -Ð -Ð -Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -àð ØÐÐÐÐÐðqð qð qð qð q�˜”ñ qô qð qðh €€€r   