
    z%i                        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jh                  jj                  rdZ6ndZ6djo                         Z8 e9d e6D              Z:dZ; e9d e6D              Z<dj{                  de j|                        Z?dZ@djo                         ZAdjo                         ZBdjo                         ZCdjo                         ZDdjo                         ZEd ZFd ZGd ZHd ZId  ZJd! ZKd" ZL G d# d$ej                        ZN G d% d&ej                        ZO G d' d(eN      ZP G d) d*ej                        ZQ ej                  e+xs e,d+       G d, d-ej                               ZS G d. d/eN      ZT G d0 d1ej                        ZU G d2 d3ej                        ZV G d4 d5ej                        ZWd6 ZXeYd7k(  r ej                          yy)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	 y)nonasciiN__name__
__module____qualname__     C/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_pydoc.pyr   r   %   s     r   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  yw)z
     |      r#   Nr   .0ss     r    	<genexpr>r(      s(      &I*+ ?@&6&:R&G &I   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              #   @   K   | ]  }|j                  d d        yw) &nbsp;N)replacer%   s     r    r(   r(      s%      &I*+ '(iiX&> &Is   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|i |\  }}}|j                         S Nz-B)r	   pydoc__file__stripmodule_nameargsenvrcouterrs         r    	run_pydocr;   /  sA     ;. D#D%..G4G3GLBS99;r   c                 t    	 || fz   }t        dt        j                  g|i |\  }}}|j                         S r0   )r
   r1   r2   r3   r4   s         r    run_pydoc_failr=   9  sA     ;. D(u~~LLLLBS99;r   c                     	 t        j                         }|j                  |       }|j                  t              xs d}|rd|z   dz   }|j                         |fS )Nr#   z<br><a href="z">Module Docs</a>)r1   HTMLDoc	docmodule	getdoclocr   r3   )moduledocoutputlocs       r    get_pydoc_htmlrF   A  sU    ,
--/C]]6"F
--	
"
(bC
$';;<<>3r   c                     	 t         j                  j                  }t         j                  j                  } | | |t                          }t        j                         }|j                  | |      }|S )N)basedir)ospathabspathdirnamer2   r1   TextDocrA   )rB   rK   rL   rH   rC   rE   s         r    get_pydoc_linkrN   J  sU    2ggooGggooGggh/01G
--/C
---
0CJr   c                    	 t        j                         }|j                  t              xs d}|rd|z   dz   }|j	                  |       }t        j                  d      }|j                  d|      }|j                         |fS )Nr#   z
MODULE DOCS
    r.   .)	r1   rM   rA   r   r@   recompilesubr3   )rB   rC   rE   rD   patts        r    get_pydoc_textrU   S  st    ,
--/C
--	
"
(bC
#c)D0]]6"F ::eDXXb&!F<<>3r   c                     | j                  d      \  }}}|j                  d      \  }}}|j                  d      \  }}}|S )Nz</head>z<title>z</title>)	partition)textheader_titles       r    get_html_titler\   a  sE    >>),LFAq""9-KAq%//*-KE1aLr   c           	          	 | j                  dd      } t        j                  dd|       } t        j                   | ddddd	d
      } | S )Nz<dd>r.   z<.*?>r#   r,   r+   z&gt;>z&lt;<)r-   rQ   rS   r1   )htmls    r    	html2textra   i  sJ     <<%D66'2t$D==xfc63GDKr   c                   @    e Zd ZddZej
                  dd       Zd Zy)PydocBaseTestNc                 j    	 |xs$ t         j                  j                  t              gdfd	}|S )Nc                       | xs ||      S Nr   )rJ   prefixonerrordefault_pathwalk_packagess      r    wrapperz8PydocBaseTest._restricted_walk_packages.<locals>.wrapper|  s     !5vwGGr   )Nr#   N)rI   rJ   rL   r2   )selfrj   rJ   rk   ri   s    `  @r    _restricted_walk_packagesz'PydocBaseTest._restricted_walk_packagesv  s/    	 : 9:	Hr   c              #      K   t         j                  }| j                  ||      t         _        	 d  |t         _        y # |t         _        w xY wwrf   )pkgutilrj   rm   )rl   rJ   rj   s      r    restrict_walk_packagesz$PydocBaseTest.restrict_walk_packages  sB     -- $ > >}?C!E	2$1G!MG!s   ,A? AAAc                 n    t        j                  |d      }t        |      }| j                  |||       |S )Nz	text/html)r1   _url_handlerr\   assertEqual)rl   urlexpected_titlerX   results        r    call_url_handlerzPydocBaseTest.call_url_handler  s5    !!#{3%6r   rf   )r   r   r   rm   
contextlibcontextmanagerrp   rw   r   r   r    rc   rc   t  s&     2 2r   rc   c                       e Zd ZdZ ej
                   eed      xr  ej                         d      e	d               Z
 ej
                   eed      xr  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      xr  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'y)"PydocDocTestNgettrace1trace function introduces __locals__ unexpectedlyc                 D   t        t              \  }}t        |      }|j                         D cg c]  }|j	                          }}|D cg c]  }|s|	 }}|d= t
        j                         }|D cg c]  }|s|j	                          }}| j                  ||       t        j                  t              }t        j                  j                  |      }| j                  ||       | j                  ||       | j                  ||       y c c}w c c}w c c}w N   )rF   r   ra   
splitlinesr3   html2text_of_expectedrs   inspect
getabsfileurllibparsequoteassertIn)	rl   rv   doc_loctext_resultline
text_linesexpected_linesmod_filemod_urls	            r    test_html_doczPydocDocTest.test_html_doc  s     )3'/:/E/E/GHtdjjlH
H'1:tTd:
:qM.99;3AJ4T$**,JJ^4%%i0,,$$X.gv&h'gv& I: Ks   DDD6D>Dc                     t        t              \  }}t        |ft        z   t	        j
                  t              fz   z  }| j                  ||       y 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  sQ     )3- 
56 ++I689: 	/r   c                     dd l } G d d|j                        }t        j                  |      }| j	                  d|       y )Nr   c                       e Zd ZdZdZy)IPydocDocTest.test_text_enum_member_with_value_zero.<locals>.BinaryIntegerr   r   N)r   r   r   zerooner   r   r    BinaryIntegerr     s    DCr   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  s8     		DLL 	 }-*C0r   c                 n    t        t        j                  j                        }| j	                  d|       y )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"78-x8r   c                 b    t        t        j                        \  }}| j                  |dd       y )Nr#   z'MODULE DOCS incorrectly includes a link)rU   r   r   rs   )rl   rv   r   s      r    test_issue8225zPydocDocTest.test_issue8225  s'    (3"&OPr   c                     t         j                  }	 d t         _        t        j                          |t         _        y # |t         _        w xY wrf   )sysstdinr1   getpager)rl   previous_stdins     r    test_getpager_with_stdin_nonez*PydocDocTest.test_getpager_with_stdin_none  s0    	'CINN&CICIs	   = A
c                      G d d      } G d d      }t        j                   |             }t        j                   |             }| j                  |j                  dd      |       y )Nc                       e Zd ZdZ y))PydocDocTest.test_non_str_name.<locals>.A*   Nr   r   r   r    Ar     s    Hr   r   c                       e Zd Zy))PydocDocTest.test_non_str_name.<locals>.BNr   r   r   r    Br         r   r   )r1   r   rs   r-   )rl   r   r   adocbdocs        r    test_non_str_namezPydocDocTest.test_non_str_name  sU    	 		 	$$c3/6r   c                 j    d}t        t        |      d      }t        |z  }| j                  ||d       y )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  s7    -^N3W="^364	6r   c                     t        dd      }t        j                  j                  dd      }| j	                  ||       y )Nztest.test_pydoc.nonasciir   )PYTHONIOENCODINGbackslashreplace)r;   r   __doc__encoder   )rl   rv   encodeds      r    test_not_asciizPydocDocTest.test_not_ascii  s6    5P""))'3EFgv&r   c                     d}t        t        |      d      }t        |j                         z  }| j	                  ||       y )Nz test.i_am_not_here r   )r   r=   r   r3   rs   r   s       r    test_input_stripzPydocDocTest.test_input_strip  s;    /^N3W="^%9%9%;;6*r   c                     t         j                  }| j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d      d       y )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  sl    --!BC-	/!CD-	/ 	-!@A8	:r   c                     	 t        j                         }|j                  t              }d}| j	                  ||       y )Nz |  Built-in subclasses:
 |      async_generator
 |      BaseException
 |      builtin_function_or_method
 |      bytearray
 |      ... and \d+ other subclasses)r1   rM   docclassobjectassertRegexrl   rC   rX   snips       r    )test_builtin_with_more_than_four_childrenz6PydocDocTest.test_builtin_with_more_than_four_children  s;    	( mmo||F#8 	t$r   c                     	 t        j                         }|j                  t              }d}| j	                  ||       y )Nzc |  Built-in subclasses:
 |      FloatingPointError
 |      OverflowError
 |      ZeroDivisionError)r1   rM   r   ArithmeticErrorr   r   s       r    test_builtin_with_childz$PydocDocTest.test_builtin_with_child  s9    	$ mmo||O,, 	dD!r   c                     	 t        j                         }|j                  t              }d}| j	                  ||       | j                  d|       y )Nz^ |  Built-in subclasses:
 |      ArithmeticError
 |      AssertionError
 |      AttributeErrorZeroDivisionError)r1   rM   r   	Exceptionr   assertNotInr   s       r    test_builtin_with_grandchildz)PydocDocTest.test_builtin_with_grandchild4  sJ    	* mmo||I&) 	dD!,d3r   c                 |    	 t        j                         }|j                  t              }| j	                  d|       y NzBuilt-in subclasses)r1   rM   r   r   r   rl   rC   rX   s      r    test_builtin_no_childz"PydocDocTest.test_builtin_no_childT  s4    	, mmo||-..5r   c                 |    	 t        j                         }|j                  t              }| j	                  d|       y r   )r1   rM   r   typer   r   s      r    test_builtin_on_metaclassesz(PydocDocTest.test_builtin_on_metaclassesp  s3    	
 mmo||D!.5r   c                 .   t         dz  j                         }t        d      5 }|j                  d      \  }}|j	                         j                         dd }|d   j                  d      |d<   | j                  ||       d d d        y # 1 sw Y   y xY w)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-( 	-D%%f-FCZZ\,,.r"5Fq	..x8F1IVV,		- 	- 	-s   ABBc                 :   t               5 }t        j                  |      }|j                  d       t        dz  }| j                  ||j                         j                         j                  dt        j                               d d d        y # 1 sw Y   y xY w)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  sv    Z 	Y3\\-FKK&.HXs||~';';'='E'EdBJJ'WX		Y 	Y 	Ys   A=BBc                    t         j                  }d }d | _        t               }t        j                  |      }t        t              \  }}d}dj                         }t        j                  |      }|t        z   }	|t         _        	 t        d      5 }
t        d      5 }|j                  |       |j                         j                         }|	|ft        z   t!        j"                  t              fz   z  }| j%                  d|
j                                | j%                  d|j                                | j%                  ||       d d d        d d d        |t         _        y # 1 sw Y   xY w# 1 sw Y   !xY w# |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\    ~~,jS)(3! FH 	 ook2 +.C C%	* * 
8f *
8.1F#--/ 5!(
 =!>!(!3!3I!> @!A!B   V__%67  S\\^4  7
8 
8 *EN
8 
8 
8 
8 *ENs=   	E> E2 B*E&
E2E> &E/	+E22E;7E> >Fc                 8   t        dddg      }t               5 }t        j                  |       d d d        j	                         }| j                  d|       | j                  d|       | j                  d|       | j                  d|       y # 1 sw Y   bxY w)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;&?@ 	'JJv	##%j(+k8,0(;0(;	 	s   BBc                    t        dddgd      }t               5 }t        j                  |       d d d        j	                         }| j                  d|       | j                  d|       | j                  d|       y # 1 sw Y   PxY w)	NNTabcdefT)rename_1_replace_asdictr  )rl   r  r  r  s       r    !test_namedtuple_public_underscorez.PydocDocTest.test_namedtuple_public_underscore  st    uenT: 	'JJrN	##%dH%j(+i*	 	s   B  B	c                 b   | j                  t        t               dD ]  }t        t        d|      5 }|dk7  rt	        dj                  |      |       t	        d|       t	        d|       d d d        t        j                  t        i       }| j                  |d	        y # 1 sw Y   8xY w)
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    '/ 	8HfcH5 4w&-..x8vF(v6oF3	4
 ~~fb1HX7	84 4s   <B%%B.	c                     t        j                  d      }|j                  j                         d   }|j                  j
                  }t        j                  |      }| j                  ||       y )NrI   r   )	r   import_fresh_moduler   r   __spec__cachedr1   r$  rs   )rl   rI   r   filenamer$  s        r    test_synopsis_sourcelessz%PydocDocTest.test_synopsis_sourceless  sV    ..t4::((*1-;;%%>>(+8,r   c                    t        j                         5 }t        j                  j	                  |d      }t
        j                  j                  |      }t        |d      5 }|j                  d       d d d        t        j                  |       t        j                  |i       }| j                  |       t        j                  |i       }| j                  |       d d d        y # 1 sw Y   uxY w# 1 sw Y   y xY w)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  s    ! 		/XX}=I#..::9EKi% &

9%&y)~~i4Hh'#nn["=Oo.		/ 		/& &		/ 		/s%   AC3!C'3A+C3'C0	,C33C<c                 R    d}| j                  t        j                  |      d       y )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C	Er   c                     t        j                         5 }| j                  t        j                  |             d d d        y # 1 sw Y   y xY wrf   )r   r/  assertFalser1   	ispackage)rl   r7  s     r     test_is_package_when_not_packagez-PydocDocTest.test_is_package_when_not_package  s<    ! 	8XU__X67	8 	8 	8s   %AAc                 <   t        j                         5 }t        j                  j	                  |d      }t        |d      j                          | j                  t        j                  |             t        j                  |       d d d        y # 1 sw Y   y xY w)N__init__.pyr  )r   r/  rI   rJ   r0  r!  close
assertTruer1   rC  remove)rl   r7  r8  s      r    test_is_package_when_is_packagez,PydocDocTest.test_is_package_when_is_package  sm    ! 	!XX}=IC &&(OOEOOH56IIi 		! 	! 	!s   A4BBc                     G d dt               }t        t        t                     }|j                  |d<   |d= |d= |j                  |d<   |j
                  |d<   t        j                  |      }| j                  ||       y )Nc                       e Zd Zd Zy)/PydocDocTest.test_allmethods.<locals>.TestClassc                      y)NTr   rl   s    r    method_returning_truezEPydocDocTest.test_allmethods.<locals>.TestClass.method_returning_true  s    r   N)r   r   r   rP  r   r   r    	TestClassrM    s    r   rQ  rP  r   	__class____subclasshook____init_subclass__)	r   dictvarsrP  rS  rT  r1   
allmethodsassertDictEqual)rl   rQ  r   methodss       r    test_allmethodszPydocDocTest.test_allmethods  s    	 	
 V%,5,K,K()Y[! (1'A'A#$(1(C(C$%""9-Wh/r   c                     G d d       G fdd      }t        j                  |      }t        j                  dd|      }| j	                  |dt
        z         t        j                  |t        j                               }d	t
         d
}t        |      }|j                  d      D cg c]  }|s|j                          }}|D ]  }| j                  ||        y c c}w )Nc                       e Zd ZddZeZd Zy)+PydocDocTest.test_method_aliases.<locals>.ANc                      y rf   r   )rl   	aboveThiss     r    tkraisez3PydocDocTest.test_method_aliases.<locals>.A.tkraise  s    >r   c                      y rf   r   rO  s    r    a_sizez2PydocDocTest.test_method_aliases.<locals>.A.a_size  s    !r   rf   )r   r   r   r`  liftrb  r   r   r    r   r]    s    ?D"r   r   c                   4    e Zd ZddZeZW  j
                  Zy)+PydocDocTest.test_method_aliases.<locals>.BNc                      y rf   r   )rl   tagOrIdcnfkws       r    itemconfigurez9PydocDocTest.test_method_aliases.<locals>.B.itemconfigure  s    =r   rf   )r   r   r   rj  
itemconfigrb  b_size)r   s   r    r   re    s    >&JXXFr   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)
r.   )r1   r   rQ   rS   rs   r   r?   ra   splitr3   r   )	rl   r   rC   r   as_textr   r   expected_liner   s	           @r    test_method_aliasesz PydocDocTest.test_method_aliases  s    	" 	"	 	 q!ffUB$ %J K% %	N q5==?; * : C.3@3F3Ft3LU4PT$**,UU+ 	2MMM-1	2 Vs   /C%7C%c                 T   dd l }t        |      \  }}t        |      \  }}t        t              \  }}t        t              \  }}|j                  D ]U  }| d}d| d}	| j                  ||       | j                  |	|       | j                  ||       | j                  |	|       W y )Nr   z = _Featurez<strong>z</strong> = _Feature)
__future__rU   rF   r   all_feature_namesr   r   )
rl   rt  future_textrZ   future_htmlpydoc_mod_textpydoc_mod_htmlfeaturetxtr`   s
             r    test__future__importsz"PydocDocTest.test__future__importsf  s     	'
3Q'
3Q*95*95!33 	3GI[)CgY&:;DMM#{+MM$,S.1T>2	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&  r,  r<  r@  rD  rJ  rZ  rr  r|  r   r   r    r{   r{     s   GX__WS*-@,#,,.HJ' J' X__WS*-@,#,,.HJ0 J019
Q
'
76 ' '
+:%>"64@68	6-Y X__WS*-@,#,,.HJ * J *D<+	8 - -
/E
8!02 X2 X2t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y)PydocImportTestc                     t        j                  t              | _        | j	                  t
        t               t        j                          y rf   )rI   mkdirr   r7  r   r   r1  invalidate_cachesrO  s    r    setUpzPydocImportTest.setUpz  s,    ('##%r   c                    d}ddddj                  |      dfdj                  |      dj                  |      ff}t        j                  j                  t        |      t        j
                  z   dz   }|D ]w  \  }}t        |d	      5 }|j                  d
j                  |             d d d        t        |t              j                  d      }t        ||fz  }| j                  ||       y y # 1 sw Y   IxY w)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   r0  r   extsepr!  r4  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B	 77<<0299<tC+4 	/'L-h$ <,,\:;<#G?FFwOF(G]+CCHXv.	/< <s   !C00C9	c                    t         j                  j                  t        d      }t        j                  |       t         j                  j                  |d      t         j
                  z   dz   }t        |d      5 }|j                  d       d d d        | j                  t        g      5  t               5 }t               5 }t        j                  d       d d d        d d d        | j                  j                         d       | j                  j                         d       t               5 }t               5 }t        j                  d       d d d        d d d        | j                  |j                         j                         d       | j                  |j                         d       d d d        y # 1 sw Y   /xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)	N	syntaxerr__init__r  r  zinvalid python syntax = $1
rJ   xyzzyr#   )rI   rJ   r0  r   r  r  r!  r4  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  s   fk2
GGLL4ryy@4G	)S! 	4QGG23	4((vh(7 	1 " +c$& +#MM'*++ S\\^R0S\\^R0 " /c$& /#MM+.// S\\^113[AS\\^R0	1 	1	4 	4+ ++ +/ // /	1 	1sz   :F9+G66GGGAG61G*<GG*AG69GGGG	G6G'#G**G3	/G66G?c                 h   t         j                  j                  t        d      | _        t        j
                  | j                  d       | j                  t         j                  | j                         | j                  t        g      5  t               5 }t               5 }t        j                  d       d d d        d d d        d d d        | j                  j                         d       | j                  j                         d       y # 1 sw Y   ZxY w# 1 sw Y   ^xY w# 1 sw Y   bxY w)N
unreadabler   r  SOMEKEYr#   )rI   rJ   r0  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     ggll6<@
$$a($"5"56 ((vh(7 	- " -c$& -#MM),--	-
 	,,	- -- -	- 	-s<   D(D!D7D?D(DDD%	!D((D1zcannot remove x bitc                 ^   t         j                  j                  t        d      }t        j                  |       | j                  t        |       t         j                  j                  |d      }t        |d      5 }|j                  d       d d d        t        j                  t        j                  |      j                        }	 t        j                  ||t        j                   z         | j                  t        g      5  t               5 }t!        j"                  d       d d d        d d d        | j%                  dj'                                t        j                  ||       y # 1 sw Y   xY w# 1 sw Y   TxY w# 1 sw Y   XxY w# t        j                  ||       w xY w)NwalkpkgrF  r  r.  r  r#   )rI   rJ   r0  r   r  r   r   r!  r4  statS_IMODEst_modechmodS_IEXECrp   r   r1   r  r   r   )rl   r  r8  r:  current_moder   s         r    test_apropos_empty_docz&PydocImportTest.test_apropos_empty_doc  s2    fi0
'GGLL7	)S! 	"TJJy!	"||BGGFO$;$;<	+HHV\T\\M9:,,6(,; "_=N "RXb!" "MM)V__%67HHV\*	" 	"
" " " " HHV\*sH   <E0	?F FE<)F1(F 0E9<F	FFF F,c                    t         j                  j                  t        d      }t        j                  |       t         j                  j                  |d      }t        |dd      5 }|j                  d       d d d        | j                  t        g      5  t        t        j                        }t        j                  j                  dt               	 | j                  t        d	      5  dd l}d d d        | j                  d
d      }d}| j                  ||       |t        j                  d d  	 d d d        y # 1 sw Y   xY w# 1 sw Y   XxY w# |t        j                  d d  w xY w# 1 sw Y   y xY w)Ntest_error_packagerF  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   r0  r   r  r!  r4  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  s*   f&:;
ww||FM2$w/ 	61GG45	6((vh(7 	*/KHHOOAv&
*++J? .-. ,,-L+--eT*)	* 	*	6 	6. . *	* 	*sH   (D>>E.E.E
3.E!E.>E
E	EE++E..E7z(causes undesirable side-effects (#20128)c                    d}d}d}||z   |z   }t               }t        j                  |      } |d       |j                         j	                         }t        |j                               }| j                  ||       y )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4r   c                     d}t               }t        j                  |      }t               5 } |d       d d d        j	                         }| j                  ||       y # 1 sw Y   ,xY w)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, 	$'?#	$!!#h'		$ 	$s   	A!!A*z+some buildbots are not cooperating (#20128)c                     d}t               }t        j                  |      }t               5 } |d       d d d        j	                         }| j                  |j                  |             y # 1 sw Y   :xY w)Nzgc - r   zmodules garbage)r   r1   r   r   r   rH  
startswithr  s         r    test_modules_search_builtinz+PydocImportTest.test_modules_search_builtin  sg    V, 	&'$%	&!!#))(34		& 	&s   	A//A8c                 V   t        j                  t         j                        }| j                  |t                | j	                  |j
                  d       | j	                  |j                  t         j                         | j	                  |j                  t         j                         y )Nr1   )r1   
importfiler2   assertIsNotrs   r   r)  )rl   loaded_pydocs     r    test_importfilezPydocImportTest.test_importfile
  sp    ''7u-..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*- ((X__]$9:+ ; )+ *. X]]=>5 ?5 X]]=>
( ?
( X]]@A	5 B	5@r   r  c                   d   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!y)TestDescriptionsc                 ^    ddl m} t        j                  |      }| j	                  d|       y )Nr   )pydocfodderr  )testr  r1   r   r   )rl   r  rC   s      r    test_modulezTestDescriptions.test_module  s#    ${+mS)r   c                     G d d      } |       }| j                  t        j                  |      d       | j                  t        j                  |      d       dt        z  }| j	                  |t        j
                  |             y )Nc                       e Zd Zy)&TestDescriptions.test_class.<locals>.CNr   r   r   r    Cr        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  sd    ""C*I6*C0*X5h 0 0 34r   c                 8   | j                  t        j                  t        j                  t
                 d       t        j                  t        j                  t
           t        j                        }| j                  d|       | j                  d|       | j                  t        j                  j                         j                         d   |       | j                  t        j                  t        t
                 d       t        j                  t        t
           t        j                        }| j                  d|       | j                  d|       | j                  t        j                  j                         j                         d   |       y )	N_GenericAliasrm  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$  s   C(89?Kv{{3/%//J6<137dll((*557:C@S	2NCtCy5??C7=,c2dll((*557:C@r   c                    | j                  t        j                  t        j                  t
        t        f         d       t        j                  t        j                  t
        t        f   t        j                        }| j                  d|       | j                  d|       t        j                  j                  rI| j                  t        j                  j                  j                         j                         d   |       | j                  t        j                  t
        t        z        d       t        j                  t
        t        z  t        j                        }| j                  d|       | j                  d|       | j                  t        j                  j                  j                         j                         d   |       y )	N_UnionGenericAliasrm  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  s*   S#X(>?AUVv||CH5P;SA,c2<<MM&,,..446AACAFLc	2K@sSy5??C8#>:C@eoo--335@@B1EsKr   c                    | j                  t        j                  t        j                        d       t        j
                  t        j                  t        j                        }| j                  d|       t        j                  j                  r\| j                  d|       | j                  t        j                  j                  j                         j                         d   |       y | j                  d|       y )N_SpecialFormrm  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.IvI5s;??""MM6<MM&//11779DDFqI3OMMA3Gr   c           	      <   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         }| j                  t        j                  |      j                         d   d	       | j                  t        j                  |      j                         d
   d       y )Ndatar   returnc                      y rf   r   )r  r   s     r    fooz/TestDescriptions.test_typing_pydoc.<locals>.fooJ  s    r   Tc                       e Zd Zy)-TestDescriptions.test_typing_pydoc.<locals>.CNr   r   r   r    r  r  N  r  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    	fkk&**- 		!??6<<VZZ+HI	 NN3Aq!6>>#s(#;A))#.99;B?9	: 	))!,779!<P	Rr   c                    dD ]<  }| j                  t        j                  |             	 t        j                  |       > dD ]K  }| j                  t        j                  |             | j                  t        t        j                  |       M y # t        $ r# | j                  dj                  |             Y w xY w)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#  r6  assertRaises)rl   names     r    test_builtinzTestDescriptions.test_builtinU  s    / 	ID   d!34I  &	I1 	CD ell401k5+;+;TB		C  I		:AA$GHIs   B)B?>B?c                 ~    t        j                  t        j                  |             }|j                  d      }|d   S Nr.   r  )r1   plainr   ro  orX   liness      r    _get_summary_linez"TestDescriptions._get_summary_linef  s2    {{5++A./

4 Qxr   c                     t        j                  t        j                  |             }|j                  d      }dj	                  |dd        S r  )r1   r  r   ro  r0  r  s      r    _get_summary_linesz#TestDescriptions._get_summary_linesm  s>    {{5++A./

4 yyqr##r   c                 v    | j                  | j                  t        j                  j                        d       y )Nzwrap(self, text))rs   r  r  TextWrapperwraprO  s    r    test_unbound_python_methodz+TestDescriptions.test_unbound_python_methodt  s,    //0D0D0I0IJ	 r   c                 v    | j                  | j                  t        j                  j                        d       y )Nzdump(self, obj, /))rs   r  _picklePicklerdumprO  s    r    test_unbound_builtin_methodz,TestDescriptions.test_unbound_builtin_methodx  s*    //0D0DE 	"r   c                     t        j                         }| j                  | j                  |j                        d       y )Nz2wrap(text) method of textwrap.TextWrapper instance)r  r  rs   r  r  )rl   ts     r    test_bound_python_methodz)TestDescriptions.test_bound_python_method~  s3      "//7@	Br   c                    t        dg d      }t        j                  |      }| j                  |j	                  d      |j	                  d             | j                  |j	                  d      |j	                  d              G d d      } G d d	      }t        j                  |       t        j                  |       y )
Nr
  )r  r  agegroupr  r  r%  c                       e Zd ZdZy)MTestDescriptions.test_field_order_for_named_tuples.<locals>.NonIterableFieldsNr   r   r   _fieldsr   r   r    NonIterableFieldsr'    s    Gr   r*  c                       e Zd Zg gZy)MTestDescriptions.test_field_order_for_named_tuples.<locals>.NonHashableFieldsNr(  r   r   r    NonHashableFieldsr,    s	    dGr   r-  )r   r1   r   
assertLessindex)rl   r
  r'   r*  r-  s        r    !test_field_order_for_named_tuplesz2TestDescriptions.test_field_order_for_named_tuples  s    H&KLV$
+QWW[-AB,aggj.AB	 		 	 	*+*+r   c                     t               }t        j                  |      }| j                  | j	                  |j
                        d       y )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  s9    JOOA//7=	?r   c                 b    | j                  | j                  t        j                        d       y )Nz0stat(path, *, dir_fd=None, follow_symlinks=True))rs   r  rI   r  rO  s    r    test_module_level_callablez+TestDescriptions.test_module_level_callable  s%    //8>	@r   c                 :    G d d      }| j                  | j                  |j                  d         d       | j                  | j                  |j                        d       | j	                  dt        j                  t        j                  |                   y )Nc                       e Zd Zed        Zy)-TestDescriptions.test_staticmethod.<locals>.Xc                      	 y rf   r   r   ys     r    smz0TestDescriptions.test_staticmethod.<locals>.X.sm  s    %r   N)r   r   r   staticmethodr<  r   r   r    Xr8    s     r   r>  r<  zsm(x, y)
    A static method
zJ
 |  Static methods defined here:
 |
 |  sm(x, y)
 |      A static method
)rs   r  __dict__r<  r   r1   r  r   rl   r>  s     r    test_staticmethodz"TestDescriptions.test_staticmethod  s    	 	
 	00D1AB1	2 	006 9 	 	 
 [[!!!$%	'r   c                 :    G d d      }| j                  | j                  |j                  d         d       | j                  | j                  |j                        d       | j	                  dt        j                  t        j                  |                   y )Nc                       e Zd Zed        Zy),TestDescriptions.test_classmethod.<locals>.Xc                      	 y rf   r   )clsr   s     r    cmz/TestDescriptions.test_classmethod.<locals>.X.cm  s    $r   N)r   r   r   classmethodrG  r   r   r    r>  rD    s     r   r>  rG  zcm(...)
    A class method
z:cm(x) method of builtins.type instance
    A class method
zX
 |  Class methods defined here:
 |
 |  cm(x) from builtins.type
 |      A class method
)rs   r  r?  rG  r   r1   r  r   r@  s     r    test_classmethodz!TestDescriptions.test_classmethod  s    	 	
 	00D1AB0	1 	006 9 	 	 
 [[!!!$%	'r   c                 |   | j                  | j                  t        j                        d       | j                  | j                  t        j
                        d       | j                  | j                  t        j                        d       | j                  | j                  t        j                        d       y )N	numeratorrealr6   obj)
rs   r  r  rK  floatrL  r   r6   
memoryviewrM  rO  s    r    test_getset_descriptorz'TestDescriptions.test_getset_descriptor  s     	//>L//

;VD//	?H//
?Gr   c                    | j                  | j                  t        j                        d       | j                  | j                  t        j
                        d       | j                  | j                  t        j
                        d       | j                  | j                  t        j                        d       | j                  | j                  t        j                        d       y )NrL  startfgetvalue)rs   r  complexrL  rangerR  slicepropertyrS  StopIterationrT  rO  s    r    test_member_descriptorz'TestDescriptions.test_member_descriptor  s     	//=vF//<gF//<gF//>G//0C0CDgNr   c                 n     G d d      }| j                  | j                  |j                        d       y )Nc                       e Zd ZdZy)4TestDescriptions.test_slot_descriptor.<locals>.Pointr:  N)r   r   r   	__slots__r   r   r    Pointr]    s     Ir   r_  r   )rs   r  r   )rl   r_  s     r    test_slot_descriptorz%TestDescriptions.test_slot_descriptor  s+    	! 	!//8#>r   c                 t     G d d      }| j                  | j                  |j                  d         d       y )Nc                       e Zd Zy)6TestDescriptions.test_dict_attr_descriptor.<locals>.NSNr   r   r   r    NSrc    r   r   rd  r?  )rs   r  r?  )rl   rd  s     r    test_dict_attr_descriptorz*TestDescriptions.test_dict_attr_descriptor  s3    	 	//J0GH#	%r   c                    | j                  | j                  t        t        j                        j
                        d       | j                  | j                  t        t        j                        j                        d       | j                  | j                  t        t        j                        j                        d       | j                  | j                  t        t        j                        j                        d       y )Nwidthdebugmajormax)rs   r  r   r   	hash_inforg  flagsrh  version_infori  
float_inforj  rO  s    r     test_structseq_member_descriptorz1TestDescriptions.test_structseq_member_descriptor  s    //S]]0C0I0IJ 	"//SYY0E0EF 	"//S5E5E0F0L0LM 	"//S^^0D0H0HI	 r   c                 r    t        dd      }| j                  | j                  |j                        d       y )NBox)rg  heightz    Alias for field number 0
)r   rs   r  rg  )rl   rq  s     r     test_namedtuple_field_descriptorz1TestDescriptions.test_namedtuple_field_descriptor  s3     3400; > 	r   c                      G d d      }| j                  | j                  |j                        d       | j                  dt	        j
                  t	        j                  |                   y )Nc                       e Zd Zed        Zy),TestDescriptions.test_property.<locals>.Rectc                 6    	 | j                   | j                  z  S rf   )r  hrO  s    r    areaz1TestDescriptions.test_property.<locals>.Rect.area  s    &vv&r   N)r   r   r   rX  ry  r   r   r    Rectrv    s    ' 'r   rz  z    Area of the rect
z#
 |  area
 |      Area of the rect
)rs   r  ry  r   r1   r  r   )rl   rz  s     r    test_propertyzTestDescriptions.test_property  s^    	' 	' 	00; > 	 	  [[!!$'(	*r   c                     G d d       G fdd      }| j                  | j                  |j                        dt         d       d|j                  _        | j                  | j                  |j                        dt         d       d	|j                  _        | j                  | j                  |j                        d
       y )Nc                       e Zd Zd Zy)?TestDescriptions.test_custom_non_data_descriptor.<locals>.Descrc                     || S yNr   r   rl   rM  rF  s      r    __get__zGTestDescriptions.test_custom_non_data_descriptor.<locals>.Descr.__get__      ;Kr   N)r   r   r   r  r   r   r    Descrr~    s    r   r  c                       e Zd Z W         Zy);TestDescriptions.test_custom_non_data_descriptor.<locals>.XNr   r   r   attrr  s   r    r>  r    
    7Dr   r>  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   r>  r  s     @r    test_custom_non_data_descriptorz0TestDescriptions.test_custom_non_data_descriptor  s    	 	
	 	 	008 ?
S;W 	X -008 ?
 ; 	
  008 ; 	r   c                 x    G d d       G fdd      }| j                  | j                  |j                        d       d|j                  _        | j                  | j                  |j                        d       d|j                  _        | j                  | j                  |j                        d	       y )
Nc                       e Zd Zd Zd Zy);TestDescriptions.test_custom_data_descriptor.<locals>.Descrc                     || S yr  r   r  s      r    r  zCTestDescriptions.test_custom_data_descriptor.<locals>.Descr.__get__'  r  r   c                     ddz   y )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  &  s    r   r  c                       e Zd Z W         Zy)7TestDescriptions.test_custom_data_descriptor.<locals>.XNr  r  s   r    r>  r  -  r  r   r>  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"=,008 ; 	  008 ; 	r   c                 
   dt         fd}t        j                  t        j                  j	                  |            }| j                  d|       t        j                         j	                  |      }| j                  d|       y )Nr  c                    K   ywr   r   )igns    r    coro_functionz=TestDescriptions.test_async_annotation.<locals>.coro_function>  s	     s   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=  sd    	 	 {{5??33MBC+T2}}''6B	r   c                     d }t        j                  t         j                  j                  |            }| j	                  d|       t        j
                         j                  |      }| j	                  d|       y )Nc                    K   d y wr   r   r   r   r    an_async_generatorzLTestDescriptions.test_async_generator_annotation.<locals>.an_async_generatorJ  s     Gs   	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H0$7}}''(:;L	r   c                 t    d }t        j                         j                  |      }| j                  d|       y )Nc                       	 y rf   r   r   r   r    a_fn_with_https_linkzHTestDescriptions.test_html_for_https_links.<locals>.a_fn_with_https_linkW  s    +r   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  s2    	 }}''(<=A	
r   N)"r   r   r   r  r  r  r  r  r  r  r=  r  r  r  r   r   r#  r0  r3  r5  rA  rI  rP  rZ  r`  re  ro  rs  r{  r  r  r  r  r  r   r   r    r  r    s   *5ALH
RC"   $ $  " "
B,  ? ? @ @ ' '( ' '( H H O O ? ?
 % %       * *  0  0

 	
 	
r   r  z/Socket server not available on Emscripten/WASI.c                       e Zd Z	 d Zy)PydocServerTestc           	      :   d }t        j                  |dd      | j                  j                  d        | j	                  j
                         | j                  fd       | j                  dj                         | j                  t               | j                  dt        t        j                  j                  j                  d            j                                | j                  dt        t        j                  j                  j                  d	            j                                j                          | j!                  j
                         | j#                  j$                         | j#                  j                         y )
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    36EDKr   	localhostr   )hostnameportc                  @     j                   r j                         S d S rf   )servingstop)serverthreads   r    r   z-PydocServerTest.test_server.<locals>.<lambda>x  s    <+?+?L%%' 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   errorrH  r  r   r   rt   r   r   r   r   urljoinreadr  rB  r6  	docserver)rl   r  r  s     @r    test_serverzPydocServerTest.test_serveri  s<   	 ** 
 	++T2,,-I	 	k<#3#34
#3FLL(()9)97CDIIK	 	6FLL(()9)9;GHMMO	
 	--.,001,**+r   N)r   r   r   r  r   r   r    r  r  b  s    
 ( ,r   r  c                       e Zd Z	 d Zd Zy)PydocUrlHandlerTestc                     t         j                  }| j                  t        |dd       | j                  t        |dd       y )Nr   r#   r   foobar)r1   rr   r  	TypeError)rl   r  s     r    test_content_type_errz)PydocUrlHandlerTest.test_content_type_err  s5    )QR0)QX6r   c                     g d}| j                         5  |D ]  \  }}| j                  ||        	 d d d        y # 1 sw Y   y xY w)N))r#   Pydoc: Index of Modules)zget?key=r  )r/  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  sO     ((* 	2& 2
U%%c512	2 	2 	2s	   <AN)r   r   r   r  r  r   r   r    r  r    s    &7
2r   r  c                       e Zd Zd Zy)
TestHelperc                     | j                  t        t        j                  j                        t        t
        j                               y rf   )rs   sortedr1   r   r  keywordkwlistrO  s    r    test_keywordszTestHelper.test_keywords  s-     5 56/	1r   N)r   r   r   r  r   r   r    r  r    s    1r   r  c                      e Zd Z ej                   eed      xr  ej                         d      ed               Z	 ej                   eed      xr  ej                         d      ed               Z
 ej                   eed      xr  ej                         d      ed               Z ej                   eed      xr  ej                         d      ed               Zd Zy)	PydocWithMetaClassesr|   r}   c                 >    G d dt               } G d d|      }t        d t        D              }t               }t	        j
                  |      } ||       t        t        f|d d z   z  }|j                         j                         }| j                  ||       y )	Nc                        e Zd Z fdZ xZS )=PydocWithMetaClasses.test_DynamicClassAttribute.<locals>.Metac                 .    |dk(  ryt         |   |      S )Nhamspamsuper__getattr__rl   r  rR  s     r    r  zIPydocWithMetaClasses.test_DynamicClassAttribute.<locals>.Meta.__getattr__  s    5=!w*400r   )r   r   r   r  __classcell__rR  s   @r    Metar    s    1 1r   r  c                   0    e Zd Zej                  d        Zy);PydocWithMetaClasses.test_DynamicClassAttribute.<locals>.DAc                      y)Neggsr   rO  s    r    r  z?PydocWithMetaClasses.test_DynamicClassAttribute.<locals>.DA.ham  s    r   N)r   r   r   r  DynamicClassAttributer  r   r   r    DAr    s    (( )r   r  	metaclassc              3   .   K   | ]  }|rd |z   nd  yw)z	
 |      r#   Nr   r%   s     r    r(   zBPydocWithMetaClasses.test_DynamicClassAttribute.<locals>.<genexpr>  s(      .I*+ CDlQ.>.K .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    	14 	1
	4 	 ). .I/G.I )I%V,r
9;BQ??A"((*/r   c                     G d dt               } G d d|      }t               }t        j                  |      } ||       t        t
        z  }|j                         j                         }| j                  ||       y )Nc                   $     e Zd Zd Z fdZ xZS )HPydocWithMetaClasses.test_virtualClassAttributeWithOneMeta.<locals>.Metac                 
    g dS )N)rR  r   r   LIFEr   rF  s    r    __dir__zPPydocWithMetaClasses.test_virtualClassAttributeWithOneMeta.<locals>.Meta.__dir__  s    FFr   c                 .    |dk(  ryt         |   |      S )Nr  r   )r  _Meta__getattrr  s     r    r  zTPydocWithMetaClasses.test_virtualClassAttributeWithOneMeta.<locals>.Meta.__getattr__  s    &=w(..r   r   r   r   r  r  r  r  s   @r    r  r    s    G/ /r   r  c                       e Zd Zy)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  se    	/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  }|j                         j                         }| j                  ||       t               }t        j                  |      } ||       t        t
        z  }|j                         j                         }	| j                  ||	       y )Nc                   $     e Zd Zd Z fdZ xZS )IPydocWithMetaClasses.test_virtualClassAttributeWithTwoMeta.<locals>.Meta1c                 
    g dS )N)rR  r   r   r   r   r  s    r    r  zQPydocWithMetaClasses.test_virtualClassAttributeWithTwoMeta.<locals>.Meta1.__dir__      EEr   c                 .    |dk(  ryt         |   |      S )Nr   r   r  r  s     r    r  zUPydocWithMetaClasses.test_virtualClassAttributeWithTwoMeta.<locals>.Meta1.__getattr__      %<w*400r   r  r  s   @r    Meta1r        F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)rR  r   r   twor   r  s    r    r  zQPydocWithMetaClasses.test_virtualClassAttributeWithTwoMeta.<locals>.Meta2.__dir__  r  r   c                 .    |dk(  ry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j                  |       z   j                  |       z                     S )N)rR  r   r   three)r  r  setr  )rF  r  r  s    r    r  zQPydocWithMetaClasses.test_virtualClassAttributeWithTwoMeta.<locals>.Meta3.__dir__  sC    F3DMM#&').s);<$= > ? ?r   c                 .    |dk(  ryt         |   |      S )Nr	  r  r  r  s     r    r  zUPydocWithMetaClasses.test_virtualClassAttributeWithTwoMeta.<locals>.Meta3.__getattr__  s    '>w*400r   r  )rR  r  r  s   @r    Meta3r    s    ?1 1r   r  c                       e Zd Zy)JPydocWithMetaClasses.test_virtualClassAttributeWithTwoMeta.<locals>.Class1Nr   r   r   r    Class1r    r   r   r  r  c                       e Zd Zy)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    	1D 	1	1D 	1	1E5 	1	u 		Vu 	V,v;hF//#))+1V,v;hF//#))+1r   c                     G d dt               } G d d|      }t               }t        j                  |      } ||       t        t
        z  }|j                         j                         }| j                  ||       y )Nc                       e Zd Zd Zy).PydocWithMetaClasses.test_buggy_dir.<locals>.Mc                 
    g dS )N)rR  r   missingherer   r  s    r    r  z6PydocWithMetaClasses.test_buggy_dir.<locals>.M.__dir__  s    CCr   N)r   r   r   r  r   r   r    Mr    s    Dr   r   c                       e Zd ZdZy).PydocWithMetaClasses.test_buggy_dir.<locals>.Czpresent!N)r   r   r   r  r   r   r    r  r"    s    Dr   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	  sg    	D 	D	! 	V,q	9HD"((*/r   c                     t               5 }t        j                  d       d d d        j                         }| j	                  d|       y # 1 sw Y   ,xY w)Nz	enum.Enumz
class Enum)r   r1   r   r   r   )rl   r  r  s      r    test_resolve_falsez'PydocWithMetaClasses.test_resolve_false  sI      	$'JJ{#	$##%lH-	$ 	$s   AAN)r   r   r   r}  r~  r  r   r|   r   r  r  r  r$  r&  r   r   r    r  r    s   X__WS*-@,#,,.HJ0 J0( X__WS*-@,#,,.HJ0 J0" X__WS*-@,#,,.HJ'2 J'2R X__WS*-@,#,,.HJ0 J0.r   r  c                   8    e Zd Zd Zd	dZd Zd Zd Zd Zd Z	y)
TestInternalUtilitiesc                 H   t        j                         }|j                  | _        t        j
                  j                  |j                  d      | _        | j                  |j                         t	        j                         x| _        }dt        j                  |g| _        y )Nnonexistentr#   )tempfileTemporaryDirectoryr  argv0dirrI   rJ   r0  argv0r   cleanupgetcwd
abs_curdircurdircurdir_spellings)rl   tmpdirr1  s      r    r  zTestInternalUtilities.setUp$  sj    ,,.WW\\&++}=
'')yy{2*!#RYY
 ;r   Nc                 J    || j                   }t        j                  ||      S rf   )r.  r1   _get_revised_path)rl   
given_pathr.  s      r    r6  z'TestInternalUtilities._get_revised_path,  s%     =JJE&&z599r   c                     t         j                  j                         }| j                  D ]2  }t	        |j                  |            D ]  }|j                  |        4 |S rf   )r   rJ   copyr3  rV  countrI  )rl   
clean_pathspelling__s       r    _get_starting_pathz(TestInternalUtilities._get_starting_path3  s[    XX]]_
-- 	,HJ,,X67 ,!!(+,	, r   c                     | j                         }| j                  g|z   }| j                  | j                  |      |       y rf   )r>  r1  rs   r6  )rl   r;  expected_paths      r    ,test_sys_path_adjustment_adds_missing_curdirzBTestInternalUtilities.test_sys_path_adjustment_adds_missing_curdir;  s<    ,,.
)J6//
;]Kr   c                    | j                         }| j                  g|z   }| j                  g|z   }| j                  | j	                  |      |       || j                  gz   }| j                  | j	                  |      |       y rf   )r>  r1  r-  rs   r6  )rl   r;  r@  leading_argv0dirtrailing_argv0dirs        r    *test_sys_path_adjustment_removes_argv0_dirz@TestInternalUtilities.test_sys_path_adjustment_removes_argv0_dir@  s{    ,,.
)J6 MM?Z7//0@A=Q&$--8//0ABMRr   c                      fd} j                         } j                  g|z   } j                  g|z   } j                   ||      |       | j                  gz   } j                  g|z   } j                   ||      |       y )Nc                 F    j                  | t        j                        S )N)r.  )r6  r1   r2   )r7  rl   s    r    r6  z\TestInternalUtilities.test_sys_path_adjustment_protects_pydoc_dir.<locals>._get_revised_pathI  s    ))*ENN)KKr   )r>  r-  r1  rs   )rl   r6  r;  rC  r@  rD  s   `     r    +test_sys_path_adjustment_protects_pydoc_dirzATestInternalUtilities.test_sys_path_adjustment_protects_pydoc_dirH  s    	L,,.
 MM?Z7),<<*+;<mL&$--8),==*+<=}Mr   c                    | j                         }| j                  D ]  }| j                  |      5  |g|z   }| j                  | j	                  |             ||gz   }| j                  | j	                  |             | j
                  g|z   }| j                  | j	                  |             || j
                  gz   }| j                  | j	                  |             d d d         y # 1 sw Y   xY w)N)curdir_spelling)r>  r3  subTestr6  r6  r-  )rl   r;  r<  leading_curdirtrailing_curdirrC  rD  s          r    5test_sys_path_adjustment_when_curdir_already_includedzKTestInternalUtilities.test_sys_path_adjustment_when_curdir_already_includedS  s    ,,.
-- 
	MHh7 	M"*j!8!!$"8"8"HI",z"9!!$"8"8"IJ$(MM?^#C !!$"8"89I"JK$3t}}o$E!!!$"8"89J"KL	M 	M
	M	M 	Ms   B-C**C3	rf   )
r   r   r   r  r6  r>  rA  rE  rH  rN  r   r   r    r(  r(  "  s)    <:L
S	NMr   r(  c                      t        j                         } t        j                  t         j                  g|   t        j                  t
               y rf   )r   threading_setupr}  addModuleCleanupthreading_cleanupr   )thread_infos    r    setUpModulerT  b  s8    "224K.@@O;Om,r   __main__)[rI   r   rx   importlib.utilr1  r   r1   r5  r  r  ro   rQ   r  r+  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  r(  rT  r   mainr   r   r    <module>re     s   	 
         	            " . & "M M )/ / / < ; 	 	 << 
  0\x 
EGy | !& &I/G&I !I J X !& &I/G&I !I , -4GD"**,E  N %  
EG! "$& 
EG #& 
EG #&, 
EG- #0% 
EG "H%% <c38$$ c3LX@m X@vL
x(( L
^
 W5#,h'' #,	#,L2- 2>1"" 1n.8,, n.b=MH-- =M@- zHMMO r   