o
    HXhh                    @   s>  	 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 Z9dEdF Z:e;dGkrdHej<v re:dI dS e=  dS dS )J    )support)import_helper)	os_helperNc                 C   s
   	 | |  S N vr   r   ;/opt/python-3.10.19/usr/lib/python3.10/test/test_doctest.pysample_func   s   r
   c                   @   st   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      	 || _ d S r   valselfr   r   r   r	   __init__8      
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	   getF      zSampleClass.getc                 C   s
   	 | d S )N   r   r   r   r   r	   a_staticmethodM   s   zSampleClass.a_staticmethodc                 C   s
   	 |d S )N   r   )clsr   r   r   r	   a_classmethodU   s   zSampleClass.a_classmethodzB
        >>> print(SampleClass(22).a_property)
        22
        )doc*   c                 C   r   r   )a_class_attribute)r   r   r   r	   a_classmethod_propertyf   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   r   r   r   r   r   r   r	   r   v   r   z SampleClass.NestedClass.__init__c                 C   s   t | j| j S r   )r   NestedClassr   r   r   r   r	   square|      zSampleClass.NestedClass.squarec                 C   s   | j S r   r   r   r   r   r	   r   ~   s   zSampleClass.NestedClass.getN)r   )__name__
__module____qualname__r   r$   r   r   r   r   r	   r#   o   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   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,      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   r3   r   r   r   r	   r-      s    r-   c                   C      d S r   r   r   r   r   r	   test_Example       r5   c                   C   r4   r   r   r   r   r   r	   test_DocTest-  r6   r7   c                   @   s&   e Zd Zdd Zejrdd ZdS dS )test_DocTestFinderc                   C   r4   r   r   r   r   r   r	   basics  r6   ztest_DocTestFinder.basicsc                   C   r4   r   r   r   r   r   r	   non_Python_modules  r6   z%test_DocTestFinder.non_Python_modulesN)r&   r'   r(   r9   int__doc__r:   r   r   r   r	   r8     s      r8   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   Z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forgetr0   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(   rF   rU   r   r   r   r	   r>     s    r>   c                   C   r4   r   r   r   r   r   r	   test_DocTestParser   r6   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   r4   r   r   r   r   r   r	   r9   8  r6   ztest_DocTestRunner.basicsc                   C   r4   r   r   r   r   r   r	   verbose_flagu  r6   ztest_DocTestRunner.verbose_flagc                   C   r4   r   r   r   r   r   r	   
exceptions  r6   ztest_DocTestRunner.exceptionsc                   C   r4   r   r   r   r   r   r	   displayhook  r6   ztest_DocTestRunner.displayhookc                   C   r4   r   r   r   r   r   r	   optionflags  r6   ztest_DocTestRunner.optionflagsc                   C   r4   r   r   r   r   r   r	   option_directivest  r6   z$test_DocTestRunner.option_directivesN)	r&   r'   r(   r9   rX   rY   rZ   r[   r\   r   r   r   r	   rW   7  s    =C o   4rW   c                   C   r4   r   r   r   r   r   r	   test_testsourceL  r6   r]   c                   C   r4   r   r   r   r   r   r	   
test_debugt  r6   r^   gettracec                   C   r4   r   r   r   r   r   r	   test_pdb_set_trace     r`   c                   C   r4   r   r   r   r   r   r	   test_pdb_set_trace_nested  ra   rb   c                   C   r4   r   r   r   r   r   r	   test_DocTestSuiteo  ra   rc   c                   C   r4   r   r   r   r   r   r	   test_DocFileSuite  ra   rd   c                   C   r4   r   r   r   r   r   r	   test_trailing_space_in_test	  ra   re   c                   @   r=   )Wrapperc                 C   s   || _ t| | d S r   )func	functoolsupdate_wrapper)r   rg   r   r   r	   r   	  s   zWrapper.__init__c                 O   s   | j |i | d S r   )rg   )r   argskwargsr   r   r	   __call__	  s   zWrapper.__call__N)r&   r'   r(   r   rl   r   r   r   r	   rf   	  s    rf   c                   C   r4   r   r   r   r   r   r	   test_look_in_unwrapped	  s   rm   c                   C   r4   r   r   r   r   r   r	   test_unittest_reportflags	  ra   rn   c                   C   r4   r   r   r   r   r   r	   test_testfile	  r6   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)rO   utilspec_from_file_location)r   fullnamerJ   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   rJ   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   )rM   rJ   sys_path	meta_path
path_hooksrN   path_importer_cacheclearmodulescopymodules_beforerp   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   )
r~   rM   rJ   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   r4   r   r   r   r   r   r	   test_lineendings
  r6   r   c                   C   r4   r   r   r   r   r   r	   test_testmod  r6   r   u   foo-bär@baz.pyc                   C   r4   r   r   r   r   r   r	   test_unicode#  r6   r   c                   C   r4   r   r   r   r   r   r	   test_CLI>  r6   r   c                   C   s   	 d S r   r   r   r   r   r	   %test_no_trailing_whitespace_stripping$  s   r   c                   C   r4   r   r   r   r   r   r	   $test_run_doctestsuite_multiple_timesN  ra   r   c                 C   s"   | tt | t  |S r   )ZaddTestrQ   ZDocTestSuite)rq   Ztestspatternr   r   r	   
load_tests^  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   rP   ZTracerM   base_prefixbase_exec_prefixrunresultsr1   Zwrite_results)r   r   Ztracerrr   r   r	   test_coveraged  s   


r   __main__z-cz/tmp/doctest.cover)>testr   Ztest.supportr   r   rQ   rh   rI   rM   rO   Zimportlib.abcimportlib.utilZunittestrG   shutilrA   
contextlibr
   r   objectr,   r-   r5   r7   r8   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   r&   argvmainr   r   r   r	   <module>   s    
Y y   0 7        ( Vu '	
O 1	
H g*
