
    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dZy)nonasciiu   Це не латиницяN__name__
__module____qualname____doc__     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                 r    || fz   }t        dt        j                  g|i |\  }}}|j                         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<   /  s<    
 ;. D#D%..G4G3GLBS99;r    c                 r    || fz   }t        dt        j                  g|i |\  }}}|j                         S )zA
    Runs pydoc on the specified module expecting a failure.
    r1   )r
   r2   r3   r4   r5   s         r!   run_pydoc_failr>   9  s<     ;. 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 )z&Returns pydoc generated output as htmlr$   z<br><a href="z">Module Docs</a>)r2   HTMLDoc	docmodule	getdoclocr   r4   )moduledocoutputlocs       r!   get_pydoc_htmlrG   A  sR    
--/C]]6"F
--	
"
(bC
$';;<<>3r    c                     t         j                  j                  }t         j                  j                  } | | |t                          }t        j                         }|j                  | |      }|S )z,Returns a documentation web link of a module)basedir)ospathabspathdirnamer3   r2   TextDocrB   )rC   rL   rM   rI   rD   rF   s         r!   get_pydoc_linkrO   J  sR    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 )z&Returns pydoc generated output as textr$   z
MODULE DOCS
    r/   .)	r2   rN   rB   r   rA   recompilesubr4   )rC   rD   rF   rE   patts        r!   get_pydoc_textrV   S  sq    
--/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 )zWA quick and dirty implementation of html2text.

    Tailored for pydoc tests only.
    z<dd>r/   z<.*?>r$   r-   r,   z&gt;>z&lt;<)r.   rR   rT   r2   )htmls    r!   	html2textrb   i  sE    
 <<%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                 h    |xs$ t         j                  j                  t              gdfd	}|S )zi
        A version of pkgutil.walk_packages() that will restrict itself to
        a given path.
        c                       | xs ||      S Nr   )rK   prefixonerrordefault_pathwalk_packagess      r!   wrapperz8PydocBaseTest._restricted_walk_packages.<locals>.wrapper|  s     !5vwGGr    )Nr$   N)rJ   rK   rM   r3   )selfrk   rK   rl   rj   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rg   )pkgutilrk   rn   )rm   rK   rk   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)r2   _url_handlerr]   assertEqual)rm   urlexpected_titlerY   results        r!   call_url_handlerzPydocBaseTest.call_url_handler  s5    !!#{3%6r    rg   )r   r   r   rn   
contextlibcontextmanagerrq   rx   r   r    r!   rd   rd   t  s&     2 2r    rd   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   )rG   r   rb   
splitlinesr4   html2text_of_expectedrt   inspect
getabsfileurllibparsequoteassertIn)	rm   rw   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 rg   )rV   r   expected_text_patternexpected_text_data_docstringsr   r   rt   )rm   rw   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IntEnumr2   
render_docr   )rm   r   r   rD   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)rO   xmletreeElementTreer   )rm   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)rV   r   r   rt   )rm   rw   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rg   )sysstdinr2   getpager)rm   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*   Nr   r   r   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   )r2   r   rt   r.   )rm   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_patternrt   rm   missing_modulerw   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   r   encoder   )rm   rw   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   r4   rt   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'>)r2   stripidrt   )rm   r   s     r!   test_stripidzPydocDocTest.test_stripid  sl    --!BC-	/!CD-	/ 	-!@A8	:r    c                 ~    t        j                         }|j                  t              }d}| j	                  ||       y)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)r2   rN   docclassobjectassertRegexrm   rD   rY   snips       r!   )test_builtin_with_more_than_four_childrenz6PydocDocTest.test_builtin_with_more_than_four_children  s6    * mmo||F#8 	t$r    c                 ~    t        j                         }|j                  t              }d}| j	                  ||       y)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)r2   rN   r   ArithmeticErrorr   r   s       r!   test_builtin_with_childz$PydocDocTest.test_builtin_with_child  s4    & mmo||O,, 	dD!r    c                     t        j                         }|j                  t              }d}| j	                  ||       | j                  d|       y)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)r2   rN   r   	Exceptionr   assertNotInr   s       r!   test_builtin_with_grandchildz)PydocDocTest.test_builtin_with_grandchild4  sE    , mmo||I&) 	dD!,d3r    c                 z    t        j                         }|j                  t              }| j	                  d|       y)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)r2   rN   r   r   r   rm   rD   rY   s      r!   test_builtin_no_childz"PydocDocTest.test_builtin_no_childT  s/    . mmo||-..5r    c                 z    t        j                         }|j                  t              }| j	                  d|       y)zTests help on metaclasses.

        When running help() on a metaclasses such as type, it
        should not contain any "Built-in subclasses" section.
        r   N)r2   rN   r   typer   r   s      r!   test_builtin_on_metaclassesz(PydocDocTest.test_builtin_on_metaclassesp  s.     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removeprefixrt   )rm   elinesprocr:   r[   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rE   r   r/   )r   r2   Helperhelpr   rt   getvaluer4   r.   rJ   linesep)rm   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 rg   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$   )r2   r   maxDiffr   r   rV   r   lstriptextwrapdedentr   r   r   r   r4   r   r   r   rt   )rm   getpager_oldgetpager_newr   r   unusedr   rC   help_headerexpected_help_patternrE   r;   rw   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   r2   r   r   r   )rm   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  )rm   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formatr2   synopsisrt   )rm   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 )NrJ   r   )	r   import_fresh_moduler   r   __spec__cachedr2   r%  rt   )rm   rJ   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_cwdrJ   rK   join	importlibutilcache_from_sourcer"  write
py_compilerS   r2   r%  assertIsNone)rm   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)rt   r2   splitdoc)rm   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rg   )r   r0  assertFalser2   	ispackage)rm   r8  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   r0  rJ   rK   r1  r"  close
assertTruer2   rD  remove)rm   r8  r9  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   rm   s    r!   method_returning_truezEPydocDocTest.test_allmethods.<locals>.TestClass.method_returning_true  s    r    N)r   r   r   rQ  r   r    r!   	TestClassrN    s    r    rR  rQ  r   	__class____subclasshook____init_subclass__)	r   dictvarsrQ  rT  rU  r2   
allmethodsassertDictEqual)rm   rR  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)z(Raise this widget in the stacking order.Nr   )rm   	aboveThiss     r!   tkraisez3PydocDocTest.test_method_aliases.<locals>.A.tkraise      r    c                      y)zReturn sizeNr   rP  s    r!   a_sizez2PydocDocTest.test_method_aliases.<locals>.A.a_size  rb  r    rg   )r   r   r   ra  liftrd  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)z'Configure resources of an item TAGORID.Nr   )rm   tagOrIdcnfkws       r!   itemconfigurez9PydocDocTest.test_method_aliases.<locals>.B.itemconfigure  rb  r    rg   )r   r   r   rl  
itemconfigrd  b_size)r   s   r!   r   rg    s    >&JXXFr    r   rQ   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/   )r2   r   rR   rT   rt   r   r@   rb   splitr4   r   )	rm   r   rD   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__rV   rG   r   all_feature_namesr   r   )
rm   rv  future_textr[   future_htmlpydoc_mod_textpydoc_mod_htmlfeaturetxtra   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=  rA  rE  rK  r[  rt  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 rg   )rJ   mkdirr   r8  r!  r   r2  invalidate_cachesrP  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$  rJ   rK   r1  r   extsepr"  r5  r>   r   badimport_patternrt   )	rm   modname	testpairssourcefnimportstringexpectedinmsgfrw   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
rK   xyzzyr$   )rJ   rK   r1  r   r  r  r"  r5  rq   r   r   r2   aproposrt   r   r4   )rm   pkgdir	badsyntaxr  r:   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$   )rJ   rK   r1  r   unreadable_dirr  r!  rmdirrq   r   r   r2   r  rt   r   )rm   r:   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walkpkgrG  r  r/  r  r$   )rJ   rK   r1  r   r  r!  r   r"  r5  statS_IMODEst_modechmodS_IEXECrq   r   r2   r  r   r   )rm   r  r9  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_packagerG  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>)rJ   rK   r1  r   r  r"  r5  rq   tupler   insertassertRaisesRegex
ValueErrorr  rx   r   )rm   r  initr  saved_pathsr  rY   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   r2   r   r   r4   lenr   assertGreaterEqual)	rm   num_header_linesnum_module_lines_minnum_footer_linesr   rE   r   rw   	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   r2   r   r   r   r   rm   r   rE   r   r  rw   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   r2   r   r   r   rI  
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 )Nr2   )r2   
importfiler3   assertIsNotrt   r   r*  )rm   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  r2   r   r   )rm   r  rD   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dZy)&TestDescriptions.test_class.<locals>.CzNew-style classNr   r   r    r!   Cr    s    "r    r  zclass CzC in module %s object)rt   r2   describer   r   r   )rm   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_GenericAliasro  z_GenericAlias in module typingzList = class list(object)r   GenericAliaszGenericAlias in module builtinsz
class list(object))rt   r2   r  typingListintr   	plaintextr   listr   r4   r   rm   rD   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_UnionGenericAliasro  z#_UnionGenericAlias in module typingzUnion = typing.Unionr   	UnionTypez UnionType in module types objectz!
class UnionType(builtins.object))rt   r2   r  r  Unionr  r   r   r  r   r   r4   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_SpecialFormro  z_SpecialForm in module typingzNoReturn = typing.NoReturnr   z%NoReturn = class _SpecialForm(_Final))rt   r2   r  r  NoReturnr   r  r   r   r4   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 rg   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  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   rt   r2   r   r   )rm   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)	assertIsNotNoner2   locater   ImportErrorfailr$  r7  assertRaises)rm   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      }t	        |      dk\  sJ |d   S Nr/   r  )r2   plainr   rq  r  orY   liness      r!   _get_summary_linez"TestDescriptions._get_summary_linef  s@    {{5++A./

4 5zQQxr    c                     t        j                  t        j                  |             }|j                  d      }dj	                  |dd        S r  )r2   r  r   rq  r1  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))rt   r  r  TextWrapperwraprP  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, /))rt   r  _picklePicklerdumprP  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  rt   r  r  )rm   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   r2   r   
assertLessindex)rm   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  rt   r  r   )rm   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))rt   r  rJ   r  rP  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)zA static methodNr   r   ys     r!   smz0TestDescriptions.test_staticmethod.<locals>.X.sm       r    N)r   r   r   staticmethodr=  r   r    r!   Xr9    s     r    r@  r=  zsm(x, y)
    A static method
zJ
 |  Static methods defined here:
 |
 |  sm(x, y)
 |      A static method
)rt   r  __dict__r=  r   r2   r  r   rm   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)zA class methodNr   )clsr   s     r!   cmz/TestDescriptions.test_classmethod.<locals>.X.cm  r>  r    N)r   r   r   classmethodrI  r   r    r!   r@  rF    s     r    r@  rI  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
)rt   r  rA  rI  r   r2   r  r   rB  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realr7   obj)
rt   r  r  rM  floatrN  r   r7   
memoryviewrO  rP  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 )NrN  startfgetvalue)rt   r  complexrN  rangerT  slicepropertyrU  StopIterationrV  rP  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    ra  r   )rt   r  r   )rm   ra  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!   NSre    r   r    rf  rA  )rt   r  rA  )rm   rf  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)rt   r  r   r   	hash_infori  flagsrj  version_infork  
float_inforl  rP  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)ri  heightz    Alias for field number 0
)r   rt   r  ri  )rm   rs  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                 4    | j                   | j                  z  S )zArea of the rect)r  hrP  s    r!   areaz1TestDescriptions.test_property.<locals>.Rect.area  s     vv&r    N)r   r   r   rZ  r{  r   r    r!   Rectrx    s    ' 'r    r|  z    Area of the rect
z#
 |  area
 |      Area of the rect
)rt   r  r{  r   r2   r  r   )rm   r|  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   rm   rO  rH  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
)rt   r  r  r   r   rm   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
)rt   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  r2   r  r  documentr   r@   )rm   r  rY   ra   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)r2   r  r  r  r   r@   )rm   r  rY   ra   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)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    r    z3<a href="https://localhost/">https://localhost/</a>)r2   r@   r  r   )rm   r  ra   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$  r1  r4  r6  rC  rK  rR  r\  rb  rg  rq  ru  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d Zy)PydocServerTestzTests for pydoc._start_serverc           	      :   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   )ru   content_typerY   s      r!   my_url_handlerz3PydocServerTest.test_server.<locals>.my_url_handlerl  s    36EDKr    	localhostr   )hostnameportc                  @     j                   r j                         S d S rg   )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)r2   _start_serverrt   errorrI  r  r!  r   ru   r   r   r   r   urljoinreadr  rC  r7  	docserver)rm   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  r  b  s    
 ( ,r    r  c                       e Zd ZdZd Zd Zy)PydocUrlHandlerTestzTests for pydoc._url_handlerc                     t         j                  }| j                  t        |dd       | j                  t        |dd       y )Nr   r$   r   foobar)r2   rs   r  	TypeError)rm   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  )r0  r  )topicszPydoc: Topics)keywordszPydoc: Keywords)r2   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)rq   rx   )rm   requestsru   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  r    s    &7
2r    r  c                       e Zd Zd Zy)
TestHelperc                     | j                  t        t        j                  j                        t        t
        j                               y rg   )rt   sortedr2   r   r  keywordkwlistrP  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__rm   r  rS  s     r!   r  zIPydocWithMetaClasses.test_DynamicClassAttribute.<locals>.Meta.__getattr__  s    5=!w*400r    )r   r   r   r  __classcell__rS  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   rP  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   r2   r   !expected_dynamicattribute_patternr   r   r4   rt   )rm   r  r  r   rE   r   r   rw   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)rS  r   r   LIFEr   rH  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   r2   r   "expected_virtualattribute_pattern1r   r   r4   rt   )rm   r  r  rE   r   r   rw   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)rS  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)rS  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)rS  r   r   three)r  r  setr  )rH  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  )rS  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   r2   r   "expected_virtualattribute_pattern2r   r   r4   rt   "expected_virtualattribute_pattern3)rm   r  r  r  rE   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)rS  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   r2   r   !expected_missingattribute_patternr   r   r4   rt   )rm   r"  r  rE   r   r   rw   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   r2   r   r   r   )rm   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  argv0dirrJ   rK   r1  argv0r!  cleanupgetcwd
abs_curdircurdircurdir_spellings)rm   tmpdirr3  s      r!   r  zTestInternalUtilities.setUp$  sj    ,,.WW\\&++}=
'')yy{2*!#RYY
 ;r    Nc                 J    || j                   }t        j                  ||      S rg   )r0  r2   _get_revised_path)rm   
given_pathr0  s      r!   r8  z'TestInternalUtilities._get_revised_path,  s%     =JJE&&z599r    c                     t         j                  j                         }| j                  D ]2  }t	        |j                  |            D ]  }|j                  |        4 |S rg   )r   rK   copyr5  rX  countrJ  )rm   
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 rg   )r@  r3  rt   r8  )rm   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 rg   )r@  r3  r/  rt   r8  )rm   r=  rB  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)r0  )r8  r2   r3   )r9  rm   s    r!   r8  z\TestInternalUtilities.test_sys_path_adjustment_protects_pydoc_dir.<locals>._get_revised_pathI  s    ))*ENN)KKr    )r@  r/  r3  rt   )rm   r8  r=  rE  rB  rF  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@  r5  subTestr7  r8  r/  )rm   r=  r>  leading_curdirtrailing_curdirrE  rF  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	rg   )
r   r   r   r  r8  r@  rC  rG  rJ  rP  r   r    r!   r*  r*  "  s)    <:L
S	NMr    r*  c                      t        j                         } t        j                  t         j                  g|   t        j                  t
               y rg   )r   threading_setupr  addModuleCleanupthreading_cleanupr   )thread_infos    r!   setUpModulerV  b  s8    "224K.@@O;Om,r    __main__)[rJ   r   ry   importlib.utilr2  r   r2   r6  r  r  rp   rR   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  r4   r   r  r   r   expected_html_data_docstringsr.   r   r   r  r  r  r  r  r%  r<   r>   rG   rO   rV   r]   rb   TestCaserd   r|   r  r  r  r  r  r  r  r*  rV  r   mainr   r    r!   <module>rg     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    