o
    ªZh""  ã                   @   sR  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 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G dd„ deƒZdeddfdd„Zejdddedeef fdd„ƒZdeddfdd„Zdedee	eef  fdd„Zdeddfdd„ZdgZdedee fdd „Zdedee fd!d"„ZdS )#z3Version info, help messages, tracing configuration.é    )ÚActionN)Ú	Generator)ÚList)ÚOptional)ÚUnion)ÚConfig)ÚExitCode)Ú	PrintHelp)ÚParser)ÚTerminalReporterc                       s,   e Zd ZdZd‡ fdd„	Zd	dd„Z‡  ZS )
Ú
HelpActiona}  An argparse Action that will raise an exception in order to skip the
    rest of the argument parsing when --help is passed.

    This prevents argparse from quitting due to missing required arguments
    when any are defined, for example by ``pytest_addoption``.
    This is similar to the way that the builtin argparse --help option is
    implemented by raising SystemExit.
    NFc                    s   t ƒ j||d|d|d d S )NTr   )Úoption_stringsÚdestÚconstÚdefaultÚnargsÚhelp)ÚsuperÚ__init__)Úselfr   r   r   r   ©Ú	__class__© úI/var/www/html/lang_env/lib/python3.10/site-packages/_pytest/helpconfig.pyr      s   
úzHelpAction.__init__c                 C   s&   t || j| jƒ t|jddƒrt‚d S )NZafter_preparseF)Úsetattrr   r   ÚgetattrÚ_parserr	   )r   ÚparserÚ	namespaceÚvaluesÚoption_stringr   r   r   Ú__call__'   s   ÿzHelpAction.__call__)NFN)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r!   Ú__classcell__r   r   r   r   r      s    	
r   r   Úreturnc              	   C   sŽ   |   d¡}|jddddddd |jd	d
tddd |jdddg ddd |jdddddd |jddddddd d! |jd"d#d$dd%d& d S )'NZdebugconfigz	--versionz-VÚcountr   ÚversionzoDisplay pytest version and information about plugins. When given twice, also display information about plugins.)Úactionr   r   r   z-hz--helpr   z(Show help message and configuration info)r*   r   r   z-pÚappendÚpluginsÚnamez‰Early-load given plugin module name or entry point (multi-allowed). To avoid loading of plugins, use the `no:` prefix, e.g. `no:doctest`.)r*   r   r   Úmetavarr   z--traceconfigz--trace-configÚ
store_trueFz)Trace considerations of conftest.py files)r*   r   r   z--debugÚstoreú?zpytestdebug.logÚdebugZDEBUG_FILE_NAMEzšStore internal tracing debug information in this log file. This file is opened with 'w' and truncated as a result, care advised. Default: pytestdebug.log.)r*   r   r   r   r.   r   z-oz--override-iniZoverride_iniz^Override ini option with "option=value" style, e.g. `-o xfail_strict=True -o cache_dir=cache`.)r   r*   r   )ZgetgroupZ	addoptionZ
_addoptionr   )r   Úgroupr   r   r   Úpytest_addoption/   s^   
ú	ûú
ûù
ûr4   T)Úwrapperc               
   #   s¤    d V ‰ ˆ j jrPˆ j j} t| ddd‰ˆ d tjd tt	t
jƒ¡ˆ jjt ¡ ˆ jj¡¡ ˆ jj ˆj¡ ˆ j ¡ ‰t
j d|  ¡ d
‡ ‡‡fdd	„}ˆ  |¡ ˆ S )NÚwzutf-8)Úencodingz@versions pytest-{}, python-{}
invocation_dir={}
cwd={}
args={}

Ú.z'writing pytest debug information to %s
r'   c                      s2   ˆ  ¡  tj dˆj ¡ ˆ jj d ¡ ˆƒ  d S )Nz%wrote pytest debug information to %s
)ÚcloseÚsysÚstderrÚwriter-   ÚtraceÚrootÚ	setwriterr   ©ÚconfigZ	debugfileZundo_tracingr   r   Úunset_tracing}   s   
z+pytest_cmdline_parse.<locals>.unset_tracing)r'   N)Úoptionr2   Úopenr<   ÚformatÚpytestÚ__version__ÚjoinÚmapÚstrr:   Úversion_infoZinvocation_paramsÚdirÚosÚgetcwdÚargsr=   r>   r?   ÚpluginmanagerZenable_tracingr;   Zadd_cleanup)ÚpathrB   r   r@   r   Úpytest_cmdline_parseg   s*   €ûþ


rR   rA   c                 C   sr   | j jdkr,tj dtj› dtj› d¡ t| ƒ}|r(|D ]}tj |d ¡ qd S d S tj dtj› d¡ d S )Né   zThis is pytest version z, imported from Ú
zpytest )	rC   r)   r:   Ústdoutr<   rF   rG   Ú__file__Úgetpluginversioninfo)rA   Ú
plugininfoÚliner   r   r   Úshowversionˆ   s   ÿþrZ   c                 C   s@   | j jdkrt| ƒ dS | j jr|  ¡  t| ƒ |  ¡  dS d S )Nr   )rC   r)   rZ   r   Z_do_configureÚshowhelpZ_ensure_unconfigure)rA   r   r   r   Úpytest_cmdline_main•   s   r\   c                 C   s   dd l }| j d¡}|d usJ ‚|j}| | jj ¡ ¡ | ¡  | d¡ | ¡  |j	}d}d| }| jj
D ]|}| jj| \}}	}
|	d u rGd}	|d u rRtd|› ƒ‚|› d|	› d	}| d
| ¡ t|ƒ}||d kr„| ¡  |j||||dd}|D ]}| |¡ q{q6| d|| d  ¡ |j||| dd}|r²| |d ¡ |dd … D ]	}| || ¡ q¨q6| ¡  | d¡ g d¢}|D ]\}}| d|d›d|› ¡ qÂ| ¡  | ¡  | d¡ | d¡ | d¡ |j dg ¡D ]}|jd|j dd qñd S )Nr   ZterminalreporterzY[pytest] ini-options in the first pytest.ini|tox.ini|setup.cfg|pyproject.toml file found:é   ú Ústringz!help argument cannot be None for z (z):z  %sé   F)Úinitial_indentÚsubsequent_indentÚbreak_on_hyphensé   )rc   rS   zEnvironment variables:))ZPYTEST_ADDOPTSzExtra command line options)ZPYTEST_PLUGINSz.Comma-separated plugins to load during startup)ZPYTEST_DISABLE_PLUGIN_AUTOLOADz"Set to disable plugin auto-loading)ZPYTEST_DEBUGz1Set to enable debug tracing of pytest's internalsú  z<24z/to see available markers type: pytest --markersz1to see available fixtures type: pytest --fixtureszˆ(shown according to specified file_or_dir or current dir if not specified; fixtures with leading '_' are only shown with the '-v' optionÚwarningsz
warning : T)Úred)ÚtextwraprP   Z
get_pluginZ_twr<   r   Z	optparserÚformat_helprY   Z	fullwidthZ	_ininamesZ_inidictÚ	TypeErrorÚlenÚwrapÚstatsÚgetÚmessage)rA   rh   ÚreporterZtwÚcolumnsZ
indent_lenÚindentr-   r   Útyper   ÚspecZspec_lenZ	helplinesrY   ÚwrappedÚvarsZwarningreportr   r   r   r[   ¡   st   ÿÿûÿ€


ÿr[   )Zpytest_pluginszlist of plugin names to loadc                 C   sd   g }| j  ¡ }|r0| d¡ |D ]\}}t|dt|ƒƒ}|j› d|j› d|› }| d| ¡ q|S )Nzsetuptools registered plugins:rV   ú-z at re   )rP   Zlist_plugin_distinfor+   r   ÚreprÚproject_namer)   )rA   ÚlinesrX   ÚpluginÚdistÚlocÚcontentr   r   r   rW   ñ   s   

rW   c                 C   sœ   g }| j js
| j jr| dtj› ¡ t| ƒ}|r| |¡ | j jrL| d¡ | j 	¡ }|D ]\}}t
|dƒr;|j}nt|ƒ}| d|d›d|› ¡ q.|S )Nzusing: pytest-zactive plugins:rV   z    z<20z: )rC   r2   Ztraceconfigr+   rF   rG   rW   ÚextendrP   Zlist_name_pluginÚhasattrrV   rx   )rA   rz   ZverinfoÚitemsr-   r{   Úrr   r   r   Úpytest_report_headerý   s   



rƒ   )r%   Úargparser   rM   r:   Útypingr   r   r   r   Z_pytest.configr   r   r	   Z_pytest.config.argparsingr
   Z_pytest.terminalr   rF   r   r4   ZhookimplrR   rZ   Úintr\   r[   Zconftest_optionsrJ   rW   rƒ   r   r   r   r   Ú<module>   s0   
8 M