
    4bhd                       	 d gZ dZdZd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 d	 Zd
 Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z* ejV                  dejX                        Z-d Z.d Z/d Z0d Z1 e2ejf                        Z4dOdZ5d Z6d Z7d Z8d Z9i fdZ: G d  d!e;      Z<d" Z=di fd#Z> G d$ d%      Z? G d& d'e      Z@ G d( d)e?      ZA G d* d+e      ZB G d, d-e?      ZC G d. d/eC      ZDd0 aEd1 ZFd2 ZGd3 ZHd4 ZId5 ZJd6 ZKd7 ZLd8 ZMdPd9ZN eC       ZO eD       ZP eA       ZQdPd:ZR	 	 dQd;ZS	 	 dRd<ZTdPd=ZUdSd>ZV G d? d@      ZW eW       ZX G dA dB      ZYdC ZZdD Z[dTdEZ\dPdFdGdHdIZ]dJ Z^dK Z_dL Z`dM ZaebdNk(  r ea        yy)UhelpzKa-Ping Yee <ping@lfw.org>z26 February 2001zGuido van Rossum, for an excellent programming language.
Tommy Burnette, the original creator of manpy.
Paul Prescod, for all his work on onlinehelp.
Richard Chamberlain, for the first implementation of textdoc.
    N)deque)Repr)format_exception_onlyc                  L   	 g } g }t         j                  D ]  }t        j                  j                  |xs d      }t        j                  j	                  |      }||vsJt        j                  j                  |      sj| j                  |       |j                  |        | S N.)syspathosabspathnormcaseisdirappend)dirsnormdirsdirnormdirs       //opt/python-3.12.12/usr/lib/python3.12/pydoc.pypathdirsr   S   s}    KDHxxggoocjS)''""3'("rww}}S'9KKOOG$  K    c                     t         j                  j                  | j                        }|y | j                  j                  d      d d D ]  }t        ||      } t        j                  |      sy |S )Nr	   )	r
   modulesget
__module____qualname__splitgetattrinspectisclass)funcclsnames      r   
_findclassr%   _   sb    
++//$//
*C
{!!'',Sb1c4  2??3Jr   c                 ~   t        j                  |       rl| j                  j                  }| j                  }t        j
                  |      r't        t        ||d       d      | j                  u r|}n|j                  }nt        j                  |       r)| j                  }t        |       }|t        ||      | urCy t        j                  |       r\| j                  }| j                  }t        j
                  |      r"|j                  dz   |z   | j                  k(  r|}n|j                  }nt        | t              r4| j                  }|j                  }t        |      }|t        ||      | ury t        j                  |       st        j                   |       rb| j                  }| j"                  }t        ||      | ury t        j$                  |       r't        |dd       }t        |t&              r
||v r||   S y |j(                  D ]  }	 t+        t        ||            }||c S  y # t,        $ r Y -w xY w)N__func__r	   	__slots__)r    ismethodr'   __name____self__r!   r   	__class__
isfunctionr%   	isbuiltinr   
isinstancepropertyfgetismethoddescriptorisdatadescriptor__objclass__ismemberdescriptordict__mro__
_getowndocAttributeError)objr$   selfr#   r"   slotsbasedocs           r   _finddocr?   i   s   ||$$||OOD!GD$-z:cllJC..C			C	 ||o;'#t,C7			3	||||OOD!#d*c.>.>>C..C	C	"xx}};'#t,C7		#	#C	(G,D,DS,I||3S(%%c*Cd3E%&45=T{"	WT401C ?J  	  		s   H00	H<;H<c                     	 	 t         j                  | d      }|y | t        ur+t        |       j                  }t	        |t
              r||k(  ry |S # t        $ r Y y w xY w)N__doc__)object__getattribute__typerA   r/   strr9   )r:   r>   typedocs      r   r8   r8      sf    !
%%c95;d?3i''G'3'GsN
 s   A 2A A 	AAc                     	 t        |       }|	 t        |       }t	        |t
              sy t        j                  |      S # t        t        f$ r Y y w xY wN)r8   r?   r9   	TypeErrorr/   rE   r    cleandoc)rB   r>   s     r   _getdocrK      sa    B
 V
C
{	6"C c3C  	 	* 		s   A AAc                     	 t        |       xs t        j                  |       }|xr% t        j                  dd|j                               xs dS )Nz^ *
 )rK   r    getcommentsresubrstrip)rB   results     r   getdocrS      sA    7V_; 3 3F ;F:bffWb&--/:@b@r   c                    	 | j                         j                  d      }t        |      dk(  r|d   dfS t        |      dk\  r,|d   j                         s|d   dj	                  |dd        fS ddj	                  |      fS )N
   r   rM      )stripr   lenrQ   join)r>   liness     r   splitdocr\      s~    HIIKd#E
5zQQx|	Uqq!2Qx59---tyyr   c                 b    	 | j                   }| j                  |k7  r| j                  dz   |z   }|S r   )r*   r   rB   modnamer$   s      r   	classnamer`      s6    J??DG#  3&-Kr   c                     	 d| j                   v rM| j                   j                  d      d   }| j                  |k7  r| j                  | j                  dz   |z   S |S | j                  |k7  r| j                  S y )Nr	   r   )r   
rpartitionr   r^   s      r   
parentnamerc      s     
f!!!""--c215'F,=,=,I$$s*T11K'$$$ (r   c                    	 t        j                  |       xsq t        j                  |       xsZ t        j                  |       xsC t        j                  |       xs, t        j
                  |       xs t        j                  |        S rH   )r    ismoduler!   	isroutineisframeistracebackiscode)rB   s    r   isdatarj      s|    H  ( FGOOF,C F!!&)F-4__V-DF##F+F/6~~f/EG Gr   c                 h    	 |r.|d   j                  | j                  |d               } |dd  }|r.| S )NrV   r   rW   )rZ   r   )textpairss     r   replacern      s>    9
Qx}}TZZa12ab	  Kr   c                     	 t        |       |kD  r>t        d|dz
  dz        }t        d|dz
  |z
        }| d | dz   | t        |       |z
  d  z   S | S )Nr      rW   ...)rY   max)rl   maxlenpreposts       r   cramrv      sc    M
4y6!fQh]#1fQhsl#DSzE!DT4$999Kr   z at 0x[0-9a-f]{6,16}(>+)$c                 0    	 t         j                  d|       S )Nz\1)_re_stripidrP   rl   s    r   stripidrz      s    H??5$''r   c                     	 t        j                  |       ryt        j                  |       r)t        | dd       }t        j                  |      xs |d u  S y)NTr+   F)r    r)   r.   r   re   )fnr;   s     r   _is_bound_methodr}      sV     r:t,$$T*<tt|==r   c                 
   i }t        j                  | t         j                        D ]
  \  }}d||<    | j                  D ]  }|j	                  t        |              |j                         D ]  }t        | |      ||<    |S NrV   )r    
getmembersrf   	__bases__update
allmethodskeysr   )clmethodskeyvaluer=   s        r   r   r     sv    G((W->->?
U @z$'( ||~r3' Nr   c                 x    	 g }g }| D ]-  } ||      r|j                  |       |j                  |       / ||fS rH   r   )s	predicateyesnoxs        r   _split_listr     sE     C	BQ<JJqMIIaL	 
 7Nr   c                 ,   	 | dv ry| j                  d      r| j                  d      ry| j                  d      rt        |d      ry|t        ur.| t        v r&t        t        || d       t        j                        ry|| |v S | j                  d       S )	N>   rA   __date____file__r*   __path____spec__r(   
__author__
__cached__
__loader__r   __credits____package____version____builtins__r   r   __rV   __fieldsTF)
startswithendswithhasattr
__future___future_feature_namesr/   r   _Feature)r$   allr:   s      r   visiblenamer   "  s    =  H H tt!4QsY 7
*)>!>gc4.
0C0CD
s{??3'''r   c                    	 g }t        j                  |       D ]d  \  }}}}t        j                  |      r!d}t        |t              r!|j
                  d}n|dk(  rt        |      rd}|j                  ||||f       f |S )Ndata descriptorreadonly propertymethodstatic method)r    classify_class_attrsr3   r/   r0   fsetr}   r   )rB   resultsr$   kindr#   r   s         r   r   r   :  s    _G$+$@$@$H tS%##E*$D%*uzz/A*X"25"9"DdC/0 %I Nr   c           	          	 t        |dg       }	 t        |      D ci c]  \  }}||t        |      z
   c}}fd}| j	                  |       y c c}}w # t        $ r i Y +w xY w)Nr   c                 8    j                  | d   d      | d   fS Nr   )r   )attrfield_orders    r   <lambda>z!sort_attributes.<locals>.<lambda>P  s    KOODGQ7aAr   r   )r   	enumeraterY   rI   sort)attrsrB   fieldsir$   keyfuncr   s         @r   sort_attributesr   G  sw    M VY+F=Fv=NO=N	DtaFm+=NO BG	JJ7J	 P s!   A AA A A('A(c                     	 t         j                  j                  |       rIdD ]D  }t         j                  j                  t         j                  j	                  | d|z               sD y y)N)z.pyz.pyc__init__TF)r   r   r   isfilerZ   )r   exts     r   	ispackager   U  sK    =	ww}}T"Cww~~bggll4c1ABC # r   c                    	 d}	 t        j                  | j                        }|D ]  \  }}}}}|t         j                  k(  r||z  }#|t         j                  k(  rt        j                         5  t        j                  dt               t        j                  |      }d d d        t        t              s y |j                         j                  d      d   j                         c S |t         j                  k(  r
|dv r||z  }|t         j                   t         j"                  t         j$                  fvs y  	 y # 1 sw Y   xY w# t         j&                  t(        t*        f$ r Y y w xY w)NrM   ignorerU   r   )())tokenizegenerate_tokensreadlineSTRINGNEWLINEwarningscatch_warningssimplefilterSyntaxWarningastliteral_evalr/   rE   rX   r   OPCOMMENTNLENCODING
TokenErrorUnicodeDecodeErrorSyntaxError)filestringtokenstok_type
tok_stringr   	docstrings          r   source_synopsisr   ]  s0   BF))$--8-3)Hj!Q8??**$X---,,.))(MB # 0 0 8I / ")S1 (..t4Q7==??X[[(Z:-E*$("2"2HKKARAR!SS .4"  /. !3[A sC   A+E 00E E :1E ,AE <E >E E
	E E.-E.c                 v   	 t        j                  |       j                  }|j                  | d      \  }}|||k  rY| j	                  t        t        j                  j                              rt        j                  j                  }nO| j	                  t        t        j                  j                              rt        j                  j                  }nd }|-	 t        j                  |       }|5  t        |      }d d d        n |d|       }t        j                   j#                  d| |      }	 t        j$                  j'                  |      }	t(        j*                  d= |	j,                  r|	j,                  j/                         d   nd }||f|| <   |S # t        $ r Y y w xY w# 1 sw Y   !xY w#  Y y xY w)NNN__temp__loaderr   )r   statst_mtimer   r   tuple	importlib	machineryBYTECODE_SUFFIXESSourcelessFileLoaderEXTENSION_SUFFIXESExtensionFileLoaderr   openOSErrorr   utilspec_from_file_location
_bootstrap_loadr
   r   rA   
splitlines)
filenamecachemtime
lastupdaterR   
loader_clsr   r   specmodules
             r   synopsisr   v  s}   8GGH&&E8\:JZ%/U9#6#6#H#HIJ",,AAJuY%8%8%K%KLM",,@@JJ}}X.
 (.   
H5F>>99*hAG : ID"--33D9 J'7=~~V^^..034F &/hM)   s*   F 4F(5F4 	F%$F%(F14F8c                       e Zd Z	 d Zd Zy)ErrorDuringImportc                     t        |t              s0t        |      | _        || _        |j
                  | _        || _
        y t        j                  dt               |\  | _        | _        | _        || _
        y )NzCA tuple value for exc_info is deprecated, use an exception instance)r/   r   rD   excr   __traceback__tbr   warnDeprecationWarningr   )r;   r   exc_infos      r   r   zErrorDuringImport.__init__  sc    (E*H~DH!DJ,,DG !	 MM_,. -5)DHdj$' r   c                 l    | j                   j                  }d| j                  d|d| j                  S )Nzproblem in  - z: )r  r*   r   r   )r;   r  s     r   __str__zErrorDuringImport.__str__  s&    hh+/==#tzzJJr   N)r*   r   r   r   r	   r   r   r   r     s    O!Kr   r   c                 z   	 t         j                  j                  }t        | d      5 }||j	                  t        |            k(  }d d d        t        j                  j                  |       }t        j                  j                  |      \  }}r!t         j                  j                  ||       }n t         j                  j                  ||       }t         j                  j                  || |      }	 t         j                  j                  |      S # 1 sw Y   xY w# t         $ r}	t#        | |	      d }	~	ww xY w)Nrbr   )r   r   MAGIC_NUMBERr   readrY   r   r   basenamesplitext_bootstrap_externalr   SourceFileLoaderr   r   r   BaseExceptionr   )
r   magicr   is_bytecoder   r$   r   r   r   errs
             r   
importfiler    s    FNN''E	dD	TtyyU44 
ww%H  *ID#..CCD$O..??dK>>11$V1LD+##))$// 
	  +c**+s#   D5D  D 	D:)D55D:c                    	 	 |r| t         j                  v rv| t         j                  vrdt         j                  D cg c]  }|j                  | dz         s| }}| g|z   D ])  }t         j                  |   ||<   t         j                  |= + t	        j
                  |       }|S c c}w # t        $ r}| t         j                  v r't        t         j                  |    j                  |      t        |      t        u rt        |j                  |      t        |t              r|j                  | k(  rY d }~y t        | |      d }~ww xY wr   )r
   r   builtin_module_namesr   r   import_moduler  r   r   rD   r   r   r/   ImportErrorr$   )r   	forceloadr   msubsr   r   r  s           r   
safeimportr    s   O/
 ,3333 $';;K;a!,,tcz2J;K 6D=C!$S!1E#JC( ) ((. M) L  /3;;#CKK$5$>$>DD#Y+%#CLL#66[)chh$.> $D#../s6   8B) B$B$A	B) $B) )	E2A?E6EEc                       e Zd Zej                  j                  ddej                  dd z        Zd	dZ	d	dZ
e
xZxZxZxZxZZ ej$                  d      fdZy)
Doc
PYTHONDOCSz%https://docs.python.org/%d.%d/libraryNrW   c                 r   	 ||f|z   }	 t        j                  |      r | j                  | S t        j                  |      r | j                  | S t        j
                  |      r | j                  | S 	 t        j                  |      r | j                  | S  | j                  | S # t        $ r Y >w xY wrH   )r    re   	docmoduler!   docclassrf   
docroutiner9   r3   docdatadocother)r;   rB   r$   argss       r   documentzDoc.document  s    3~$
	'0E)Ev&}t}}d/C(C  ($1G*G( ##F+LDLL$4G-Gt}}d##  		s   #B* #B* #B* *	B65B6c                 n    d|xr dt        |      z   dt        |      j                  }t        |      )Nz!don't know how to document object z	 of type )reprrD   r*   rI   )r;   rB   r$   r)  messages        r   failzDoc.fail  s7    9%S4:%%tF|'<'<>  r   stdlibc                    	 	 t        j                  |      }t        j                  j                  d| j                        }t        j                  j                  |      }t        |t        t                    r|j                  dv s@|j                  |      r|j                  t        j                  j                  |d            s|j                  dvr|j                  d      r;dj                  |j                  d      |j                  j!                               }|S t        j                  j                  ||j                  j!                         d	z         }|S d }|S # t        $ r d}Y Yw xY w)
N
(built-in)r"  )	errno
exceptionsgcmarshalposixsignalr
   _thread	zipimportzsite-packages)z	xml.etreeztest.test_pydoc.pydoc_mod)zhttp://zhttps://z
{}/{}.html/.html)r    
getabsfilerI   r   environr   r"  r   r   r/   rD   r*   r   rZ   formatrQ   lower)r;   rB   basedirr   doclocs        r   	getdocloczDoc.getdocloc  s,   8	 %%f-D doo>''""7+vtBx(__ !9 9 oog&//"'',,w"HIOO#MM  !89%,,V]]3-?AVAVAXY
  ffoo.C.C.E.OP  F'  	 D	 s   E# #E21E2rH   )r*   r   r   r   r>  r   r
   version_infor"  r*  r/  r$  r%  r&  r(  docpropertyr'  	sysconfigget_pathrC  r
  r   r   r!  r!    so     G"%"2"22A"6!78J$ ! LPOIOO:OO;(:	(:(:8(D r   r!  c                   :    e Zd Z	 d Zd Zd Zd Zd ZeZd Z	eZ
y)HTMLReprc                 t    t        j                  |        dx| _        | _        d| _        dx| _        | _        y N   
   d   r   r   maxlistmaxtuplemaxdict	maxstringmaxotherr;   s    r   r   zHTMLRepr.__init__*  1    d'))t}),,r   c           	      $    t        |dddddd      S )N&z&amp;<z&lt;>z&gt;)rn   r;   rl   s     r   escapezHTMLRepr.escape0  s    tS'3VDDr   c                 .    t        j                  | |      S rH   )r   r-  r;   rB   s     r   r-  zHTMLRepr.repr3  s    yyv&&r   c           	      B   t        t        |      d      rTddj                  t        |      j                  j	                               z   }t        | |      r t        | |      ||      S | j                  t        t        t        |            | j                              S Nr*   repr_r   )r   rD   rZ   r*   r   r   r\  rv   rz   r-  rT  r;   r   level
methodnames       r   repr1zHTMLRepr.repr16  sy    47J' 388DG,<,<,B,B,D#EEJtZ(0wtZ0E::{{4Q 0$--@AAr   c                     t        || j                        }t        |      }d|v r/dt        |dd      vr d|d   z   | j	                  |      z   |d   z   S t        j                  dd| j	                  |            S )N\\\rM   rr   z-((\\[\\abfnrtv\'"]|\\[0-9]..|\\x..|\\u....)+)z<span class="repr">\1</span>)rv   rS  r-  rn   r\  rO   rP   r;   r   rc  testtestreprs        r   repr_stringzHTMLRepr.repr_string=  s}    At~~&:4<D%(DD !$t{{4'888A;FFvvF5kk(+- 	-r   c           	          	 | j                  t        t        t        |            | j                              S #  | j                  d|j
                  j                  z        cY S xY wNz<%s instance>)r\  rv   rz   r-  rS  r,   r*   r;   r   rc  s      r   repr_instancezHTMLRepr.repr_instanceJ  sQ    	G;;tGDG$4dnnEFF	G;;1E1EEFFs	   69 *A%N)r*   r   r   r   r\  r-  re  rm  repr_strrq  repr_unicoder
  r   r   rI  rI  (  s4    L-E'B	- HG Lr   rI  c                   
   e Zd Z	  e       Zej
                  Zej                  Zd ZddZ	 	 ddZ	d Z
d Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zdi i i fdZddZddZddi i fdZd Zddi i i ddfdZddZeZddZddZy)HTMLDocc                     d|d|dS )NzN<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Python: z</title>
</head><body>
z
</body></html>r
  )r;   titlecontentss      r   pagezHTMLDoc.page[  s    " H& 	&r   c                     d|d|xs ddS )NzU
<table class="heading">
<tr class="heading-text decor">
<td class="title">&nbsp;<br>z</td>
<td class="extra">&nbsp;z</td></tr></table>
    r
  )r;   rw  extrass      r   headingzHTMLDoc.headingg  s    $ &$H$& 	&r   Nc                     	 |dd|z  z   dz   }d|d|d}|r|d|d|d	|d
|d|dz   }n|d|d|d|dz   }|d|z  z   S )Nz<span class="code">r{  z</span>z-<p>
<table class="section">
<tr class="decor zD-decor heading-text">
<td class="section-title" colspan=3>&nbsp;<br>z</td></tr>
    z
<tr><td class="decor z-decor" rowspan=2>z</td>
<td class="decor z-decor" colspan=2>z</td></tr>
<tr><td></td>z-decor">z	</td><td>z.
<td class="singlecolumn">%s</td></tr></table>r
  )	r;   rw  r#   rx  widthprelude
marginaliagaprR   s	            r   sectionzHTMLDoc.sectionp  s|    ..E1AAIMJ
 	
  :sGS: :F
 8;ZN NF IHTTTr   c                 4    	 d|z  } | j                   |g| S )Nz&<strong class="bigsection">%s</strong>)r  )r;   rw  r)  s      r   
bigsectionzHTMLDoc.bigsection  s%    285@t||E)D))r   c                 h    	 | j                  |j                               }t        |dddddddd	      S )N

z
 
r,  r{  rU   <br>
)r\  
expandtabsrn   r[  s     r   	preformatzHTMLDoc.preformat  s:    /{{4??,-tVWfg (D(< 	<r   c                     	 d}t        |      dz   dz  }t        d      D ]F  }|dz   }t        ||z  ||z  |z         D ]"  }|t        |      k  s| |||         z   dz   }$ |dz   }H d|z  S )NrM   rp      z<td class="multicolumn">r  r  z<table><tr>%s</tr></table>)rY   range)r;   listr?  rR   rowscolr   s          r   multicolumnzHTMLDoc.multicolumn  s    >D	A!#8C88F48T#Xd]3s4y=#fT!Wo5@F 4 g%F  ,f44r   c                     d|z  S )Nz<span class="grey">%s</span>r
  r[  s     r   greyzHTMLDoc.grey  s    !?$!FFr   c                 :    	 |D ]  }||v sd||   d|dc S  |S )N	<a href=""></a>r
  )r;   r$   dictsr6   s       r   namelinkzHTMLDoc.namelink  s,    HDt|04T
DAA  r   c           	          	 |j                   t        j                  j                  |j                        }}t        ||      r.t        ||      |u r d|j                   d|dt        ||      dS t        ||      S )Nr  .html#r  r  )r*   r
   r   r   r   r   r   r`   )r;   rB   r_   r$   r   s        r   	classlinkzHTMLDoc.classlink  sh    &8I8I(Jf64 WVT%:f%Dy'AC C))r   c                    	 d }|j                   t        j                  j                  |j                        }}t        ||      rt        ||      |u rqd|j                  v rE|j                  j                  d      d   }|j                  |k7  r|j                   d|}n$d|z  }n|j                  |k7  rd|j                   z  }|rd|dt        ||      dS t        ||      S )	Nr	   r   r  z#%s%s.htmlr  r  r  )
r*   r
   r   r   r   r   r   r   rb   rc   )r;   rB   r_   linkr$   r   s         r   
parentlinkzHTMLDoc.parentlink  s    <8I8I(Jf64 WVT%:f%Df)))**55c:1=$$/+1??DAD 4<D$$/$v6D,0*VW2MNNfg..r   c                 <    d|j                   d|j                   dS Nr  z.html">r  )r*   r^  s     r   
modulelinkzHTMLDoc.modulelink  s    '-3__fooNNr   c                 ~    	 |\  }}}}|r| j                  |      S |r	|d|d}nd|z  }|rd|z  }n|}d|d|dS )Nr	   r<  r  z"<strong>%s</strong>&nbsp;(package)r  r  r  )r  )r;   
modpkginfor$   r   r   shadowedurlrl   s           r   
modpkglinkzHTMLDoc.modpkglink  sY    I*4'dIx99T?""&-Cd"C7$>DD(+T22r   c                     d|d|dS )Nz<a href="file:r  r  r
  )r;   r  r   s      r   filelinkzHTMLDoc.filelink  s    )-0$77r   c                    	 |xs | j                   }g }d}t        j                  d      }|j                  ||      x}	r|	j	                         \  }
}|j                   ||||
              |	j                         \  }}}}}}|r1 ||      j                  dd      }|j                  d|d|d       n|r-dt        |      z  }|j                  d|d ||      d       n|r-d	t        |      z  }|j                  d|d ||      d       n|rE|||d
z    dk(  r%|j                  d| j                  ||      z          ne|j                  d|z         nP|||d
z    dk(  r$|j                  | j                  ||||             n!|j                  | j                  ||             |}|j                  ||      x}	r|j                   |||d               dj                  |      S )Nr   zJ\b((http|https|ftp)://\S+[\w/]|RFC[- ]?(\d+)|PEP[- ]?(\d+)|(self\.)?(\w+))"z&quot;r  r  r  z(https://www.rfc-editor.org/rfc/rfc%d.txtz!https://peps.python.org/pep-%04d/rV   r   zself.zself.<strong>%s</strong>rM   )r\  rO   compilesearchspanr   groupsrn   intr  rZ   )r;   rl   r\  funcsclassesr   r   herepatternmatchstartendr   schemerfcpepselfdotr$   r  s                      r   markupzHTMLDoc.markup  s   	F&4;;** 3 4 ~~dD11e1JE3NN6$tE"23438<<>0Cc7DSk))#x8SAB@3s8KVC[IJ9CHDVC[IJ CE?c)NN7T]]4-I#IJNN#=#DEc#a%C't}}T7E7KLt}}T7;<D3 ~~dD11e14 	vd45k*+wwwr   c                 v   	 d}|D ]  }t        |t              rq|\  }}|dz   }|| j                  ||      z   }|rJ||fk7  rDg }|D ]#  }	|j                  | j                  |	|             % |dz   dj	                  |      z   dz   }|dz   }t        |t
              s|d| j                  ||      z  z   } d|z  S )	NrM   z<dt class="heading-text">r   , r   z
</dt>z<dd>
%s</dd>
z<dl>
%s</dl>
)r/   r   r  r   rZ   r  
formattree)
r;   treer_   parentrR   entrycbasesparentsr=   s
             r   r  zHTMLDoc.formattree   s    OE%' 5"==$..G"<<Uvi/ G %t~~dG'DE !&#c\DIIg,>>DF)+E4("3doo7A7' #' '  !6))r   c           
          	 |j                   }	 |j                  }|j                  d      }g }t	        t        |      dz
        D ]2  }|j                  ddj                  |d |dz          d||   d       4 dj                  ||dd  z         }	d|	z  }
	 t        j                  |      }t        j                  j                  |      } j                  ||      }g }t        |d	      r[t!        |j"                        }|d d
 dk(  r|dd  dk(  r|d
d j%                         }|j                  d j'                  |      z         t        |d      r3|j                   j'                  t!        |j(                                     |r|
ddj                  |      z  z   }
 j+                  |      }|dt-               z  }nd} j/                  |
d|z   |z         }t        j0                  |t        j2                        }g i }}t        j0                  |t        j4                        D ]Q  \  }}|t        j6                  |      xs ||u s$t9        |||      s2|j                  ||f       d|z   x||<   ||<   S |D ]  \  }}|j:                  D ]s  }|j                   |j<                  }}t>        j@                  jC                  |      }||k7  s@|sCt        ||      sPtE        ||      |u s_||vsd|dz   |z   x||<   ||<   u  g i }}t        j0                  |t        jF                        D ]{  \  }}|-t        jH                  |      st        j6                  |      |u s5t9        |||      sC|j                  ||f       d|z   ||<   t        jJ                  |      st||   ||<   } g }t        j0                  |tL              D ]&  \  }}t9        |||      s|j                  ||f       (  jO                  tQ        |       jR                  ||      }|xr d|z  }|d|z  z   }t        |d      rg }tU        jV                  |jX                        D ]  \  }}} |j                  ||| df        |j[                           j]                  | j^                        }!| ja                  dd|!      z   }n-|r+ j]                  | fd      }!| ja                  dd|!      z   }|r|D cg c]  \  }}|	 }"}} jc                  t        jd                  |"d      |      g}!|D ])  \  }}|!j                   jg                  |||||             + | ja                  dd d!j                  |!            z   }|rUg }!|D ])  \  }}|!j                   jg                  |||||             + | ja                  d"d#d!j                  |!            z   }|rRg }!|D ]&  \  }}|!j                   jg                  ||             ( | ja                  d$d%d&j                  |!            z   }t        |d'      rE jO                  t!        |jh                         jR                        }!| ja                  d(d)|!      z   }t        |d*      rE jO                  t!        |jj                         jR                        }!| ja                  d+d,|!      z   }|S # t        $ r d }Y w xY w# t        $ r d}Y w xY wc c}}w )-Nr	   rV   r  z.html" class="white">r  r   !<strong class="title">%s</strong>r2  r      $Revision: $z
version %sr   z (%s)r  z-<br><a href="%(docloc)s">Module Reference</a>rM   z<a href=".">index</a><br>#r  z#-z<span class="code">%s</span>z
<p>%s</p>
r   r   zPackage Contentszpkg-contentc                 ,    j                  | d         S r   )r  )tr;   s    r   r   z#HTMLDoc.docmodule.<locals>.<lambda>g  s    4??1Q4#8r   ModulesClassesindexr,  	Functions	functionsDatadatar  r   Authorauthorr   Creditscredits)6r*   __all__r9   r   r  rY   r   rZ   r    r=  urllibparsequoter  rI   r   rE   r   rX   r\  r   rC  localsr}  r   re   r!   	getmoduler   r   r   r
   r   r   r   rf   r.   r-   rj   r  rS   r  pkgutiliter_modulesr   r   r  r  r  r  getclasstreer*  r   r   )#r;   rB   r$   modignoredr   partslinksr   
linkednameheadr   r  r  infoversionrB  rR   r   r  cdictr   r   r=   r_   r   r  fdictr  r>   modpkgsimporterispkgrx  	classlists#   `                                  r   r$  zHTMLDoc.docmodule  s   =	..C 

3s5z!|$ALL%1+&a23 % XXeeBCj01
2Z?	$%%f-D,,$$T*C}}S$/H 6=)&,,-Gs|11gbclc6I!"R...0KKt{{7';;<6:&KKC$89:'DIIdO33D'DvxOFFd$?($JV$ST$$VW-=-=>R!,,VW__EJC""5)3V>sC0NNC<003c	9E#Ju F "JC#}}dooW1d?v'&#2Fvs+t3"e|7>7IC7OOE#Jt ( " 2u!,,VW5F5FGJC!!%(G,=,=e,D,NsC0LL#u.!%E#J))%0s%, H !,,VV<JC3V,S%L) = kk&.$..%G:4s:-#--6:&G,3,@,@,Q('5ua89 -RLLN''AHdoo"M8= =F''8:Hdoo=(4 4F 3:;7<C7I; 4 4Y BDIKH%
UeS$u MN &doo7CHHX$68 8FH#
UeS$u MN $doo[#((8*<> >FH"
UeS 9: #dooh 79 9F6<({{3v'8'8#94>>JHdooh(KKF6=){{3v'9'9#:DNNKHdooiHMMF]  	C	  	$#H	$L <s*   [ A[ +['[[[$#[$c           
          !" 	 j                   }|xs |}j                  }g }	|	j                  ! G !fdd      }
 |
       t        t	        j
                              }t        |      dkD  rLj                           !d       |D ]'  } !d j                  |j                        z         )  !d        ! fd}! fd} ! fd	}t              D cg c]  \  }}}}t        |
      r||||f }}}}}i  |D ]*  \  }}}}dz   dz   |z   x |<   }	 t        |      }	 | |<   , |r|r|j                         "n|d   d   "t!        |"fd      \  }}t"        j$                  ur"t"        j$                  u r|}V"u rd}nd j                  "j                        z  }|dz  }t'        |        |d|z  |d       } |d|z  |d       } |d|z  |d       } |d|z  |d       } |d|z  |d       } |d|z  |d       }|}|rdj)                  |	      }	|k(  r
d|d |d!}nd"|d#|d$|d%}|rKg }|D ]-  }|j                   j                  |j                               / |d&d'j)                  |      z  z   }d}	 t	        j*                        }|r)t/        |      }|r|d(k7  r| j1                  |      z   d)z   }t3              }|r	||xs dz   } j5                  | j6                         }|xr d*|z  } j9                  |d+|	d,|      S c c}}}}w # t        $ r Y w xY w# t        $ r Y Fw xY w# t,        t        f$ r d }Y w xY w)-Nc                       e Zd Zd Z fdZy)(HTMLDoc.docclass.<locals>.HorizontalRulec                     d| _         y r   needonerU  s    r   r   z1HTMLDoc.docclass.<locals>.HorizontalRule.__init__  	     r   c                 <    | j                   r d       d| _         y )Nz<hr>
rV   r  r;   pushs    r   maybez.HTMLDoc.docclass.<locals>.HorizontalRule.maybe      <<N r   Nr*   r   r   r   r  r  s   r   HorizontalRuler        !!r   r   rW   z&<dl><dt>Method resolution order:</dt>
z<dd>%s</dd>
</dl>
c                 (   t        ||      \  }}|rW
j                           |        |D ]:  \  }}}}	 t        |      } j                  ||	|              d       < |S # t        $ r  j                  ||             Y 0w xY w)NrU   r   r  r   r*  	Exceptionr'  )msgr   r   okr$   r   homeclsr   r  r  hrmdictr  rB   r  r;   s           r   spillzHTMLDoc.docclass.<locals>.spill  s    #E95IB
S	24.D$Q ' 5 T]]5$(-wvwP QJ 35 L % = T\\%s;<=s   A,,"BBc                     t        ||      \  }}|r=j                           
|        |D ]   \  }}}} 
j                  ||	             " |S rH   r   r  r'  r  r   r   r  r$   r   r  r   r	  r  r  r;   s           r   spilldescriptorsz*HTMLDoc.docclass.<locals>.spilldescriptors  S    #E95IB
S	24.D$eT378 35Lr   c                 d   t        ||      \  }}|rj                           |        |D ]  \  }}}}j                  t        |      |      }t	        |      }	|	s d|z         n;j                  t	        |      j                  
      }	d|	z  }	 d||	d        d        |S )Nz<dl><dt>%s</dl>
z <dd><span class="code">%s</span><dl><dt>r  rU   )r   r  r(  r   rS   r  r  )r  r   r   r  r$   r   r  r   r=   r>   r  r  r	  r
  r  rB   r  r;   s             r   	spilldataz#HTMLDoc.docclass.<locals>.spilldata  s    #E95IB
S	24.D$==)>cJD -C0478"kk&-*/%A@3FdC@AJ 35 Lr   r:   r  -r   c                     | d   u S NrW   r
  r  	thisclasss    r   r   z"HTMLDoc.docclass.<locals>.<lambda>      AaDI<Mr   defined hereinherited from %sz:<br>
z
Methods %sc                     | d   dk(  S NrV   r   r
  r  s    r   r   z"HTMLDoc.docclass.<locals>.<lambda>      AaDH$4r   zClass methods %sc                     | d   dk(  S NrV   zclass methodr
  r  s    r   r   z"HTMLDoc.docclass.<locals>.<lambda>      AaDN$:r   zStatic methods %sc                     | d   dk(  S NrV   r   r
  r  s    r   r   z"HTMLDoc.docclass.<locals>.<lambda>       AaDO$;r   zReadonly properties %sc                     | d   dk(  S NrV   r   r
  r  s    r   r   z"HTMLDoc.docclass.<locals>.<lambda>      qt7J/Jr   zData descriptors %sc                     | d   dk(  S NrV   r   r
  r  s    r   r   z"HTMLDoc.docclass.<locals>.<lambda>      qt7H/Hr   zData and other attributes %sc                     | d   dk(  S NrV   r  r
  r  s    r   r   z"HTMLDoc.docclass.<locals>.<lambda>      !r   rM   	<a name="z">class <strong></strong></a>z<strong>z</strong> = <a name="z">class r  (%s)r  ()r  z&<span class="code">%s<br>&nbsp;</span>rw  rp   )r*   r   r   r   r    getmrorY   r  r  r   r   r   r   r  rI   popleftr   builtinsrB   r   rZ   	signature
ValueErrorrE   r\  rS   r  r  r  )#r;   rB   r$   r  r  r  r  realnamer  rx  r   mror=   r  r  r  r   r#   r   r   r   r  anchor	inheritedtagrw  r  declr7  argspecr>   r	  r
  r  r  s#   `` ```                         @@@@r   r%  zHTMLDoc.docclass  s   <??x  	! 	!  GNN6*+s8a<HHJ:;_t~~d6<6G6G(I I J  O	 	$		 	& 0DF/K3/K+T4e&1 c5)/K 	 3 ).%Cw"%*s"2S"88E#J-
  &e */ KKM	!!HQK	*52MNE9X__,hoo1M!f$$)DNN9;A;L;L-N N9CE6* ,,e46E,s2E:<E-3U;=E$%=%CU%JLE$%:S%@%%HJE<sBE68E EC F 778$8h E 
 dH&EGt~~dF4E4EFG FTYYw%777E	))&1I )nG7d?dkk'22V;Vn#)$Ckk#t~~uguED>D||E7Ha==k3     n I& 	I	s<   2L<
3M M)M$ 	MM	M! M!$M87M8c                 J    	 | j                  d| j                  |      z         S N=)r  r-  r^  s     r   formatvaluezHTMLDoc.formatvalue*  s"    7yytyy0011r   c	                    	 |j                   }	|xs |	}||}|dn|j                   dz   |z   }
d}d}d }t        |      ri|j                  }||u rt        |dd       }nt	        j
                  |      rd| j                  ||      z  }nd| j                  |j                  |      z  }nkt	        j                  |      st	        j                  |      r?	 |j                  }|d| j                  ||      z  }n||urd| j                  ||      z   }n|}t	        j                  |      rS|Q|j                  |j                  k7  s|j                  |j                  d	z   |	z   k7  r| j                  ||      }|rd
|z  }t	        j                   |      st	        j"                  |      rd}nd}||	k(  r
d|
d|	d}nW|Ht	        j$                  ||	g       |u r/d|j                   dz   |	z   d|	d}d}|j'                  d      rd}n|	}d|
d|d|}d }t	        j(                  |      r>	 t	        j*                  |      }|r&t1        |      }|	dk(  rd|z  }|j2                  s|dd }|sd}||z   | j5                  |      z   |xr | j7                  d|z        z   }|rd|z  S | j9                  t;        |      | j<                  |||      }|xr d|z  }d|d|dS # t        $ r Y w xY w# t,        t.        f$ r d }Y w xY w)NrM   r  Fr'    class method of %s method of %s instance unbound %s method from r	    from %sasync r0  z
"><strong>r1  z
<a href="#r  r  Tz</strong></a> = <lambda>z$<strong>%s</strong> <em>lambda</em> rV   r   (...)z$<span class="heading-text">%s</span>z<dl><dt>%s</dt></dl>
z%<dd><span class="code">%s</span></dd>r  z</dt>r  )r*   r}   r+   r   r    r!   r  r,   r2   ismethodwrapperr4   r9   r-   r   r   r  iscoroutinefunctionisasyncgenfunctiongetattr_staticr   rf   r7  r8  rI   rE   __annotations__r\  r  r  rS   r  )r;   rB   r$   r  r  r  r   r   r  r9  r;  noteskipdocsimfuncimselfobjclasspnameasyncqualifierrw  reallinkr?  r7  r>  r>   s                           r   r&  zHTMLDoc.docroutine.  s2   I??x?G
"s:TAF#__F| T:(,t~~fc/JJ/$..$$c3+ +((0%%f-D!.. :/$..32OODW,#dnnXs&CCDFf%'*=!3!337#7#7##=#HHOOFC0E!E)''/**62%NN8>DhOE&&r8R8FBKK#%0(<??8,D#h(EV$!#--f5	 i.z)BTIE "11")!B-G%G(<< AHyy?$FGI +d22++vwICGACGC15s;; " P 	* ! 	!s$   K (K* 	K'&K'*K>=K>c                     	 g }|j                   }|r |d|z         | j                  t        |      | j                        }|r |d|z          |d       dj	                  |      S )Nz!<dl><dt><strong>%s</strong></dt>
z&<dd><span class="code">%s</span></dd>
r  rM   )r   r  rS   r  rZ   	r;   rB   r$   r  r   r  r   r  r>   s	            r   r'  zHTMLDoc.docdata  sc    ?~~5<=kk&.$..9:S@AYwwwr   c                 F    	 |xr d|z  xs d}|| j                  |      z   S )Nz<strong>%s</strong> = rM   r-  )r;   rB   r$   r  r  lhss         r   r(  zHTMLDoc.docother  s.    ;6/$6<"TYYv&&&r   c                 *   	 g }|i }t        j                  |g      D ]5  \  }}}t        d |D              r|j                  |d|||v f       d||<   7 |j	                          | j                  || j                        }| j                  |d|      S )Nc              3   N   K   | ]  }d t        |      cxk  xr dk  nc   yw)i   i  N)ord.0chs     r   	<genexpr>z HTMLDoc.index.<locals>.<genexpr>  s"     @4RFc"g///4s   #%rM   rV   r  )r  r  anyr   r   r  r  r  )r;   r   r  r  r  r$   r  rx  s           r   r  zHTMLDoc.index  s    @X%,%9%93%%@!HdE@4@@NND"eTX-=>?HTN &A 	##GT__=sGX66r   rM   )   rM   Nr{  rH   r   NNN)r*   r   r   rI  _repr_instancer-  r\  ry  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r%  rC  r&  r'  rE  r(  r  r
  r   r   ru  ru  R  s    1 ZND""F
&& 3419U**
<
5 G*/&O38 #'b"b % R*&sj %)d"b `>D2 '+RdW<r  K'
7r   ru  c                   *    e Zd Z	 d Zd Zd ZeZd Zy)TextReprc                 t    t        j                  |        dx| _        | _        d| _        dx| _        | _        y rK  rO  rU  s    r   r   zTextRepr.__init__  rV  r   c                 $   t        t        |      d      rTddj                  t        |      j                  j	                               z   }t        | |      r t        | |      ||      S t        t        t        |            | j                        S r`  )
r   rD   rZ   r*   r   r   rv   rz   r-  rT  rb  s       r   re  zTextRepr.repr1  sp    47J' 388DG,<,<,B,B,D#EEJtZ(0wtZ0E::GDG$dmm44r   c                     t        || j                        }t        |      }d|v r dt        |dd      vrd|d   z   |z   |d   z   S |S )Nrg  rh  rM   ri  r   )rv   rS  r-  rn   rj  s        r   rm  zTextRepr.repr_string  sV    At~~&:4<D%(DD !$t+hqk99r   c                     	 t        t        t        |            | j                        S #  d|j                  j
                  z  cY S xY wro  )rv   rz   r-  rS  r,   r*   rp  s      r   rq  zTextRepr.repr_instance  s=    	:Q($..99	:"Q[[%9%999s	   '* AN)r*   r   r   r   re  rm  rr  rq  r
  r   r   rl  rl    s     K-5 H:r   rl  c                       e Zd Z	  e       Zej
                  Zd ZddZd ZddZ	ddZ
ddZd Zdd	Zdd
ZeZdddddZy)TextDocc                 4    	 dj                  d |D              S )NrM   c              3   ,   K   | ]  }|d z   |z     yw)Nr
  rb  s     r   re  zTextDoc.bold.<locals>.<genexpr>  s     5"rDy2~s   )rZ   r[  s     r   boldzTextDoc.bold  s    6ww5555r   c                     	 |sy|j                  d      D cg c]  }||z   j                          }}dj                  |      S c c}w )NrM   rU   )r   rQ   rZ   )r;   rl   prefixliner[   s        r   indentzTextDoc.indent  sK    DB6:jj6FG6Fd&4-'')6FGyy Hs   Ac                 v    	 | j                  |      j                         }| j                  |      dz   |z   dz   S )NrU   r  )rz  rQ   rv  )r;   rw  rx  clean_contentss       r   r  zTextDoc.section  s:    4X.557yy$&7&@@r   Nc           	          	 d}|D ]  }t        |t              rG|\  }}||z   t        |      z   }|r(||fk7  r"fd|D        }	|ddj                  |	      z  z   }|dz   }Zt        |t              sk|| j                  ||dz         z   } |S )NrM   c              3   6   K   | ]  }t        |        y wrH   r`   )rc  r  r_   s     r   re  z%TextDoc.formattree.<locals>.<genexpr>  s     DeyG4es   r2  r  rU       )r/   r   r`   rZ   r  r  )
r;   r  r_   r  rx  rR   r  r  r  r  s
     `       r   r  zTextDoc.formattree  s    PE%' 5&9Q+@@Uvi/DeDG#ftyy/A&AAF$E4($//7Av#8 8  r   c           	      
   	 |j                   }t        t        |            \  }}| j                  d||xr d|z   z         }t	        |dd       }| j                  |      }	|	|| j                  d|	dz         z   }|r|| j                  d|      z   }g }
t        j                  |t        j                        D ]D  \  }}|t        j                  |      xs ||u s$t        |||      s2|
j                  ||f       F g }t        j                  |t        j                        D ]U  \  }}|-t        j                  |      st        j                  |      |u s5t        |||      sC|j                  ||f       W g }t        j                  |t              D ]&  \  }}t        |||      s|j                  ||f       ( g }t               }t!        |d      rt#        j$                  |j&                        D ]?  \  }}}|j)                  |       |r|j                  |dz          /|j                  |       A |j+                          || j                  d	d
j-                  |            z   }g }t        j                  |t        j.                        D ]:  \  }}|j                   j1                  |dz         s%||vs*|j                  |       < |r4|j+                          || j                  dd
j-                  |            z   }|
r|
D cg c]  \  }}|	 }}}| j3                  t        j4                  |d      |      g}|
D ]'  \  }}|j                  | j7                  |||             ) || j                  dd
j-                  |            z   }|rRg }|D ]'  \  }}|j                  | j7                  |||             ) || j                  dd
j-                  |            z   }|rTg }|D ])  \  }}|j                  | j9                  |||d             + || j                  dd
j-                  |            z   }t!        |d      rMt;        |j<                        }|d d dk(  r|dd  dk(  r|dd j?                         }|| j                  d|      z   }t!        |d      r(|| j                  dt;        |j@                              z   }t!        |d      r(|| j                  dt;        |jB                              z   }t!        |d      r(|| j                  dt;        |jD                              z   }	 t        jF                  |      }|| j                  d |      z   }|S c c}}w # tH        $ r d}Y *w xY w)!NNAMEr  r  zMODULE REFERENCEa.  

The following documentation is automatically generated from the Python
source files.  It may be incomplete, incorrect or include features that
are considered implementation detail and may vary between Python
implementations.  When in doubt, consult the module reference at the
location listed above.
DESCRIPTIONr   
 (package)zPACKAGE CONTENTSrU   r	   
SUBMODULESrV   CLASSES	FUNCTIONSF   )rs   DATAr   r  r  r   r  VERSIONr   DATEr   AUTHORr   CREDITSr2  FILE)%r*   r\   rS   r  r   rC  r    r   r!   r  r   r   rf   r.   rj   setr   r  r  r   addr   rZ   re   r   r  r  r*  r(  rE   r   rX   r   r   r   r=  rI   )r;   rB   r$   r  r  synopdescrR   r   rB  r  r   r   r  r  r  modpkgs_namesr  r_   r  
submodulesr  rx  r  r   s                            r   r$  zTextDoc.docmodule  s   Cvf~.tfde.E&FGfi.'dll+=v I @  F dll=$??F!,,VW__EJC%%e,66AsC0NNC<0 F !,,VW5F5FGJC!!%(G,=,=e,D,NsC0LL#u. H !,,VV<JC3V,S%L) = 6:&,3,@,@,Q('5!!'*NN7\#9:NN7+ -R LLNdll"DIIg$68 8F 
!,,VW5E5EFJC~~((4M9Q!!#& G OOdlldii
35 5F 189:3I9$$Y2D: ;H%
UeS$ ?@ &dll9dii6IJJFH#
UeS$ ?@ $dll;		(8KLLFH"
UeS$r JK #dll6499X3FGGF6=)&,,-Gs|11gbclc6I!"R...0dll9g>>F6:&dll63v3GHHF6<(dll8S9J9J5KLLF6=)dll9c&:L:L6MNNF	 %%f-D $,,vt44G :@  	 D	 s   U3U% %U32U3c           
           	 j                   }|xs |}j                  }j                  fd}||k(  rd j                  |      z   }n j                  |      dz   |z   }|r#t	        ||      }	|ddj                  |	      z  z   }g }
|
j                  	 t        j                        }|r t        |      }|r|dk7  r ||z   dz          t              }|r |dz          t        t        j                              }t        |      dkD  r( d	       |D ]  } d
 ||      z            d       t!        d t"        j%                        D        t        j&                        }t        |      }d}|rD d       |d | D ]  } d
|z           ||kD  r dt        ||z
        z   dz           d        G fdd      } |        fd} fd} fd}t)              D cg c]  \  }}}}t+        |      r||||f }}}}}|r|r|j-                          n|d   d    t/        | fd      \  }}t0        j2                  ur t0        j2                  u r|}V u rd}ndt5         j                        z  }t7        |        |d|z  |d       } |d|z  |d       } |d |z  |d!       } |d"|z  |d#       } |d$|z  |d%       } |d&|z  |d'       }|}|rdj                  |
      }
|
s|dz   S |dz    j9                  |
j;                         d(      z   dz   S # t        t        f$ r d }Y w xY wc c}}}}w ))Nc                     t        | |      S rH   r  )r  r  s     r   makenamez"TextDoc.docclass.<locals>.makenamea  s    Q?"r   class z	 = class r2  r  r3  rU   rW   zMethod resolution order:r  rM   c              3      K   | ]C  }|j                   j                  d       s&|j                  dk(  rt        |j                          E yw)r   r6  N)r*   r   r   rE   )rc  r#   s     r   re  z#TextDoc.docclass.<locals>.<genexpr>  s?      S*E3LL++C0S^^z5Q *Es   A	Ar   r  zBuilt-in subclasses:z    ... and z other subclassesc                       e Zd Zd Z fdZy)(TextDoc.docclass.<locals>.HorizontalRulec                     d| _         y r   r  rU  s    r   r   z1TextDoc.docclass.<locals>.HorizontalRule.__init__  r  r   c                 <    | j                   r d       d| _         y )NzF----------------------------------------------------------------------rV   r  r  s    r   r  z.TextDoc.docclass.<locals>.HorizontalRule.maybe  r  r   Nr  r  s   r   r   r    r  r   r   c           
         t        ||      \  }}|rLj                           |        |D ]/  \  }}}}	 t        
|      } j                  ||	
|             1 |S # t        $ r  j                  ||	             Y Xw xY wrH   r  )r  r   r   r  r$   r   r  r   r	  r  rB   r  r;   s           r   r  zTextDoc.docclass.<locals>.spill  s    #E95IB
S	24.D$E ' 5 T]]5(,c67D E 35 L % = T\\%s;<=s   A!!"BBc                     t        ||      \  }}|r=j                           
|        |D ]   \  }}}} 
j                  ||	             " |S rH   r  r  s           r   r  z*TextDoc.docclass.<locals>.spilldescriptors  r  r   c           
         t        ||      \  }}|r[
j                           |        |D ]>  \  }}}}t        |      }	 t        |      }	 j                  |	|d|      dz          @ |S # t        $ r |j
                  |   }	Y =w xY w)Nr  rs   r>   rU   )r   r  rS   r   r9   __dict__r(  )r  r   r   r  r$   r   r  r   r>   r:   r	  r  rB   r  r;   s             r   r  z#TextDoc.docclass.<locals>.spilldata  s    #E95IB
S	24.D$ -C5%fd3 sD#bcJ  35 L	 * 5%..t45s   A00B
Br  r   c                     | d   u S r  r
  r  s    r   r   z"TextDoc.docclass.<locals>.<lambda>  r  r   r  r  zMethods %s:
c                     | d   dk(  S r  r
  r  s    r   r   z"TextDoc.docclass.<locals>.<lambda>  r   r   zClass methods %s:
c                     | d   dk(  S r"  r
  r  s    r   r   z"TextDoc.docclass.<locals>.<lambda>  r#  r   zStatic methods %s:
c                     | d   dk(  S r%  r
  r  s    r   r   z"TextDoc.docclass.<locals>.<lambda>  r&  r   zReadonly properties %s:
c                     | d   dk(  S r(  r
  r  s    r   r   z"TextDoc.docclass.<locals>.<lambda>  r)  r   zData descriptors %s:
c                     | d   dk(  S r+  r
  r  s    r   r   z"TextDoc.docclass.<locals>.<lambda>  r,  r   zData and other attributes %s:
c                     | d   dk(  S r.  r
  r  s    r   r   z"TextDoc.docclass.<locals>.<lambda>  r/  r   z |  )r*   r   r   rv  maprZ   r   r    r7  r8  rI   rE   rS   r   r4  rY   sortedrD   __subclasses__r@  r   r   r5  r   r6  rB   r`   r   rz  rQ   )!r;   rB   r$   r  r  r9  r  r  rw  r  rx  r7  r?  r>   r:  r=   
subclassesno_of_subclassesMAX_SUBCLASSES_TO_DISPLAYsubclassnamer   r  r  r  r   r#   r   r   r<  r=  r	  r  r  s!   `` `                          @@@r   r%  zTextDoc.docclass[  s   B??x   ++ 	# 8tyy22EIIdOk1H<E(E*GFTYYw%777E	))&1I )nG7d?TG^d*+Vnt GNN6*+s8a<+,Vhtn,- H S$*=*=f*E S		


 z?$%!'( *+E,E FVl*+ !G";;^),EEFG() * H	! 	! 	 	"		 	  0DF/K3/K+T4e&1 c5)/K 	 3 KKM	!!HQK	*52MNE9X__,hoo1M!f$$)Ii6<6G6G-I I E6* /C/46E/#5u:<E036;=E$%@3%F%JLE$%=%CU%HJE?#Eu68E EC F 99X&4<t|dkk(//*;VDDtKKE I& 	I	p3s   M M
MMc                 ,    	 d| j                  |      z   S rA  r]  r^  s     r   rC  zTextDoc.formatvalue  s    7TYYv&&&r   c                 `   	 |j                   }|xs |}||}d}d}d }	t        |      r]|j                  }
|
|u rt        |dd       }	nt	        j
                  |
      rdt        |
|      z  }nydt        |
j                  |      z  }n_t	        j                  |      st	        j                  |      r3	 |j                  }|dt        ||      z  }n||urdt        ||      z   }n|}	t	        j                  |	      rM|K|	j                  |j                  k7  s|	j                  |j                  dz   |z   k7  rt        |	|      }|rd	|z  }t	        j                   |      st	        j"                  |      rd
}nd}||k(  r| j%                  |      }nG|.t	        j&                  ||g       |u rd}|j)                  d      rd}| j%                  |      dz   |z   }d }t	        j*                  |      rM	 t	        j,                  |      }|r5t3        |      }|dk(  r%| j%                  |      dz   }|j4                  s|dd }|sd}||z   |z   |z   }|r|dz   S t7        |      xs d}|dz   |xr" | j9                  |      j;                         dz   z   S # t        $ r Y w xY w# t.        t0        f$ r d }Y w xY w)NrM   Fr'   rE  rF  rG  rH  r	   rI  rJ  T = rK  z lambda rV   r   rL  rU   )r*   r}   r+   r   r    r!   r`   r,   r2   rM  r4   r9   r-   r   r   rc   rN  rO  rv  rP  r   rf   r7  r8  rI   rE   rQ  rS   rz  rQ   )r;   rB   r$   r  r   r  r9  rR  rS  rT  rU  rV  rW  rX  rw  r?  r7  r>  r>   s                      r   r&  zTextDoc.docroutine  s   I??x?GF#__F| T:(,y/EE/)$$c3+ +((0%%f-?!.. :/)Hc2JJDW,#i#&>>DFf%'*=!3!337#7#7##=#HHvs+E!E)''/**62%NN8IIh'E&&r8R8FB??8,DIIdOe+h6EV$!#--f5	 i.z) IIdOj8E "11")!B-G%/$6$;.&BC$;#"J$++c*:*A*A*Cd*JKKo " H 	* ! 	!s$   1J	 ,J 		JJJ-,J-c                     	 g }|j                   }|r || j                  |              |d       t        |      xs d}|r || j                  |              |d       dj	                  |      S )NrU   rM   )r   rv  rS   rz  rZ   r[  s	            r   r'  zTextDoc.docdataH  se    ?~~4!JVn"S!"Jwwwr   r  c                &   	 | j                  |      }|r+|xr |dz   xs d|z   }	|t        |	      z
  }
|
dk  r|d |
 dz   }|xr | j                  |      dz   xs d|z   }	|st        |      }|r#|	d| j	                  t        |            z   dz   z  }	|	S )Nr  rM   r   rq   rU   )r-  rY   rv  rS   rz  rE   )r;   rB   r$   r  r  rs   r>   r  r-  ry  chops              r   r(  zTextDoc.docotherX  s    ;yy )TE\/R47DCI%DaxUde 304506B$>.CD4;;s3x00477Dr   )r  )NrM   r   )NNNNri  )r*   r   r   rl  rj  r-  rv  rz  r  r  r$  r%  rC  r&  r'  rE  r(  r
  r   r   rr  rr    se    1 ZND6 A cJXLt'ML^  K$r   rr  c                       e Zd Z	 d Zy)_PlainTextDocc                     |S rH   r
  r[  s     r   rv  z_PlainTextDoc.boldi  s    r   N)r*   r   r   rv  r
  r   r   r  r  g  s
    <r   r  c                 0    	 t               at        |        y rH   )getpagerpagerry   s    r   r  r  n  s    MJE	$Kr   c                  `   	 t        t        j                  d      st        S t        t        j                  d      st        S t        j                  j                         rt        j                  j                         st        S t        j                  dk(  rt        S t        j                  j                  d      xs t        j                  j                  d      rCt        j                  dk(  rfdS t        j                  j                  d      dv rfd	S fd
S t        j                  j                  d      dv rt        S t        j                  dk(  rd S t        t        d      rt        j                  d      dk(  rd S dd l} | j                         \  }}t        j                  |       	 t        t        d      r3t        j                  d|z        dk(  rd t        j                  |       S t        t        j                  |       S # t        j                  |       w xY w)Nisatty
emscriptenMANPAGERPAGERwin32c                 .    t        t        |             S rH   tempfilepagerplainrl   	use_pagers    r   r   zgetpager.<locals>.<lambda>  s    eDk9 Er   TERM)dumbemacsc                 .    t        t        |             S rH   )	pipepagerr  r  s    r   r   zgetpager.<locals>.<lambda>  s    	%+y Ar   c                     t        |       S rH   r  r  s    r   r   zgetpager.<locals>.<lambda>  s    	$	 :r   c                 ,    t        t        |       d      S )Nzmore <r  ry   s    r   r   zgetpager.<locals>.<lambda>  s    M%+x@r   systemz(less) 2>/dev/nullr   c                     t        | d      S )Nlessr  ry   s    r   r   zgetpager.<locals>.<lambda>  s    IdF3r   z	more "%s"c                     t        | d      S )Nmorer  ry   s    r   r   zgetpager.<locals>.<lambda>  s    	$ 7r   )r   r
   stdin
plainpagerstdoutr  platformr   r>  r   r  tempfilemkstempcloseunlinkttypager)r  fdr   r  s      @r   r  r  t  s   <399h'3::x(99SZZ%6%6%8
|||#

z*EbjjnnW.EI<<7"EEZZ^^F#'88AA::	zz~~f!22
||w@@r8+?!@A!E33%%'NRHHRL2x RYY{X/E%F!%K7 			( 
		(		(s   8-H ;H H-c                 2    	 t        j                  dd|       S )Nz.rM   )rO   rP   ry   s    r   r  r    s    /66%T""r   c                 4   	 dd l }|j                  |d|j                  d      }	 |j                  5 }	 |j	                  |        d d d        	 	 |j                          y # t
        $ r Y &w xY w# 1 sw Y   +xY w# t        $ r Y 9w xY w# t
        $ r Y nw xY wL)Nr   Tbackslashreplace)shellr  errors)
subprocessPopenPIPEr  writeKeyboardInterruptr   wait)rl   cmdr  procpipes        r   r  r    s    =Ct:??#5  7D	ZZ4

4   	IIK %   Z   ! 	 		 sW   A; A/A A; B
  	A,)A/+A,,A//A84A; ;	BB
	BBc           	         	 dd l }|j                         5 }t        j                  j	                  |d      }t        |ddt        j                  dk(  rt        j                  d      nd       5 }|j                  |        d d d        t        j                  |dz   |z   dz          d d d        y # 1 sw Y   0xY w# 1 sw Y   y xY w)	Nr   z	pydoc.outwr  r  )r  encodingz "r  )r  TemporaryDirectoryr   r   rZ   r   r
   r  device_encodingr  r  )rl   r  r  tempdirr   r   s         r   r  r    s    F		$	$	&'77<<5(C(:,,') --a0/3 JJt	
 			#*x'#-. 
'	&  
'	&s$   AB;.B/ &B;/B8	4B;;Cc                     t        t        j                  dd       xs d}| j                  |d      j	                  |      S )Nr  utf-8r  )r   r
   r  encodedecode)rl   r  s     r   _escape_stdoutr    s6    szz:t4?H;;x!34;;HEEr   c           	         	 t        t        |             j                  d      }	 dd l}t        j
                  j                         }|j                  |      }|j                  |       d }	 	 t        t        j                  j!                  dd            }|dk  rd}|dz
  x}}t        j$                  j'                  dj)                  |d |       dz          ||d  rt        j$                  j'                  d       t        j$                  j+                           |       }	|	d	v r t        j$                  j'                  d
       n|	dv r.t        j$                  j'                  d
||   z   dz          |dz   }|	dv r||z
  |z
  }|dk  rd}t        j$                  j'                  ddj)                  ||||z          z   dz          ||z   }||d  r|r|j-                  |j.                         y y # t        t        t        j                  f$ r	 d }d }Y w xY w# t"        $ r d}Y w xY w# |r|j-                  |j.                         w w xY w)NrU   r   c                  @    t         j                  j                  d      S r   )r
   r  r  r
  r   r   r   zttypager.<locals>.<lambda>  s    #))..+r   c                  J    t         j                  j                         d d d d S )Nr   rV   )r
   r  r   r
  r   r   r   zttypager.<locals>.<lambda>  s    #)),,.s3BQ7r   LINESrV      z
-- more --)qQz          )rU   )bB)r  r  r   ttyr
   r  fileno	tcgetattr	setcbreakr  r9   ioUnsupportedOperationr  r   r>  r   r8  r  r  rZ   flush	tcsetattr	TCSAFLUSH)
rl   r[   r  r  oldgetcharhri  incr  s
             r   r  r    s   /.&'--d3E8YYmmBb+
2	BJJNN7A./A 6Aa%C

5#;/$67ABiJJ\*JJ	AJ

  !12l"

  !1E!H!<t!CDE&&GcMq5a!JJTDIIeAaen$==DECA! ABi& MM"cmmS1 A )@)@A 878  	A	2 MM"cmmS1 s=   AG2 /)H D8H. 2#HHH+'H. *H++H. ."Ic                 h    	 t         j                  j                  t        t	        |                    y rH   )r
   r  r  r  r  ry   s    r   r  r    s!    HJJU>$/01r   c                 j   	 t        j                  |       rU| j                  t        j                  v rd| j                  z   S t        | d      rd| j                  z   S d| j                  z   S t        j                  |       rd| j                  z   S t        j                  |       r=d| j                  j                  d| j                  j                  d| j                  S t        j                  |       r=d| j                  j                  d| j                  j                  d| j                  S t        j                  |       rd	| j                  z   S t        j                  |       rd
| j                  z   S t        j                  |       rd| j                  z   S t        |       j                  S )Nzbuilt-in module r   zpackage zmodule zbuilt-in function zgetset descriptor r	   zmember descriptor r  z	function zmethod )r    re   r*   r
   r  r   r.   isgetsetdescriptorr4   r   r5   r!   r-   r)   rD   )things    r   describer    sZ   9>>S555%665*%..u~~--#enn44!!%())5+=+=+F+FNN 	 !!%())5+=+=+F+FNN 	 u%..((% U^^++5>>));r   c                 T   	 | j                  d      D cg c]  }|s|	 }}d\  }}|t        |      k  r;t        dj                  |d |dz          |      }|r||dz   }}nn|t        |      k  r;|r|}nt        }||d  D ]  }	 t        ||      } |S c c}w # t        $ r Y  y w xY w)Nr	   r   rV   )r   rY   r  rZ   r6  r   r9   )r   r  partr  r   n
nextmodulerB   s           r   locater    s    J"jjo6odToE6IFA
c%j.t! 5yA
:q1uqv c%j. ab		VT*F 
 M 7  		s   BBB	B'&B'c                     	 t        | t              r t        | |      }|t        d| z        || fS t	        | dd       }| t        |t              r|fS d fS )Nz~No Python documentation found for %r.
Use help() to get the interactive help utility.
Use help(str) for help on the str class.r*   )r/   rE   r  r  r   )r  r  rB   r$   s       r   resolver  )  sr    N%y)> , /44 5 5 u}uj$/js3d====r   c                 *   	 |t         }t        | |      \  }}t        |      }t        j                  |      }|rd|v r|d|d |j                  d       z   z  }n|r||ur|d|j                  z   z  }t        j                  |      sst        j                  |      s^t        j                  |      sIt        j                  |      s4t        |      s)t        |d      r|j                  }nt        |      }|dz  }||z  dz   |j                  ||      z   S )Nr	   z in z in module 
__origin__z objectr  )rl   r  r  r    r  rfindr*   re   r!   rf   r3   rK   r   r  rD   r*  )r  rw  r  rendererrB   r$   r  r   s           r   
render_docr!  7  s   L5),LFDFDv&Ft.tzz#///	F&(//V$oof%'&&v.fo 6<(&&F&\FID4<& 8#4#4VT#BBBr   c                    	 |	 t        t        | ||             y 	 t        | ||t              }|j                  |       y # t        $ r}|r t        |       Y d }~y d }~ww xY w# t        $ r}t        |      }Y d }~Od }~ww xY wrH   )r  r!  r  print	plaintextrE   r  )r  rw  r  outputis_clir  r   s          r   r>   r>   R  s}    M~	*UE956	5%I>A 	Q  	#JJ	  	CA	s.   A A% 	A"
AA"%	B.A>>Bc                    	 t        | |      \  }}t        j                  t        |      t        j	                  ||            }t        |dz   dd      5 }|j                  |       d d d        t        d|dz          y # 1 sw Y   xY w)Nr<  r  r  )r  wrote)r  htmlry  r  r*  r   r  r#  )r  r  rB   r$   ry  r   s         r   writedocr*  c  so    F5),LFD99Xf%t}}VT'BCD	dWncG	4

4 
5	'4'>" 
5	4s   A??Bc                 d    	 |i }t        j                  | g|      D ]  \  }}}t        |        y rH   )r  walk_packagesr*  )r   pkgpathdoner  r_   r  s         r   	writedocsr/  k  s:    K|BT$+$9$93%$I '5 %J
r   c                   T   e Zd Zi ddddddddddd	d
ddddddddddddddddddddddi d d!d"d#d$d%dd&d#d'd(d)d*d+d,d-d.d/d0dd1dd2d3d4d5d6d7dd8d9d:dd;d<d=iZd>D  cg c]  }d?D ]  }||z   	  c}}} Zd@dAdBdCgedDdEdFdGdHdIdJZdKdLdMdNdOdPdQdRdSdTdUdVdVdWdWdXZej                         D ]/  \  ZZ	e	D ]%  Z
ej                  e
e      ZeevredYz   ez   Zeee
<   ' 1 [[	[
[i dZd[dRd\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdZdxdZi dydzdOd{d|d}d~ddddd#ddddddddddddddddddddddi dddddddddddddddddddSdddddkdddddddndddi dddddddddLdddddddddēd+dœddƓdd	ddɓdd˓dddd6dd#ddddddӜZddՄZedք        Zedׄ        Zd؄ Z e       ZefdلZdڄ Zdۄ Zdd܄Zd݄ ZddބZd߄ Zd Zd ZddZddZd ZddZ yc c}}} w )HelperFalserM   NoneTrueandBOOLEANaswithassert)r9  rM   async)r:  rM   await)r;  rM   break)r<  	while forclass)r>  zCLASSES SPECIALMETHODScontinue)r?  r=  def)functionrM   del)rB  BASICMETHODSelififelse)rF  r=  excepttryfinallyfor)rJ  zbreak continue whilefromimportglobal)rM  znonlocal NAMESPACES)rE  
TRUTHVALUE)rL  MODULESin)rP  SEQUENCEMETHODSis
COMPARISONlambda)rT  r  nonlocal)rU  zglobal NAMESPACESnotorpass)rX  rM   raise)rY  
EXCEPTIONSreturn)r[  r  )rH  rZ  while)r\  zbreak continue if TRUTHVALUE)r8  z CONTEXTMANAGERS EXCEPTIONS yieldyield)r]  rM   )r  fri  u'r  ra  z'''r  z""")+r  ***r;  z//%<<>>rX  |^~rY  rZ  <=>===!=<>)rY  rZ  rk  rl  rm  rn  ro  )r  rj  )z+=z-=z*=z/=z%=z&=z|=z^=z<<=z>>=z**=z//=)rf  rg  rX  rh  ri  rj  )jJ)STRINGS	OPERATORSrS  UNARYAUGMENTEDASSIGNMENTBITWISECOMPLEXzOPERATORS FORMATTINGPOWERzTUPLES LISTS FUNCTIONSz ATTRIBUTES FLOAT MODULES OBJECTSELLIPSISzSLICINGS DICTIONARYLITERALSz	def classrr  PRIVATENAMESzPRIVATENAMES SPECIALMETHODS
BACKQUOTESzTUPLES FUNCTIONS CALLSzLISTS SUBSCRIPTS SLICINGS)re  rd  ,r	   rq   :@rg  r   r   `r   r   []r,  TYPES)typeszRSTRINGS UNICODE NUMBERS SEQUENCES MAPPINGS FUNCTIONS CLASSES MODULES FILES inspect)stringsz4str UNICODE SEQUENCES STRINGMETHODS FORMATTING TYPESSTRINGMETHODS)zstring-methodszSTRINGS FORMATTING
FORMATTING)formatstringsrs  UNICODE)r  z:encodings unicode SEQUENCES STRINGMETHODS FORMATTING TYPESNUMBERS)numberszINTEGER FLOAT COMPLEX TYPESINTEGER)integersz	int rangeFLOAT)floatingz
float mathrw  )	imaginaryzcomplex cmath	SEQUENCES)typesseqz$STRINGMETHODS FORMATTING range LISTSMAPPINGSDICTIONARIESr  )typesfunctionsz	def TYPESMETHODS)typesmethodszclass def CLASSES TYPESCODEOBJECTS)zbltin-code-objectszcompile FUNCTIONS TYPESTYPEOBJECTS)zbltin-type-objectsztypes TYPESFRAMEOBJECTS
TRACEBACKSNONE)zbltin-null-objectrM   )zbltin-ellipsis-objectSLICINGSSPECIALATTRIBUTES)specialattrsrM   r  )r  z!class SPECIALMETHODS PRIVATENAMESrO  )typesmodulesrL  PACKAGESEXPRESSIONS)zoperator-summaryzlambda or and not in is BOOLEAN COMPARISON BITWISE SHIFTING BINARY FORMATTING POWER UNARY ATTRIBUTES SUBSCRIPTS SLICINGS CALLS TUPLES LISTS DICTIONARIESrs  
PRECEDENCEOBJECTS)objectsr  SPECIALMETHODS)specialnameszbBASICMETHODS ATTRIBUTEMETHODS CALLABLEMETHODS SEQUENCEMETHODS MAPPINGMETHODS NUMBERMETHODS CLASSESrC  )customizationzhash repr str SPECIALMETHODSATTRIBUTEMETHODS)zattribute-accesszATTRIBUTES SPECIALMETHODSCALLABLEMETHODS)zcallable-typeszCALLS SPECIALMETHODSrQ  )sequence-typesz(SEQUENCES SEQUENCEMETHODS SPECIALMETHODSMAPPINGMETHODS)r  zMAPPINGS SPECIALMETHODSNUMBERMETHODS)znumeric-typesz*NUMBERS AUGMENTEDASSIGNMENT SPECIALMETHODS	EXECUTION)	execmodelz%NAMESPACES DYNAMICFEATURES EXCEPTIONS
NAMESPACES)namingz3global nonlocal ASSIGNMENT DELETION DYNAMICFEATURESDYNAMICFEATURES)zdynamic-featuresrM   SCOPINGFRAMESrZ  )r4  ztry except finally raiseCONVERSIONS)conversionsrM   IDENTIFIERS)identifierszkeywords SPECIALIDENTIFIERSSPECIALIDENTIFIERS)z
id-classesrM   )zatom-identifiersrM   LITERALS)zatom-literalsz=STRINGS NUMBERS TUPLELITERALS LISTLITERALS DICTIONARYLITERALSTUPLESTUPLELITERALS)	exprlistszTUPLES LITERALSLISTS)ztypesseq-mutableLISTLITERALSr  )listszLISTS LITERALS)typesmappingDICTIONARYLITERALSr  )r6   zDICTIONARIES LITERALS
ATTRIBUTES)zattribute-referencesz(getattr hasattr setattr ATTRIBUTEMETHODS
SUBSCRIPTS)subscriptionsrQ  r  )slicingsrQ  CALLS)callsr  )powerr  rt  )unaryr  BINARY)binaryr  SHIFTING)shiftingr  rv  )bitwiser  )comparisonszEXPRESSIONS BASICMETHODS)booleanszEXPRESSIONS TRUTHVALUE	ASSERTION
ASSIGNMENT)
assignmentru  ru  )	augassignr  DELETION	RETURNING	IMPORTING)compoundzfor while break continue)truthz if while and or not BASICMETHODS)debuggerpdb)zcontext-managersr8  )CONDITIONALLOOPINGrN  	DEBUGGINGCONTEXTMANAGERSNc                      || _         || _        y rH   )_input_output)r;   inputr%  s      r   r   zHelper.__init__"  s    r   c                 >    | j                   xs t        j                  S rH   )r  r
   r  rU  s    r   r  zHelper.input&  s    {{'cii'r   c                 >    | j                   xs t        j                  S rH   )r  r
   r  rU  s    r   r%  zHelper.output*  s    ||)szz)r   c                     t        j                         d   d   dk(  r |         yd| j                  j                  d| j                  j                  dS )NrV   rp   ?rM   rY  r	   z
 instance>)r    stackr,   r   r   rU  s    r   __repr__zHelper.__repr__.  sO    ==?1a C'F ( &*^^%>%>%)^^%@%@B 	Br   c                 $   || j                   ur	 | j                  |       y | j                          | j                          | j                  j	                  d       y # t        $ r(}| j                  j	                  | d       Y d }~y d }~ww xY w)NrU   a  
You are now leaving help and returning to the Python interpreter.
If you want to ask for help on a particular object directly from the
interpreter, you can type "help(object)".  Executing "help('string')"
has the same effect as typing a particular string at the help> prompt.
)_GoInteractiver   r  r%  r  introinteract)r;   requestr  s      r   __call__zHelper.__call__6  sy    $---.		'" JJLMMOKK    .!!SE*--.s   A 	B'B

Bc                    | j                   j                  d       	 	 | j                  d      }|sy 	 |j                         }t        |      dkD  r"|d   |d   cxk(  rdv rn n|d   |dd vr|dd }|j                         dv ry |d	k(  r| j                          n| j                  |       # t        t        f$ r Y y w xY w)
NrU   zhelp> rW   r   r   r`  rV   )r  quitr   )
r%  r  getliner  EOFErrorrX   rY   r@  r  r   )r;   r  s     r   r  zHelper.interactF  s    $,,x0w mmoG Gq WQZ72;%L*%L
'!B-7!!B-}}-/& 

		'"#  &x0 s   B. .C ?C c                     	 | j                   t        j                  u rt        |      S | j                  j	                  |       | j                  j                          | j                   j                         S rH   )r  r
   r  r%  r  r
  r   )r;   prompts     r   r  zHelper.getline[  sT    <::"= KKf%KK::&&((r   c                 n   t        |t              rX|j                         }|dk(  r| j                          nb|dk(  r| j	                          nK|dk(  r| j                          n4|dk(  r| j                          n|d d dk(  r#| j                  |j                         d          n|| j                  v r| j                  |       n|dv r#t        t        |      d	| j                  |
       n|| j                  v r| j                  |       n|| j                  v r| j                  |       nk|rt        |d	| j                  |
       nOt        t        d	| j                  |
       n1t        |t               r |         nt        |d	| j                  |
       | j"                  j%                  d       y )Nkeywordssymbolstopicsr      zmodules rV   )r4  r2  r3  zHelp on %s:)r%  r&  rU   )r/   rE   rX   listkeywordslistsymbols
listtopicslistmodulesr   r  
showsymbolr>   evalr  r  	showtopicr  r1  r%  r  )r;   r  r&  s      r   r   zHelper.helpd  sE   gs#mmoG*$d&7&7&9I%t'7'7'9H$doo&7I%t'7'7'9!
*  !34DLL($//'*B55DM=fUDMM)4>>'+BDKK')@#g}T\\RXYc=fM($&'=fM$r   c                     | j                   j                  dj                  dt        j                  d d z               y )Na  Welcome to Python {0}'s help utility! If this is your first time using
Python, you should definitely check out the tutorial at
https://docs.python.org/{0}/tutorial/.

Enter the name of any module, keyword, or topic to get help on writing
Python programs and using Python modules.  To get a list of available
modules, keywords, symbols, or topics, enter "modules", "keywords",
"symbols", or "topics".

Each module also comes with a one-line summary of what it does; to list
the modules whose name or summary contain a given string such as "spam",
enter "modules spam".

To quit this help utility and return to the interpreter,
enter "q" or "quit".
z%d.%drW   )r%  r  r?  r
   rD  rU  s    r   r  zHelper.introy  s7       F7S%%bq))*!	,r   c                    t        t        |            }||z  }t        |      |z   dz
  |z  }t        |      D ]  }t        |      D ]s  }||z  |z   }|t        |      k  s| j                  j                  ||          ||dz
  k  sA| j                  j                  dd|dz
  t        ||         z
  z  z          u | j                  j                  d        y )NrV   r,  rU   )r  r  rY   r  r%  r  )	r;   itemscolumnsr  colwr  rowr  r   s	            r   r  zHelper.list  s    VE]#E
W$q(W4;CW~$J$s5z>KK%%eAh/Wq[())#tax#eAh-7O0P*PQ & KKd# r   c                     | j                   j                  d       | j                  | j                  j	                                y )NzN
Here is a list of the Python keywords.  Enter any keyword to get more help.

)r%  r  r  r  r   rU  s    r   r  zHelper.listkeywords  s4      	 			$--$$&'r   c                     | j                   j                  d       | j                  | j                  j	                                y )Nzx
Here is a list of the punctuation symbols which Python assigns special meaning
to. Enter any symbol to get more help.

)r%  r  r  r  r   rU  s    r   r  zHelper.listsymbols  s4      	
 			$,,##%&r   c                     | j                   j                  d       | j                  | j                  j	                                y )NzN
Here is a list of available topics.  Enter any topic name to get more help.

)r%  r  r  r  r   rU  s    r   r  zHelper.listtopics  s4      	 			$++""$%r   c                 ^   	 dd l }| j                  j                  || j                  j                  |            }|s(| j                  j                  dt        |      z         y t        |t              r| j                  ||      S |\  }}	 |j                  j                  |   }|j                         dz   }|r|xs ddz   |z   }|rRdd l}ddj                  |j                               z   dz   }	|j!                  |	d	      }
|d
dj                  |
      z  z  }| j"                  t%        |       y | j                  j                  |       y # t        $ r | j                  j                  d       Y y w xY w# t        $ r* | j                  j                  dt        |      z         Y y w xY w)Nr   t
Sorry, topic and keyword documentation is not available because the
module "pydoc_data.topics" could not be found.
zno documentation found for %s
rU   rM   r,  Related help topics: r  H   z
%s
)pydoc_data.topicsr  r%  r  r  r   r  r-  r/   rE   r  KeyErrorrX   textwraprZ   r   wrapr  r  )r;   topic
more_xrefs
pydoc_datatargetlabelxrefsr>   r  rl   wrapped_texts              r   r  zHelper.showtopic  s   	$ (9(9%(@AKK?$u+MNfc">>&*55u	##**51C iikD [bC'*4E*TYYu{{}-EELD#==r2L8dii555C<<#JKKc"?  	KK   	   	KK?$u+MN	s#   E E9 $E65E690F,+F,c                 T   	 	 dd l }| j                  j                  || j                  j                  |            }|st        d      t        |t              r| j                  ||      S |\  }}|j                  j                  |   }|r|xs ddz   |z   }||fS # t        $ r Y yw xY w)Nr   )r  rM   zcould not find topicrM   r,  )	r  r  r  r   r  r8  r/   rE   	_gettopic)r;   r  r  r  r  r  r  r>   s           r   r  zHelper._gettopic  s    		
$ (9(9%(@A344fc">>&*55u&&u-[bC'*4EEz  	

	
s   B 	B'&B'c                 p    | j                   |   }|j                  d      \  }}}| j                  ||       y )Nr,  )r  	partitionr  )r;   symbolr  r  r   r  s         r   r  zHelper.showsymbol  s4    f% **3/q%ue$r   c                 n   |r6| j                   j                  dj                  |             t        |       y | j                   j                  d       i }|fdfd}t	               j                  |       | j                  |j                                | j                   j                  d       y )Nzy
Here is a list of modules whose name or summary contains '{}'.
If there are any, enter a module name to get more help.

zI
Please wait a moment while I gather a list of all available modules...

c                 \    |r|dd  dk(  r|d d dz   }|j                  d      dk  rd||<   y y )N	.__init__r  r	   r   rV   )find)r   r_   r  r   s       r   callbackz$Helper.listmodules.<locals>.callback	  sB    wrs|{:%crl\9G<<$q('(GG$ )r   c                      d | d        y rH   r
  )r_   r$  s    r   onerrorz#Helper.listmodules.<locals>.onerror	  s    w-r   r&  z
Enter any module name to get more help.  Or, type "modules spam" to search
for modules whose name or summary contain the string "spam".
)r%  r  r?  aproposModuleScannerrunr  r   )r;   r   r   r&  r$  s       @r   r  zHelper.listmodules  s    KK  F3K	
 CLKK   G6= )
.O':IIglln%KK  r   r   )F)r  P   rg  )!r*   r   r   r  _strprefixes_symbols_inverser  r  r  symbols_r  r   r  r   r0   r  r%  r  rB   r  r  r  r  r   r  r  r  r  r  r  r  r  r  )rc  pr  s   000r   r1  r1  r  se   $$$ 	$ 	y	$
 	f$ 	.$ 	$ 	$ 	'$ 	4$ 	-$ 	$ 	&$ 	$ 	%$  	%!$" 	5#$$ 	.%$& 	'$( 	3)$* 	"+$, 	'-$. 	'/$0 	l1$2 	)3$4 	55$6 	y7$8 	i9$: 	;$< 	(=$> 	)?$@ 	$A$B 	:C$D 	<E$F 	G$HN $8L#7aAAEE#7LL%e;l;N?!B4
 $%/*+%%((G" ,113xF[[/FF"#-$GFO	  4 	xU =U 	 (U
 	AU 	4U 	 (U 	=U 	,U 	+U 	1U 	IU 	NU 	4U  	>!U" 	H#U$ 	<%U& 	'U( 	g)U* 	)+U, 	9-U. 	1/U0 	A1U2 	-3U4 	H5U6 	 .7U> 	]?U@ 	mAUB 	'CUD 	 4EUJ 	IKUL 	MMUN 	EOUP 	 /QUT 	GUUV 	 ,WUZ 	K[U\ 	W]U^ 	3_U` 	<aUb 	,cUd 	@eUf 	*gUh 	EiUj 	0kUl 	0mUn 	 8oUr 	+sUt 	9uUv 	5wUx 	3yUz 	>{U| 	?}U~ 	ZU@ 	:AUB 	3CUD 	)EUF 	)GUH 	)IUJ 	+KUL 	/MUN 	-OUP 	AQUR 	9SUT 	XUUV 	;WUX 	=YUZ 	E[U\ 	X]U^ 	X_U` ;C(7iUFn ( ( * *B XN-  #*) *,&$('&"#H6%
[
 Ms   9H#r1  c                       e Zd Z	 ddZy)r)  Nc                    |r|j                         }d| _        i }t        j                  D ]|  }|dk7  s	d||<   | |d |d       t	        |      j
                  xs d}|j                  d      d   }|dz   |z   }|j                         j                  |      dk\  ss |d ||       ~ t        j                  |      D ]0  \  }	}}
| j                  r n| |d |d       $	 |	j                  |      }|j                  }t        |d	      rU	 |j                  |      }t!        t#        j$                  |            xs d}t        |d
      r|j'                  |      }n[d }nX	 t(        j*                  j-                  |      }|j
                  r|j
                  j1                         d   nd}t3        |dd       }|dz   |z   }|j                         j                  |      dk\  s' ||||       3 |r |        y y # t        $ r Y Kw xY w# t        $ r |r ||       Y ew xY w# t.        $ r |r ||       Y w xY w)NF__main__rV   rM   rU   r   r  r'  
get_sourceget_filenamer   )r@  r  r
   r  
__import__rA   r   r#  r  r,  	find_specr   r   r   r3  r  r   r  StringIOr4  r   r   r   r  r   r   )r;   r$  r   	completerr&  seenr_   r$   r  r  r  r   r   sourcer   r   s                   r   r*  zModuleScanner.run	  s=   ciik	//G*$ !W;T7B/%g.66<"D::d+A.D"U?T1Dzz|((-2 w5 0 )0(=(=g(N(N$Hguyy{w+#--g6D 6<0!!'!2!27!;
 +2;;v+>?E2Dv~6%227;#!!*!5!5!;!;D!A
 >D^^6>>446q9QSD"6*T:D-::<$$S)Q.T7D1I )OL K ; #  % !"#G, ! ' !"#G, !s6   &H H%H* 	HHH'&H'*I Iri  )r*   r   r   r*  r
  r   r   r)  r)  	  s
    A8r   r)  c                     	 d }d }t        j                         5  t        j                  d       t               j	                  || |       d d d        y # 1 sw Y   y xY w)Nc                 J    |dd  dk(  r|d d dz   }t        ||xr d|z          y Nr!  r"  r  z- )r#  )r   r_   r  s      r   r$  zapropos.<locals>.callbackP	  s3    23<;&crl\1Ggt+t,r   c                      y rH   r
  r_   s    r   r&  zapropos.<locals>.onerrorT	  s    r   r   r'  )r   r   filterwarningsr)  r*  )r   r$  r&  s      r   r(  r(  N	  sL    K-		 	 	")Hc7; 
#	"	"s   2AA c                   	
 	 dd l dd ldd l	dd l
 G d dj                  j
                         G 	fddj                  j                         G 
fdd
j                        } || ||      }|j                          |j                  sS|j                  r|j                  s;t        j                  d       |j                  s|j                  s.|j                  s;|S )	Nr   c                       e Zd Zd Zd Zy)!_start_server.<locals>.DocHandlerc                 :   	 | j                   j                  d      rd}nd}| j                  d       | j                  dd|z         | j	                          | j
                  j                  | j                  | j                   |      j                  d             y )Nz.csstext/css	text/html   zContent-Typez%s; charset=UTF-8r  )	r   r   send_responsesend_headerend_headerswfiler  
urlhandlerr  )r;   content_types     r   do_GETz(_start_server.<locals>.DocHandler.do_GET	  s    
 yy!!&))*s#^-@<-OPJJT__		<))/:r   c                      y rH   r
  )r;   r)  s     r   log_messagez-_start_server.<locals>.DocHandler.log_message	  s    r   N)r*   r   r   rN  rP  r
  r   r   
DocHandlerrC  	  s    	: 	r   rQ  c                   $    e Zd Zd Z fdZd Zy) _start_server.<locals>.DocServerc                     || _         | j                   |f| _        || _        | j                  j	                  | | j                  | j
                         d| _        y NF)hostaddressr$  r=   r   handlerr  )r;   rV  portr$  s       r   r   z)_start_server.<locals>.DocServer.__init__	  sE    DI IIt,DL$DMIItT\\4<<@DIr   c                     | j                   sPj                  | j                  j                         gg g d      \  }}}|r| j	                          | j                   sP| j                          y r   )r  selectsocketr  handle_requestserver_close)r;   rdwrexr[  s       r   serve_until_quitz1_start_server.<locals>.DocServer.serve_until_quit	  sZ    ii#]]DKK,>,>,@+A2r1M
B'') ii r   c                 v    | j                   j                  |        | j                  r| j                  |        y y rH   )r=   server_activater$  rU  s    r   rd  z0_start_server.<locals>.DocServer.server_activate	  s,    II%%d+}}d# r   N)r*   r   r   r   rb  rd  )r[  s   r   	DocServerrS  	  s    		 	$r   re  c                   4    e Zd ZfdZ fdZd Zd Zy)#_start_server.<locals>.ServerThreadc                     || _         || _        t        |      | _        j                  j                  |        d| _        d | _        d | _        y rU  )	rL  rV  r  rY  Threadr   servingerror	docserver)r;   rL  rV  rY  	threadings       r   r   z,_start_server.<locals>.ServerThread.__init__	  sE    (DODID	DI%%d+ DLDJ!DNr   c                 p   	 	 j                   j                  _        _        j                  j
                  _        t        | j                        _         | j                  | j                  | j                        }|| _        |j                          y # t        $ r}|| _        Y d }~y d }~ww xY wrH   )server
HTTPServerr=   rX  r.  MessageMessageClassstaticmethodrL  rV  rY  readyrl  rb  r  rk  )r;   docsvrr  rQ  re  emailhttps      r   r*  z'_start_server.<locals>.ServerThread.run	  s    #	!!%!7!7	$.	!*/--*?*?
'(4T__(E
%"499diiD!''') ! 

!s   BB 	B5$B00B5c                     d| _         |j                  | _        |j                  | _        d| j                  | j                  fz  | _        y )NTzhttp://%s:%d/)rj  rV  server_portrY  r  )r;   ro  s     r   rt  z)_start_server.<locals>.ServerThread.ready	  s:    DLDI**DI&$))TYY)??DHr   c                 r    	 d| j                   _        | j                          d | _         d| _        d | _        y )NTF)rl  r  rZ   rj  r  rU  s    r   stopz(_start_server.<locals>.ServerThread.stop	  s1    8"&DNNIIK "DN DLDHr   N)r*   r   r   r   r*  rt  r{  )rQ  re  rv  rw  rm  s   r   ServerThreadrg  	  s    	"	!	@	r   r|  g{Gz?)http.serveremail.messager[  rm  ro  BaseHTTPRequestHandlerrp  ri  r  rk  rj  rl  timesleep)rL  hostnamerY  r|  threadrQ  re  rv  rw  r[  rm  s        @@@@@@r   _start_serverr  \	  s    6n T[[77 ,$DKK** $*& &y'' &P *h5F
LLN llFNNv7G7G

3 llFNNv7G7GMr   c                 `  	
 	  G fddt               } |       fdfd
fdfdfdfdfd		fd
	
fd}| j                  d      r| dd  } |dk(  rt        j                  j	                  t        j                  j                  t                    }t        j                  j                  ||       }t        |      5 }dj                  |j                               cd d d        S |dk(  r ||       S t        d|d|       # 1 sw Y   xY w)Nc                       e Zd Z fdZy)_url_handler.<locals>._HTMLDocc           	      <    	 d}d|z  }d|d|d        d|d	S )Nzpydoc_data/_pydoc.cssz1<link rel="stylesheet" type="text/css" href="%s">zH<!DOCTYPE>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Pydoc: z	</title>
z</head><body>z*<div style="clear:both;padding-top:.5em;">z</div>
</body></html>r
  )r;   rw  rx  css_pathcss_linkhtml_navbars        r   ry  z#_url_handler.<locals>._HTMLDoc.page 
  s2    &.HC  HkmX? ?r   N)r*   r   r   ry  )r  s   r   _HTMLDocr  	  s    	?r   r  c                     j                  t        j                         dt        j                         d   dt        j                         d      } d| dj                  t        j                  d            d	S )
Nz [r   r  r  z=
            <div style='float:left'>
                Python <br>T)tersea  
            </div>
            <div style='float:right'>
                <div style='text-align:center'>
                  <a href="index.html">Module Index</a>
                  : <a href="topics.html">Topics</a>
                  : <a href="keywords.html">Keywords</a>
                </div>
                <div>
                    <form action="get" style='display:inline;'>
                      <input type=text name=key size=15>
                      <input type=submit value="Get">
                    </form>&nbsp;
                    <form action="search" style='display:inline;'>
                      <input type=text name=key size=15>
                      <input type=submit value="Search">
                    </form>
                </div>
            </div>
            )r\  r  python_versionpython_buildpython_compiler)r  r)  s    r   r  z!_url_handler.<locals>.html_navbar
  sg    ++x/F/F/H/7/D/D/Fq/I/7/G/G/IK L0 DKK(9(9(EF+H 	Hr   c                     	 d } j                  d      }t        j                  D cg c]	  }|dk7  r| }}j                  ||       }|dj	                  dd|      z   g}i }t        j
                  D ]#  }|j                  j                  ||             % |j                  d       dd	j                  |      fS c c}w )
Nc                     d| d| dS r  r
  r$   s    r   	bltinlinkz3_url_handler.<locals>.html_index.<locals>.bltinlink0
      15t<<r   z/<strong class="title">Index of Modules</strong>r2  z<p>zBuilt-in Modulesr  zf<p align=right class="heading-text grey"><strong>pydoc</strong> by Ka-Ping Yee&lt;ping@lfw.org&gt;</p>zIndex of ModulesrM   )	r}  r
   r  r  r  r   r   r  rZ   )r  r}  r$   namesrx  r9  r   r)  s          r   
html_indexz _url_handler.<locals>.html_index-
  s     	= ,,=
 #&":": (":$J& ": (##E95UT__&3 3 4 88COODJJsD12  	'	( "2778#444(s   B?c                   	 	 g 		fd}t        j                         5  t        j                  d       d }t               j	                  || |       d d d        d }g }
j                  d      }	D ]  \  }}|j                   ||      |z          ! |
j                  d| z  dd	j                  |            z   }d
|fS # 1 sw Y   oxY w)Nc                 Z    |dd  dk(  r|d d dz   }j                  ||xr d|z   f       y r=  r   )r   r_   r  search_results      r   r$  z3_url_handler.<locals>.html_search.<locals>.callbackJ
  s=    rs|{*!#2,5  '4+?D4K!@Ar   r   c                      y rH   r
  r?  s    r   r&  z2_url_handler.<locals>.html_search.<locals>.onerrorQ
  s    r   r'  c                     d| d| dS r  r
  r  s    r   r  z4_url_handler.<locals>.html_search.<locals>.bltinlinkV
  r  r   z-<strong class="title">Search Results</strong>zkey = %sr  r  zSearch Results)	r   r   r@  r)  r*  r}  r   r  rZ   )r   r$  r&  r  r   r}  r$   r  rx  r  r)  s            @r   html_searchz!_url_handler.<locals>.html_searchE
  s    "	B
 $$&##H-O#w?	 '	= ,,;
 (JD$NN9T?T12 (T__gv{{7';= =))% '&s   5CCc                      	 d } j                  d      }t        t        j                  j	                               }j                  ||       }|j                  dd|      z   }d|fS )Nc                     d| d| dS Nz<a href="topic?key=r  r  r
  r  s    r   r  z4_url_handler.<locals>.html_topics.<locals>.bltinlinkf
      6:DAAr   $<strong class="title">INDEX</strong>Topicsr  )r}  r  r1  r  r   r  r  )r  r}  r  rx  r)  s       r   html_topicsz!_url_handler.<locals>.html_topicsc
  sq    -	B ,,2
 v}}))+,##E95T__gx) )!!r   c                      	 j                  d      } t        t        j                  j	                               }d }j                  ||      }| j                  dd|      z   }d|fS )Nr  c                     d| d| dS r  r
  r  s    r   r  z6_url_handler.<locals>.html_keywords.<locals>.bltinlinkz
  r  r   Keywordsr  )r}  r  r1  r  r   r  r  )r}  r  r  rx  r)  s       r   html_keywordsz#_url_handler.<locals>.html_keywordss
  sq     ,,2
 v++-.	B ##E95T__+ +8##r   c                    	 t        j                         }t        ||      }|j                  |       \  }}| |j                  v rd}nd}j                  d|z        }dj                  |      z  }j                  | d|      }|rAt        |j                               }d }j                  ||      }j                  dd|      }|d| d	j                  |||f      fS )
NKEYWORDTOPICr  z<pre>%s</pre>r  c                     d| d| dS r  r
  r  s    r   r  z7_url_handler.<locals>.html_topicpage.<locals>.bltinlink
  s    :>EEr   r  r,  rM   )r  r7  r1  r  r  r}  r  r  r  r   r  r  rZ   )	r  bufhtmlhelprx  r  rw  r}  r  r)  s	           r   html_topicpagez$_url_handler.<locals>.html_topicpage
  s    )kkm#s#",,U3%H%%%EE,,/%7
 #T[[%::??57H=5;;=)EF $$UI6ELL!8'5IE %((E235 	5r   c                     t        | d      }|| dk7  rt        d      t        |      }j                  ||       }||fS )NrV   )r  r3  zcould not find object)r  r8  r  r*  )r  r:   rw  contentr)  s       r   html_getobjz!_url_handler.<locals>.html_getobj
  sI    SA&;3&=455--S)g~r   c                     j                  d      }dj                  fdt        t        |      |      D              }|j	                  | d|      z   }d| z  |fS )Nz$<strong class="title">Error</strong>r  c              3   @   K   | ]  }j                  |        y wrH   )r\  )rc  ry  r)  s     r   re  z3_url_handler.<locals>.html_error.<locals>.<genexpr>
  s#      FD 6:t{{40Ds   rk  z
Error - %s)r}  rZ   r   rD   r  )r  r  r}  rx  r)  s       r   
html_errorz _url_handler.<locals>.html_error
  sf    ,,2
 ;; F4T#YDF FT__S'8DDc!8++r   c                 L   	 | }| j                  d      r| d d } 	 | dv r 
       \  }}n| dk(  r        \  }}n| dk(  r        \  }}nsd| v rd| j                  d      \  }}} |dk(  r |       \  }}nI|dk(  r	  |       \  }}n7|d	k(  r| dv r 
       \  }}n#	  	|       \  }}nt        d
       	|       \  }}j	                  ||      S # t        $ r  	|       \  }}Y (w xY w# t        $ r  |       \  }}Y Bw xY w# t        $ r} ||      \  }}Y d }~`d }~ww xY w)Nr<  )rM   r  r  r  rB  z
search?keyz	topic?keyzget?keyzbad pydoc url)r   r  r8  r  ry  )r  complete_urlrw  r  opr   r  r)  r  r  r  r  r  r  r  s          r   get_html_pagez#_url_handler.<locals>.get_html_page
  si   ,<< cr(C 	;m#!+w!,w
"!.w ]]3/
As%%0%5NE7;&:)7)<w 9_m+)3wA-8-=NE7 %_55!,S!1w yy((% & :)4S)9w:  * A-;C-@NE7A  	;'c:NE7	;s`   AD ;C D C* 'D C'$D &C''D *D>D  DD 	D#DD#r;  rV   rE  rM   rF  zunknown content type z	 for url )ru  r   r   r   dirnamerealpathr   rZ   r   	readlinesrI   )r  rM  r  r  	path_herer  fpr)  r  r  r  r  r  r  r  r  s          @@@@@@@@@r   _url_handlerr  	  s    ?7 ?$ :DH650*<" $52,&) &)P ~~c!"gz!GGOOBGG$4$4X$>?	77<<	3/(^r772<<>* ^		$S!!
L#N
OO ^s   D$$D-T	localhost)open_browserr  c                   	 dd l }t        t        ||       }|j                  rt	        |j                         y |j
                  rd}|r|j                  |j                         	 t	        d|j                         t	        |       |j
                  rZt        d      }|j                         }|dk(  rn9|dk(  r|j                  |j                         nt	        |       |j
                  rZ|j
                  r|j                          t	        d       y y y # t        t        f$ r t	                Y Ew xY w# |j
                  r|j                          t	        d       w w xY w)Nr   z"Server commands: [b]rowser, [q]uitzServer ready atzserver> r  r  zServer stopped)
webbrowserr  r  rk  r#  rj  r   r  r  r@  r  r  r{  )rY  r  r  r  serverthreadserver_help_msgr  s          r   browser  
  s4   
  x>Ll  !>OOL,,-	(#\%5%56/"&&J'iik#:CZOOL$4$45/* && ##!!#&' $'   "8, 	G	 ##!!#&' $s%   %BD D2/D5 1D22D5 5*Ec                 j    t        | t              xr" | j                  t        j                        dk\  S r   )r/   rE   r#  r   sep)r   s    r   ispathr    s%    a5!&&.A"55r   c                    	 d| v s(t         j                  | v st        j                         | v ry t         j                  j	                  t
              }t         j                  j	                  |      }| j                         }|| v r1t         j                  j                  ||      s|j                  |       |j                  dt        j                                |S )NrM   r   )
r   curdirgetcwdr   r  r   copysamefileremoveinsert)
given_pathargv0
stdlib_dir
script_dirrevised_paths        r   _get_revised_pathr  	  s     
Z299
2biikZ6O *J'J??$LZ(8(8Z(PJ'299;'r   c                      	 t        t        j                  t        j                  d         } | | t        j                  d d  y y r   )r  r
   r   argv)r  s    r   _adjust_cli_sys_pathr  %  s9     %SXXsxx{;L"  r   c                     	 dd l }  G d dt              }t                	 | j                  t        j                  dd  d      \  }}d}d}d}d}d}|D ]:  \  }	}
|	dk(  rd	}d	}|	d
k(  rt        |
        y |	dk(  rd	}|
}|	dk(  rd	}|	dk(  s7d	}|
}< |rt        |||       y |s||D ]  }t        |      rBt        j                  j                  |      s#t        d|z         t        j                  d       	 t        |      r*t        j                  j                  |      rt        |      }|rBt        |      r+t        j                  j                  |      rt!        |       n#t#        |       nt$        j%                  |d	        y # t&        t(        f$ r+}t        |       t        j                  d       Y d }~d }~ww xY w# | j*                  |f$ r} t        j                  j-                  t        j                  j/                  t        j                  d               d   }t        dj1                  |t        j2                               Y y w xY w)Nr   c                       e Zd Zy)cli.<locals>.BadUsageN)r*   r   r   r
  r   r   BadUsager  2  s    r   r  rV   zbk:n:p:wFr  z-bTz-kz-pz-wz-n)r  r  zfile %r does not exist)r&  a  pydoc - the Python documentation tool

{cmd} <name> ...
    Show text documentation on something.  <name> may be the name of a
    Python keyword, topic, function, module, or package, or a dotted
    reference to a class or function within a module or module in a
    package.  If <name> contains a '{sep}', it is used as the path to a
    Python source file to document. If name is 'keywords', 'topics',
    or 'modules', a listing of these things is displayed.

{cmd} -k <keyword>
    Search for a keyword in the synopsis lines of all available modules.

{cmd} -n <hostname>
    Start an HTTP server with the given hostname (default: localhost).

{cmd} -p <port>
    Start an HTTP server on the given port on the local machine.  Port
    number 0 can be used to get an arbitrary unused port.

{cmd} -b
    Start an HTTP server on an arbitrary unused port and open a web browser
    to interactively browse documentation.  This option can be used in
    combination with -n and/or -p.

{cmd} -w <name> ...
    Write out the HTML documentation for a module to a file in the current
    directory.  If <name> contains a '{sep}', it is treated as a filename; if
    it names a directory, documentation is written for all the contents.
)r  r  )getoptr  r  r
   r  r(  r  r  r   r   existsr#  exitr   r  r   r/  r*  r   r  r   rk  r  r  r?  r  )r  r  optsr)  writingstart_serverr  rY  r  optvalargr   r  s                 r   clir  /  s   J#9#M!]]388AB<<
dHCd{##d{d{#d{d{#   4(F8^Cc{277>>##6.45#;277>>##6$S/Cc{rww}}S'9!# IIc$I/   !23 e LL(# !ggrww//<=a@ : FsF;	!!sQ   AG 3G 	G  AG 7BF
G 
G F?9G ?GG BIIr2  r   )r   ) Python Library Documentation: %sr   N)r  r   NF)rM   N)rF  )cr  r   r   r   r   r   r6  importlib._bootstrapr   importlib._bootstrap_externalimportlib.machineryimportlib.utilr    r  r   r  r  rO   r
   rF  r  r   urllib.parser  r   collectionsr   reprlibr   	tracebackr   r   r%   r?   r8   rK   rS   r\   r`   rc   rj   rn   rv   r  
IGNORECASErx   rz   r}   r   r   r  all_feature_namesr   r   r   r   r   r   r   r  r   r  r  r!  rI  ru  rl  rr  r  r  r  r  r  r  r  r  r  r  r  rl   r$  r)  r  r!  r>   r*  r/  r1  r   r)  r(  r  r  r  r  r  r  r  r*   r
  r   r   <module>r     sc  %L ()
     $    	 	   	 
        +

1f! A
 %G bjj5r}}E(

" J889 (0
2   %NK	 K&+$  ! (X6 6t(t (TW	7c W	7v:t :@Xc XtG "H#0
/F
*2X2 6* yO	y> KLC6 DE!"#[ [z x; ;z
<VriPX (4+  (J68#T!l zE r   