o
    g                    @   s4  	 d dl mZ d dlmZ d dlmZ d dlZd dlZd dlZd dlZd dl	Z	d dl
Z	d dlZ	d dlZd dlZd dlZd dlZd dlZdd ZG dd dZG d	d
 d
eZG dd dZdd Zdd ZG dd dZG dd dejZdd ZG dd dZdd Zdd Zeedre  sdd Z!d d! Z"d"d# Z#d$d% Z$d&d' Z%G d(d) d)Z&e&d*d+ Z'd,d- Z(d.d/ Z)G d0d1 d1e	j*j+e	j*j,Z-G d2d3 d3Z.ej/d4d5 Z0d6d7 Z1d8d9 Z2ze3d: W n	 e4y   Y nw d;d< Z5d=d> Z6d?d@ Z7dAdB Z8dCdD Z9e:dEkrdFej;v re9dG dS e8  dS dS )H    )support)import_helper)	os_helperNc                 C   s
   	 | |  S N vr   r   G/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_doctest.pysample_func   s   r
   c                   @   s`   e Zd Z	 dd Zdd Zdd Zdd ZeeZd	d
 Ze	eZe
eddZG dd dZdS )SampleClassc                 C      	 || _ d S r   valselfr   r   r   r	   __init__7      
zSampleClass.__init__c                 C      	 t | j| j S r   )r   r   r   r   r   r	   double>      zSampleClass.doublec                 C      	 | j S r   r   r   r   r   r	   getE      zSampleClass.getc                 C   s
   	 | d S )N   r   r   r   r   r	   a_staticmethodL   s   zSampleClass.a_staticmethodc                 C   s
   	 |d S )N   r   )clsr   r   r   r	   a_classmethodT   s   zSampleClass.a_classmethodzB
        >>> print(SampleClass(22).a_property)
        22
        )docc                   @   s(   e Zd Z	 d	ddZdd Zdd ZdS )
zSampleClass.NestedClassr   c                 C   r   r   r   r   r   r   r	   r   j   r   z SampleClass.NestedClass.__init__c                 C   s   t | j| j S r   )r   NestedClassr   r   r   r   r	   squarep      zSampleClass.NestedClass.squarec                 C   s   | j S r   r   r   r   r   r	   r   r   s   zSampleClass.NestedClass.getN)r   )__name__
__module____qualname__r   r!   r   r   r   r   r	   r    c   s
    
r    N)r#   r$   r%   r   r   r   r   staticmethodr   classmethodpropertyZ
a_propertyr    r   r   r   r	   r   '   s    r   c                   @   s&   e Zd Z	 dd Zdd Zdd ZdS )SampleNewStyleClassc                 C   r   r   r   r   r   r   r	   r   |   r   zSampleNewStyleClass.__init__c                 C   r   r   )r)   r   r   r   r   r	   r      r   zSampleNewStyleClass.doublec                 C   r   r   r   r   r   r   r	   r      r   zSampleNewStyleClass.getN)r#   r$   r%   r   r   r   r   r   r   r	   r)   u   s
    r)   c                   @   s   e Zd Z	 dd Zdd ZdS )
_FakeInputc                 C   s
   || _ d S r   )lines)r   r+   r   r   r	   r      s   
z_FakeInput.__init__c                 C   s   | j d}t| |d S )Nr   
)r+   popprint)r   liner   r   r	   readline   s   z_FakeInput.readlineN)r#   r$   r%   r   r0   r   r   r   r	   r*      s    r*   c                   C      d S r   r   r   r   r   r	   test_Example       r2   c                   C   r1   r   r   r   r   r   r	   test_DocTest!  r3   r4   c                   @   s&   e Zd Zdd Zejrdd ZdS dS )test_DocTestFinderc                   C   r1   r   r   r   r   r   r	   basics  r3   ztest_DocTestFinder.basicsc                   C   r1   r   r   r   r   r   r	   non_Python_modules  r3   z%test_DocTestFinder.non_Python_modulesN)r#   r$   r%   r6   int__doc__r7   r   r   r   r	   r5     s     nr5   c                   @      e Zd Zdd Zdd ZdS )TestDocTestFinderc              
   C   sZ   ddl m} td}||jd< z
tj|dd W d S  ty, } ztd|d }~ww )Nr   )callZdummyZinject_callT	verbosityzDoctest unwrap failed)	Zunittest.mockr<   types
ModuleType__dict__r   run_doctest
ValueErrorZ
TestFailed)r   r<   Zdummy_moduleer   r   r	   test_issue35753  s   

z!TestDocTestFinder.test_issue35753c              
   C   s   d}t  Z}tj||}t| tj| zt	|}W t
| tj  nt
| tj  w tjdd}tjdd}| t||d | t||d W d    d S 1 scw   Y  d S )NZdoctest_empty_pkgF)Zexclude_emptyTr   r   )tempfileTemporaryDirectoryospathjoinmkdirsysappend	importlibimport_moduler   Zforgetr-   doctestZDocTestFinderZassertEquallenfind)r   pkg_nameZ
parent_dirZpkg_dirmodZinclude_empty_finderZexclude_empty_finderr   r   r	   test_empty_namespace_package  s    



"z.TestDocTestFinder.test_empty_namespace_packageN)r#   r$   r%   rE   rU   r   r   r   r	   r;     s    r;   c                   C   r1   r   r   r   r   r   r	   test_DocTestParser  r3   rV   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )test_DocTestRunnerc                   C   r1   r   r   r   r   r   r	   r6     r3   ztest_DocTestRunner.basicsc                   C   r1   r   r   r   r   r   r	   verbose_flagQ  r3   ztest_DocTestRunner.verbose_flagc                   C   r1   r   r   r   r   r   r	   
exceptions  r3   ztest_DocTestRunner.exceptionsc                   C   r1   r   r   r   r   r   r	   displayhook  r3   ztest_DocTestRunner.displayhookc                   C   r1   r   r   r   r   r   r	   optionflags  r3   ztest_DocTestRunner.optionflagsc                   C   r1   r   r   r   r   r   r	   option_directivesP  r3   z$test_DocTestRunner.option_directivesN)	r#   r$   r%   r6   rX   rY   rZ   r[   r\   r   r   r   r	   rW     s    =C o   4rW   c                   C   r1   r   r   r   r   r   r	   test_testsource(  r3   r]   c                   C   r1   r   r   r   r   r   r	   
test_debugP  r3   r^   gettracec                   C   r1   r   r   r   r   r   r	   test_pdb_set_traceo     r`   c                   C   r1   r   r   r   r   r   r	   test_pdb_set_trace_nested  ra   rb   c                   C   r1   r   r   r   r   r   r	   test_DocTestSuiteK  ra   rc   c                   C   r1   r   r   r   r   r   r	   test_DocFileSuite  ra   rd   c                   C   r1   r   r   r   r   r   r	   test_trailing_space_in_testf	  ra   re   c                   @   r:   )Wrapperc                 C   s   || _ t| | d S r   )func	functoolsupdate_wrapper)r   rg   r   r   r	   r   p	  s   zWrapper.__init__c                 O   s   | j |i | d S r   )rg   )r   argskwargsr   r   r	   __call__t	  s   zWrapper.__call__N)r#   r$   r%   r   rl   r   r   r   r	   rf   o	  s    rf   c                   C   r1   r   r   r   r   r   r	   test_look_in_unwrappedw	  s   rm   c                   C   r1   r   r   r   r   r   r	   test_unittest_reportflags	  ra   rn   c                   C   r1   r   r   r   r   r   r	   test_testfile	  r3   ro   c                   @   s   e Zd ZdddZdd ZdS )TestImporterNc                 C   s   t jj||| dS )N)loader)rN   utilspec_from_file_location)r   fullnamerI   targetr   r   r	   	find_spec
  r"   zTestImporter.find_specc                 C   s8   t |dd}| W  d    S 1 sw   Y  d S )Nrb)mode)openread)r   rI   fr   r   r	   get_data
  s   $zTestImporter.get_datar   )r#   r$   r%   rv   r|   r   r   r   r	   rp   
  s    
rp   c                   @   r:   )TestHookc                 C   sl   t jd d  | _t jd d  | _t jd d  | _t j| t j  t j	 | _
t | _t j| j d S r   )rL   rI   sys_path	meta_path
path_hooksrM   path_importer_cacheclearmodulescopymodules_beforerp   importer)r   pathdirr   r   r	   r   
  s   
zTestHook.__init__c                 C   sV   | j tjd d < | jtjd d < | jtjd d < tj  tj  tj| j	 d S r   )
r~   rL   rI   r   r   r   r   r   updater   r   r   r   r	   remove
  s   

zTestHook.removeN)r#   r$   r%   r   r   r   r   r   r	   r}   
  s    
r}   c                 c   s*    t | }z
|V  W |  d S |  w r   )r}   r   )r   hookr   r   r	   	test_hook
  s
   r   c                   C   r1   r   r   r   r   r   r	   test_lineendings
  r3   r   c                   C   r1   r   r   r   r   r   r	   test_testmod
  r3   r   u   foo-bär@baz.pyc                   C   r1   r   r   r   r   r   r	   test_unicode
  r3   r   c                   C   r1   r   r   r   r   r   r	   test_CLI  r3   r   c                   C   s   	 d S r   r   r   r   r   r	   %test_no_trailing_whitespace_stripping   s   r   c                  C   s6   t jtdd} ddlm} t j|dd t t d S )NTr=   r   )test_doctest)r   rB   rP   testr   Zrun_unittestr#   )Zretr   r   r   r	   	test_main-  s   r   c                 C   sP   t d}|jtjtjgddd}|d | }td |j	dd| d d S )	Ntracer   r   )Z
ignoredirsr   countztest_main()zWriting coverage results...T)Zshow_missingZsummarycoverdir)
r   rO   ZTracerL   base_prefixbase_exec_prefixrunresultsr.   Zwrite_results)r   r   Ztracerrr   r   r	   test_coverage9  s   


r   __main__z-cz/tmp/doctest.cover)<r   r   Ztest.supportr   r   rP   rh   rH   rL   rN   Zimportlib.abcimportlib.utilZunittestrF   shutilr?   
contextlibr
   r   objectr)   r*   r2   r4   r5   ZTestCaser;   rV   rW   r]   r^   hasattrr_   r`   rb   rc   rd   re   rf   rm   rn   ro   abcZMetaPathFinderZResourceLoaderrp   r}   contextmanagerr   r   r   fsencodeUnicodeEncodeErrorr   r   r   r   r   r#   argvr   r   r   r	   <module>   s    	N y    7        ( Vu '	
O 1	
H g-


