
    <e|                        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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mZ d dlmZ d dlmZmZ d dlm Z  d dlm!Z! d dl"m#Z#m$Z$m%Z% d dlm&Z& d d	lm'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- d d
l.m/Z/m0Z0m1Z1 d dlm2Z2  G d d          Z3ej4        j5        rdZ6ndZ6d7                                Z8 e9d e6D                       Z:dZ; e9d e6D                       Z<d=                    de j>                  Z?dZ@d7                                ZAd7                                ZBd7                                ZCd7                                ZDd7                                ZEd ZFd ZGd ZHd ZId  ZJd! ZKd" ZL G d# d$ejM                  ZN G d% d&ejM                  ZO G d' d(eN          ZP G d) d*ejM                  ZQ ejR        e+pe,d+           G d, d-ejM                              ZS G d. d/eN          ZT G d0 d1ejM                  ZU G d2 d3ejM                  ZV G d4 d5ejM                  ZWd6 ZXeYd7k    r ejZ                     dS dS )8    N)StringIO)
namedtuple)urlopen
urlcleanup)import_helper)	os_helper)assert_python_okassert_python_failurespawn_python)threading_helper)reap_childrencaptured_outputcaptured_stdoutcaptured_stderris_emscriptenis_wasirequires_docstrings)TESTFNrmtreeunlink)	pydoc_modc                       e Zd ZdZdS )nonasciiu   Це не латиницяN__name__
__module____qualname____doc__     &/usr/lib/python3.11/test/test_pydoc.pyr   r   %   s          Dr    r   ).dictionary for instance variables (if defined)2list of weak references to the object (if defined)r"   r#   ) r$   r$   r$   a  
NAME
    test.pydoc_mod - This is a test module for test_pydoc
%s
CLASSES
    builtins.object
        A
        B
        C
    
    class A(builtins.object)
     |  Hello and goodbye
     |  
     |  Methods defined here:
     |  
     |  __init__()
     |      Wow, I have no function!
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |  
     |  __dict__%s
     |  
     |  __weakref__%s
    
    class B(builtins.object)
     |  Data descriptors defined here:
     |  
     |  __dict__%s
     |  
     |  __weakref__%s
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  NO_MEANING = 'eggs'
     |  
     |  __annotations__ = {'NO_MEANING': <class 'str'>}
    
    class C(builtins.object)
     |  Methods defined here:
     |  
     |  get_answer(self)
     |      Return say_no()
     |  
     |  is_it_true(self)
     |      Return self.get_answer()
     |  
     |  say_no(self)
     |  
     |  ----------------------------------------------------------------------
     |  Class methods defined here:
     |  
     |  __class_getitem__(item) from builtins.type
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)

FUNCTIONS
    doc_func()
        This function solves all of the world's problems:
        hunger
        lack of Python
        war
    
    nodoc_func()

DATA
    __xyz__ = 'X, Y and Z'
    c_alias = test.pydoc_mod.C[int]
    list_alias1 = typing.List[int]
    list_alias2 = list[int]
    type_union1 = typing.Union[int, str]
    type_union2 = int | str

VERSION
    1.2.3.4

AUTHOR
    Benjamin Peterson

CREDITS
    Nobody

FILE
    %s
c              #   (   K   | ]}|rd |z   ndV  dS )z
     |      r$   Nr   .0ss     r!   	<genexpr>r)      sO       &I &I*+ ?@&G&6&:&:R &I &I &I &I &I &Ir    a  
test.pydoc_mod (version 1.2.3.4)
This is a test module for test_pydoc

Modules
    types
    typing

Classes
    builtins.object
    A
    B
    C

class A(builtins.object)
    Hello and goodbye

    Methods defined here:
        __init__()
            Wow, I have no function!

    Data descriptors defined here:
        __dict__
            dictionary for instance variables (if defined)
        __weakref__
            list of weak references to the object (if defined)

class B(builtins.object)
    Data descriptors defined here:
        __dict__
            dictionary for instance variables (if defined)
        __weakref__
            list of weak references to the object (if defined)
    Data and other attributes defined here:
        NO_MEANING = 'eggs'
        __annotations__ = {'NO_MEANING': <class 'str'>}


class C(builtins.object)
    Methods defined here:
        get_answer(self)
            Return say_no()
        is_it_true(self)
            Return self.get_answer()
        say_no(self)
    Class methods defined here:
        __class_getitem__(item) from builtins.type
    Data descriptors defined here:
        __dict__
            dictionary for instance variables (if defined)
        __weakref__
             list of weak references to the object (if defined)

Functions
    doc_func()
        This function solves all of the world's problems:
        hunger
        lack of Python
        war
    nodoc_func()

Data
    __xyz__ = 'X, Y and Z'
    c_alias = test.pydoc_mod.C[int]
    list_alias1 = typing.List[int]
    list_alias2 = list[int]
    type_union1 = typing.Union[int, str]
    type_union2 = int | str

Author
    Benjamin Peterson

Credits
    Nobody
c              #   B   K   | ]}|                     d d          V  dS ) &nbsp;N)replacer&   s     r!   r)   r)      sL       &I &I*+ '(iiX&>&> &I &I &I &I &I &Ir    z~No Python documentation found for %r.
Use help() to get the interactive help utility.
Use help(str) for help on the str class.
z7problem in %s - ModuleNotFoundError: No module named %ra/  
Help on class DA in module %s:

class DA(builtins.object)
 |  Data descriptors defined here:
 |  
 |  __dict__%s
 |  
 |  __weakref__%s
 |  
 |  ham
 |  
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from Meta:
 |  
 |  ham = 'spam'
z
Help on class Class in module %s:

class Class(builtins.object)
 |  Data and other attributes inherited from Meta:
 |  
 |  LIFE = 42
z
Help on class Class1 in module %s:

class Class1(builtins.object)
 |  Data and other attributes inherited from Meta1:
 |  
 |  one = 1
a  
Help on class Class2 in module %s:

class Class2(Class1)
 |  Method resolution order:
 |      Class2
 |      Class1
 |      builtins.object
 |  
 |  Data and other attributes inherited from Meta1:
 |  
 |  one = 1
 |  
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from Meta3:
 |  
 |  three = 3
 |  
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from Meta2:
 |  
 |  two = 2
z
Help on class C in module %s:

class C(builtins.object)
 |  Data and other attributes defined here:
 |  
 |  here = 'present!'
c                 t    || fz   }t          dt          j        g|R i |\  }}}|                                S )zW
    Runs pydoc on the specified module. Returns the stripped
    output of pydoc.
    -B)r	   pydoc__file__stripmodule_nameargsenvrcouterrs         r!   	run_pydocr;   /  sE    
 ;. D#D%.G4GGG3GGLBS99;;r    c                 t    || fz   }t          dt          j        g|R i |\  }}}|                                S )zA
    Runs pydoc on the specified module expecting a failure.
    r0   )r
   r1   r2   r3   r4   s         r!   run_pydoc_failr=   9  sE     ;. D(u~LLLLLLLBS99;;r    c                     t          j                    }|                    |           }|                    t                    pd}|rd|z   dz   }|                                |fS )z&Returns pydoc generated output as htmlr$   z<br><a href="z">Module Docs</a>)r1   HTMLDoc	docmodule	getdoclocr   r3   )moduledocoutputlocs       r!   get_pydoc_htmlrF   A  s_    
-//C]]6""F
--	
"
"
(bC
 <$';;<<>>3r    c                     t           j        j        }t           j        j        } | | |t                                        }t          j                    }|                    | |          }|S )z,Returns a documentation web link of a module)basedir)ospathabspathdirnamer2   r1   TextDocrA   )rB   rK   rL   rH   rC   rE   s         r!   get_pydoc_linkrN   J  s\    goGgoGgggggh//0011G
-//C
---
0
0CJr    c                    t          j                    }|                    t                    pd}|rd|z   dz   }|                    |           }t          j        d          }|                    d|          }|                                |fS )z&Returns pydoc generated output as textr$   z
MODULE DOCS
    r.   .)	r1   rM   rA   r   r@   recompilesubr3   )rB   rC   rE   rD   patts        r!   get_pydoc_textrU   S  s    
-//C
--	
"
"
(bC
 1#c)D0]]6""F :eDXXb&!!F<<>>3r    c                     |                      d          \  }}}|                     d          \  }}}|                     d          \  }}}|S )Nz</head>z<title>z</title>)	partition)textheader_titles       r!   get_html_titler\   a  sN    >>),,LFAq""9--KAq%//*--KE1aLr    c           	          |                      dd          } t          j        dd|           } t          j         | ddddd	d
          } | S )zWA quick and dirty implementation of html2text.

    Tailored for pydoc tests only.
    z<dd>r.   z<.*?>r$   r,   r+   z&gt;>z&lt;<)r-   rQ   rS   r1   )htmls    r!   	html2textra   i  sJ    
 <<%%D6'2t$$D=xfc63GGDKr    c                   >    e Zd ZddZej        dd            Zd ZdS )PydocBaseTestNc                 f    |p$t           j                            t                    gdfd	}|S )zi
        A version of pkgutil.walk_packages() that will restrict itself to
        a given path.
        Nr$   c                 "     | p||          S Nr   )rJ   prefixonerrordefault_pathwalk_packagess      r!   wrapperz8PydocBaseTest._restricted_walk_packages.<locals>.wrapper|  s     =!5vwGGGr    )Nr$   N)rI   rJ   rL   r2   )selfrj   rJ   rk   ri   s    `  @r!   _restricted_walk_packagesz'PydocBaseTest._restricted_walk_packagesv  sP    
 : 9 9:	H 	H 	H 	H 	H 	H 	Hr    c              #      K   t           j        }|                     ||          t           _        	 d V  |t           _        d S # |t           _        w xY wrf   )pkgutilrj   rm   )rl   rJ   rj   s      r!   restrict_walk_packagesz$PydocBaseTest.restrict_walk_packages  s]      - $ > >}?C!E !E	2EEE$1G!!!MG!1111s   A Ac                 |    t          j        |d          }t          |          }|                     |||           |S )Nz	text/html)r1   _url_handlerr\   assertEqual)rl   urlexpected_titlerX   results        r!   call_url_handlerzPydocBaseTest.call_url_handler  s>    !#{33%%666r    rf   )r   r   r   rm   
contextlibcontextmanagerrp   rw   r   r    r!   rc   rc   t  s[            2 2 2 2    r    rc   c                   F   e Zd ZdZ ej         eed          o ej                    d          e	d                         Z
 ej         eed          o ej                    d          e	d                         Zd Zd Zd Zd	 Zd
 Zd Ze	d             Zd Zd Zd Zd Zd Zd Zd Zd Zd Z ej         eed          o ej                    d          e	d                         Zd Zd Zd Ze	d             Z d Z!d Z"d Z#d Z$d Z%e	d              Z&d! Z'dS )"PydocDocTestNgettrace1trace function introduces __locals__ unexpectedlyc                    t          t                    \  }}t          |          }d |                                D             }d |D             }|d= t                                          }d |D             }|                     ||           t          j        t                    }t          j	        
                    |          }|                     ||           |                     ||           |                     ||           d S )Nc                 6    g | ]}|                                 S r   r3   r'   lines     r!   
<listcomp>z.PydocDocTest.test_html_doc.<locals>.<listcomp>  s     HHHtdjjllHHHr    c                     g | ]}||S r   r   r   s     r!   r   z.PydocDocTest.test_html_doc.<locals>.<listcomp>  s    :::tT:d:::r       c                 :    g | ]}||                                 S r   r   r   s     r!   r   z.PydocDocTest.test_html_doc.<locals>.<listcomp>  s%    JJJ4TJ$**,,JJJr    )rF   r   ra   
splitlineshtml2text_of_expectedrs   inspect
getabsfileurllibparsequoteassertIn)rl   rv   doc_loctext_result
text_linesexpected_linesmod_filemod_urls           r!   test_html_doczPydocDocTest.test_html_doc  s     )33''HH{/E/E/G/GHHH
::z:::
qM.99;;JJ>JJJ^444%i00,$$X..gv&&&h'''gv&&&&&r    c                     t          t                    \  }}t          |ft          z   t	          j        t                    fz   z  }|                     ||           d S rf   )rU   r   expected_text_patternexpected_text_data_docstringsr   r   rs   )rl   rv   r   expected_texts       r!   test_text_doczPydocDocTest.test_text_doc  s`     )33- 
56 +I6689: 	/////r    c                     dd l } G d d|j                  }t          j        |          }|                     d|           d S )Nr   c                       e Zd ZdZdZdS )IPydocDocTest.test_text_enum_member_with_value_zero.<locals>.BinaryIntegerr   r   N)r   r   r   zerooner   r    r!   BinaryIntegerr     s        DCCCr    r   zBinaryInteger.zero)enumIntEnumr1   
render_docr   )rl   r   r   rC   s       r!   %test_text_enum_member_with_value_zeroz2PydocDocTest.test_text_enum_member_with_value_zero  sf     		 	 	 	 	DL 	 	 	 }--*C00000r    c                 n    t          t          j        j                  }|                     d|           d S )Nzxml.etree.elementtree)rN   xmletreeElementTreer   )rl   doc_links     r!   ,test_mixed_case_module_names_are_lower_casedz9PydocDocTest.test_mixed_case_module_names_are_lower_cased  s/    !#)"788-x88888r    c                 l    t          t          j                  \  }}|                     |dd           d S )Nr$   z'MODULE DOCS incorrectly includes a link)rU   r   r   rs   )rl   rv   r   s      r!   test_issue8225zPydocDocTest.test_issue8225  s4    (33"&OPPPPPr    c                     t           j        }	 d t           _        t          j                     |t           _        d S # |t           _        w xY wrf   )sysstdinr1   getpager)rl   previous_stdins     r!   test_getpager_with_stdin_nonez*PydocDocTest.test_getpager_with_stdin_none  sA    	'CIN&CIIICI&&&&s	   ; A	c                      G d d          } G d d          }t          j         |                      }t          j         |                      }|                     |                    dd          |           d S )Nc                       e Zd ZdZ dS ))PydocDocTest.test_non_str_name.<locals>.A*   Nr   r   r   r   r    r!   Ar     s        HHHr    r   c                       e Zd ZdS ))PydocDocTest.test_non_str_name.<locals>.BNr   r   r    r!   Br             Dr    r   )r1   r   rs   r-   )rl   r   r   adocbdocs        r!   test_non_str_namezPydocDocTest.test_non_str_name  s    	 	 	 	 	 	 	 		 	 	 	 	 	 	 	$$$$c3//66666r    c                     d}t          t          |          d          }t          |z  }|                     ||d           d S )Ntest.i_am_not_hereasciiz&documentation for missing module found)strr=   missing_patternrs   rl   missing_modulerv   expecteds       r!   test_not_herezPydocDocTest.test_not_here  sQ    -^N33W=="^364	6 	6 	6 	6 	6r    c                     t          dd          }t          j                            dd          }|                     ||           d S )Nztest.test_pydoc.nonasciir   )PYTHONIOENCODINGbackslashreplace)r;   r   r   encoder   )rl   rv   encodeds      r!   test_not_asciizPydocDocTest.test_not_ascii  sH    5PPP"))'3EFFgv&&&&&r    c                     d}t          t          |          d          }t          |                                z  }|                     ||           d S )Nz test.i_am_not_here r   )r   r=   r   r3   rs   r   s       r!   test_input_stripzPydocDocTest.test_input_strip  sP    /^N33W=="^%9%9%;%;;6*****r    c                    t           j        }|                      |d          d           |                      |d          d           |                      |d          d           |                      |d          d           d S )Nz<function stripid at 0x88dcee4>z<function stripid>z <function stripid at 0x01F65390>42z<type 'exceptions.Exception'>)r1   stripidrs   )rl   r   s     r!   test_stripidzPydocDocTest.test_stripid  s    -!BCC-	/ 	/ 	/!CDD-	/ 	/ 	/ 	---!@AA8	: 	: 	: 	: 	:r    c                     t          j                    }|                    t                    }d}|                     ||           dS )a  Tests help on builtin object which have more than four child classes.

        When running help() on a builtin class which has child classes, it
        should contain a "Built-in subclasses" section and only 4 classes
        should be displayed with a hint on how many more subclasses are present.
        For example:

        >>> help(object)
        Help on class object in module builtins:

        class object
         |  The most base type
         |
         |  Built-in subclasses:
         |      async_generator
         |      BaseException
         |      builtin_function_or_method
         |      bytearray
         |      ... and 82 other subclasses
        z |  Built-in subclasses:
 |      async_generator
 |      BaseException
 |      builtin_function_or_method
 |      bytearray
 |      ... and \d+ other subclassesN)r1   rM   docclassobjectassertRegexrl   rC   rX   snips       r!   )test_builtin_with_more_than_four_childrenz6PydocDocTest.test_builtin_with_more_than_four_children  sE    * moo||F##8 	t$$$$$r    c                     t          j                    }|                    t                    }d}|                     ||           dS )a1  Tests help on builtin object which have only child classes.

        When running help() on a builtin class which has child classes, it
        should contain a "Built-in subclasses" section. For example:

        >>> help(ArithmeticError)
        Help on class ArithmeticError in module builtins:

        class ArithmeticError(Exception)
         |  Base class for arithmetic errors.
         |
         ...
         |
         |  Built-in subclasses:
         |      FloatingPointError
         |      OverflowError
         |      ZeroDivisionError
        zc |  Built-in subclasses:
 |      FloatingPointError
 |      OverflowError
 |      ZeroDivisionErrorN)r1   rM   r   ArithmeticErrorr   r   s       r!   test_builtin_with_childz$PydocDocTest.test_builtin_with_child  sC    & moo||O,,, 	dD!!!!!r    c                     t          j                    }|                    t                    }d}|                     ||           |                     d|           dS )a  Tests help on builtin classes which have grandchild classes.

        When running help() on a builtin class which has child classes, it
        should contain a "Built-in subclasses" section. However, if it also has
        grandchildren, these should not show up on the subclasses section.
        For example:

        >>> help(Exception)
        Help on class Exception in module builtins:

        class Exception(BaseException)
         |  Common base class for all non-exit exceptions.
         |
         ...
         |
         |  Built-in subclasses:
         |      ArithmeticError
         |      AssertionError
         |      AttributeError
         ...
        z^ |  Built-in subclasses:
 |      ArithmeticError
 |      AssertionError
 |      AttributeErrorZeroDivisionErrorN)r1   rM   r   	Exceptionr   assertNotInr   s       r!   test_builtin_with_grandchildz)PydocDocTest.test_builtin_with_grandchild4  sZ    , moo||I&&) 	dD!!!,d33333r    c                     t          j                    }|                    t                    }|                     d|           dS )a  Tests help on builtin object which have no child classes.

        When running help() on a builtin class which has no child classes, it
        should not contain any "Built-in subclasses" section. For example:

        >>> help(ZeroDivisionError)

        Help on class ZeroDivisionError in module builtins:

        class ZeroDivisionError(ArithmeticError)
         |  Second argument to a division or modulo operation was zero.
         |
         |  Method resolution order:
         |      ZeroDivisionError
         |      ArithmeticError
         |      Exception
         |      BaseException
         |      object
         |
         |  Methods defined here:
         ...
        Built-in subclassesN)r1   rM   r   r   r   rl   rC   rX   s      r!   test_builtin_no_childz"PydocDocTest.test_builtin_no_childT  s>    . moo||-...55555r    c                     t          j                    }|                    t                    }|                     d|           dS )zTests help on metaclasses.

        When running help() on a metaclasses such as type, it
        should not contain any "Built-in subclasses" section.
        r   N)r1   rM   r   typer   r   s      r!   test_builtin_on_metaclassesz(PydocDocTest.test_builtin_on_metaclassesp  s=     moo||D!!.55555r    c                    t           dz                                  }t          d          5 }|                    d          \  }}|                                                                dd         }|d                             d          |d<   |                     ||           d d d            d S # 1 swxY w Y   d S )Nabdz-chelp()s   abdiir   zhelp> )r   r   r   communicatedecoderemoveprefixrs   )rl   elinesprocr9   rZ   oliness         r!   test_fail_help_clizPydocDocTest.test_fail_help_cli{  s    !E)5577-(( 	-D%%f--FCZZ\\,,..r"u5Fq	..x88F1IVV,,,		- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   A;B44B8;B8c                 l   t                      5 }t          j        |          }|                    d           t          dz  }|                     ||                                                                                    dt          j
                             d d d            d S # 1 swxY w Y   d S )NrD   r   r.   )r   r1   Helperhelpr   rs   getvaluer3   r-   rI   linesep)rl   bufhelperr   s       r!   test_fail_help_output_redirectz+PydocDocTest.test_fail_help_output_redirect  s    ZZ 	Y3\---FKK&.HXs||~~';';'='='E'EdBJ'W'WXXX		Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Ys   BB))B-0B-c                    t           j        }d }d | _        t                      }t          j        |          }t          t                    \  }}d}d                                }t          j	        |          }|t          z   }	|t           _        	 t          d          5 }
t          d          5 }|                    |           |                                                                }|	|ft          z   t!          j        t                    fz   z  }|                     d|
                                           |                     d|                                           |                     ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |t           _        d S # |t           _        w xY w)Nc                      d S )Nc                     | S rf   r   )xs    r!   <lambda>zJPydocDocTest.test_help_output_redirect.<locals>.<lambda>.<locals>.<lambda>  s    ! r    r   r   r    r!   r  z8PydocDocTest.test_help_output_redirect.<locals>.<lambda>  s     r    r   ztest.pydoc_modz9
        Help on module test.pydoc_mod in test:

        stdoutstderrr$   )r1   r   maxDiffr   r   rU   r   lstriptextwrapdedentr   r   r   r   r3   r   r   r   rs   )rl   getpager_oldgetpager_newr   r   unusedr   rB   help_headerexpected_help_patternrD   r:   rv   r   s                 r!   test_help_output_redirectz&PydocDocTest.test_help_output_redirect  s    ~,,jjS)))(33! FHH 	 ok22 +.C C%	* ** 
8f **
8.1F###--// 5!(
 =!>!(!3I!>!> @!A!B   V__%6%6777  S\\^^444  777
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 *ENNN\EN))))sU   F8 !F1CF<FF	FF	FF8 F##F8 &F#'F8 8Gc                 v   t          dddg          }t                      5 }t          j        |           d d d            n# 1 swxY w Y   |                                }|                     d|           |                     d|           |                     d|           |                     d|           d S )NPersonnickname	firstnamezAlias for field number 0zAlias for field number 1r   r   r1   r   r   r   )rl   r  help_iohelptexts       r!   test_namedtuple_fieldsz#PydocDocTest.test_namedtuple_fields  s    Hz;&?@@ 	'Jv	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##%%j(+++k8,,,0(;;;0(;;;;;s   AA	Ac                 N   t          dddgd          }t                      5 }t          j        |           d d d            n# 1 swxY w Y   |                                }|                     d|           |                     d|           |                     d|           d S )	NNTabcdefT)rename_1_replace_asdictr  )rl   r  r  r  s       r!   !test_namedtuple_public_underscorez.PydocDocTest.test_namedtuple_public_underscore  s    uenT::: 	'JrNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##%%dH%%%j(+++i*****s   AAAc                    |                      t          t                     dD ]}t          t          d|          5 }|dk    r$t	          d                    |          |           t	          d|           t	          d|           d d d            n# 1 swxY w Y   t          j        t          i           }|                     |d	           d S )
N)z
ISO-8859-1UTF-8wencodingr   z#coding: {})fileu   """line 1: hézline 2: hi"""u   line 1: hé)	
addCleanupr   r   openprintformatr1   synopsisrs   )rl   r#  scriptr)  s       r!   test_synopsiszPydocDocTest.test_synopsis  s   '''/ 	8 	8HfcH555 4w&&-..x88vFFFF(v6666oF3333	4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
 ~fb11HX7777	8 	8s   ABB	B	c                     t          j        d          }|j                                        d         }|j        }t          j        |          }|                     ||           d S )NrI   r   )r   import_fresh_moduler   r   
__cached__r1   r)  rs   )rl   rI   r   filenamer)  s        r!   test_synopsis_sourcelessz%PydocDocTest.test_synopsis_sourceless  s\    .t44:((**1-=>(++8,,,,,r    c                 &   t          j                    5 }t          j                            |d          }t
          j                            |          }t          |d          5 }|	                    d           d d d            n# 1 swxY w Y   t          j        |           t          j        |i           }|                     |           t          j        |i           }|                     |           d d d            d S # 1 swxY w Y   d S )Nzfoomod42.pyr!  foo = 1)r   temp_cwdrI   rJ   join	importlibutilcache_from_sourcer&  write
py_compilerR   r1   r)  assertIsNone)rl   test_dir	init_pathcached_pathfobjr)  synopsis_cacheds          r!   "test_synopsis_sourceless_empty_docz/PydocDocTest.test_synopsis_sourceless_empty_doc  sk   !! 		/XX}==I#.::9EEKi%% &

9%%%& & & & & & & & & & & & & & &y)))~i44Hh'''#n["==Oo...		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/s7   AD$B:DB
	
DB
	A+DD
D
c                 Z    d}|                      t          j        |          d           d S )Nz#I Am A Doc


Here is my description)z
I Am A Docz
Here is my description)rs   r1   splitdoc)rl   example_strings     r!   test_splitdoc_with_descriptionz+PydocDocTest.test_splitdoc_with_description  s=    A77C	E 	E 	E 	E 	Er    c                     t          j                    5 }|                     t          j        |                     d d d            d S # 1 swxY w Y   d S rf   )r   r3  assertFalser1   	ispackage)rl   r;  s     r!    test_is_package_when_not_packagez-PydocDocTest.test_is_package_when_not_package  s    !! 	8XU_X66777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   (A		AAc                 X   t          j                    5 }t          j                            |d          }t          |d                                           |                     t          j	        |                     t          j
        |           d d d            d S # 1 swxY w Y   d S )N__init__.pyr!  )r   r3  rI   rJ   r4  r&  close
assertTruer1   rG  remove)rl   r;  r<  s      r!   test_is_package_when_is_packagez,PydocDocTest.test_is_package_when_is_package  s    !! 	!XX}==IC  &&(((OOEOH55666Ii   		! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   A>BB#&B#c                 
    G d dt                     }t          t          t                               }|j        |d<   |d= |d= |j        |d<   |j        |d<   t          j        |          }|                     ||           d S )Nc                       e Zd Zd ZdS )/PydocDocTest.test_allmethods.<locals>.TestClassc                     dS )NTr   rl   s    r!   method_returning_truezEPydocDocTest.test_allmethods.<locals>.TestClass.method_returning_true  s    tr    N)r   r   r   rT  r   r    r!   	TestClassrQ    s#            r    rU  rT  r   	__class____subclasshook____init_subclass__)	r   dictvarsrT  rW  rX  r1   
allmethodsassertDictEqual)rl   rU  r   methodss       r!   test_allmethodszPydocDocTest.test_allmethods  s    	 	 	 	 	 	 	 	
 V%%,5,K()Y[! (1'A#$(1(C$%"9--Wh/////r    c                     G d d           G fdd          }t          j        |          }t          j        dd|          }|                     |dt
          z             t          j        |t          j                              }d	t
           d
}t          |          }d |                    d          D             }|D ]}| 	                    ||           d S )Nc                        e Zd ZddZeZd ZdS )+PydocDocTest.test_method_aliases.<locals>.ANc                     dS )z(Raise this widget in the stacking order.Nr   )rl   	aboveThiss     r!   tkraisez3PydocDocTest.test_method_aliases.<locals>.A.tkraise        r    c                     dS )zReturn sizeNr   rS  s    r!   a_sizez2PydocDocTest.test_method_aliases.<locals>.A.a_size  re  r    rf   )r   r   r   rd  liftrg  r   r    r!   r   ra    s<        ? ? ? ?D" " " " "r    r   c                   *    e Zd ZddZeZ j        ZdS )+PydocDocTest.test_method_aliases.<locals>.BNc                     dS )z'Configure resources of an item TAGORID.Nr   )rl   tagOrIdcnfkws       r!   itemconfigurez9PydocDocTest.test_method_aliases.<locals>.B.itemconfigure  re  r    rf   )r   r   r   ro  
itemconfigrg  b_size)r   s   r!   r   rj    s/        > > > >&JXFFFr    r   rP   r$   a  Python Library Documentation: class B in module %s

class B(A)
 |  Method resolution order:
 |      B
 |      A
 |      builtins.object
 |  
 |  Methods defined here:
 |  
 |  b_size = a_size(self)
 |  
 |  itemconfig = itemconfigure(self, tagOrId, cnf=None, **kw)
 |  
 |  itemconfigure(self, tagOrId, cnf=None, **kw)
 |      Configure resources of an item TAGORID.
 |  
 |  ----------------------------------------------------------------------
 |  Methods inherited from A:
 |  
 |  a_size(self)
 |      Return size
 |  
 |  lift = tkraise(self, aboveThis=None)
 |  
 |  tkraise(self, aboveThis=None)
 |      Raise this widget in the stacking order.
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from A:
 |  
 |  __dict__
 |      dictionary for instance variables (if defined)
 |  
 |  __weakref__
 |      list of weak references to the object (if defined)
rendererz1
Python Library Documentation

class B in module a  
class B(A)
    Method resolution order:
        B
        A
        builtins.object

    Methods defined here:
        b_size = a_size(self)
        itemconfig = itemconfigure(self, tagOrId, cnf=None, **kw)
        itemconfigure(self, tagOrId, cnf=None, **kw)
            Configure resources of an item TAGORID.

    Methods inherited from A:
        a_size(self)
            Return size
        lift = tkraise(self, aboveThis=None)
        tkraise(self, aboveThis=None)
            Raise this widget in the stacking order.

    Data descriptors inherited from A:
        __dict__
            dictionary for instance variables (if defined)
        __weakref__
            list of weak references to the object (if defined)
c                 :    g | ]}||                                 S r   r   r   s     r!   r   z4PydocDocTest.test_method_aliases.<locals>.<listcomp>b  s&    UUU4PTU$**,,UUUr    r.   )
r1   r   rQ   rS   rs   r   r?   ra   splitr   )rl   r   rC   r   as_textr   expected_liner   s          @r!   test_method_aliasesz PydocDocTest.test_method_aliases  sF   	" 	" 	" 	" 	" 	" 	" 	"	 	 	 	 	 	 	 	 	 	 q!!fUB$$ %J K% %	 %	 %	N q5=??;;;   : C..UU=3F3Ft3L3LUUU+ 	2 	2MMM-1111	2 	2r    c                    dd l }t          |          \  }}t          |          \  }}t          t                    \  }}t          t                    \  }}|j        D ]e}| d}d| d}	|                     ||           |                     |	|           |                     ||           |                     |	|           fd S )Nr   z = _Featurez<strong>z</strong> = _Feature)
__future__rU   rF   r   all_feature_namesr   r   )
rl   rz  future_textrZ   future_htmlpydoc_mod_textpydoc_mod_htmlfeaturetxtr`   s
             r!   test__future__importsz"PydocDocTest.test__future__importsf  s     	'
33Q'
33Q*955*955!3 	3 	3G)))C;g;;;DMM#{+++MM$,,,S.111T>2222	3 	3r    )(r   r   r   r  unittestskipIfhasattrr   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r+  r0  r@  rD  rH  rN  r^  rx  r  r   r    r!   r{   r{     s       GX_WWS*--@,#,..HJ J' ' J J' X_WWS*--@,#,..HJ J0 0 J J01 1 19 9 9
Q Q Q
' ' '
7 
7 
76 6 6 ' ' '
+ + +: : :% % %>" " "64 4 4@6 6 68	6 	6 	6- - -Y Y Y X_WWS*--@,#,..HJ J *  * J J *D< < <+ + +	8 	8 	8 - - -
/ 
/ 
/E E E
8 8 8! ! !0 0 02 X2 X2 X2t3 3 3 3 3r    r{   c                      e Zd Zd Zd Zd Zd Zej         e	j
        ed          d                         Zd Z e	j        d          d	             Z e	j        d          d
             Z e	j        d          d             Zd ZdS )PydocImportTestc                     t          j        t                    | _        |                     t
          t                     t          j                     d S rf   )rI   mkdirr   r;  r%  r   r5  invalidate_cachesrS  s    r!   setUpzPydocImportTest.setUpz  s<    (('''#%%%%%r    c                 B   d}dddd                     |          dfd                     |          d                     |          ff}t          j                            t          |          t          j        z   dz   }|D ]\  }}t          |d	          5 }|                    d
                     |                     d d d            n# 1 swxY w Y   t          |t                    	                    d          }t          ||fz  }|                     ||           d S )Ntestmod_xyzzy)i_am_not_herer  )test.i_am_not_here_eitherr  )ztest.i_am_not_here.neither_am_ir   zi_am_not_here.{}r  ztest.{}pyr!  z
import {}
)
PYTHONPATHr   )r(  rI   rJ   r4  r   extsepr&  r8  r=   r   badimport_patternrs   )	rl   modname	testpairssourcefnimportstringexpectedinmsgfrv   r   s	            r!   test_badimportzPydocImportTest.test_badimport  s^    ".FE&&w//Ag&&	(8(8(A(AB	 7<<0029<tC+4 	/ 	/'L-h$$ <,,\::;;;< < < < < < < < < < < < < < <#G???FFwOOF(G]+CCHXv....	/ 	/s   )CC	C	c                    t           j                            t          d          }t          j        |           t           j                            |d          t           j        z   dz   }t          |d          5 }|                    d           d d d            n# 1 swxY w Y   |                     t          g          5  t                      5 }t                      5 }t          j        d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     |                                d           |                     |                                d           t                      5 }t                      5 }t          j        d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     |                                                                d           |                     |                                d           d d d            d S # 1 swxY w Y   d S )	N	syntaxerr__init__r  r!  zinvalid python syntax = $1
rJ   xyzzyr$   )rI   rJ   r4  r   r  r  r&  r8  rp   r   r   r1   aproposrs   r   r3   )rl   pkgdir	badsyntaxr  r9   r:   s         r!   test_apropos_with_bad_packagez-PydocImportTest.test_apropos_with_bad_package  sZ   fk22
GLL44ry@4G	)S!! 	4QGG2333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4((vh(77 	1 	1 "" +c$&& +#M'***+ + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + S\\^^R000S\\^^R000 "" /c$&& /#M+.../ / / / / / / / / / / / / / // / / / / / / / / / / / / / / S\\^^1133[AAAS\\^^R000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   :BB #B ID!D6DDD	D
DID	I D	!A!IG	F2&G	2F66G	9F6:G	=I	G	IG	A%II
Ic                    t           j                            t          d          | _        t          j        | j        d           |                     t           j        | j                   |                     t          g          5  t                      5 }t                      5 }t          j        d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     |                                d           |                     |                                d           d S )N
unreadabler   r  SOMEKEYr$   )rI   rJ   r4  r   unreadable_dirr  r%  rmdirrp   r   r   r1   r  rs   r   )rl   r9   r:   s      r!    test_apropos_with_unreadable_dirz0PydocImportTest.test_apropos_with_unreadable_dir  s    gll6<@@
$a((($"5666 ((vh(77 	- 	- "" -c$&& -#M),,,- - - - - - - - - - - - - - -- - - - - - - - - - - - - - -	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-
 	,,,,,,,,sZ   C3C$C9CC		CC	CC3C 	 C3#C 	$C33C7:C7zcannot remove x bitc                    t           j                            t          d          }t          j        |           |                     t          |           t           j                            |d          }t          |d          5 }|                    d           d d d            n# 1 swxY w Y   t          j
        t          j	        |          j                  }	 t          j        ||t          j         z             |                     t          g          5  t                      5 }t!          j        d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     d|                                           t          j        ||           d S # t          j        ||           w xY w)NwalkpkgrJ  r!  r2  r  r$   )rI   rJ   r4  r   r  r%  r   r&  r8  statS_IMODEst_modechmodS_IEXECrp   r   r1   r  r   r   )rl   r  r<  r>  current_moder  s         r!   test_apropos_empty_docz&PydocImportTest.test_apropos_empty_doc  s*    fi00
'''GLL77	)S!! 	"TJJy!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"|BGFOO$;<<	+HV\T\M9:::,,6(,;; " "_=N=N "RXb!!!" " " " " " " " " " " " " " " " " " " " " " " " " " " " " "MM)V__%6%6777HV\*****BHV\****sf   B''B+.B+?F. E$,EE$E	E$E	E$F. $E((F. +E(,+F. .Gc                 :   t           j                            t          d          }t          j        |           t           j                            |d          }t          |dd          5 }|                    d           d d d            n# 1 swxY w Y   |                     t          g          5  t          t          j                  }t          j        
                    dt                     	 |                     t          d	          5  dd l}d d d            n# 1 swxY w Y   |                     d
d          }d}|                     ||           |t          j        d d <   n# |t          j        d d <   w xY w	 d d d            d S # 1 swxY w Y   d S )Ntest_error_packagerJ  wtr   r"  zraise ValueError("ouch")
r  r   ouchzsearch?key=test_error_packagePydoc: Search Resultsz8<a href="test_error_package.html">test_error_package</a>)rI   rJ   r4  r   r  r&  r8  rp   tupler   insertassertRaisesRegex
ValueErrorr  rw   r   )rl   r  initr  saved_pathsr  rX   founds           r!   test_url_search_package_errorz-PydocImportTest.test_url_search_package_error  s9   f&:;;
w||FM22$w/// 	61GG4555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6((vh(77 	* 	*//KHOOAv&&&
*++J?? . .----. . . . . . . . . . . . . . . ,,-L+- --eT***)k))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s`   ,BBB5?F5E,D!E,!D%	%E,(D%	)1E,F,E??FFFz(causes undesirable side-effects (#20128)c                 8   d}d}d}||z   |z   }t                      }t          j        |          } |d           |                                                                }t          |                                          }|                     ||           d S )N         r   modules)r   r1   r   r   r3   lenr   assertGreaterEqual)	rl   num_header_linesnum_module_lines_minnum_footer_linesr   rD   r   rv   	num_liness	            r!   test_moduleszPydocImportTest.test_modules  s      #&::=MMV,,,y""((**))++,,		844444r    c                    d}t                      }t          j        |          }t                      5 } |d           d d d            n# 1 swxY w Y   |                                }|                     ||           d S )Nzpydoc - r   zmodules pydoc)r   r1   r   r   r   r   rl   r   rD   r   r  rv   s         r!   test_modules_searchz#PydocImportTest.test_modules_search  s     V,,, 	$'F?###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$!!##h'''''   AAAz+some buildbots are not cooperating (#20128)c                 *   d}t                      }t          j        |          }t                      5 } |d           d d d            n# 1 swxY w Y   |                                }|                     |                    |                     d S )Nzgc - r   zmodules garbage)r   r1   r   r   r   rL  
startswithr  s         r!   test_modules_search_builtinz+PydocImportTest.test_modules_search_builtin  s    V,,, 	&'F$%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&!!##))(3344444r  c                 B   t          j        t           j                  }|                     |t                      |                     |j        d           |                     |j        t           j                   |                     |j        t           j                   d S )Nr1   )r1   
importfiler2   assertIsNotrs   r   __spec__)rl   loaded_pydocs     r!   test_importfilezPydocImportTest.test_importfile
  s    '77u---.888.???.?????r    N)r   r   r   r  r  r  r  r   skip_unless_working_chmodr  r  r   r  r  skipr  r  r  r  r   r    r!   r  r  x  s(       & & &
/ / /*1 1 1*- - - (X_]$9::+ + ;: )(+ * * *. X]=>>5 5 ?>5 X]=>>
( 
( ?>
( X]@AA	5 	5 BA	5@ @ @ @ @r    r  c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
d             Ze
d	             Zd
 Zed             Zd Zd Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zd Zd Z ed             Z!dS )TestDescriptionsc                 f    ddl m} t          j        |          }|                     d|           d S )Nr   )pydocfodderr  )testr  r1   r   r   )rl   r  rC   s      r!   test_modulezTestDescriptions.test_module  s>    $$$$$${++mS)))))r    c                 8    G d d          } |            }|                      t          j        |          d           |                      t          j        |          d           dt          z  }|                     |t          j        |                     d S )Nc                       e Zd ZdZdS )&TestDescriptions.test_class.<locals>.CzNew-style classNr   r   r    r!   Cr    s        """"r    r  zclass CzC in module %s object)rs   r1   describer   r   r   )rl   r  cr   s       r!   
test_classzTestDescriptions.test_class  s    """"""""ACC**I666**C000*X5h 0 3 344444r    c                    |                      t          j        t          j        t
                             d           t          j        t          j        t
                   t          j                  }|                     d|           |                     d|           |                     t          j
                                                                        d         |           |                      t          j        t          t
                             d           t          j        t          t
                   t          j                  }|                     d|           |                     d|           |                     t          j
                                                                        d         |           d S )	N_GenericAliasrr  z_GenericAlias in module typingzList = class list(object)r   GenericAliaszGenericAlias in module builtinsz
class list(object))rs   r1   r  typingListintr   	plaintextr   listr   r3   r   rl   rC   s     r!   test_generic_aliasz#TestDescriptions.test_generic_alias$  sF   C(899?KKKv{3/%/JJJ6<<<13777dl((**5577:C@@@S	22NCCCtCy5?CCC7===,c222dl((**5577:C@@@@@r    c                    |                      t          j        t          j        t
          t          f                   d           t          j        t          j        t
          t          f         t          j                  }| 	                    d|           | 	                    d|           t          j        j
        rO| 	                    t          j        j
                                                                        d         |           |                      t          j        t
          t          z            d           t          j        t
          t          z  t          j                  }| 	                    d|           | 	                    d|           | 	                    t          j        j
                                                                        d         |           d S )	N_UnionGenericAliasrr  z#_UnionGenericAlias in module typingzUnion = typing.Unionr   	UnionTypez UnionType in module types objectz!
class UnionType(builtins.object))rs   r1   r  r  Unionr  r   r   r  r   r   r3   r   typesr  r  s     r!   test_union_typez TestDescriptions.test_union_type1  sc   S#X(>??AUVVVv|CH5PPP;SAAA,c222< 	MMM&,.4466AACCAFLLLc	22K@@@sSy5?CCC8#>>>:C@@@eo-3355@@BB1EsKKKKKr    c                    |                      t          j        t          j                  d           t          j        t          j        t          j                  }|                     d|           t          j        j        rg|                     d|           |                     t          j        j        	                                
                                d         |           d S |                     d|           d S )N_SpecialFormrr  z_SpecialForm in module typingzNoReturn = typing.NoReturnr   z%NoReturn = class _SpecialForm(_Final))rs   r1   r  r  NoReturnr   r  r   r   r3   r   r  s     r!   test_special_formz"TestDescriptions.test_special_form?  s    88.IIIvIII5s;;;?" 	HMM6<<<MM&/17799DDFFqI3OOOOOMMA3GGGGGr    c           	      X   dt           j        t           j                 dt          dt           j        t           j        t          t           j        f                  fd}t          j        d          } G d dt           j        |         t           j        t          t          f                   }| 
                    t          j        |                                          d         d	           | 
                    t          j        |                                          d
         d           d S )Ndatar   returnc                     d S rf   r   )r  r   s     r!   fooz/TestDescriptions.test_typing_pydoc.<locals>.fooJ  s    Cr    Tc                       e Zd ZdS )-TestDescriptions.test_typing_pydoc.<locals>.CNr   r   r    r!   r  r  N  s          r    r  z?ffoooo(data: List[Any], x: int) -> Iterator[Tuple[int, Any]]r  z2class CC(collections.abc.Mapping, typing.Generic))r  r  Anyr  IteratorTupleTypeVarGenericMappingr   rs   r1   r   r   )rl   r   r  r  s       r!   test_typing_pydocz"TestDescriptions.test_typing_pydocI  s   	fk&*- 		!?6<VZ+HI	 	 	 	 N3AAAAAq!6>#s(#;AAA)#..99;;B?9	: 	: 	: 	)!,,7799!<P	R 	R 	R 	R 	Rr    c                    dD ]v}|                      t          j        |                     	 t          j        |           ?# t          $ r+ |                     d                    |                     Y sw xY wdD ]O}|                     t          j        |                     |                     t          t          j        |           Pd S )N)r   zstr.translatezbuiltins.strzbuiltins.str.translatezfinding the doc of {!r} failed)notbuiltinsstrrrzstrr.translatezstr.trrrranslatezbuiltins.strrrzbuiltins.str.trrranslate)	assertIsNotNoner1   locater   ImportErrorfailr(  r:  assertRaises)rl   names     r!   test_builtinzTestDescriptions.test_builtinU  s    / 	I 	ID   d!3!3444I &&&& I I I		:AA$GGHHHHHI1 	C 	CD el400111k5+;TBBBB		C 	Cs   A2A76A7c                     t          j        t          j        |                     }|                    d          }t	          |          dk    sJ |d         S Nr.   r  )r1   plainr   ru  r  orX   liness      r!   _get_summary_linez"TestDescriptions._get_summary_linef  sI    {5+A..//

4  5zzQQxr    c                     t          j        t          j        |                     }|                    d          }d                    |dd                    S r  )r1   r  r   ru  r4  r  s      r!   _get_summary_linesz#TestDescriptions._get_summary_linesm  sG    {5+A..//

4  yyqrr###r    c                 v    |                      |                     t          j        j                  d           d S )Nzwrap(self, text))rs   r  r  TextWrapperwraprS  s    r!   test_unbound_python_methodz+TestDescriptions.test_unbound_python_methodt  s=    //0D0IJJ	  	  	  	  	 r    c                 v    |                      |                     t          j        j                  d           d S )Nzdump(self, obj, /))rs   r  _picklePicklerdumprS  s    r!   test_unbound_builtin_methodz,TestDescriptions.test_unbound_builtin_methodx  s<    //0DEE 	" 	" 	" 	" 	"r    c                     t          j                    }|                     |                     |j                  d           d S )Nz2wrap(text) method of textwrap.TextWrapper instance)r  r   rs   r  r!  )rl   ts     r!   test_bound_python_methodz)TestDescriptions.test_bound_python_method~  sL     ""//77@	B 	B 	B 	B 	Br    c                    t          dg d          }t          j        |          }|                     |                    d          |                    d                     |                     |                    d          |                    d                      G d d          } G d d	          }t          j        |           t          j        |           d S )
Nr  )r  r  agegroupr  r  r,  c                       e Zd ZdZdS )MTestDescriptions.test_field_order_for_named_tuples.<locals>.NonIterableFieldsNr   r   r   _fieldsr   r    r!   NonIterableFieldsr.    s        GGGr    r1  c                       e Zd Zg gZdS )MTestDescriptions.test_field_order_for_named_tuples.<locals>.NonHashableFieldsNr/  r   r    r!   NonHashableFieldsr3    s        dGGGr    r4  )r   r1   r   
assertLessindex)rl   r  r(   r1  r4  s        r!   !test_field_order_for_named_tuplesz2TestDescriptions.test_field_order_for_named_tuples  s    H&K&K&KLLV$$
++QWW[-A-ABBB,,aggj.A.ABBB	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	*+++*+++++r    c                     t                      }t          j        |          }|                     |                     |j                  d           d S )Nz/dump(obj, /) method of _pickle.Pickler instance)r   r$  r%  rs   r  r&  )rl   r(   ps      r!   test_bound_builtin_methodz*TestDescriptions.test_bound_builtin_method  sQ    JJOA//77=	? 	? 	? 	? 	?r    c                 l    |                      |                     t          j                  d           d S )Nz0stat(path, *, dir_fd=None, follow_symlinks=True))rs   r  rI   r  rS  s    r!   test_module_level_callablez+TestDescriptions.test_module_level_callable  s>    //88>	@ 	@ 	@ 	@ 	@r    c                 X    G d d          }|                      |                     |j        d                   d           |                      |                     |j                  d           |                     dt          j        t          j        |                               d S )Nc                   $    e Zd Zed             ZdS )-TestDescriptions.test_staticmethod.<locals>.Xc                     dS )zA static methodNr   r   ys     r!   smz0TestDescriptions.test_staticmethod.<locals>.X.sm  	     r    N)r   r   r   staticmethodrC  r   r    r!   Xr?    s-          \  r    rF  rC  zsm(x, y)
    A static method
zL
 |  Static methods defined here:
 |  
 |  sm(x, y)
 |      A static method
)rs   r  __dict__rC  r   r1   r  r   rl   rF  s     r!   test_staticmethodz"TestDescriptions.test_staticmethod  s    	 	 	 	 	 	 	 	
 	00D1ABB1	2 	2 	2 	0066 9 	 	 	 	 
 [!!$$%%	' 	' 	' 	' 	'r    c                 X    G d d          }|                      |                     |j        d                   d           |                      |                     |j                  d           |                     dt          j        t          j        |                               d S )Nc                   $    e Zd Zed             ZdS ),TestDescriptions.test_classmethod.<locals>.Xc                     dS )zA class methodNr   )clsr   s     r!   cmz/TestDescriptions.test_classmethod.<locals>.X.cm  rD  r    N)r   r   r   classmethodrO  r   r    r!   rF  rL    s-          [  r    rF  rO  zcm(...)
    A class method
z:cm(x) method of builtins.type instance
    A class method
zZ
 |  Class methods defined here:
 |  
 |  cm(x) from builtins.type
 |      A class method
)rs   r  rG  rO  r   r1   r  r   rH  s     r!   test_classmethodz!TestDescriptions.test_classmethod  s    	 	 	 	 	 	 	 	
 	00D1ABB0	1 	1 	1 	0066 9 	 	 	 	 
 [!!$$%%	' 	' 	' 	' 	'r    c                    |                      |                     t          j                  d           |                      |                     t          j                  d           |                      |                     t          j                  d           |                      |                     t          j	                  d           d S )N	numeratorrealr6   obj)
rs   r  r  rS  floatrT  r   r6   
memoryviewrU  rS  s    r!   test_getset_descriptorz'TestDescriptions.test_getset_descriptor  s     	//>>LLL//
;;VDDD//	??HHH//
??GGGGGr    c                    |                      |                     t          j                  d           |                      |                     t          j                  d           |                      |                     t          j                  d           |                      |                     t          j                  d           |                      |                     t          j
                  d           d S )NrT  startfgetvalue)rs   r  complexrT  rangerZ  slicepropertyr[  StopIterationr\  rS  s    r!   test_member_descriptorz'TestDescriptions.test_member_descriptor  s     	//==vFFF//<<gFFF//<<gFFF//>>GGG//0CDDgNNNNNr    c                 |     G d d          }|                      |                     |j                  d           d S )Nc                       e Zd ZdZdS )4TestDescriptions.test_slot_descriptor.<locals>.PointrA  N)r   r   r   	__slots__r   r    r!   Pointre    s         IIIr    rg  r   )rs   r  r   )rl   rg  s     r!   test_slot_descriptorz%TestDescriptions.test_slot_descriptor  sV    	! 	! 	! 	! 	! 	! 	! 	!//88#>>>>>r    c                      G d d          }|                      |                     |j        d                   d           d S )Nc                       e Zd ZdS )6TestDescriptions.test_dict_attr_descriptor.<locals>.NSNr   r   r    r!   NSrk    r   r    rl  rG  )rs   r  rG  )rl   rl  s     r!   test_dict_attr_descriptorz*TestDescriptions.test_dict_attr_descriptor  sf    	 	 	 	 	 	 	 	//J0GHH#	% 	% 	% 	% 	%r    c                 .   |                      |                     t          t          j                  j                  d           |                      |                     t          t          j                  j                  d           |                      |                     t          t          j                  j	                  d           |                      |                     t          t          j
                  j                  d           d S )Nwidthdebugmajormax)rs   r  r   r   	hash_inforo  flagsrp  version_inforq  
float_inforr  rS  s    r!    test_structseq_member_descriptorz1TestDescriptions.test_structseq_member_descriptor  s    //S]0C0C0IJJ 	" 	" 	"//SY0EFF 	" 	" 	"//S5E0F0F0LMM 	" 	" 	"//S^0D0D0HII	  	  	  	  	 r    c                     t          dd          }|                     |                     |j                  d           d S )NBox)ro  heightz    Alias for field number 0
)r   rs   r  ro  )rl   ry  s     r!    test_namedtuple_field_descriptorz1TestDescriptions.test_namedtuple_field_descriptor  sK     34400;; > 	 	 	 	 	r    c                      G d d          }|                      |                     |j                  d           |                     dt	          j        t	          j        |                               d S )Nc                   $    e Zd Zed             ZdS ),TestDescriptions.test_property.<locals>.Rectc                      | j         | j        z  S )zArea of the rect)r!  hrS  s    r!   areaz1TestDescriptions.test_property.<locals>.Rect.area  s     v&r    N)r   r   r   r`  r  r   r    r!   Rectr~    s-        ' ' X' ' 'r    r  z    Area of the rect
z#
 |  area
 |      Area of the rect
)rs   r  r  r   r1   r  r   )rl   r  s     r!   test_propertyzTestDescriptions.test_property  s    	' 	' 	' 	' 	' 	' 	' 	' 	00;; > 	 	 	 	  [!$''((	* 	* 	* 	* 	*r    c                     G d d           G fdd          }|                      |                     |j                  dt           d           d|j        _        |                      |                     |j                  dt           d           d	|j        _        |                      |                     |j                  d
           d S )Nc                       e Zd Zd ZdS )?TestDescriptions.test_custom_non_data_descriptor.<locals>.Descrc                     || S dS Nr   r   rl   rU  rN  s      r!   __get__zGTestDescriptions.test_custom_non_data_descriptor.<locals>.Descr.__get__      ;Krr    N)r   r   r   r  r   r    r!   Descrr    s#            r    r  c                   $    e Zd Z              ZdS );TestDescriptions.test_custom_non_data_descriptor.<locals>.XNr   r   r   attrr  s   r!   rF  r            577DDDr    rF  r_   zH.TestDescriptions.test_custom_non_data_descriptor.<locals>.Descr object>Custom descriptorz_.TestDescriptions.test_custom_non_data_descriptor.<locals>.Descr object>
    Custom descriptor
r   zfoo(...)
    Custom descriptor
)rs   r  r  r   r   rl   rF  r  s     @r!   test_custom_non_data_descriptorz0TestDescriptions.test_custom_non_data_descriptor  s7   	 	 	 	 	 	 	 	
	 	 	 	 	 	 	 	 	 	 	0088 ;W
;W ;W ;W 	X 	X 	X -0088 ;
; ; ; 	 	 	
  0088 ; 	 	 	 	 	r    c                     G d d           G fdd          }|                      |                     |j                  d           d|j        _        |                      |                     |j                  d           d|j        _        |                      |                     |j                  d	           d S )
Nc                       e Zd Zd Zd ZdS );TestDescriptions.test_custom_data_descriptor.<locals>.Descrc                     || S dS r  r   r  s      r!   r  zCTestDescriptions.test_custom_data_descriptor.<locals>.Descr.__get__'  r  r    c                     ddz   d S )Nr   r   r   r  s      r!   __set__zCTestDescriptions.test_custom_data_descriptor.<locals>.Descr.__set__+  s    !r    N)r   r   r   r  r  r   r    r!   r  r  &  s2              r    r  c                   $    e Zd Z              ZdS )7TestDescriptions.test_custom_data_descriptor.<locals>.XNr  r  s   r!   rF  r  -  r  r    rF  r$   r  z    Custom descriptor
r   zfoo
    Custom descriptor
)rs   r  r  r   r   r  s     @r!   test_custom_data_descriptorz,TestDescriptions.test_custom_data_descriptor$  s   	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	0088"===,0088 ; 	 	 	  0088 ; 	 	 	 	 	r    c                 "   dt           fd}t          j        t          j                            |                    }|                     d|           t          j                                        |          }|                     d|           d S )Nr  c                 
   K   dS Nr   r   )igns    r!   coro_functionz=TestDescriptions.test_async_annotation.<locals>.coro_function>  s      1r    zasync coro_functionz4async <a name="-coro_function"><strong>coro_function)r  r1   r  r  documentr   r?   )rl   r  rX   r`   s       r!   test_async_annotationz&TestDescriptions.test_async_annotation=  s    	 	 	 	 	 {5?33MBBCC+T222}''66B	 	 	 	 	r    c                    d }t          j        t           j                            |                    }|                     d|           t          j                                        |          }|                     d|           d S )Nc                    K   dW V  d S r  r   r   r    r!   an_async_generatorzLTestDescriptions.test_async_generator_annotation.<locals>.an_async_generatorJ  s      GGGGGGr    zasync an_async_generatorz>async <a name="-an_async_generator"><strong>an_async_generator)r1   r  r  r  r   r?   )rl   r  rX   r`   s       r!   test_async_generator_annotationz0TestDescriptions.test_async_generator_annotationI  s    	 	 	 {5?334FGGHH0$777}''(:;;L	 	 	 	 	r    c                     d }t          j                                        |          }|                     d|           d S )Nc                      dS )za link https://localhost/Nr   r   r    r!   a_fn_with_https_linkzHTestDescriptions.test_html_for_https_links.<locals>.a_fn_with_https_linkW  s    Dr    z3<a href="https://localhost/">https://localhost/</a>)r1   r?   r  r   )rl   r  r`   s      r!   test_html_for_https_linksz*TestDescriptions.test_html_for_https_linksU  sS    	 	 	 }''(<==A	
 	
 	
 	
 	
r    N)"r   r   r   r  r  r  r  r  r  r  rE  r  r  r"  r   r'  r*  r7  r:  r<  rI  rQ  rX  rb  rh  rm  rw  r{  r  r  r  r  r  r  r   r    r!   r  r    s       * * *5 5 5A A AL L LH H H
R 
R 
RC C C"   \ $ $ \$      " " "
B B B, , ,  ? ? ? @ @ @ ' ' '( ' ' '( H H H O O O ? ? ?
 % % %          * * *   0   0
 
 

 
 
 	
 	
 	
 	
 	
r    r  z/Socket server not available on Emscripten/WASI.c                       e Zd ZdZd ZdS )PydocServerTestzTests for pydoc._start_serverc           	      d   d }t          j        |dd          |                     j        d            |                     j                   |                     fd           |                     dj                   |                     t                     |                     dt          t          j                            j        d                                                               |                     dt          t          j                            j        d	                                                                                                |                     j                   |                     j                   |                     j                   d S )
Nc                     d| d|d}|S )Nzthe URL sent was: (z, )r   )rt   content_typerX   s      r!   my_url_handlerz3PydocServerTest.test_server.<locals>.my_url_handlerl  s     3633EDKr    	localhostr   )hostnameportc                  >     j         r                                 nd S rf   )servingstop)serverthreads   r!   r  z-PydocServerTest.test_server.<locals>.<lambda>x  s     <+?IL%%'''T r    s$   the URL sent was: (/test, text/html)z/tests'   the URL sent was: (/test.css, text/css)z	/test.css)r1   _start_serverrs   errorrL  r  r%  r   rt   r   r   r   r   urljoinreadr  rF  r:  	docserver)rl   r  r  s     @r!   test_serverzPydocServerTest.test_serveri  s   	 	 	 *   
 	+T222,---IIII	 	 	 	k<#3444
###3FL(()97CCDDIIKK	 	 	 	6FL(()9;GGHHMMOO	 	 	
 	-...,0111,*+++++r    N)r   r   r   r   r  r   r    r!   r  r  b  s+        
 (' ,  ,  ,  ,  ,r    r  c                       e Zd ZdZd Zd ZdS )PydocUrlHandlerTestzTests for pydoc._url_handlerc                     t           j        }|                     t          |dd           |                     t          |dd           d S )Nr   r$   r   foobar)r1   rr   r  	TypeError)rl   r  s     r!   test_content_type_errz)PydocUrlHandlerTest.test_content_type_err  sD    )QR000)QX66666r    c                     g d}|                                  5  |D ]\  }}|                     ||           	 d d d            d S # 1 swxY w Y   d S )N))r$   Pydoc: Index of Modules)zget?key=r  )r6  r  )topicszPydoc: Topics)keywordszPydoc: Keywords)r1   Pydoc: module pydoc)zget?key=pydocr  )zsearch?key=pydocr  )ztopic?key=defzPydoc: KEYWORD def)ztopic?key=STRINGSzPydoc: TOPIC STRINGS)r  zPydoc: Error - foobar)rp   rw   )rl   requestsrt   r[   s       r!   test_url_requestsz%PydocUrlHandlerTest.test_url_requests  s       ((** 	2 	2& 2 2
U%%c511112	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   AA
A
N)r   r   r   r   r  r  r   r    r!   r  r    s8        &&7 7 7
2 2 2 2 2r    r  c                       e Zd Zd ZdS )
TestHelperc                     |                      t          t          j        j                  t          t
          j                             d S rf   )rs   sortedr1   r   r  keywordkwlistrS  s    r!   test_keywordszTestHelper.test_keywords  s@     566//	1 	1 	1 	1 	1r    N)r   r   r   r  r   r    r!   r  r    s#        1 1 1 1 1r    r  c                      e Zd Z ej         eed          o ej                    d          ed                         Z	 ej         eed          o ej                    d          ed                         Z
 ej         eed          o ej                    d          ed                         Z ej         eed          o ej                    d          ed                         Zd ZdS )	PydocWithMetaClassesr|   r}   c                     G d dt                     } G d d|          }t          d t          D                       }t                      }t	          j        |          } ||           t          t          f|d d         z   z  }|                                	                                }| 
                    ||           d S )	Nc                        e Zd Z fdZ xZS )=PydocWithMetaClasses.test_DynamicClassAttribute.<locals>.Metac                 V    |dk    rdS t                                          |          S )Nhamspamsuper__getattr__rl   r  rV  s     r!   r  zIPydocWithMetaClasses.test_DynamicClassAttribute.<locals>.Meta.__getattr__  s)    5==!6ww**4000r    )r   r   r   r  __classcell__rV  s   @r!   Metar    s8        1 1 1 1 1 1 1 1 1r    r  c                   .    e Zd Zej        d             ZdS );PydocWithMetaClasses.test_DynamicClassAttribute.<locals>.DAc                     dS )Neggsr   rS  s    r!   r  z?PydocWithMetaClasses.test_DynamicClassAttribute.<locals>.DA.ham  s    vr    N)r   r   r   r  DynamicClassAttributer  r   r    r!   DAr    s1        (  )(  r    r  	metaclassc              3   (   K   | ]}|rd |z   ndV  dS )z	
 |      r$   Nr   r&   s     r!   r)   zBPydocWithMetaClasses.test_DynamicClassAttribute.<locals>.<genexpr>  sO       .I .I*+ CD.KlQ.>.> .I .I .I .I .I .Ir    r   r  )r   r  expected_data_docstringsr   r1   r   !expected_dynamicattribute_patternr   r   r3   rs   )rl   r  r  r   rD   r   r   rv   s           r!   test_DynamicClassAttributez/PydocWithMetaClasses.test_DynamicClassAttribute  s   	1 	1 	1 	1 	14 	1 	1 	1
	 	 	 	 	4 	 	 	 	 ). .I .I/G.I .I .I )I )I%V,,,r


9;BQB??A""((**/////r    c                 <    G d dt                     } G d d|          }t                      }t          j        |          } ||           t          t
          z  }|                                                                }|                     ||           d S )Nc                   $     e Zd Zd Z fdZ xZS )HPydocWithMetaClasses.test_virtualClassAttributeWithOneMeta.<locals>.Metac                 
    g dS )N)rV  r   r   LIFEr   rN  s    r!   __dir__zPPydocWithMetaClasses.test_virtualClassAttributeWithOneMeta.<locals>.Meta.__dir__  s    FFFFr    c                 V    |dk    rdS t                                          |          S )Nr  r   )r  _Meta__getattrr  s     r!   r  zTPydocWithMetaClasses.test_virtualClassAttributeWithOneMeta.<locals>.Meta.__getattr__  s)    &==2ww((...r    r   r   r   r  r  r  r  s   @r!   r  r    sJ        G G G/ / / / / / / / /r    r  c                       e Zd ZdS )IPydocWithMetaClasses.test_virtualClassAttributeWithOneMeta.<locals>.ClassNr   r   r    r!   Classr    r   r    r  r  r   )	r   r   r1   r   "expected_virtualattribute_pattern1r   r   r3   rs   )rl   r  r  rD   r   r   rv   s          r!   %test_virtualClassAttributeWithOneMetaz:PydocWithMetaClasses.test_virtualClassAttributeWithOneMeta  s    	/ 	/ 	/ 	/ 	/4 	/ 	/ 	/	 	 	 	 	d 	 	 	 	V,,,u:XE""((**/////r    c                   
  G d dt                     
 G d dt                      G 
fdd
          } G d d
	          } G d
 d||	          }t                      }t          j        |          } ||           t          t
          z  }|                                                                }|                     ||           t                      }t          j        |          } ||           t          t
          z  }|                                                                }	|                     ||	           d S )Nc                   $     e Zd Zd Z fdZ xZS )IPydocWithMetaClasses.test_virtualClassAttributeWithTwoMeta.<locals>.Meta1c                 
    g dS )N)rV  r   r   r   r   r  s    r!   r  zQPydocWithMetaClasses.test_virtualClassAttributeWithTwoMeta.<locals>.Meta1.__dir__      EEEEr    c                 V    |dk    rdS t                                          |          S )Nr   r   r  r  s     r!   r  zUPydocWithMetaClasses.test_virtualClassAttributeWithTwoMeta.<locals>.Meta1.__getattr__  )    %<<1ww**4000r    r  r  s   @r!   Meta1r    J        F F F1 1 1 1 1 1 1 1 1r    r  c                   $     e Zd Zd Z fdZ xZS )IPydocWithMetaClasses.test_virtualClassAttributeWithTwoMeta.<locals>.Meta2c                 
    g dS )N)rV  r   r   twor   r  s    r!   r  zQPydocWithMetaClasses.test_virtualClassAttributeWithTwoMeta.<locals>.Meta2.__dir__  r  r    c                 V    |dk    rdS t                                          |          S )Nr  r  r  r  s     r!   r  zUPydocWithMetaClasses.test_virtualClassAttributeWithTwoMeta.<locals>.Meta2.__getattr__  r  r    r  r  s   @r!   Meta2r
    r  r    r  c                   ,     e Zd ZfdZ fdZ xZS )IPydocWithMetaClasses.test_virtualClassAttributeWithTwoMeta.<locals>.Meta3c           
          t          t          t          g d                    |           z                       |           z                                 S )N)rV  r   r   three)r  r  setr  )rN  r  r  s    r!   r  zQPydocWithMetaClasses.test_virtualClassAttributeWithTwoMeta.<locals>.Meta3.__dir__  s^    F3DDDMM#&&').s););<$= $= > > ? ? ?r    c                 V    |dk    rdS t                                          |          S )Nr  r  r  r  s     r!   r  zUPydocWithMetaClasses.test_virtualClassAttributeWithTwoMeta.<locals>.Meta3.__getattr__  s)    '>>1ww**4000r    r  )rV  r  r  s   @r!   Meta3r    sW        ? ? ? ? ? ?1 1 1 1 1 1 1 1 1r    r  c                       e Zd ZdS )JPydocWithMetaClasses.test_virtualClassAttributeWithTwoMeta.<locals>.Class1Nr   r   r    r!   Class1r    r   r    r  r  c                       e Zd ZdS )JPydocWithMetaClasses.test_virtualClassAttributeWithTwoMeta.<locals>.Class2Nr   r   r    r!   Class2r    r   r    r  r   )
r   r   r1   r   "expected_virtualattribute_pattern2r   r   r3   rs   "expected_virtualattribute_pattern3)rl   r  r  r  rD   r   expected_text1result1expected_text2result2r  r  s             @@r!   %test_virtualClassAttributeWithTwoMetaz:PydocWithMetaClasses.test_virtualClassAttributeWithTwoMeta  s   	1 	1 	1 	1 	1D 	1 	1 	1	1 	1 	1 	1 	1D 	1 	1 	1	1 	1 	1 	1 	1 	1 	1 	1E5 	1 	1 	1	 	 	 	 	u 	 	 	 		 	 	 	 	Vu 	 	 	 	V,,,v;hF//##))++111V,,,v;hF//##))++11111r    c                 <    G d dt                     } G d d|          }t                      }t          j        |          } ||           t          t
          z  }|                                                                }|                     ||           d S )Nc                       e Zd Zd ZdS ).PydocWithMetaClasses.test_buggy_dir.<locals>.Mc                 
    g dS )N)rV  r   missingherer   r  s    r!   r  z6PydocWithMetaClasses.test_buggy_dir.<locals>.M.__dir__  s    CCCCr    N)r   r   r   r  r   r    r!   Mr%    s(        D D D D Dr    r)  c                       e Zd ZdZdS ).PydocWithMetaClasses.test_buggy_dir.<locals>.Czpresent!N)r   r   r   r(  r   r    r!   r  r+    s        DDDr    r  r  r   )	r   r   r1   r   !expected_missingattribute_patternr   r   r3   rs   )rl   r)  r  rD   r   r   rv   s          r!   test_buggy_dirz#PydocWithMetaClasses.test_buggy_dir	  s    	D 	D 	D 	D 	D 	D 	D 	D	 	 	 	 	! 	 	 	 	V,,,q			9HD""((**/////r    c                     t                      5 }t          j        d           d d d            n# 1 swxY w Y   |                                }|                     d|           d S )Nz	enum.Enumz
class Enum)r   r1   r   r   r   )rl   r  r  s      r!   test_resolve_falsez'PydocWithMetaClasses.test_resolve_false  s      	$'J{###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$##%%lH-----s   044N)r   r   r   r  r  r  r   r|   r   r  r  r"  r-  r/  r   r    r!   r  r    s       X_WWS*--@,#,..HJ J0 0 J J0( X_WWS*--@,#,..HJ J0 0 J J0" X_WWS*--@,#,..HJ J'2 '2 J J'2R X_WWS*--@,#,..HJ J0 0 J J0. . . . .r    r  c                   :    e Zd Zd Zd	dZd Zd Zd Zd Zd Z	dS )
TestInternalUtilitiesc                 (   t          j                    }|j        | _        t          j                            |j        d          | _        |                     |j	                   t	          j
                    x| _        }dt          j        |g| _        d S )Nnonexistentr$   )tempfileTemporaryDirectoryr  argv0dirrI   rJ   r4  argv0r%  cleanupgetcwd
abs_curdircurdircurdir_spellings)rl   tmpdirr:  s      r!   r  zTestInternalUtilities.setUp$  so    ,..W\\&+}==
'''')y{{2*!#RY
 ;r    Nc                 >    || j         }t          j        ||          S rf   )r7  r1   _get_revised_path)rl   
given_pathr7  s      r!   r?  z'TestInternalUtilities._get_revised_path,  s#     =JE&z5999r    c                     t           j                                        }| j        D ]<}t	          |                    |                    D ]}|                    |           =|S rf   )r   rJ   copyr<  r^  countrM  )rl   
clean_pathspelling__s       r!   _get_starting_pathz(TestInternalUtilities._get_starting_path3  sj    X]]__
- 	, 	,HJ,,X6677 , ,!!(++++,r    c                     |                                  }| j        g|z   }|                     |                     |          |           d S rf   )rG  r:  rs   r?  )rl   rD  expected_paths      r!   ,test_sys_path_adjustment_adds_missing_curdirzBTestInternalUtilities.test_sys_path_adjustment_adds_missing_curdir;  sL    ,,..
)J6//
;;]KKKKKr    c                    |                                  }| j        g|z   }| j        g|z   }|                     |                     |          |           || j        gz   }|                     |                     |          |           d S rf   )rG  r:  r6  rs   r?  )rl   rD  rI  leading_argv0dirtrailing_argv0dirs        r!   *test_sys_path_adjustment_removes_argv0_dirz@TestInternalUtilities.test_sys_path_adjustment_removes_argv0_dir@  s    ,,..
)J6 M?Z7//0@AA=QQQ&$-8//0ABBMRRRRRr    c                      fd}                                  } j        g|z   } j        g|z   }                      ||          |           | j        gz   } j        g|z   }                      ||          |           d S )Nc                 F                         | t          j                  S )N)r7  )r?  r1   r2   )r@  rl   s    r!   r?  z\TestInternalUtilities.test_sys_path_adjustment_protects_pydoc_dir.<locals>._get_revised_pathI  s    ))*EN)KKKr    )rG  r6  r:  rs   )rl   r?  rD  rL  rI  rM  s   `     r!   +test_sys_path_adjustment_protects_pydoc_dirzATestInternalUtilities.test_sys_path_adjustment_protects_pydoc_dirH  s    	L 	L 	L 	L 	L,,..
 M?Z7),<<**+;<<mLLL&$-8),==**+<==}MMMMMr    c                 "   |                                  }| j        D ]}|                     |          5  |g|z   }|                     |                     |                     ||gz   }|                     |                     |                     | j        g|z   }|                     |                     |                     || j        gz   }|                     |                     |                     d d d            n# 1 swxY w Y   d S )N)curdir_spelling)rG  r<  subTestr:  r?  r6  )rl   rD  rE  leading_curdirtrailing_curdirrL  rM  s          r!   5test_sys_path_adjustment_when_curdir_already_includedzKTestInternalUtilities.test_sys_path_adjustment_when_curdir_already_includedS  sn   ,,..
- 
	M 
	MHh77 	M 	M"*j!8!!$"8"8"H"HIII",z"9!!$"8"8"I"IJJJ$(M?^#C !!$"8"89I"J"JKKK$3t}o$E!!!$"8"89J"K"KLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M
	M 
	Ms   CDD	
D	rf   )
r   r   r   r  r?  rG  rJ  rN  rQ  rW  r   r    r!   r1  r1  "  s        < < <: : : :  L L L
S S S	N 	N 	NM M M M Mr    r1  c                      t          j                    } t          j        t           j        g| R   t          j        t
                     d S rf   )r   threading_setupr  addModuleCleanupthreading_cleanupr   )thread_infos    r!   setUpModuler]  b  sD    "244K.@O;OOOOm,,,,,r    __main__)[rI   r   rx   importlib.utilr5  r   r1   r9  r  r$  ro   rQ   r  r4  test.supportr  r  r  r  urllib.parser   	xml.etreer   xml.etree.ElementTreer  ior   collectionsr   urllib.requestr   r   r   r   test.support.script_helperr	   r
   r   r   r   r   r   r   r   r   r   test.support.os_helperr   r   r   r   r   supportHAVE_DOCSTRINGSr  r3   r   r  r   r   expected_html_data_docstringsr-   r   r   r  r  r  r  r  r,  r;   r=   rF   rN   rU   r\   ra   TestCaserc   r{   r  r  r  r  r  r  r  r1  r]  r   mainr   r    r!   <module>rn     s   				 



                  				                             " " " " " " . . . . . . . . & & & & & & " " " " " "M M M M M M M M M M ) ) ) ) ) )/ / / / / / / / / / / / / / / / / / < ; ; ; ; ; ; ; ; ;      	 	 	 	 	 	 	 	 < 0 
  0\x 
EGGy | !& &I &I/G&I &I &I !I !I J X !& &I &I/G&I &I &I !I !I , -4GD"*,E,E  N %  
EGG! "$& 
EGG #& 
EGG #&, 
EGG- #0% 
EGG "                  H%   <c3 c3 c3 c3 c38$ c3 c3 c3LX@ X@ X@ X@ X@m X@ X@ X@vL
 L
 L
 L
 L
x( L
 L
 L
^
 W5 #, #, #, #, #,h' #, #,	 #,L2 2 2 2 2- 2 2 2>1 1 1 1 1" 1 1 1n. n. n. n. n.8, n. n. n.b=M =M =M =M =MH- =M =M =M@- - - zHMOOOOO r    