
    9bhѫ                    L   	 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ej"                  s ej$                  d      d Z G d d      Z G d	 d
e      Zd Zd Z G d d      Z G d dej4                        Zd Z G d d      Zd Zd Z e e	d      r e	jB                         sd Z"d Z#d Z$d Z%d Z& G d d      Z'e'd        Z(d Z) ejT                  d !      rd" Z+d# Z,d$ Z- G d% d&e
j\                  j^                        Z0 G d' d(      Z1ejd                  d)        Z3d* Z4d+ Z5	  ejl                  d,       d Z7e7rd. Z9d/ Z:d0 Z;d1 Z<d2 Z=d3 Z>d;d4Z?d5 Z@d6 ZAd7 ZBeCd8k(  r ej                  d9:       yy# e8$ r d-Z7Y Dw xY w)<    )support)import_helper)	FakeInputNz%test_CLI requires subprocess support.c                     	 | | z   S N vs    H/opt/python-3.12.12/usr/lib/python3.12/test/test_doctest/test_doctest.pysample_funcr   !   s     Q3J    c                       e Zd Z	 d Zd Zd Zd Zd Z ee      Zd Z	 e
e	      Z	 eeed      Zd	Ze
ed
               Z G d d      Zy)SampleClassc                     	 || _         y r   valselfr   s     r   __init__zSampleClass.__init__<       	 r   c                 H    	 t        | j                  | j                  z         S r   )r   r   r   s    r   doublezSampleClass.doubleC   s!    	 488dhh.//r   c                     	 | j                   S r   r   r   s    r   getzSampleClass.getJ       	 xxr   c                     	 || _         y r   r   r   s     r   setterzSampleClass.setterQ   s    	 r   c                     	 | dz   S )N   r   r	   s    r   a_staticmethodzSampleClass.a_staticmethodZ   s    	 s
r   c                     	 |dz   S )N   r   )clsr
   s     r   a_classmethodzSampleClass.a_classmethodb   s    	 s
r   zB
        >>> print(SampleClass(22).a_property)
        22
        )doc*   c                     	 | j                   S r   )a_class_attribute)r$   s    r   a_classmethod_propertyz"SampleClass.a_classmethod_propertys   s    	 $$$r   c                   "    e Zd Z	 ddZd Zd Zy)SampleClass.NestedClassc                     	 || _         y r   r   r   s     r   r   z SampleClass.NestedClass.__init__   s     DHr   c                 Z    t         j                  | j                  | j                  z        S r   )r   NestedClassr   r   s    r   squarezSampleClass.NestedClass.square   s     **488DHH+<==r   c                     | j                   S r   r   r   s    r   r   zSampleClass.NestedClass.get   s    88Or   N)r   )__name__
__module____qualname__r   r0   r   r   r   r   r/   r,   |   s    			>	r   r/   N)r2   r3   r4   r   r   r   r   r!   staticmethodr%   classmethodproperty
a_propertyr)   r*   r/   r   r   r   r   r   ,   s|    0 ".1N  .M#v , J
 %  % r   r   c                        e Zd Z	 d Zd Zd Zy)SampleNewStyleClassc                     	 || _         y r   r   r   s     r   r   zSampleNewStyleClass.__init__   r   r   c                 H    	 t        | j                  | j                  z         S r   )r:   r   r   s    r   r   zSampleNewStyleClass.double   s!    	 #488dhh#677r   c                     	 | j                   S r   r   r   s    r   r   zSampleNewStyleClass.get   r   r   N)r2   r3   r4   r   r   r   r   r   r   r:   r:      s    8r   r:   c                       y r   r   r   r   r   test_Exampler?      s     wr   c                       y r   r   r   r   r   test_DocTestrA   '  s     Tr   c                   2    e Zd Zd Zej
                  rd Zyy)test_DocTestFinderc                       y r   r   r   r   r   basicsztest_DocTestFinder.basics  s     Xr   c                       y r   r   r   r   r   non_Python_modulesz%test_DocTestFinder.non_Python_modules  s     $#r   N)r2   r3   r4   rE   int__doc__rG   r   r   r   rC   rC     s    Xt {{$	 r   rC   c                       e Zd Zd Zd Zy)TestDocTestFinderc                     ddl m} t        j                  d      }||j                  d<   t        j                         }| j                  |j                  |      g        y )Nr   )calldummyinject_call)	unittest.mockrM   types
ModuleType__dict__doctestDocTestFinderassertEqualfind)r   rM   dummy_modulefinders       r   test_issue35753z!TestDocTestFinder.test_issue35753  sN     	'''0/3m,&&(\2B7r   c                    d}t        j                         5 }t        j                  j	                  ||      }t        j
                  |       t        j                  j                  |       	 t        j                  |      }t        j                  |       t        j                  j                          t        j                  d      }t        j                  d      }| j                  t!        |j#                  |            d       | j                  t!        |j#                  |            d       d d d        y # t        j                  |       t        j                  j                          w xY w# 1 sw Y   y xY w)Ndoctest_empty_pkgF)exclude_emptyTr    r   )tempfileTemporaryDirectoryospathjoinmkdirsysappend	importlibimport_moduler   forgetpoprT   rU   rV   lenrW   )r   pkg_name
parent_dirpkg_dirmodinclude_empty_finderexclude_empty_finders          r   test_empty_namespace_packagez.TestDocTestFinder.test_empty_namespace_package  s	   &((*jggll:x8GHHWHHOOJ'--h7$$X.#*#8#8u#M #*#8#8t#L S!5!:!:3!?@!DS!5!:!:3!?@!D +* $$X. +*s%   AE6-D>B3E6>5E33E66E?N)r2   r3   r4   rZ   rq   r   r   r   rK   rK      s    8Er   rK   c                       y r   r   r   r   r   test_DocTestParserrs     s     5r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)test_DocTestRunnerc                       y r   r   r   r   r   rE   ztest_DocTestRunner.basicsV  s     <r   c                       y r   r   r   r   r   verbose_flagztest_DocTestRunner.verbose_flag  s     Br   c                       y r   r   r   r   r   
exceptionsztest_DocTestRunner.exceptions  s     mr   c                       y r   r   r   r   r   displayhookztest_DocTestRunner.displayhook  s     r   c                       y r   r   r   r   r   optionflagsztest_DocTestRunner.optionflags  s     or   c                       y r   r   r   r   r   option_directivesz$test_DocTestRunner.option_directives  s     Vr   N)	r2   r3   r4   rE   rx   rz   r|   r~   r   r   r   r   ru   ru   U  s(    <zBFm\:obVr   ru   c                       y r   r   r   r   r   test_testsourcer   j  s     &r   c                       y r   r   r   r   r   
test_debugr     s     r   gettracec                       y r   r   r   r   r   test_pdb_set_tracer     s    C	r   c                       y r   r   r   r   r   test_pdb_set_trace_nestedr   7  s    S	r   c                       y r   r   r   r   r   test_DocTestSuiter     s    rr   c                       y r   r   r   r   r   test_DocFileSuiter   	  s    dr   c                       y r   r   r   r   r   test_trailing_space_in_testr   	  s    r   c                       e Zd Zd Zd Zy)Wrapperc                 >    || _         t        j                  | |       y r   )func	functoolsupdate_wrapper)r   r   s     r   r   zWrapper.__init__	  s    	  t,r   c                 (     | j                   |i | y r   )r   )r   argskwargss      r   __call__zWrapper.__call__	  s    		4"6"r   N)r2   r3   r4   r   r   r   r   r   r   r   	  s    -#r   r   c                       y r   r   r   r   r   wrappedr   	  s    r   c                       y r   r   r   r   r   test_look_in_unwrappedr   	      r   T)cpythonc                       y r   r   r   r   r   test_wrapped_c_funcr   	  s    
	r   c                       y r   r   r   r   r   test_unittest_reportflagsr   	  s    Lr   c                       y r   r   r   r   r   test_testfiler   /
  s     nr   c                   &    e Zd ZddZd Zd Zd Zy)TestImporterNc                 F    t         j                  j                  |||       S )N)loader)rf   utilspec_from_file_location)r   fullnamera   targets       r   	find_speczTestImporter.find_spec
  s    ~~55hT5RRr   c                 h    t        |d      5 }|j                         cd d d        S # 1 sw Y   y xY w)Nrb)mode)openread)r   ra   fs      r   get_datazTestImporter.get_data
  s#    $T"a668 #""s   (1c                     t         r   )ImportError)r   modules     r   exec_modulezTestImporter.exec_module
  s    r   c                      y r   r   )r   specs     r   create_modulezTestImporter.create_module
  s    r   r   )r2   r3   r4   r   r   r   r   r   r   r   r   r   
  s    Sr   r   c                       e Zd Zd Zd Zy)TestHookc                    t         j                  d d  | _        t         j                  d d  | _        t         j                  d d  | _        t         j                  j                  |       t         j                  j                          t         j                  j                         | _
        t               | _        t         j                  j                  | j                         y r   )rd   ra   sys_path	meta_path
path_hooksre   path_importer_cacheclearmodulescopymodules_beforer   importer)r   pathdirs     r   r   zTestHook.__init__
  s    q)..+ %%'!kk..0$T]]+r   c                 |   | j                   t        j                  d d  | j                  t        j                  d d  | j                  t        j                  d d  t        j
                  j                          t        j                  j                          t        j                  j                  | j                         y r   )
r   rd   ra   r   r   r   r   r   updater   r   s    r   removezTestHook.remove
  sq    mm>>a OOq%%'4../r   N)r2   r3   r4   r   r   r   r   r   r   r   
  s    ,0r   r   c              #   v   K   t        |       }	 | |j                          y # |j                          w xY wwr   )r   r   )r   hooks     r   	test_hookr     s,     GD
s   9$ 969c                       y r   r   r   r   r   test_lineendingsr     s     Hr   c                       y r   r   r   r   r   test_testmodr   V  s     	r   u   foo-bär@baz.pyFc                       y r   r   r   r   r   test_unicoder   i  s     r   c                       y r   r   r   r   r   test_CLIr     s     dr   c                       	 y r   r   r   r   r   %test_no_trailing_whitespace_strippingr   j  s    "r   c                       y r   r   r   r   r   $test_run_doctestsuite_multiple_timesr     r   r   c                 @    	 t        d      }|j                  |        |)NText
ValueErroradd_note)noteexcs     r   test_exception_with_noter     s%    2f V
CLL
Ir   c                  b    	 t        d      } | j                  d       | j                  d       | )Nr   OneTwor   )r   s    r   "test_exception_with_multiple_notesr     s0     V
CLLLL
Ir   c                 P    	  | dd      }|j                  |rd       |d       |)Nerror)zx.py   Nz
bad syntax	Note
LineNote)r   )r$   	multiliner   s      r   test_syntax_error_with_noter     s7     B g7
8CLL7
I 177
Ir   c                  F    	 ddl m}   | d      }|j                  d       |)Nr   )
ParseErrorzerror
errorr   )xml.etree.ElementTreer   r   )r   r   s     r   &test_syntax_error_subclass_from_stdlibr     s'    
 1
^
$CLL
Ir   c                       y r   r   r   r   r   .test_syntax_error_with_incorrect_expected_noter   %  s    r   c                     |j                  t        j                  t                     |j                  t        j                                |S r   )addTestrT   DocTestSuite)r   testspatterns      r   
load_testsr   F  s3    	MM'&&w/0	MM'&&()Lr   __main__ztest.test_doctest.test_doctest)r   )F)Etestr   test.supportr   test.support.pty_helperr   rT   r   r`   rd   rf   importlib.abcimportlib.utilunittestr^   rQ   
contextlibhas_subprocess_supportSkipTestr   r   objectr:   r?   rA   rC   TestCaserK   rs   ru   r   r   hasattrr   r   r   r   r   r   r   r   r   check_impl_detailr   r   r   abcMetaPathFinderr   r   contextmanagerr   r   r   fsencodesupports_unicodeUnicodeEncodeErrorr   r   r   r   r   r   r   r   r   r   r2   mainr   r   r   <module>r     s    & -   	 
        %%
(

C
DD	` `D& @wrTl@ @F
E)) E<5nS Sj &P< sJ|s||~DLTlsjeN# # 	 	 7T*M^n`9==// 0 0*  HT	BKK!"
 6dL'T 6r$N$B zHMM9: Q  s   
F F#"F#