idddlZddlZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm Z dd lm Z dd lm Z ddl Z d d lmZdd lmZddlmZddlmZe rd dlmZdede jfdZdedeeee eeefffdZdeede eeeeeee eeeffffdZdeedefdZdeedeefdZdZ d#deede edeededde eeeeee eeeffff d Zd!ede fd"Z!dS)$N)Path)Dict)Iterable)List)Optional)Sequence)Tuple) TYPE_CHECKING)Union) UsageError)fail absolutepath) commonpath)Configpathreturnc tjt|S#tj$r"}t t||d}~wwxYw)zParse the given generic '.ini' file using legacy IniConfig parser, returning the parsed object. Raise UsageError if the file cannot be parsed. N) iniconfig IniConfigstr ParseErrorr )rexcs M/opt/cloudlinux/venv/lib/python3.11/site-packages/_pytest/config/findpaths.py_parse_ini_configrsV ,"3t99---  ,,,S""+,s #AAAfilepathc|jdkrIt|}d|vr't|dS|jdkriSn|jdkrtt|}d|jvr't|dSd|jvr*t tdd n|jd krtj d krd d l }nd d l }| d} ||}n'#|j$r}t!|d||d }~wwxYw|dididd }|Odt$dt&t(t*t(ffdfd|DSd S)zLoad pytest configuration from the given file path, if supported. Return None if the file does not contain valid pytest configuration. z.inipytest pytest.iniz.cfgz tool:pytest setup.cfg)filenameF)pytracez.toml) rNzutf-8)encodingz: tool ini_optionsvrcNt|tr|nt|SN) isinstancelistr)r)s r make_scalarz/load_config_dict_from_file..make_scalarTs!&q$//;qqSVV;c.i|]\}}||Sr1).0kr)r.s r z.load_config_dict_from_file..Ws'AAA$!QA{{1~~AAAr/)suffixrdictitemsnamesectionsrCFG_PYTEST_SECTIONformatsys version_infotomllibtomli read_textloadsTOMLDecodeErrorr getobjectr rr)rrr> toml_textconfigrresultr.s @rload_config_dict_from_filerH$s&  %h// y  (+113344 4} ,, - F " "%h// I. . . -0668899 9 + + + #**K*@@% P P P P G # #  w & & NNNN # # # #&&&88  <]]9--FF& < < <11C1122 ; <FB''++Hb99==mTRR   z!locate_config..hs1 : : :!3q66#4#4S#9#9 :A : : :r/N)rcwdrparentsis_filerH)rI config_namesargargpathbase config_namep ini_configs r locate_configrZ\s L ; :t : : :D  |33s##/w// 3 3D+ 3 3 ;&99;;3!;A!>!>J!-#Q 22222222  3 3 r>r/pathsc d}|D]L}|s||}||jvs||kr,||jvr|}8t||}||}M|tj}n|r|j}|Sr+)existsrQrrrPrRparent)r[common_ancestorrshareds rget_common_ancestorraws&*O - -{{}}    ""OO$,..$/2I2I000"&#D/::%&,O(**  " "1)0 r/cdtdtfddtdtfddtdtfddtdtfdfd|D}fd |DS) NrNrc,|dS)NrL)rMrNs r is_optionz%get_dirs_from_args..is_options||C   r/c8|ddS)Nz::r)splitrds rget_file_part_from_node_idz6get_dirs_from_args..get_file_part_from_node_idswwt}}Qr/rc<|r|S|jSr+)is_dirr^rs rget_dir_from_pathz-get_dirs_from_args..get_dir_from_paths ;;== K{r/cN |S#t$rYdSwxYw)NF)r]OSErrorrks r safe_existsz'get_dirs_from_args..safe_existss7 ;;==    55 s  $$c3^K|]'}| t|V(dSr+r)r2rTrhres r z%get_dirs_from_args..sY y~~//4455r/c<g|]}| |Sr1r1)r2rrlros rrOz&get_dirs_from_args..s4 T T T++dBSBS T  d # # T T Tr/)rboolr)rIpossible_pathsrlrhreros @@@@rget_dirs_from_argsrus!S!T!!!! c c     $4N U T T T T T T TTr/z][pytest] section in {filename} files is no longer supported, change to [tool:pytest] instead.inifilerootdir_cmd_argrFrcd}t|}|r,t|}|}t|pi}||j}nt |} t | g\}}}||| g| jRD]} | dz r| }na|| gkrt |\}}}|D| |jj } ntj } t | | g}t|r| }|rbttj|}|s"t#d||J|||pifS)Nzsetup.pyz8Directory '{}' not found. Check your '--rootdir' option.)rurrHr^rarZrQrRinvocation_paramsdirrrP is_fs_rootosr expandvarsrjr r;) rvrIrwrFrootdirdirsinipath_inipathinicfgancestorpossible_rootdirrPs rdetermine_setuprs G d # #D+(("*+H55;  "oG&t,,#0(#<#< & ?6%-$A0@$A$A + + $z1::<<.GEH:%%/rs  """"""!!!!!!((((((&&&&&& ,D ,Y%8 , , , ,55 d3c49n--./5555p 4. 8D>8D>4U3S >5J0J+K KL6x~$.UXc]UtDzUUUU<u &*!% **** c]** 3-**c]** X  **  4$c5d3i+@&@!A AB ********Z3$34333333r/