§
    ŒŸjß%  ã                   ó
  — d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZmZ d dlmZ g d	¢Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdeee                  fd„Z e¦   «         dd„¦   «         Zd„ Z G d„ de¦  «        ZdS )é    N)ÚList)ÚPath)Úinference_state_method_cache)Úgoto_importÚload_module_from_path)ÚParserTreeFilter)Ú	NO_VALUESÚValueSet)Úinfer_call_of_leaf))Ú_pytestÚmonkeypatch)r   Úcapture)r   Úlogging)r   Útmpdir)r   Úpytesterc                 ó   ‡ — ˆ fd„}|S )Nc                 ó”   •— |                       ¦   «         dk    r$| j                              ¦   «         dk    rt          S  ‰| |¦  «        S )NÚfixturez_pytest.fixtures)Ú
py__name__Úparent_contextr	   )ÚvalueÚ	argumentsÚcallbacks     €ú`/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/jedi/plugins/pytest.pyÚwrapperzexecute.<locals>.wrapper   sO   ø€ ð ×ÒÑÔ Ò*Ð*ØÔ(×3Ò3Ñ5Ô5Ð9KÒKÐKÝÐàˆx˜˜yÑ)Ô)Ð)ó    © )r   r   s   ` r   Úexecuter      s#   ø€ ð*ð *ð *ð *ð *ð €Nr   c                 ó   ‡ ‡— d„ Šˆ ˆfd„}|S )Nc                 óT  — | j         j        �M|                      ¦   «         }t          d„ |D ¦   «         ¦  «        rt	          j        d„ |D ¦   «         ¦  «        S |S |                      ¦   «         }|                     ¦   «         r|                     ¦   «         S | 	                    ¦   «         S )Nc              3   óT   K  — | ]#}|j                              d ¬¦  «        dk    V — Œ$dS )T©Úinclude_module_names)ÚtypingÚ	GeneratorN)ÚnameÚget_qualified_names©Ú.0Úvs     r   ú	<genexpr>z=infer_anonymous_param.<locals>.get_returns.<locals>.<genexpr>$   sQ   è è € ð $ð $àð ”6×-Ò-À4Ð-ÑHÔHØ-ò.ð $ð $ð $ð $ð $ð $r   c              3   óf   K  — | ],}|                      d ¦  «                             d¦  «        V — Œ-dS )Ú__next__N)Úpy__getattribute__Úexecute_annotationr(   s     r   r+   z=infer_anonymous_param.<locals>.get_returns.<locals>.<genexpr>'   sR   è è € ð *ð *àð ×(Ò(¨Ñ4Ô4×GÒGÈÑMÔMð*ð *ð *ð *ð *ð *r   )
Ú	tree_nodeÚ
annotationÚexecute_with_valuesÚanyr
   Ú	from_setsÚ
as_contextÚis_generatorÚmerge_yield_valuesÚget_return_values)r   ÚresultÚfunction_contexts      r   Úget_returnsz*infer_anonymous_param.<locals>.get_returns!   sÒ   € ØŒ?Ô%Ð1Ø×.Ò.Ñ0Ô0ˆFÝð $ð $à"ð$ñ $ô $ñ $ô $ð õ  Ô)ð *ð *à#ð*ñ *ô *ñ ô ð ð ˆMð
 !×+Ò+Ñ-Ô-ÐØ×(Ò(Ñ*Ô*ð 	8Ø#×6Ò6Ñ8Ô8Ð8à#×5Ò5Ñ7Ô7Ð7r   c                 ó   •— | j         r ‰| ¦  «        S t          | ¦  «        \  }}|rM|                      ¦   «         }t          || j        |¬¦  «        }|r t          j        ˆfd„|D ¦   «         ¦  «        S  ‰| ¦  «        S )N©Úskip_own_modulec              3   ó\   •K  — | ]&}|                      ¦   «         D ]} ‰|¦  «        V — ŒŒ'd S ©N)Úinfer)r)   r   r   r;   s      €r   r+   z9infer_anonymous_param.<locals>.wrapper.<locals>.<genexpr>F   s`   øè è € ð *ð *àØ!(§¢¡¤ð*ð *ð ð  �K Ñ&Ô&ð*ð *ð *ð *ð *ð *ð *r   )Úannotation_nodeÚ _is_a_pytest_param_and_inheritedÚget_root_contextÚ_goto_pytest_fixtureÚstring_namer
   r4   )Ú
param_nameÚis_pytest_paramÚparam_name_is_function_nameÚmoduleÚfixturesÚfuncr;   s        €€r   r   z&infer_anonymous_param.<locals>.wrapper6   sÅ   ø€ àÔ%ð 	$Ø�4˜
Ñ#Ô#Ð#å,¨ZÑ8Ô8ñ 	5ˆÐ4àð 	Ø×0Ò0Ñ2Ô2ˆFÝ+ØØÔ&ð !<ðñ ô ˆHð ð ÝÔ)ð *ð *ð *ð *à#+ð*ñ *ô *ñ ô ð ð
 ˆt�JÑÔÐr   r   )rL   r   r;   s   ` @r   Úinfer_anonymous_paramrM       s8   øø€ ð8ð 8ð 8ð* ð  ð  ð  ð  ð  ð, €Nr   c                 ó   ‡ — ˆ fd„}|S )Nc                 óœ   •— t          | ¦  «        \  }}|r-t          |                      ¦   «         | j        |¬¦  «        }|r|S  ‰| ¦  «        S ©Nr=   )rC   rE   rD   rF   )rG   rH   rI   ÚnamesrL   s       €r   r   z%goto_anonymous_param.<locals>.wrapperP   sk   ø€ å,¨ZÑ8Ô8ñ 	5ˆÐ4àð 	Ý(Ø×+Ò+Ñ-Ô-ØÔ&Ø ;ðñ ô ˆEð
 ð Ø�Øˆt�JÑÔÐr   r   ©rL   r   s   ` r   Úgoto_anonymous_paramrS   O   s#   ø€ ð ð  ð  ð  ð  ð €Nr   c                 ó   ‡ — ˆ fd„}|S )Nc                 óÞ   •— |                       ¦   «         }t          ||¦  «        r<g }t          |¦  «        D ]&}|t          |¦  «                             ¦   «         z  }Œ'|r|S  ‰| ||¦  «        S r@   )rD   Ú_is_pytest_funcÚ_iter_pytest_modulesÚFixtureFilterÚvalues)ÚcontextÚ	func_nameÚdecorator_nodesÚmodule_contextrQ   rL   s        €r   r   z%complete_param_names.<locals>.wrapper`   s…   ø€ Ø ×1Ò1Ñ3Ô3ˆÝ˜9 oÑ6Ô6ð 	ØˆEÝ"6°~Ñ"FÔ"Fð @ð @�Ø� ~Ñ6Ô6×=Ò=Ñ?Ô?Ñ?��Øð Ø�Øˆt�G˜Y¨Ñ8Ô8Ð8r   r   rR   s   ` r   Úcomplete_param_namesr^   _   s#   ø€ ð9ð 9ð 9ð 9ð 9ð €Nr   c                 ó~   — t          | |¬¦  «        D ]*} t          | ¦  «                             |¦  «        }|r|c S Œ+d S rP   )rW   rX   Úget)r]   r&   r>   rQ   s       r   rE   rE   l   sY   € Ý.¨~ÈÐ_Ñ_Ô_ð ð ˆÝ˜nÑ-Ô-×1Ò1°$Ñ7Ô7ˆØð 	ØˆLˆLˆLð	ðð r   c                 óÄ   — | j                              d¦  «        }|€dS |                     ¦   «         }t          |j        j        |¦  «        |j        j        | j        k    fS )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_nameÚsearch_ancestorÚget_decoratorsrV   r&   r   rF   )rG   rb   Ú
decoratorss      r   rC   rC   s   sa   € ð Ô"×2Ò2°9Ñ=Ô=€GØ€Øˆ|Ø×'Ò'Ñ)Ô)€JÝ˜7œ<Ô-¨zÑ:Ô:ØŒÔ˜jÔ4Ò4ð5ð 5r   c                 ó^   — |                       d¦  «        pt          d„ |D ¦   «         ¦  «        S )NÚtestc              3   óB   K  — | ]}d |                      ¦   «         v V — ŒdS )r   N)Úget_code)r)   Úns     r   r+   z"_is_pytest_func.<locals>.<genexpr>„   s/   è è € ÐBÐB¨Qˆy˜AŸJšJ™LœLÐ(ÐBÐBÐBÐBÐBÐBr   )Ú
startswithr3   )r[   r\   s     r   rV   rV   ‚   s9   € Ø×Ò Ñ'Ô'ð CÝÐBÐB°/ÐBÑBÔBÑBÔBðCr   Úreturnc                  óœ   — ddl m}  t          j        dk    r | d¬¦  «        }n | ¦   «                              dd¦  «        }d„ |D ¦   «         S )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)Úgroupr   c                 óB   — g | ]}|j                              d ¦  «        ‘ŒS )ú.)rJ   Úsplit)r)   Úeps     r   ú
<listcomp>z/_find_pytest_plugin_modules.<locals>.<listcomp>”   s&   € Ð?Ð?Ð? RˆBŒI�OŠO˜CÑ Ô Ð?Ð?Ð?r   )Úimportlib.metadataro   ÚsysÚversion_infor`   )ro   Úpytest_entry_pointss     r   Ú_find_pytest_plugin_modulesr}   ‡   sk   € ð 0Ð/Ð/Ð/Ð/Ð/å
Ô˜7Ò"Ð"Ø*˜l°Ð<Ñ<Ô<ÐÐà*˜l™nœn×0Ò0°¸RÑ@Ô@Ðà?Ð?Ð+>Ð?Ñ?Ô?Ð?r   Fc              #   óÂ  ‡K  — |s| V — |                       ¦   «         j        }|��m|                     ¦   «         Š| j                             ¦   «         }d }t          ˆfd„|D ¦   «         ¦  «        �r"‰                     d¦  «        }t          |j        ¦  «        |  	                    ¦   «         k    rž	 t          | j        |¦  «        }|                     ¦   «         }|V — |j                             ¦   «                              d¦  «        }|r1|                     |d         ¦  «        }t!          | |¦  «        E d {V —† n# t"          $ r Y nw xY w‰                     ¦   «         Š|�‰j        |j        k    rn‰}t          ˆfd„|D ¦   «         ¦  «        �°"t$          t'          ¦   «         z   D ]5}	| j                             |	¦  «        D ]}
|
                     ¦   «         V — ŒŒ6d S )Nc              3   óL   •K  — | ]}‰j                              |¦  «        V — Œd S r@   )Úpathrl   )r)   ÚpÚfolders     €r   r+   z'_iter_pytest_modules.<locals>.<genexpr>¤   s3   øè è € Ð>Ð>°�&”+×(Ò(¨Ñ+Ô+Ð>Ð>Ð>Ð>Ð>Ð>r   zconftest.pyÚpytest_pluginsr   )Ú	get_valueÚfile_ioÚget_parent_folderÚinference_stateÚget_sys_pathr3   Úget_file_ior   r€   Ú
py__file__r   r5   r0   Úget_used_namesr`   Úcreate_nameÚ_load_pytest_pluginsÚFileNotFoundErrorÚ_PYTEST_FIXTURE_MODULESr}   Úimport_module)r]   r>   r…   Úsys_pathÚlast_folderÚmÚconftest_moduleÚplugins_listr&   rQ   Úmodule_valuer‚   s              @r   rW   rW   —   s-  øè è € àð ØÐÐÐà×&Ò&Ñ(Ô(Ô0€GØÑØ×*Ò*Ñ,Ô,ˆØ!Ô1×>Ò>Ñ@Ô@ˆð ˆåÐ>Ð>Ð>Ð>°XÐ>Ñ>Ô>Ñ>Ô>ñ 	!Ø×(Ò(¨Ñ7Ô7ˆGÝ�G”LÑ!Ô! ^×%>Ò%>Ñ%@Ô%@Ò@Ð@ð
Ý-¨nÔ.LÈgÑVÔV�AØ&'§l¢l¡n¤n�OØ)Ð)Ð)Ð)à#$¤;×#=Ò#=Ñ#?Ô#?×#CÒ#CÐDTÑ#UÔ#U�LØ#ð NØ.×:Ò:¸<È¼?ÑKÔK˜Ý#7¸ÈÑ#MÔ#MÐMÐMÐMÐMÐMÐMÐMøøÝ(ð ð ð Ø�Dðøøøà×-Ò-Ñ/Ô/ˆFð Ð&¨6¬;¸+Ô:JÒ+JÐ+JØØ ˆKõ' Ð>Ð>Ð>Ð>°XÐ>Ñ>Ô>Ñ>Ô>ñ 	!õ* )Õ+FÑ+HÔ+HÑHð ,ð ,ˆØ*Ô:×HÒHÈÑOÔOð 	,ð 	,ˆLØ×)Ò)Ñ+Ô+Ð+Ð+Ð+Ð+ð	,ð,ð ,s   Â1BD> Ä>
EÅ
Ec              #   óJ  K  — ddl m} |                     ¦   «         D ]…}|                     ¦   «         D ]n}|                     ¦   «         D ]W} ||¦  «        }|rH|                     d¦  «        }| j                             |¦  «        D ]}|                     ¦   «         V — ŒŒXŒoŒ†d S )Nr   )Úget_str_or_noneru   )Újedi.inference.helpersr˜   rA   Ú
py__iter__rv   r‡   r�   r5   )	r]   r&   r˜   ÚinferredÚ	seq_valuer   Úfq_namerQ   r–   s	            r   r�   r�   ¾   sÜ   è è € Ø6Ð6Ð6Ð6Ð6Ð6à—J’J‘L”Lð 8ð 8ˆØ!×,Ò,Ñ.Ô.ð 	8ð 	8ˆIØ"ŸšÑ*Ô*ð 8ð 8�Ø)˜/¨%Ñ0Ô0�Øð 8Ø#ŸMšM¨#Ñ.Ô.�EØ(6Ô(F×(TÒ(TÐUZÑ([Ô([ð 8ð 8˜Ø*×5Ò5Ñ7Ô7Ð7Ð7Ð7Ð7øð8ð	8ð8ð 8r   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )rX   c              #   ó  •‡ K  — t          ¦   «                              |¦  «        D ]f}|j        j        dk    r5t	          ‰ j        |¦  «        }t          ˆ fd„|D ¦   «         ¦  «        r|V — ŒG‰                      ‰ j        |¦  «        r|V — Œgd S )NÚimport_fromc              3   óf   •K  — | ]+}|j         ¯	‰                     |j        |j         ¦  «        V — Œ,d S r@   )rc   Ú_is_fixturer   )r)   ÚinameÚselfs     €r   r+   z(FixtureFilter._filter.<locals>.<genexpr>Ñ   sT   øè è € ð ð àà”ð	Ø×$Ò$ UÔ%9¸5¼?ÑKÔKðð ð ð ð ð r   )ÚsuperÚ_filterÚparentÚtyper   r   r3   r¢   )r¤   rQ   r&   Úimported_namesÚ	__class__s   `   €r   r¦   zFixtureFilter._filterÌ   s¼   øøè è € Ý‘G”G—O’O EÑ*Ô*ð 	ð 	ˆDàŒ{Ô =Ò0Ð0Ý!,¨TÔ-@À$Ñ!GÔ!G�Ýð ð ð ð à!/ðñ ô ñ ô ð ð �J�J�Jøà×!Ò! $Ô"5°tÑ<Ô<ð Ø�
�
�
øð	ð 	r   c                 ó  — |j         }|j        dk    rdS |j         }|j        dk    rdS |j        d         }|j        dk    r|j        }n|g}|D ]½}|j        d         }d|                     ¦   «         v r˜|j        dk    rP|j        d	         }|                     ¦   «         }	|	d
k    rt          ||	d¬¦  «        }
n+|                     |¦  «        }
n|                     |¦  «        }
|
D ]%}|j                             d¬¦  «        dk    r  dS Œ&Œ¾dS )Nrb   FÚ	decoratedr   rf   é   r   Ú	atom_expréÿÿÿÿú)T)Úcut_own_trailerr"   )r   rK   r   )	r§   r¨   Úchildrenrj   Úget_last_leafr   Ú
infer_noder&   r'   )r¤   rZ   r&   rb   r¬   rf   Ú	decoratorÚdotted_nameÚlast_trailerÚ	last_leafrY   r   s               r   r¢   zFixtureFilter._is_fixtureÜ   s]  € Ø”+ˆàŒ<˜9Ò$Ð$Ø�5Ø”Nˆ	ØŒ>˜[Ò(Ð(Ø�5ØÔ'¨Ô*ˆ
ØŒ?˜lÒ*Ð*Ø#Ô,ˆJˆJà$˜ˆJØ#ð 	$ð 	$ˆIØ#Ô,¨QÔ/ˆKà˜K×0Ò0Ñ2Ô2Ð2Ð2ØÔ# {Ò2Ð2ð $/Ô#7¸Ô#;�LØ ,× :Ò :Ñ <Ô <�IØ  CÒ'Ð'Ý!3Ø# YÀð"ñ "ô "˜˜ð ")×!3Ò!3°KÑ!@Ô!@˜˜à$×/Ò/°Ñ<Ô<�FØ#ð $ð $�EØ”z×5Ò5È4Ð5ÑPÔPØAòBð Bà#˜t˜t˜tðBøð ˆur   )Ú__name__Ú
__module__Ú__qualname__r¦   r¢   Ú__classcell__)rª   s   @r   rX   rX   Ë   sG   ø€ € € € € ðð ð ð ð ð "ð "ð "ð "ð "ð "ð "r   rX   )F)rz   r$   r   Úpathlibr   Újedi.inference.cacher   Újedi.inference.importsr   r   Újedi.inference.filtersr   Újedi.inference.base_valuer	   r
   r™   r   r�   r   rM   rS   r^   rE   rC   rV   Ústrr}   rW   r�   rX   r   r   r   ú<module>rÃ      s®  ðØ 
€
€
€
Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à =Ð =Ð =Ð =Ð =Ð =Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð Ð ð	ð 	ð 	ð,ð ,ð ,ð^ð ð ð 
ð 
ð 
ðð ð ð5ð 5ð 5ðCð Cð Cð
@ T¨$¨s¬)¤_ð @ð @ð @ð @ð  ÐÑÔð#,ð #,ð #,ñ  Ôð#,ðL
8ð 
8ð 
8ð3ð 3ð 3ð 3ð 3Ð$ñ 3ô 3ð 3ð 3ð 3r   