uBFj% ddlZddlmZddlmZddlmZddlmZm Z ddl m Z ddl m Z mZddlmZgd Zd Zd Zd Zd ZdZdZdZdeeefdZeddZdZGdde ZdS)N)List)Path)inference_state_method_cache) goto_importload_module_from_path)ParserTreeFilter) NO_VALUESValueSet)infer_call_of_leaf))_pytest monkeypatch)r capture)r logging)r tmpdir)r pytestercfd}|S)Nc|dkr$|jdkrtS||S)Nfixturez_pytest.fixtures) py__name__parent_contextr )value argumentscallbacks AC:\PYTHON\_runtimes\venv\Lib\site-packages\jedi/plugins/pytest.pywrapperzexecute..wrappersO      * *(33559KKK xy))))rrs` rexecuters#***** Nrcdfd}|S)NcT|jjM|}td|Drt jd|DS|S|}|r|S| S)Nc3TK|]#}|jddkV$dS)Tinclude_module_names)typing GeneratorN)nameget_qualified_names.0vs r z=infer_anonymous_param..get_returns..$sQ$$6--4-HH-.$$$$$$rc3fK|],}|ddV-dS)__next__N)py__getattribute__execute_annotationr(s rr+z=infer_anonymous_param..get_returns..'sR**((44GGMM******r) tree_node annotationexecute_with_valuesanyr from_sets as_context is_generatormerge_yield_valuesget_return_values)rresultfunction_contexts r get_returnsz*infer_anonymous_param..get_returns!s ? % 1..00F$$"$$$$$  )**#***M !++--  ( ( * * 8#6688 8#5577 7rc|jr |St|\}}|rM|}t||j|}|r t jfd|DS|S)Nskip_own_modulec3\K|]&}|D]}|V'dSN)infer)r)rrr;s rr+z9infer_anonymous_param..wrapper..Fs`**!(** K&&*******r)annotation_node _is_a_pytest_param_and_inheritedget_root_context_goto_pytest_fixture string_namer r4) param_nameis_pytest_paramparam_name_is_function_namemodulefixturesfuncr;s rrz&infer_anonymous_param..wrapper6s  % $4 ## # ,Z 8 8 54  0022F+&!< H )****#+*** tJrr)rLrr;s` @rinfer_anonymous_paramrM s8888*      , Nrcfd}|S)Nct|\}}|r-t||j|}|r|S|SNr=)rCrErDrF)rGrHrInamesrLs rrz%goto_anonymous_param..wrapperPsk ,Z 8 8 54  (++--& ;E   tJrrrLrs` rgoto_anonymous_paramrSOs#       Nrcfd}|S)Nc|}t||r.wrapper`s 1133 9o 6 6 E"6~"F"F @ @~66==???  tGY888rrrRs` rcomplete_param_namesr^_s#99999 Nrc~t||D]*}t||}|r|cS+dSrP)rWrXget)r]r&r>rQs rrErElsY.~___n--11$77  LLL rc|jd}|dS|}t|jj||jj|jkfS)z Pytest params are either in a `test_*` function or have a pytest fixture with the decorator @pytest.fixture. This is a heuristic and will work in most cases. funcdefN)FF) tree_namesearch_ancestorget_decoratorsrVr&rrF)rGrb decoratorss rrCrCssa"229==G|''))J 7<-z : : j44 55rc^|dptd|DS)Ntestc3BK|]}d|vVdS)rN)get_code)r)ns rr+z"_is_pytest_func..s/BBQyAJJLL(BBBBBBr) startswithr3)r[r\s rrVrVs9    ' ' C BB/BBB B BCrreturncddlm}tjdkr |d}n|dd}d|DS)z Finds pytest plugin modules hooked by setuptools entry points See https://docs.pytest.org/en/stable/how-to/writing_plugins.html#setuptools-entry-points r) entry_points) pytest11)grouprcBg|]}|jdS).)rJsplit)r)eps r z/_find_pytest_plugin_modules..s& ? ? ?RBIOOC ? ? ?r)importlib.metadatarosys version_infor`)ropytest_entry_pointss r_find_pytest_plugin_modulesr}sk 0///// 7""*l<<<*lnn00R@@ ? ?+> ? ? ??rFc# K|s|V|j}|m| |j}d}t fd|Dr" d}t|j| kr t|j|}| }|V|j d}|r1||d}t!||Ed{Vn#t"$rYnwxYw  | j|jkrn }t fd|D"t$t'zD]5} |j| D]} | V6dS)Nc3LK|]}j|VdSr@)pathrl)r)pfolders rr+z'_iter_pytest_modules..s3>>&+((++>>>>>>rz conftest.pypytest_pluginsr) get_valuefile_ioget_parent_folderinference_state get_sys_pathr3 get_file_iorr py__file__rr5r0get_used_namesr` create_name_load_pytest_pluginsFileNotFoundError_PYTEST_FIXTURE_MODULESr} import_module) r]r>rsys_path last_foldermconftest_module plugins_listr&rQ module_valuers @rrWrWs- &&((0G**,,!1>>@@ >>>>X>>>>> !((77GGL!!^%>%>%@%@@@ -n.LgVVA&'llnnO))))#$;#=#=#?#?#C#CDT#U#UL#N.::<?KK#7#M#MMMMMMMM(D--//F&6;+:J+J+J K'>>>>X>>>>> !*)+F+H+HH,,*:HHOO , ,L))++ + + + + ,,,s1B D>> E  E c#JKddlm}|D]}|D]n}|D]W}||}|rH|d}|j|D]}|VXodS)Nr)get_str_or_noneru)jedi.inference.helpersrrA py__iter__rvrrr5) r]r&rinferred seq_valuerfq_namerQrs rrrs666666JJLL88!,,.. 8 8I"** 8 8)/%008#MM#..E(6(F(T(TUZ([([88 *55777777  8 888rc$eZdZfdZdZxZS)rXc#Kt|D]f}|jjdkr5t j|}t fd|Dr|VGj|r|VgdS)N import_fromc3fK|]+}|j |j|jV,dSr@)rc _is_fixturer)r)inameselfs rr+z(FixtureFilter._filter..sT $$U%95?KKr)super_filterparenttyperrr3r)rrQr&imported_names __class__s` rrzFixtureFilter._filtersGGOOE**  D{=00!,T-@$!G!G!/ JJJ!!$"5t<<    rc|j}|jdkrdS|j}|jdkrdS|jd}|jdkr|j}n|g}|D]}|jd}d|vr|jdkrP|jd }|} | d krt || d } n+||} n||} | D]%} | jd dkrd S&dS)NrbF decoratedrrfr atom_expr)T)cut_own_trailerr")r rKr) rrchildrenrj get_last_leafr infer_noder&r') rrZr&rbrrf decorator dotted_name last_trailer last_leafrYrs rrzFixtureFilter._is_fixtures]+ <9 $ $5N >[ ( (5'* ?l * *#,JJ$J# $ $I#,Q/KK002222#{22$/#7#;L , : : < rs ======EEEEEEEE33333399999999555555   ,,,^       5 5 5CCC @T$s)_ @ @ @ @ #,#,#, #,L 8 8 833333$33333r