
    7\h&                    D   	 d dl mZ d dlmZ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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j                  Zd Z G d d          Zd Z d Z! e"e
d          r e
j#                    sd Z$d Z%d Z&d Z'd Z( G d d          Z)e)d             Z*d Z+d  Z, G d! d"ej-        j.        ej-        j/                  Z0 G d# d$          Z1ej2        d%             Z3d& Z4d' Z5	  e	j6        d(           d)Z7n# e8$ r d*Z7Y nw xY we7rd+ Z9d, Z:d- Z;d. Z<d/ Z=d0 Z>d8d1Z?d2 Z@d3 ZAd4 ZBeCd5k    r ejD        d67           dS dS )9    )support)import_helper	os_helper)	FakeInputNz%test_CLI requires subprocess support.c                     	 | | z   S N vs    H/opt/python-3.11.14/usr/lib/python3.11/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dS )SampleClassc                     	 || _         d S r   valselfr   s     r   __init__zSampleClass.__init__=       	 r   c                 <    	 t          | j        | j        z             S r   )r   r   r   s    r   doublezSampleClass.doubleD   s     	 48dh.///r   c                     	 | j         S r   r   r   s    r   getzSampleClass.getK       	 xr   c                     	 || _         d S r   r   r   s     r   setterzSampleClass.setterR   s    	 r   c                     	 | dz   S )N   r	   r
   s    r   a_staticmethodzSampleClass.a_staticmethod[   s    	 s
r   c                     	 |dz   S )N   r	   )clsr   s     r   a_classmethodzSampleClass.a_classmethodc   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_propertyt   s    	 $$r   c                   $    e Zd Z	 ddZd Zd ZdS )SampleClass.NestedClassr   c                     	 || _         d S r   r   r   s     r   r   z SampleClass.NestedClass.__init__   s     DHHHr   c                 P    t                               | j        | j        z            S r   )r   NestedClassr   r   s    r   squarezSampleClass.NestedClass.square   s    **48DH+<===r   c                     | j         S r   r   r   s    r   r   zSampleClass.NestedClass.get   s	    8Or   N)r   )__name__
__module____qualname__r   r1   r   r	   r   r   r0   r-   }   sK        		 	 	 		> 	> 	>	 	 	 	 	r   r0   N)r3   r4   r5   r   r   r   r   r"   staticmethodr&   classmethodproperty
a_propertyr*   r+   r0   r	   r   r   r   r   -   s         0 0 0       "\.11N    K..M#v ,   J
 % % X [%         r   r   c                   "    e Zd Z	 d Zd Zd ZdS )SampleNewStyleClassc                     	 || _         d S r   r   r   s     r   r   zSampleNewStyleClass.__init__   r   r   c                 <    	 t          | j        | j        z             S r   )r;   r   r   s    r   r   zSampleNewStyleClass.double   s     	 #48dh#6777r   c                     	 | j         S r   r   r   s    r   r   zSampleNewStyleClass.get   r   r   N)r3   r4   r5   r   r   r   r	   r   r   r;   r;      sF          8 8 8    r   r;   c                      d S r   r	   r	   r   r   test_Exampler@            r   c                      d S r   r	   r	   r   r   test_DocTestrC   (  rA   r   c                   ,    e Zd Zd Zej        rd ZdS dS )test_DocTestFinderc                      d S r   r	   r	   r   r   basicsztest_DocTestFinder.basics  rA   r   c                      d S r   r	   r	   r   r   non_Python_modulesz%test_DocTestFinder.non_Python_modules  rA   r   N)r3   r4   r5   rG   int__doc__rI   r	   r   r   rE   rE     sL        X X Xt { %$	 $	 $	 $	 $	% %r   rE   c                       e Zd Zd Zd ZdS )TestDocTestFinderc                     ddl m} t          j        d          }||j        d<   t          j                    }|                     |                    |          g            d S )Nr   )calldummyinject_call)	unittest.mockrO   types
ModuleType__dict__doctestDocTestFinderassertEqualfind)r   rO   dummy_modulefinders       r   test_issue35753z!TestDocTestFinder.test_issue35753  si     	'&&&&&'00/3m,&((\22B77777r   c                 2   d}t          j                    5 }t          j                            ||          }t          j        |           t          j                            |           	 t          j	        |          }t          j        |           t          j                                         n7# t          j        |           t          j                                         w xY wt          j        d          }t          j        d          }|                     t!          |                    |                    d           |                     t!          |                    |                    d           d d d            d S # 1 swxY w Y   d S )Ndoctest_empty_pkgF)exclude_emptyTr!   r   )tempfileTemporaryDirectoryospathjoinmkdirsysappend	importlibimport_moduler   forgetpoprV   rW   rX   lenrY   )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   &(** 	Ejgll:x88GHWHOOJ'''-h77$X... $X...#*#8u#M#M#M #*#8t#L#L#L S!5!:!:3!?!?@@!DDDS!5!:!:3!?!?@@!DDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es+   AF+B2?3F24C&&BFFFN)r3   r4   r5   r\   rs   r	   r   r   rM   rM     s7        8 8 8E E E E Er   rM   c                      d S r   r	   r	   r   r   test_DocTestParserru     rA   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )test_DocTestRunnerc                      d S r   r	   r	   r   r   rG   ztest_DocTestRunner.basicsW  rA   r   c                      d S r   r	   r	   r   r   verbose_flagztest_DocTestRunner.verbose_flag  rA   r   c                      d S r   r	   r	   r   r   
exceptionsztest_DocTestRunner.exceptions  rA   r   c                      d S r   r	   r	   r   r   displayhookztest_DocTestRunner.displayhook  rA   r   c                      d S r   r	   r	   r   r   optionflagsztest_DocTestRunner.optionflags  rA   r   c                      d S r   r	   r	   r   r   option_directivesz$test_DocTestRunner.option_directives  rA   r   N)	r3   r4   r5   rG   rz   r|   r~   r   r   r	   r   r   rw   rw   V  s        < < <zB B BFm m m\  :o o obV V V V Vr   rw   c                      d S r   r	   r	   r   r   test_testsourcer   k  rA   r   c                      d S r   r	   r	   r   r   
test_debugr     rA   r   gettracec                      d S r   r	   r	   r   r   test_pdb_set_tracer     s    C	 C	r   c                      d S r   r	   r	   r   r   test_pdb_set_trace_nestedr   8  s    S	 S	r   c                      d S r   r	   r	   r   r   test_DocTestSuiter     s    r rr   c                      d S r   r	   r	   r   r   test_DocFileSuiter   	  s    d dr   c                      d S r   r	   r	   r   r   test_trailing_space_in_testr   	  s     r   c                       e Zd Zd Zd ZdS )Wrapperc                 >    || _         t          j        | |           d S r   )func	functoolsupdate_wrapper)r   r   s     r   r   zWrapper.__init__	  s"    	 t,,,,,r   c                       | j         |i | d S r   )r   )r   argskwargss      r   __call__zWrapper.__call__	  s    	4"6"""""r   N)r3   r4   r5   r   r   r	   r   r   r   r   	  s2        - - -# # # # #r   r   c                      d S r   r	   r	   r   r   test_look_in_unwrappedr   	  s     r   c                      d S r   r	   r	   r   r   test_unittest_reportflagsr   	  s    L Lr   c                      d S r   r	   r	   r   r   test_testfiler   
  rA   r   c                       e Zd ZddZd ZdS )TestImporterNc                 F    t           j                            |||           S )N)loader)rh   utilspec_from_file_location)r   fullnamerc   targets       r   	find_speczTestImporter.find_spec
  s    ~55hT5RRRr   c                     t          |d          5 }|                                cd d d            S # 1 swxY w Y   d S )Nrb)mode)openread)r   rc   fs      r   get_datazTestImporter.get_data
  s    $T""" 	a6688	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   377r   )r3   r4   r5   r   r   r	   r   r   r   r   
  s;        S S S S    r   r   c                       e Zd Zd Zd ZdS )TestHookc                    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   )rf   rc   sys_path	meta_path
path_hooksrg   path_importer_cacheclearmodulescopymodules_beforer   importer)r   pathdirs     r   r   zTestHook.__init__
  s    qqq).+   %%'''!k..00$T]+++++r   c                 J   | 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   rf   rc   r   r   r   r   r   updater   r   s    r   removezTestHook.remove
  s    m>aaa Oqqq%%'''4./////r   N)r3   r4   r5   r   r   r	   r   r   r   r   
  s2        , , ,0 0 0 0 0r   r   c              #      K   t          |           }	 |V  |                                 d S # |                                 w xY wr   )r   r   )r   hooks     r   	test_hookr   
  sD      GD


s	   - Ac                      d S r   r	   r	   r   r   test_lineendingsr   
  rA   r   c                      d S r   r	   r	   r   r   test_testmodr   2  rA   r   u   foo-bär@baz.pyTFc                      d S r   r	   r	   r   r   test_unicoder   E  rA   r   c                      d S r   r	   r	   r   r   test_CLIr   `  rA   r   c                      	 d S r   r	   r	   r   r   %test_no_trailing_whitespace_strippingr   F  s    " r   c                      d S r   r	   r	   r   r   $test_run_doctestsuite_multiple_timesr   p  s     r   c                 P    	 t          d          }|                    |            |)NText
ValueErroradd_note)noteexcs     r   test_exception_with_noter     s.    2f V

CLL
Ir   c                  z    	 t          d          } |                     d           |                     d           | )Nr   OneTwor   )r   s    r   "test_exception_with_multiple_notesr     s?     V

CLLLL
Ir   c                 R    	  | dd          }|                     |rdnd           |)Nerror)zx.py   Nz
bad syntax	Note
LineNote)r   )r%   	multiliner   s      r   test_syntax_error_with_noter     s<     B #g7
8
8CLL6777
Ir   c                  T    	 ddl m}   | d          }|                    d           |)Nr   )
ParseErrorzerror
errorr   )xml.etree.ElementTreer   r   )r   r   s     r   &test_syntax_error_subclass_from_stdlibr     sA    
 100000
*^
$
$CLL
Ir   c                      d S r   r	   r	   r   r   .test_syntax_error_with_incorrect_expected_noter     s     r   c                     |                     t          j        t                               |                     t          j                               |S r   )addTestrV   DocTestSuite)r   testspatterns      r   
load_testsr   "  s?    	MM'&w//000	MM'&(()))Lr   __main__ztest.test_doctest.test_doctest)module)F)Etestr   test.supportr   r   test.support.pty_helperr   rV   r   rb   rf   rh   importlib.abcimportlib.utilunittestr`   shutilrS   
contextlibhas_subprocess_supportSkipTestr   r   objectr;   r@   rC   rE   TestCaserM   ru   rw   r   r   hasattrr   r   r   r   r   r   r   r   r   r   abcMetaPathFinderResourceLoaderr   r   contextmanagerr   r   r   fsencodesupports_unicodeUnicodeEncodeErrorr   r   r   r   r   r   r   r   r   r   r3   mainr	   r   r   <module>r     s         1 1 1 1 1 1 1 1 - - - - - -      				 



                     % E
(
C
D
DD	 	 	` ` ` ` ` ` ` `D    &   @w w wrT T Tl@ @ @ @ @ @ @ @F
E E E E E) E E E<5 5 5nS S S S S S S Sj & & &P  < wsJ [|s|~~ [D D DLT T Tls s sje e eN  # # # # # # # # 	  	M M M^n n n`    9=/1M   0 0 0 0 0 0 0 0*   F F FP	 	 	BK!"""       6d d dL' ' 'T   6 6 6r  $ $ $ $N  $  B   zHM9:::::: s   E E#"E#