§
    öyIf   ã                   óx  — d dl Z d dlmZ d dl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	 d dlm
Z
 d d	lmZ d dl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 dedej        fd„Zdedeeeeeee         f         f                  fd„Zdedee         de
ee         ee         eeeeee         f         f         f         fd„Zdedee         defd„Zdee         dee         fd„ZdZdee         de	e         dee         dede
eee         eeeeee         f         f         f         f
d„Zdedefd „ZdS )!é    N)ÚPath)ÚDict)ÚIterable)ÚList)ÚOptional)ÚSequence)ÚTuple)ÚUnioné   )Ú
UsageError)Úfail©Úabsolutepath)Ú
commonpath©Úsafe_existsÚpathÚreturnc                 ó®   — 	 t          j        t          | ¦  «        ¦  «        S # t           j        $ r"}t	          t          |¦  «        ¦  «        |‚d}~ww xY w)zœParse the given generic '.ini' file using legacy IniConfig parser, returning
    the parsed object.

    Raise UsageError if the file cannot be parsed.
    N)Ú	iniconfigÚ	IniConfigÚstrÚ
ParseErrorr   )r   Úexcs     úL/var/www/piapp/venv/lib/python3.11/site-packages/_pytest/config/findpaths.pyÚ_parse_ini_configr      sV   € ð,ÝÔ"¥3 t¡9¤9Ñ-Ô-Ð-øÝÔð ,ð ,ð ,Ý�˜S™œÑ"Ô"¨Ð+øøøøð,øøøs   ‚ # £A²AÁAÚfilepathc                 ó¼  ‡— | j         dk    rIt          | ¦  «        }d|v r't          |d                              ¦   «         ¦  «        S | j        dk    ri S �n†| j         dk    rtt          | ¦  «        }d|j        v r't          |d                              ¦   «         ¦  «        S d|j        v r*t          t                               d¬¦  «        d¬	¦  «         �n| j         d
k    rüt          j
        dk    rddl}nddl}|                      d¬¦  «        }	 |                     |¦  «        }n'# |j        $ r}t!          | › d|› �¦  «        |‚d}~ww xY w|                     di ¦  «                             di ¦  «                             dd¦  «        }|�Odt$          dt&          t(          t*          t(                   f         fd„Šˆfd„|                     ¦   «         D ¦   «         S dS )z�Load pytest configuration from the given file path, if supported.

    Return None if the file does not contain valid pytest configuration.
    z.iniÚpytestú
pytest.iniz.cfgztool:pytestú	setup.cfg)ÚfilenameF)Úpytracez.toml)é   é   r   Nzutf-8)Úencodingz: ÚtoolÚini_optionsÚvr   c                 óN   — t          | t          ¦  «        r| nt          | ¦  «        S ©N)Ú
isinstanceÚlistr   )r)   s    r   Úmake_scalarz/load_config_dict_from_file.<locals>.make_scalarP   s!   € Ý& q­$Ñ/Ô/Ð;�q�qµS¸±V´VÐ;ó    c                 ó.   •— i | ]\  }}| ‰|¦  «        “ŒS © r1   )Ú.0Úkr)   r.   s      €r   ú
<dictcomp>z.load_config_dict_from_file.<locals>.<dictcomp>S   s'   ø€ ÐAÐAÐA©$¨!¨Q�A�{�{ 1‘~”~ÐAÐAÐAr/   )Úsuffixr   ÚdictÚitemsÚnameÚsectionsr   ÚCFG_PYTEST_SECTIONÚformatÚsysÚversion_infoÚtomllibÚtomliÚ	read_textÚloadsÚTOMLDecodeErrorr   ÚgetÚobjectr
   r   r   )r   r   r>   Ú	toml_textÚconfigr   Úresultr.   s          @r   Úload_config_dict_from_filerH   !   s  ø€ ð „˜&Ò Ð Ý% hÑ/Ô/ˆ	à�yÐ Ð Ý˜	 (Ô+×1Ò1Ñ3Ô3Ñ4Ô4Ð4ð Œ} Ò,Ð,Ø�	ñ -ð 
Œ˜FÒ	"Ð	"Ý% hÑ/Ô/ˆ	à˜IÔ.Ð.Ð.Ý˜	 -Ô0×6Ò6Ñ8Ô8Ñ9Ô9Ð9Ø˜Ô+Ð+Ð+õ Õ#×*Ò*°KÐ*Ñ@Ô@È%ÐPÑPÔPÐPùð 
Œ˜GÒ	#Ð	#ÝÔ˜wÒ&Ð&ØˆNˆNˆNˆNà#Ð#Ð#Ð#à×&Ò&°Ð&Ñ8Ô8ˆ	ð	<Ø—]’] 9Ñ-Ô-ˆFˆFøØÔ&ð 	<ð 	<ð 	<Ý Ð1Ð1¨CÐ1Ð1Ñ2Ô2¸Ð;øøøøð	<øøøð —’˜F BÑ'Ô'×+Ò+¨H°bÑ9Ô9×=Ò=¸mÈTÑRÔRˆØÐð<�vð <­%µµT½#´Y°Ô*?ð <ð <ð <ð <ð BÐAÐAÐA°&·,²,±.´.ÐAÑAÔAÐAàˆ4s   ÄD& Ä&
E
Ä0EÅE
Úinvocation_dirÚargsc                 ó(  — g d¢}d„ |D ¦   «         }|s| g}d}|D ]h}t          |¦  «        }|g|j        ¢R D ]K}|D ]F}||z  }|                     ¦   «         r+|j        dk    r|€|}t	          |¦  «        }	|	�|||	fc c c S ŒGŒLŒi|�
|j        |i fS ddi fS )zxSearch in the list of arguments for a valid ini-file for pytest,
    and return a tuple of (rootdir, inifile, cfg-dict).)r    z.pytest.iniúpyproject.tomlztox.inir!   c                 óV   — g | ]&}t          |¦  «                             d ¦  «        °$|‘Œ'S )ú-)r   Ú
startswith)r2   Úxs     r   ú
<listcomp>z!locate_config.<locals>.<listcomp>e   s1   € Ð:Ð:Ð:�!¥3 q¡6¤6×#4Ò#4°SÑ#9Ô#9Ð:ˆAÐ:Ð:Ð:r/   NrL   )r   ÚparentsÚis_filer8   rH   Úparent)
rI   rJ   Úconfig_namesÚfound_pyproject_tomlÚargÚargpathÚbaseÚconfig_nameÚpÚ
ini_configs
             r   Úlocate_configr]   X   s  € ðð ð €Lð ;Ð:�tÐ:Ñ:Ô:€DØð  ØÐˆØ+/ÐØð 
3ð 
3ˆÝ˜sÑ#Ô#ˆØÐ/˜wœÐ/Ð/ð 	3ð 	3ˆDØ+ð 3ð 3�Ø˜;Ñ&�Ø—9’9‘;”;ð 3Ø”vÐ!1Ò1Ð1Ð6JÐ6RØ/0Ð,Ý!;¸AÑ!>Ô!>�JØ!Ð-Ø# Q¨
Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2øð3ð	3ð Ð'Ø#Ô*Ð,@À"ÐDÐDØ��rˆ>Ðr/   Úpathsc                 óè   — d }|D ]L}|                      ¦   «         sŒ|€|}Œ||j        v s||k    rŒ,||j        v r|}Œ8t          ||¦  «        }|�|}ŒM|€| }n|                     ¦   «         r|j        }|S r+   )ÚexistsrR   r   rS   rT   )rI   r^   Úcommon_ancestorr   Úshareds        r   Úget_common_ancestorrc   y   s±   € ð '+€OØð -ð -ˆØ�{Š{‰}Œ}ð 	ØØÐ"Ø"ˆOˆOà $¤,Ð.Ð.°$¸/Ò2IÐ2IØØ˜Ô0Ð0Ð0Ø"&��å# D¨/Ñ:Ô:�ØÐ%Ø&,�OøØÐØ(ˆˆØ	×	 Ò	 Ñ	"Ô	"ð 1Ø)Ô0ˆØÐr/   c                 ó®   ‡‡‡— dt           dt          fd„Šdt           dt           fd„Šdt          dt          fd„Šˆˆfd„| D ¦   «         }ˆfd„|D ¦   «         S )	NrP   r   c                 ó,   — |                       d¦  «        S )NrN   )rO   ©rP   s    r   Ú	is_optionz%get_dirs_from_args.<locals>.is_option”   s   € Ø�|Š|˜CÑ Ô Ð r/   c                 ó8   — |                       d¦  «        d         S )Nz::r   )Úsplitrf   s    r   Úget_file_part_from_node_idz6get_dirs_from_args.<locals>.get_file_part_from_node_id—   s   € Ø�wŠw�t‰}Œ}˜QÔÐr/   r   c                 ó<   — |                       ¦   «         r| S | j        S r+   )Úis_dirrT   )r   s    r   Úget_dir_from_pathz-get_dirs_from_args.<locals>.get_dir_from_pathš   s   € Ø�;Š;‰=Œ=ð 	ØˆKØŒ{Ðr/   c              3   ó^   •K  — | ]'} ‰|¦  «        °t           ‰|¦  «        ¦  «        V — Œ(d S r+   r   )r2   rW   rj   rg   s     €€r   ú	<genexpr>z%get_dirs_from_args.<locals>.<genexpr>    sY   øè è € ð ð àØˆy˜‰~Œ~ðÝÐ/Ð/°Ñ4Ô4Ñ5Ô5ðð ð ð ð ð r/   c                 óD   •— g | ]}t          |¦  «        ¯ ‰|¦  «        ‘ŒS r1   r   )r2   r   rm   s     €r   rQ   z&get_dirs_from_args.<locals>.<listcomp>¦   s2   ø€ ÐTÐTÐT¨Å+ÈdÑBSÔBSÐTÐÐ˜dÑ#Ô#ÐTÐTÐTr/   )r   Úboolr   )rJ   Úpossible_pathsrm   rj   rg   s     @@@r   Úget_dirs_from_argsrs   “   sµ   øøø€ ð!•Sð !�Tð !ð !ð !ð !ð ¥cð  ­cð  ð  ð  ð  ð¥ð ­ð ð ð ð ðð ð ð ð àðñ ô €Nð UÐTÐTÐT°ÐTÑTÔTÐTr/   z][pytest] section in {filename} files is no longer supported, change to [tool:pytest] instead.ÚinifileÚrootdir_cmd_argc                 ód  — d}t          |¦  «        }| r,t          | ¦  «        }|}t          |¦  «        pi }|€|j        }n’t	          ||¦  «        }	t          ||	g¦  «        \  }}}|€k|€i|	g|	j        ¢R D ]}
|
dz                       ¦   «         r|
} nAŒ||	gk    rt          ||¦  «        \  }}}|€#t	          |||	g¦  «        }t          |¦  «        r|	}|rSt          t          j
                             |¦  «        ¦  «        }|                     ¦   «         st          d|› d�¦  «        ‚|€J ‚|||pi fS )a”  Determine the rootdir, inifile and ini configuration values from the
    command line arguments.

    :param inifile:
        The `--inifile` command line argument, if given.
    :param args:
        The free command line arguments.
    :param rootdir_cmd_arg:
        The `--rootdir` command line argument, if given.
    :param invocation_dir:
        The working directory when pytest was invoked.
    Nzsetup.pyzDirectory 'z+' not found. Check your '--rootdir' option.)rs   r   rH   rT   rc   r]   rR   rS   Ú
is_fs_rootÚosr   Ú
expandvarsrl   r   )rt   rJ   ru   rI   ÚrootdirÚdirsÚinipath_ÚinipathÚinicfgÚancestorÚpossible_rootdirs              r   Údetermine_setupr�   ¬   s—  € ð& €GÝ˜dÑ#Ô#€DØð +Ý Ñ(Ô(ˆØ"*ˆÝ+¨HÑ5Ô5Ð;¸ˆØÐ"Ø”oˆGøå& ~°tÑ<Ô<ˆÝ#0°À(ÀÑ#LÔ#LÑ ˆ�˜&Øˆ?˜Ð6Ø%-Ð$A°Ô0@Ð$AÐ$Að +ð +Ð Ø$ zÑ1×:Ò:Ñ<Ô<ð Ø.�GØ�Eðð ˜H˜:Ò%Ð%Ý/<¸^ÈTÑ/RÔ/RÑ,�G˜W fØ�?Ý1Ø&¨¸Ð(Bñô �Gõ " 'Ñ*Ô*ð +Ø"*˜Øð Ý�rœw×1Ò1°/ÑBÔBÑCÔCˆØ�~Š~ÑÔð 	ÝØR˜gÐRÐRÐRñô ð ð ÐÐÐØ�G˜V˜\ rÐ)Ð)r/   r[   c                 ó‚   — t           j                             t          | ¦  «        ¦  «        d         t           j        k    S )z‡
    Return True if the given path is pointing to the root of the
    file system ("/" on Unix and "C:\\" on Windows for example).
    r   )rx   r   Ú
splitdriver   Úsep)r[   s    r   rw   rw   â   s,   € õ
 Œ7×Ò�c !™fœfÑ%Ô% aÔ(­B¬FÒ2Ð2r/   ) rx   Úpathlibr   r<   Útypingr   r   r   r   r   r	   r
   r   Ú
exceptionsr   Ú_pytest.outcomesr   Ú_pytest.pathlibr   r   r   r   r   r   rH   r]   rc   rs   r:   r�   rq   rw   r1   r/   r   ú<module>rŠ      sà  ðØ 	€	€	€	Ø Ð Ð Ð Ð Ð Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð à "Ð "Ð "Ð "Ð "Ð "Ø !Ð !Ð !Ð !Ð !Ð !Ø (Ð (Ð (Ð (Ð (Ð (Ø &Ð &Ð &Ð &Ð &Ð &Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'ð	,˜Dð 	, YÔ%8ð 	,ð 	,ð 	,ð 	,ð4Øð4àˆd�3˜˜c 4¨¤9˜nÔ-Ð-Ô.Ô/ð4ð 4ð 4ð 4ðnØðà
�4Œ.ðð ˆ8�DŒ>˜8 Dœ>¨4°°U¸3ÀÀSÄ	¸>Ô5JÐ0JÔ+KÐKÔLðð ð ð ðBØðà�DŒ>ðð 
ðð ð ð ð4U˜X cœ]ð U¨t°D¬zð Uð Uð Uð Uð, uÐ ð3*à�cŒ]ð3*ð �3Œ-ð3*ð ˜c”]ð	3*ð
 ð3*ð ˆ4�˜$”  c¨5°°d¸3´i°Ô+@Ð&@Ô!AÐAÔBð3*ð 3*ð 3*ð 3*ðl3�$ð 3˜4ð 3ð 3ð 3ð 3ð 3ð 3r/   