a
    "h                    @   s  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 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re sd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 d.d/ d/ej&j'ej&j(Z)G d0d1 d1Z*ej+d2d3 Z,d4d5 Z-d6d7 Z.ze/d8 W n e0y   Y n
0 d9d: Z1d;d< Z2d=d> Z3d?d@ Z4dAdB Z5dCdD Z6e7dEkrdFej8v re6dG ne	9  dS )H    )supportNc                 C   s   | |  S N vr   r   9/opt/python-3.9.21/usr/lib/python3.9/test/test_doctest.pysample_func   s    	r   c                   @   sr   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dZe	e
dd ZG dd dZdS )SampleClassc                 C   s
   || _ d S r   valselfr   r   r   r   __init__4   s    zSampleClass.__init__c                 C   s   t | j| j S r   )r	   r   r   r   r   r   double;   s    zSampleClass.doublec                 C   s   | j S r   r
   r   r   r   r   getB   s    zSampleClass.getc                 C   s   | d S )N   r   r   r   r   r   a_staticmethodI   s    zSampleClass.a_staticmethodc                 C   s   |d S )N   r   )clsr   r   r   r   a_classmethodQ   s    zSampleClass.a_classmethodzB
        >>> print(SampleClass(22).a_property)
        22
        )doc*   c                 C   s   | j S r   )a_class_attribute)r   r   r   r   a_classmethod_propertyb   s    z"SampleClass.a_classmethod_propertyc                   @   s&   e Zd Zd	ddZdd Zdd ZdS )
zSampleClass.NestedClassr   c                 C   s
   || _ d S r   r
   r   r   r   r   r   r   s    z SampleClass.NestedClass.__init__c                 C   s   t | j| j S r   )r	   NestedClassr   r   r   r   r   squarex   s    zSampleClass.NestedClass.squarec                 C   s   | j S r   r
   r   r   r   r   r   z   s    zSampleClass.NestedClass.getN)r   )__name__
__module____qualname__r   r   r   r   r   r   r   r   k   s   
r   N)r   r   r   r   r   r   r   staticmethodr   classmethodpropertyZ
a_propertyr   r   r   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   s
   || _ d S r   r
   r   r   r   r   r      s    zSampleNewStyleClass.__init__c                 C   s   t | j| j S r   )r#   r   r   r   r   r   r      s    zSampleNewStyleClass.doublec                 C   s   | j S r   r
   r   r   r   r   r      s    zSampleNewStyleClass.getN)r   r   r   r   r   r   r   r   r   r   r#   }   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   r*   r   r   r   r   r$      s   r$   c                   C   s   d S r   r   r   r   r   r   test_Example       r+   c                   C   s   d S r   r   r   r   r   r   test_DocTest)  r,   r-   c                   @   s"   e Zd Zdd Zejrdd ZdS )test_DocTestFinderc                   C   s   d S r   r   r   r   r   r   basics  r,   ztest_DocTestFinder.basicsc                   C   s   d S r   r   r   r   r   r   non_Python_modules  r,   z%test_DocTestFinder.non_Python_modulesN)r   r   r   r/   int__doc__r0   r   r   r   r   r.     s    rr.   c                   @   s   e Zd Zdd ZdS )TestDocTestFinderc              
   C   s   d}t  }tj||}t| tj| z"t	|}W t
| tj  nt
| tj  0 tjdd}tjdd}| t||d | t||d W d    n1 s0    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   Z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   rB   r   r   r   r   r3     s   r3   c                   C   s   d S r   r   r   r   r   r   test_DocTestParser  r,   rC   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   s   d S r   r   r   r   r   r   r/     r,   ztest_DocTestRunner.basicsc                   C   s   d S r   r   r   r   r   r   verbose_flagP  r,   ztest_DocTestRunner.verbose_flagc                   C   s   d S r   r   r   r   r   r   
exceptions  r,   ztest_DocTestRunner.exceptionsc                   C   s   d S r   r   r   r   r   r   displayhook  r,   ztest_DocTestRunner.displayhookc                   C   s   d S r   r   r   r   r   r   optionflags  r,   ztest_DocTestRunner.optionflagsc                   C   s   d S r   r   r   r   r   r   option_directivesO  r,   z$test_DocTestRunner.option_directivesN)	r   r   r   r/   rE   rF   rG   rH   rI   r   r   r   r   rD     s   =C o   4rD   c                   C   s   d S r   r   r   r   r   r   test_testsource'  r,   rJ   c                   C   s   d S r   r   r   r   r   r   
test_debugO  r,   rK   gettracec                   C   s   d S r   r   r   r   r   r   test_pdb_set_tracen  s    rM   c                   C   s   d S r   r   r   r   r   r   test_pdb_set_trace_nested  s    rN   c                   C   s   d S r   r   r   r   r   r   test_DocTestSuiteJ  s    rO   c                   C   s   d S r   r   r   r   r   r   test_DocFileSuite  s    rP   c                   C   s   d S r   r   r   r   r   r   test_trailing_space_in_teste	  s    rQ   c                   @   s   e Zd Zdd Zdd ZdS )Wrapperc                 C   s   || _ t| | d S r   )func	functoolsupdate_wrapper)r   rS   r   r   r   r   o	  s    zWrapper.__init__c                 O   s   | j |i | d S r   )rS   )r   argskwargsr   r   r   __call__s	  s    zWrapper.__call__N)r   r   r   r   rX   r   r   r   r   rR   n	  s   rR   c                   C   s   d S r   r   r   r   r   r   test_look_in_unwrappedv	  s    rY   c                   C   s   d S r   r   r   r   r   r   test_unittest_reportflags	  s    rZ   c                   C   s   d S r   r   r   r   r   r   test_testfile	  r,   r[   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)r<   utilspec_from_file_location)r   fullnamer7   targetr   r   r   	find_spec
  s    zTestImporter.find_specc                 C   s8   t |dd}| W  d    S 1 s*0    Y  d S )Nrb)mode)openread)r   r7   fr   r   r   get_data
  s    zTestImporter.get_data)N)r   r   r   rb   rh   r   r   r   r   r\   ~
  s   
r\   c                   @   s   e Zd Zdd Zdd ZdS )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   )r:   r7   sys_path	meta_path
path_hooksr;   path_importer_cacheclearmodulescopymodules_beforer\   Z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   )
rj   r:   r7   rk   rl   rm   rn   ro   updaterq   r   r   r   r   remove
  s    

zTestHook.removeN)r   r   r   r   rt   r   r   r   r   ri   
  s   
ri   c                 c   s*   t | }z|V  W |  n
|  0 d S r   )ri   rt   )rr   hookr   r   r   	test_hook
  s    rv   c                   C   s   d S r   r   r   r   r   r   test_lineendings
  r,   rw   c                   C   s   d S r   r   r   r   r   r   test_testmod
  r,   rx   u   foo-bär@baz.pyc                   C   s   d S r   r   r   r   r   r   test_unicode
  r,   ry   c                   C   s   d S r   r   r   r   r   r   test_CLI  r,   rz   c                   C   s   d S r   r   r   r   r   r   %test_no_trailing_whitespace_stripping  s    r{   c                   C   s   d S r   r   r   r   r   r   $test_run_doctestsuite_multiple_times&  s    r|   c                 C   s"   | tt | t  |S r   )ZaddTestr>   ZDocTestSuite)r]   Ztestspatternr   r   r   
load_tests6  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   r=   ZTracer:   base_prefixbase_exec_prefixrunresultsr(   Zwrite_results)r   r   Ztracerrr   r   r   test_coverage<  s    

r   __main__z-cz/tmp/doctest.cover):testr   r>   rT   r6   r:   r<   importlib.abcimportlib.utilZunittestr4   shutil
contextlibr   r	   objectr#   r$   r+   r-   r.   ZTestCaser3   rC   rD   rJ   rK   hasattrrL   rM   rN   rO   rP   rQ   rR   rY   rZ   r[   abcMetaPathFinderResourceLoaderr\   ri   contextmanagerrv   rw   rx   fsencodeUnicodeEncodeErrorry   rz   r{   r|   r~   r   r   argvmainr   r   r   r   <module>   s   	Y y   7        ( Vu '	
O 1	
H d*

