???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................
$Yfؔ                @   s4  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 m Z d d l m Z d d l m Z d	 d
   Z d d   Z d d   Z d d   Z d d   Z  d d   Z! d d   Z" e j# d e j$  Z% d d   Z& d d   Z' d d   Z( d d   Z) d  d!   Z* d d d" d#  Z+ d$ d%   Z, d& d'   Z- d( d)   Z. i  d* d+  Z/ Gd, d-   d- e0  Z1 d. d/   Z2 d i  d0 d1  Z3 Gd2 d3   d3  Z4 Gd4 d5   d5 e  Z5 Gd6 d7   d7 e4  Z6 Gd8 d9   d9 e  Z7 Gd: d;   d; e4  Z8 Gd< d=   d= e8  Z9 d> d?   a: d@ dA   Z; dB dC   Z< dD dE   Z= dF dG   Z> dH dI   Z? dJ dK   Z@ dL dM   ZA dN dO   ZB d dP dQ  ZC e8   ZD e9   ZE e6   ZF d dR dS  ZG dT d d dU dV  ZH dT d d dW dX  ZI d dY dZ  ZJ d[ d d\ d]  ZK Gd^ d_   d_  ZL eL   ZM Gd` da   da  ZN db dc   ZO dd de   ZP df dg dh  ZQ d di dj dk dl ZR dm dn   ZS do dp   ZT eU dq k r0eT   d S)r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              C   s   g  }  g  } xs t  j D]h } t j j | p. d  } t j j |  } | | k r t j j |  r |  j |  | j |  q W|  S)N.)syspathosabspathnormcaseisdirappend)dirsZnormdirsdirnormdir r   */opt/alt/python35/lib64/python3.5/pydoc.pypathdirsM   s    r   c             C   sC   t  j |   p t  j |   } | r? t j d d | j    pB d S)Nz^ *
 )inspectgetdocZgetcommentsresubrstrip)objectresultr   r   r   r   Y   s    r   c             C   s   |  j    j d  } t |  d k r5 | d d f St |  d k ry | d j   ry | d d j | d d    f Sd d j |  f S)N
   r   r      )stripsplitlenr   join)doclinesr   r   r   splitdoc^   s    #!r%   c             C   s-   |  j  } |  j | k r) |  j d | } | S)Nr   )__name__
__module__)r   modnamenamer   r   r   	classnameg   s    	r*   c             C   sY   t  j |   pW t  j |   pW t  j |   pW t  j |   pW t  j |   pW t  j |   S)N)r   ismoduleisclass	isroutineZisframeZistracebackZiscode)r   r   r   r   isdatan   s    r.   c             G   sA   x: | r< | d j  |  j | d   }  | d d   } q W|  S)Nr   r   r   )r"   r    )textZpairsr   r   r   replacet   s    	 r0   c             C   sn   t  |   | k rj t d | d d  } t d | d |  } |  d  |  d |  t  |   | d   S|  S)Nr      r   z...)r!   max)r/   maxlenpreZpostr   r   r   cram{   s
    *r5   z at 0x[0-9a-f]{6,16}(>+)$c             C   s   t  j d |   S)Nz\1)_re_stripidr   )r/   r   r   r   stripid   s    r7   c             C   s:   t  j |   p9 t  j |   p9 t  j |   p9 t  j |   S)N)r   
isfunctionismethod	isbuiltinZismethoddescriptor)objr   r   r   _is_some_method   s    r<   c             C   sR   t  j |   r d St  j |   rN t |  d d   } t  j |  pL | d  k Sd S)NT__self__F)r   r9   r:   getattrr+   )fnselfr   r   r   _is_bound_method   s    rA   c             C   s   i  } x* t  j |  t  D] \ } } d | | <q Wx$ |  j D] } | j t |   q= Wx' | j   D] } t |  |  | | <qg W| S)Nr   )r   
getmembersr<   	__bases__update
allmethodskeysr>   )clmethodskeyvaluebaser   r   r   rE      s    rE   c             C   sP   g  } g  } x7 |  D]/ } | |  r5 | j  |  q | j  |  q W| | f S)N)r   )s	predicateyesnoxr   r   r   _split_list   s    rQ   c             C   s|   |  d k r d S|  j  d  r2 |  j d  r2 d S|  j  d  rT t | d  rT d S| d  k	 rj |  | k S|  j  d  Sd  S)N
__author____builtins__
__cached____credits____date____doc____file____spec__
__loader__r'   r&   __package____path____qualname__	__slots____version__r   __r   __fieldsT>   rU   rV   rR   r'   r&   r]   rT   r_   r^   rY   rZ   r\   rX   r[   rS   rW   )
startswithendswithhasattr)r)   allr;   r   r   r   visiblename   s      	 
rg   c             C   s^   g  } xQ t  j |   D]@ \ } } } } t  j |  r= d } | j | | | | f  q W| S)Nzdata descriptor)r   classify_class_attrsisdatadescriptorr   )r   resultsr)   kindclsrJ   r   r   r   rh      s    "rh   c             C   sP   t  j j |   rL x7 d D]/ } t  j j t  j j |  d |   r d Sq Wd S)N.py.pyc__init__TF)rm   rn   )r	   r   r   isfiler"   )r   extr   r   r   	ispackage   s
    %rr   c             C   s  |  j    } x: | d  d  d k s2 | j   rH |  j    } | s Pq W| j   } | d  d  d k r{ | d d   } | d  d  d k r	| d d   } | d	 d   d k r | d  d
  } x# | j   s |  j    } | s Pq W| j d  d j   } n d  } | S)Nr   #   zr"""r1   z"""\r   rv   )readliner   r    )fileliner   r   r   r   source_synopsis   s&    &    rz   c       
      C   s  t  j |   j } | j |  d  \ } } | d  k sB | | k  r||  j t t j j   rl t j j	 } n0 |  j t t j j
   r t j j } n d  } | d  k r y t j |   } Wn t k
 r d  SYn X|  t |  } Wd  QRXn{ | d |   } t j j d |  d | } y t j j |  }	 Wn d  SYn Xt j d =|	 j rf|	 j j   d n d  } | | f | |  <| S)NZ__temp__loaderr   )NN)r	   statst_mtimegetrd   tuple	importlib	machineryBYTECODE_SUFFIXESSourcelessFileLoaderEXTENSION_SUFFIXESExtensionFileLoadertokenizeopenOSErrorrz   utilspec_from_file_location
_bootstrap_loadr   modulesrW   
splitlines)
filenamecachemtimeZ
lastupdater   Z
loader_clsrx   r{   specmoduler   r   r   synopsis   s4    			
"r   c               @   s(   e  Z d  Z d d   Z d d   Z d S)ErrorDuringImportc             C   s%   | |  _  | \ |  _ |  _ |  _ d  S)N)r   excrJ   tb)r@   r   exc_infor   r   r   ro     s    	zErrorDuringImport.__init__c             C   s#   |  j  j } d |  j | |  j f S)Nzproblem in %s - %s: %s)r   r&   r   rJ   )r@   r   r   r   r   __str__  s    zErrorDuringImport.__str__N)r&   r'   r]   ro   r   r   r   r   r   r     s   r   c       
      C   s  t  j j } t |  d  4 } | j t |   } | | t  j j f k } Wd  QRXt j j	 |   } t j j
 |  \ } } | r t  j j | |   } n t  j j | |   } t  j j | |  d | }	 y t  j j |	  SWn t |  t j     Yn Xd  S)Nrbr{   )r   r   MAGIC_NUMBERr   readr!   _BACKCOMPAT_MAGIC_NUMBERr	   r   basenamesplitext_bootstrap_externalr   SourceFileLoaderr   r   r   r   r   r   )
r   magicrx   Zfirst_bytesZis_bytecoder   r)   rq   r{   r   r   r   r   
importfile   s    r   c                s{  y | rv   t  j k rv   t  j k rv   f d d   t  j D } x0   g | D]! } t  j | | | <t  j | =qQ Wt    } Wn t  j   \ } } } }	   t  j k r t t  j   j |	   nU | t k r t | j |	   n4 | t	 k r| j
   k rd  St   t  j     Yn XxM   j d  d d   D]2 }
 y t | |
  } WqAt k
 rrd  SYqAXqAW| S)Nc                s)   g  |  ] } | j    d   r |  q S)r   )rc   ).0m)r   r   r   
<listcomp>K  s   	 zsafeimport.<locals>.<listcomp>r   r   )r   r   builtin_module_names
__import__r   r   rX   SyntaxErrorr   ImportErrorr)   r    r>   AttributeError)r   	forceloadr   ZsubsrI   r   r   rJ   r   infopartr   )r   r   
safeimport7  s.       r   c               @   s   e  Z d  Z e j j d d e j d d   Z d d d  Z	 d d d  Z
 e
 Z Z Z Z Z Z e j j e j d	 d
 e j d d   d d  Z d S)Doc
PYTHONDOCSz%https://docs.python.org/%d.%d/libraryNr   c             G   s   | | f | } t  j |  r, |  j |   St  j |  rH |  j |   SyX t  j |  rg |  j |   St  j |  r |  j |   St  j |  r |  j	 |   SWn t
 k
 r Yn Xt | t  r |  j |   S|  j |   S)N)r   isgetsetdescriptordocdataismemberdescriptorr+   	docmoduler,   docclassr-   
docroutiner   
isinstancepropertydocpropertydocother)r@   r   r)   argsr   r   r   documentm  s"          zDoc.documentc             G   s9   d | o d t  |  t |  j f } t |   d  S)Nz.don't know how to document object%s of type %s )reprtyper&   	TypeError)r@   r   r)   r   messager   r   r   fail  s    &zDoc.faillibzpython%d.%dc             C   s  y t  j |  } Wn t k
 r- d } Yn Xt j j d |  j  } t j j |  } t	 | t
 t   r| j d k s | j |  r| j t j j | d   r| j d k r| j d  r d | j d  | j j   f } qt j j | | j j   d  } n d  } | S)Nz
(built-in)r   errno
exceptionsgcimpmarshalposixsignalr   _thread	zipimportzsite-packages	xml.etreetest.pydoc_modhttp://https://z%s/%s/z.html)
r   r   r   r   r   r   r   r   r   r   )r   r   )r   r   )r   
getabsfiler   r	   environr~   r   r   r   r   r   r&   rc   r"   r   lower)r@   r   Zbasedirrx   doclocr   r   r   	getdocloc  s$     	%%zDoc.getdocloc)r&   r'   r]   r	   r   r~   r   version_infor   r   r   r   r   r   r   r   r   r   r"   base_exec_prefixr   r   r   r   r   r   g  s   r   c               @   sd   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z e Z d d   Z	 e Z
 d S)HTMLReprc             C   s:   t  j |   d |  _ |  _ d |  _ d |  _ |  _ d  S)N   
   d   )r   ro   maxlistmaxtuplemaxdict	maxstringmaxother)r@   r   r   r   ro     s    	zHTMLRepr.__init__c             C   s   t  | d d d d d d  S)N&z&amp;<z&lt;>z&gt;)r0   )r@   r/   r   r   r   escape  s    zHTMLRepr.escapec             C   s   t  j |  |  S)N)r   r   )r@   r   r   r   r   r     s    zHTMLRepr.reprc             C   s   t  t |  d  r\ d d j t |  j j    } t  |  |  r\ t |  |  | |  S|  j t t t	 |   |  j
   S)Nr&   repr_ra   )re   r   r"   r&   r    r>   r   r5   r7   r   r   )r@   rP   level
methodnamer   r   r   repr1  s
    "zHTMLRepr.repr1c             C   s   t  | |  j  } t |  } d | k rc d t | d d  k rc d | d |  j |  | d St j d d |  j |   S)Nru   z\\r   rr   z-((\\[\\abfnrtv\'"]|\\[0-9]..|\\x..|\\u....)+)z<font color="#c040c0">\1</font>)r5   r   r   r0   r   r   r   )r@   rP   r   testtestreprr   r   r   repr_string  s    $!	zHTMLRepr.repr_stringc             C   sO   y) |  j  t t t |   |  j   SWn |  j  d | j j  SYn Xd  S)Nz<%s instance>)r   r5   r7   r   r   	__class__r&   )r@   rP   r   r   r   r   repr_instance  s    )zHTMLRepr.repr_instanceN)r&   r'   r]   ro   r   r   r   r   repr_strr   Zrepr_unicoder   r   r   r   r     s   r   c               @   s  e  Z d  Z e   Z e j Z e j Z d d   Z d d d  Z d d d d d	 d
  Z	 d d   Z
 d d   Z d d d  Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d i  i  i  d d  Z d d  d!  Z d d d" d#  Z d d i  i  d$ d%  Z d& d'   Z d d i  i  i  d d( d)  Z d* d+   Z d d d d, d-  Z d d d. d/  Z d d d d0 d1  Z d d2 d3  Z d S)4HTMLDocc             C   s   d | | f S)Nz<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: %s</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head><body bgcolor="#f0f0f8">
%s
</body></html>r   )r@   titlecontentsr   r   r   page  s    zHTMLDoc.pager   c             C   s   d | | | | | p d f S)Na'  
<table width="100%%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="%s">
<td valign=bottom>&nbsp;<br>
<font color="%s" face="helvetica, arial">&nbsp;<br>%s</font></td
><td align=right valign=bottom
><font color="%s" face="helvetica, arial">%s</font></td></tr></table>
    z&nbsp;r   )r@   r   fgcolbgcolextrasr   r   r   heading  s    	zHTMLDoc.heading   Nz&nbsp;c	       
      C   sw   | d  k r d d | d } d | | | f }	 | rT |	 d | | | | f }	 n |	 d | | | f }	 |	 d | S)Nz<tt>z&nbsp;z</tt>z<p>
<table width="100%%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="%s">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="%s" face="helvetica, arial">%s</font></td></tr>
    zR
<tr bgcolor="%s"><td rowspan=2>%s</td>
<td colspan=2>%s</td></tr>
<tr><td>%s</td>z(
<tr><td bgcolor="%s">%s</td><td>%s</td>z'
<td width="100%%">%s</td></tr></table>r   )
r@   r   r   r   r   widthZpreludeZ
marginaliaZgapr   r   r   r   section  s    zHTMLDoc.sectionc             G   s   d | } |  j  | |  S)Nz<big><strong>%s</strong></big>)r   )r@   r   r   r   r   r   
bigsection  s    
zHTMLDoc.bigsectionc          
   C   s7   |  j  | j    } t | d d d d d d d d 	 S)Nz

z
 
r   z&nbsp;r   z<br>
)r   
expandtabsr0   )r@   r/   r   r   r   	preformat  s    zHTMLDoc.preformatrt   c             C   s   d } t  |  | d | } x t |  D]r } | d d | } xM t | | | | |  D]0 } | t  |  k  r_ | | | |  d } q_ W| d } q+ Wd | S)Nr   r   z<td width="%d%%" valign=top>r   z<br>
z</td>z7<table width="100%%" summary="list"><tr>%s</tr></table>)r!   range)r@   listformatZcolsr   rowscolir   r   r   multicolumn  s    "zHTMLDoc.multicolumnc             C   s   d | S)Nz<font color="#909090">%s</font>r   )r@   r/   r   r   r   grey  s    zHTMLDoc.greyc             G   s3   x, | D]$ } | | k r d | | | f Sq W| S)Nz<a href="%s">%s</a>r   )r@   r)   Zdictsdictr   r   r   namelink  s    zHTMLDoc.namelinkc             C   sm   | j  t j j | j  } } t | |  r` t | |  | k r` d | j  | t | |  f St | |  S)Nz<a href="%s.html#%s">%s</a>)r&   r   r   r~   r'   re   r>   r*   )r@   r   r(   r)   r   r   r   r   	classlink#  s
    $zHTMLDoc.classlinkc             C   s   d | j  | j  f S)Nz<a href="%s.html">%s</a>)r&   )r@   r   r   r   r   
modulelink+  s    zHTMLDoc.modulelinkc             C   so   | \ } } } } | r% |  j  |  S| r> d | | f } n
 d | } | r[ d | } n | } d | | f S)Nz
%s.%s.htmlz%s.htmlz"<strong>%s</strong>&nbsp;(package)z<a href="%s">%s</a>)r  )r@   Z
modpkginfor)   r   rr   shadowedurlr/   r   r   r   
modpkglink/  s    
zHTMLDoc.modpkglinkc             C   s   d | | f S)Nz<a href="file:%s">%s</a>r   )r@   r  r   r   r   r   filelink>  s    zHTMLDoc.filelinkc             C   s  | p |  j  } g  } d } t j d  } x| j | |  }	 |	 sF P|	 j   \ }
 } | j | | | |
    |	 j   \ } } } } } } | r | |  j d d  } | j d | | f  n| rd t |  } | j d | | |  f  n | r7d t |  } | j d | | |  f  n | r| | | d  d	 k rw| j d
 |  j	 | |   q| j d |  nU | | | d  d	 k r| j |  j	 | | | |   n | j |  j	 | |   | } q- W| j | | | d     d j
 |  S)Nr   zD\b((http|ftp)://\S+[\w/]|RFC[- ]?(\d+)|PEP[- ]?(\d+)|(self\.)?(\w+))"z&quot;z<a href="%s">%s</a>z'http://www.rfc-editor.org/rfc/rfc%d.txtz(http://www.python.org/dev/peps/pep-%04d/r   (zself.zself.<strong>%s</strong>r   )r   r   compilesearchspanr   groupsr0   intr	  r"   )r@   r/   r   funcsclassesrH   rj   herepatternmatchstartendrf   schemeZrfcZpepZselfdotr)   r  r   r   r   markupB  s<        "
zHTMLDoc.markupc       
      C   s  d } x | D] } t  |  t  f   k r | \ } } | d } | |  j | |  } | r | | f k r g  } x' | D] }	 | j |  j |	 |   qy W| d d j |  d } | d } q t  |  t  g   k r | d |  j | | |  } q Wd | S)	Nr   z"<dt><font face="helvetica, arial">r  z, )z
</font></dt>z<dd>
%s</dd>
z<dl>
%s</dl>
)r   r
  r   r"   
formattree)
r@   treer(   parentr   entrycbasesparentsrK   r   r   r   r!  m  s     
zHTMLDoc.formattreec       #         s  | j  } y | j } Wn t k
 r0 d  } Yn X| j d  } g  } xP t t |  d  D]8 } | j d d j | d  | d   | | f  q] Wd j | | d- d    }	 d |	 }
 y7 t j	 |  } t
 j j |  }   j | |  } Wn t k
 rd } Yn Xg  } t | d  rt | j  } | d  d  d. k rx| d/ d   d k rx| d d0  j   } | j d
   j |   t | d  r| j   j t | j    | r|
 d d j |  }
   j |  } | d  k	 rd t   } n d }   j |
 d d d | |  } t j | t j  } g  i  } } x t j | t j  D]n \ } } | d  k	 st j |  p| | k rft | | |  rf| j | | f  d | | | <| | <qfWx | D] \ } } x | j D] } | j  | j } } t j  j! |  } | | k r| rt | |  rt" | |  | k r| | k r| d | | | <| | <qWqWg  i  } } x t j | t j#  D] \ } } | d  k	 st j$ |  st j |  | k rt | | |  r| j | | f  d | | | <t j% |  r| | | | <qWg  } xE t j | t&  D]1 \ } } t | | |  rP| j | | f  qPW  j' t( |    j) | |  } | od | } | d | } t | d  rVg  } x< t* j+ | j,  D]( \ } } }  | j | | |  d f  qW| j-     j. |   j/  }! |   j0 d d d |!  } n@ | r  j. |   f d d    }! |   j0 d d d |!  } | r.d d    | D }"   j1 t j2 |" d  |  g }! x6 | D]. \ } } |! j   j3 | | | | |   qW|   j0 d! d d" d# j |!   } | rg  }! x6 | D]. \ } } |! j   j3 | | | | |   qAW|   j0 d$ d d% d# j |!   } | rg  }! x- | D]% \ } } |! j   j3 | |   qW|   j0 d& d d' d( j |!   } t | d)  rB  j' t | j4    j)  }! |   j0 d* d d |!  } t | d+  r  j' t | j5    j)  }! |   j0 d, d d |!  } | S)1Nr   r   z5<a href="%s.html"><font color="#ffffff">%s</font></a>z)<big><big><strong>%s</strong></big></big>z
(built-in)r_      $z
Revision: z
version %srV   z (%s)z, z-<br><a href="%(docloc)s">Module Reference</a>r   z#ffffffz#7799eez<a href=".">index</a><br>rs   z.html#z#-z<tt>%s</tt>z
<p>%s</p>
r\   r   zPackage Contentsz#aa55ccc                s     j  |  d  S)Nr   )r  )t)r@   r   r   <lambda>  s    z#HTMLDoc.docmodule.<locals>.<lambda>Modulesc             S   s   g  |  ] \ } } |  q Sr   r   )r   rI   rJ   r   r   r   r     s   	 z%HTMLDoc.docmodule.<locals>.<listcomp>ZClassesz#ee77aar   Z	Functionsz#eeaa77ZDataz#55aa55z<br>
rR   ZAuthorrU   ZCreditsrv   z$Revision: rv   rv   )6r&   __all__r   r    r   r!   r   r"   r   r   urllibparsequoter  r   re   strr_   r   r   rV   r   localsr   rB   r+   r,   	getmodulerg   rC   r'   r   r   r~   r>   r-   r:   r8   r.   r  r   r   pkgutiliter_modulesr\   sortr  r  r   r!  getclasstreer   rR   rU   )#r@   r   r)   modignoredrf   partsZlinksr  Z
linkednameheadr   r  r  r   versionr   r   r   r  ZcdictrI   rJ   rK   r(   r   r  Zfdictdatar#   modpkgsimporterispkgr   	classlistr   )r@   r   r     s    	-
,	"!""$ !"
		!&	&				zHTMLDoc.docmodulec                s   j  } | p | }  j } g  }	 |	 j  G f d d   d  }
 |
    t t j    } t |  d k r  j    d  x+ | D]# }  d  j |  j	   q W d           f d d   }     f d	 d
   }          f d d   }  f d d   t
   D } i   x | D]w \ } } } } d | d |  | <} y t  |  } Wn t k
 rYn Xy |  | <WqWt k
 rYqWXqWWxI| r| r| j    n | d d  t |  f d d    \ } }  t j k r:| } qn.   k rOd } n d  j   j	  } | d 7} | j d d d    | d | | d d    } | d | | d d    } | d | | d d    } | d | | d  d    } | d! | | d" d    } | } qWd# j |	  }	 | | k rLd$ | | f } n d% | | | f } | rg  } x* | D]" } | j  j |  j	   qrW| d& d' j |  }  j t    j      } | od( | }  j | d) d* |	 d+ |  S),Nc                   s.   e  Z d  Z d d   Z   f d d   Z d S)z(HTMLDoc.docclass.<locals>.HorizontalRulec             S   s   d |  _  d  S)Nr   )needone)r@   r   r   r   ro     s    z1HTMLDoc.docclass.<locals>.HorizontalRule.__init__c                s    |  j  r   d  d |  _  d  S)Nz<hr>
r   )rB  )r@   )pushr   r   maybe  s    	
z.HTMLDoc.docclass.<locals>.HorizontalRule.maybeN)r&   r'   r]   ro   rD  r   )rC  r   r   HorizontalRule  s   rE  r   z&<dl><dt>Method resolution order:</dt>
z<dd>%s</dd>
z</dl>
c                s   t  | |  \ } } | r  j    |   x | D] \ } } } } y t  |  } Wn+ t k
 r   j | |    Yn& X  j | |          d  q6 W| S)Nr   )rQ   rD  r>   	Exception_docdescriptorr   )msgattrsrM   okr)   rk   homeclsrJ   )r  r  hrmdictr8  r   rC  r@   r   r   spill  s    

zHTMLDoc.docclass.<locals>.spillc                si   t  | |  \ } } | re   j    |   x3 | D]+ \ } } } }   j | |    q6 W| S)N)rQ   rD  rG  )rH  rI  rM   rJ  r)   rk   rK  rJ   )rL  r8  rC  r@   r   r   spilldescriptors)  s    

z*HTMLDoc.docclass.<locals>.spilldescriptorsc       
         s  t  | |  \ } } | r	 j    |   x | D] \ } } } }  j t  |  |   } t |  s t j |  r t | d d   }	 n d  }	 |	 d  k r  d |  nB  j t |   j	      }	 d |	 }	  d | |	 f   d  q6 W| S)NrW   z<dl><dt>%s</dl>
z<dd><tt>%s</tt>z<dl><dt>%s%s</dl>
r   )
rQ   rD  r   r>   callabler   ri   r  r   r   )
rH  rI  rM   rJ  r)   rk   rK  rJ   rK   r#   )r  r  rL  rM  r8  r   rC  r@   r   r   	spilldata2  s"    


z#HTMLDoc.docclass.<locals>.spilldatac                s@   g  |  ]6 \ } } } } t  | d    r | | | | f  q S)r;   )rg   )r   r)   rk   rl   rJ   )r   r   r   r   G  s   	z$HTMLDoc.docclass.<locals>.<listcomp>rs   -r   c                s   |  d   k S)Nr   r   )r*  )	thisclassr   r   r+  `  s    z"HTMLDoc.docclass.<locals>.<lambda>zdefined herezinherited from %sz:<br>
rI   c             S   s   |  d S)Nr   r   )r*  r   r   r   r+  m  s    z
Methods %sc             S   s   |  d d k S)Nr   methodr   )r*  r   r   r   r+  q  s    zClass methods %sc             S   s   |  d d k S)Nr   zclass methodr   )r*  r   r   r   r+  s  s    zStatic methods %sc             S   s   |  d d k S)Nr   zstatic methodr   )r*  r   r   r   r+  u  s    zData descriptors %sc             S   s   |  d d k S)Nr   zdata descriptorr   )r*  r   r   r   r+  w  s    zData and other attributes %sc             S   s   |  d d k S)Nr   r=  r   )r*  r   r   r   r+  y  s    r   z*<a name="%s">class <strong>%s</strong></a>z/<strong>%s</strong> = <a name="%s">class %s</a>z(%s)z, z<tt>%s<br>&nbsp;</tt>z#000000z#ffc8d8r1   )r&   rC   r   r   r   getmror!   rD  r
  r'   rh   r>   rF  r   popleftrQ   builtinsr   r6  r"   r  r   r   r   )r@   r   r)   r8  r  r  r9  realnamer&  r   rE  mrorK   rN  rO  rQ  rI  rI   rk   rK  rJ   anchor	inheritedtagr   r'  r#   r   )	r  r  rL  rM  r8  r   rC  r@   rS  r   r     s    				


'	'		!	

 $zHTMLDoc.docclassc             C   s   |  j  d |  j |   S)N=)r  r   )r@   r   r   r   r   formatvalue  s    zHTMLDoc.formatvaluec             C   sT  | j  } | p | } | r$ | j  p' d d | }	 d }
 d } t |  r | j j } | r | | k	 r d |  j | |  }
 nD | j d  k	 r d |  j | j j |  }
 n d |  j | |  }
 | | k r d |	 | f } ne | r0| | j k r0| j | | k r0d | j  d | | f } d	 } n | } d
 |	 | | f } d  } t j |  ry t j |  } Wn t	 t
 f k
 rd  } Yn X| rt |  } | d k rd | } | d	 d  } | sd } | |  j |  |
 o|  j d |
  } | rd | S|  j t |  |  j | | |  } | o?d | } d | | f Sd  S)Nr   rR  r   z from z method of %s instancez unbound %s methodz$<a name="%s"><strong>%s</strong></a>z<a href="#%s">%s</a>r   z)<a name="%s"><strong>%s</strong></a> = %sz<lambda>z$<strong>%s</strong> <em>lambda</em> z(...)z'<font face="helvetica, arial">%s</font>z<dl><dt>%s</dt></dl>
z<dd><tt>%s</tt></dd>z<dl><dt>%s</dt>%s</dl>
rv   )r&   rA   r=   r   r
  __dict__r   r-   	signature
ValueErrorr   r1  r   r  r  r   r   )r@   r   r)   r8  r  r  rH   rG   rX  rZ  noteskipdocsimclassr   Zreallinkargspecr`  declr#   r   r   r   r     sZ    			
zHTMLDoc.docroutinec             C   sr   g  } | j  } | r# | d |  | j d  k	 r[ |  j t |  |  j  } | d |  | d  d j |  S)Nz!<dl><dt><strong>%s</strong></dt>
z<dd><tt>%s</tt></dd>
z</dl>
r   )r   rW   r  r   r   r"   )r@   r)   rJ   r8  rj   rC  r#   r   r   r   rG    s    	
zHTMLDoc._docdescriptorc             C   s   |  j  | | |  S)N)rG  )r@   r   r)   r8  rG   r   r   r   r     s    zHTMLDoc.docpropertyc             G   s'   | r d | p d } | |  j  |  S)Nz<strong>%s</strong> = r   )r   )r@   r   r)   r8  r9  Zlhsr   r   r   r     s    zHTMLDoc.docotherc             C   s   |  j  | | |  S)N)rG  )r@   r   r)   r8  rG   r   r   r   r     s    zHTMLDoc.docdatac             C   s   g  } | d  k r i  } xh t  j | g  D]T \ } } } t d d   | D  rV q+ | j | d | | | k f  d | | <q+ W| j   |  j | |  j  } |  j | d d |  S)Nc             s   s1   |  ]' } d  t  |  k o& d k n Vq d S)i   i  N)ord)r   chr   r   r   	<genexpr>  s    z HTMLDoc.index.<locals>.<genexpr>r   r   z#ffffffz#ee77aa)r4  r5  anyr   r6  r  r  r   )r@   r   r  r>  r?  r)   r@  r   r   r   r   index  s     "
zHTMLDoc.index)r&   r'   r]   r   _repr_instancer   r   r   r   r   r   r   r  r  r	  r
  r  r  r  r  r!  r   r   r^  r   rG  r   r   r   rk  r   r   r   r   r     s8   			
+y;r   c               @   sF   e  Z d  Z d d   Z d d   Z d d   Z e Z d d   Z d	 S)
TextReprc             C   s:   t  j |   d |  _ |  _ d |  _ d |  _ |  _ d  S)Nr   r   r   )r   ro   r   r   r   r   r   )r@   r   r   r   ro     s    	zTextRepr.__init__c             C   sx   t  t |  d  r\ d d j t |  j j    } t  |  |  r\ t |  |  | |  St t t |   |  j	  S)Nr&   r   ra   )
re   r   r"   r&   r    r>   r5   r7   r   r   )r@   rP   r   r   r   r   r   r     s
    "zTextRepr.repr1c             C   s^   t  | |  j  } t |  } d | k rZ d t | d d  k rZ d | d | | d S| S)Nru   z\\r   r   r   )r5   r   r   r0   )r@   rP   r   r   r   r   r   r   r   	  s
    $zTextRepr.repr_stringc          
   C   s=   y  t  t t |   |  j  SWn d | j j SYn Xd  S)Nz<%s instance>)r5   r7   r   r   r   r&   )r@   rP   r   r   r   r   r     s     zTextRepr.repr_instanceN)r&   r'   r]   ro   r   r   r   r   r   r   r   r   rm    s
   	rm  c               @   s   e  Z d  Z e   Z e j Z d d   Z d d d  Z d d   Z d d	 d
 d  Z	 d d d d  Z
 d d d d  Z d d   Z d d d d d  Z d d   Z d d d d d  Z d d d d d  Z d d d d d d d  Z d S)TextDocc             C   s   d j  d d   | D  S)Nr   c             s   s   |  ] } | d  | Vq d S)Nr   )r   rh  r   r   r   ri  $  s    zTextDoc.bold.<locals>.<genexpr>)r"   )r@   r/   r   r   r   bold"  s    zTextDoc.boldz    c                sS   | s
 d S  f d d   | j  d  D } | rF | d j   | d <d j |  S)Nr   c                s   g  |  ] }   |  q Sr   r   )r   ry   )prefixr   r   r   )  s   	 z"TextDoc.indent.<locals>.<listcomp>r   r   rv   rv   )r    r   r"   )r@   r/   rq  r$   r   )rq  r   indent&  s     " zTextDoc.indentc             C   s.   |  j  |  j   } |  j |  d | d S)Nr   z

)rr  r   rp  )r@   r   r   Zclean_contentsr   r   r   r   -  s    zTextDoc.sectionNr   c       
         s   d } x | D] } t  |  t  f   k r | \ } } | | t |    } | r | | f k r   f d d   | D }	 | d d j |	  } | d } q t  |  t  g   k r | |  j |   | | d  } q W| S)Nr   c             3   s   |  ] } t  |    Vq d  S)N)r*   )r   r%  )r(   r   r   ri  <  s    z%TextDoc.formattree.<locals>.<genexpr>z(%s)z, r   z    )r   r*   r"   r!  )
r@   r"  r(   r#  rq  r   r$  r%  r&  r'  r   )r(   r   r!  4  s    	zTextDoc.formattreec             C   s  | j  } t t |   \ } } |  j d | | o: d |  } t | d d   } |  j |  } | d  k	 r | |  j d | d  } | r | |  j d |  } g  }	 xo t j | t j  D]X \ }
 } | d  k	 s t j	 |  p | | k r t
 |
 | |  r |	 j |
 | f  q Wg  } xx t j | t j  D]a \ }
 } | d  k	 stt j |  stt j	 |  | k r8t
 |
 | |  r8| j |
 | f  q8Wg  } xE t j | t  D]1 \ }
 } t
 |
 | |  r| j |
 | f  qWg  } t   } t | d  rxW t j | j  D]C \ } } } | j |  | rR| j | d  q| j |  qW| j   | |  j d	 d
 j |   } g  } xR t j | t j  D]; \ }
 } | j  j | d  r|
 | k r| j |
  qW| r| j   | |  j d d
 j |   } |	 rd d   |	 D } |  j t j | d  |  g } x0 |	 D]( \ }
 } | j |  j | |
 |   qWW| |  j d d
 j |   } | r g  } x0 | D]( \ }
 } | j |  j | |
 |   qW| |  j d d
 j |   } | rdg  } x6 | D]. \ }
 } | j |  j | |
 | d d  qW| |  j d d
 j |   } t | d  rt | j  } | d  d  d" k r| d# d   d k r| d d$  j   } | |  j d |  } t | d  r| |  j d t | j    } t | d  r6| |  j d t | j!   } t | d  rd| |  j d t | j"   } y t j# |  } Wn t$ k
 rd  } Yn X| |  j d! |  } | S)%NNAMEz - 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.
ZDESCRIPTIONr\   z
 (package)zPACKAGE CONTENTSr   r   Z
SUBMODULESc             S   s   g  |  ] \ } } |  q Sr   r   )r   rI   rJ   r   r   r   r     s   	 z%TextDoc.docmodule.<locals>.<listcomp>r   CLASSES	FUNCTIONSr3   F   ZDATAr_   r(  r)  z
Revision: VERSIONrV   ZDATErR   ZAUTHORrU   ZCREDITSz
(built-in)FILEz$Revision: rv   rv   )%r&   r%   r   r   r>   r   r   rB   r,   r3  rg   r   r-   r:   r.   setre   r4  r5  r\   addr6  r"   r+   rc   r!  r7  r   r   r1  r_   r   rV   rR   rU   r   r   )r@   r   r)   r8  Zsynopdescr   rf   r   r  rI   rJ   r  r=  r>  Zmodpkgs_namesr?  r(   r@  Z
submodulesrA  r   r<  rx   r   r   r   r   D  s    	 ""$	"
	""
	  &,zTextDoc.docmodulec                s-   j  } | p | }  j }  j d d  } | | k rR d  j |  } n  j |  d | } | r t | |  }	 | d d j |	  } t   }
 |
 r |
 d g p g  } | j  t t	 j
    } t |  d k r# d	  x" | D] }  d
 | |   q W d  G f d d   d  } |           f d d   }      f d d   }       f d d   }  f d d   t   D } x0| r| r| j    n | d d  t |  f d d    \ } }  t j k r#| } qn+   k r8d } n d t   j  } | j   | d | | d d    } | d | | d d    } | d | | d  d    } | d! | | d" d    } | d# | | d$ d    } | } qWd j |  } | s| d S| d  j | j   d%  d S)&Nc             S   s   t  |  |  S)N)r*   )r%  r   r   r   r   makename  s    z"TextDoc.docclass.<locals>.makenamezclass z	 = class z(%s)z, r   r   zMethod resolution order:z    r   c                   s.   e  Z d  Z d d   Z   f d d   Z d S)z(TextDoc.docclass.<locals>.HorizontalRulec             S   s   d |  _  d  S)Nr   )rB  )r@   r   r   r   ro     s    z1TextDoc.docclass.<locals>.HorizontalRule.__init__c                s$   |  j  r   d d  d |  _  d  S)NrR  rv  r   )rB  )r@   )rC  r   r   rD    s    	z.TextDoc.docclass.<locals>.HorizontalRule.maybeN)r&   r'   r]   ro   rD  r   )rC  r   r   rE    s   rE  c                s   t  | |  \ } } | r   j    |   xw | D]o \ } } } } y t  |  } Wn+ t k
 r   j | |    Yq6 X  j | |     q6 W| S)N)rQ   rD  r>   rF  rG  r   )rH  rI  rM   rJ  r)   rk   rK  rJ   )rL  r8  r   rC  r@   r   r   rN    s    

zTextDoc.docclass.<locals>.spillc                si   t  | |  \ } } | re   j    |   x3 | D]+ \ } } } }   j | |    q6 W| S)N)rQ   rD  rG  )rH  rI  rM   rJ  r)   rk   rK  rJ   )rL  r8  rC  r@   r   r   rO    s    

z*TextDoc.docclass.<locals>.spilldescriptorsc       
         s   t  | |  \ } } | r   j    |   x | D] \ } } } } t |  sc t j |  rr t |  } n d  } y t  |  }	 Wn t k
 r | j | }	 Yn X  j	 |	 |  d d d | d  q6 W| S)Nr3   rv  r#   r   )
rQ   rD  rP  r   ri   r   r>   r   r_  r   )
rH  rI  rM   rJ  r)   rk   rK  rJ   r#   r;   )rL  r8  r   rC  r@   r   r   rQ    s    

!z#TextDoc.docclass.<locals>.spilldatac                s@   g  |  ]6 \ } } } } t  | d    r | | | | f  q S)r;   )rg   )r   r)   rk   rl   rJ   )r   r   r   r     s   	z$TextDoc.docclass.<locals>.<listcomp>r   c                s   |  d   k S)Nr   r   )r*  )rS  r   r   r+    s    z"TextDoc.docclass.<locals>.<lambda>zdefined herezinherited from %szMethods %s:
c             S   s   |  d d k S)Nr   rT  r   )r*  r   r   r   r+    s    zClass methods %s:
c             S   s   |  d d k S)Nr   zclass methodr   )r*  r   r   r   r+    s    zStatic methods %s:
c             S   s   |  d d k S)Nr   zstatic methodr   )r*  r   r   r   r+    s    zData descriptors %s:
c             S   s   |  d d k S)Nr   zdata descriptorr   )r*  r   r   r   r+    s    zData and other attributes %s:
c             S   s   |  d d k S)Nr   r=  r   )r*  r   r   r   r+    s    z |  )r&   rC   r'   rp  mapr"   r   r   r   r   rU  r!   rh   rV  rQ   rW  r   r*   r6  rr  r   )r@   r   r)   r8  r9  rX  r&  r|  r   r'  r#   r   rY  rK   rE  rN  rO  rQ  rI  r[  r\  r   )rL  r8  r   rC  r@   rS  r   r     sl    			

			!		

zTextDoc.docclassc             C   s   d |  j  |  S)Nr]  )r   )r@   r   r   r   r   r^  &  s    zTextDoc.formatvaluec             C   s  | j  } | p | } d } d } t |  r | j j } | ra | | k	 r d t | |  } n> | j d  k	 r d t | j j |  } n d t | |  } | | k r |  j |  }	 nE | r | | j k r | j | | k r d } |  j |  d | }	 d  }
 t j |  ry t j	 |  } Wn t
 t f k
 rJd  } Yn X| rt |  }
 | d k r|  j |  d	 }	 |
 d d  }
 |
 sd
 }
 |	 |
 | } | r| d St |  pd } | d | o|  j |  j   d Sd  S)Nr   r   z from z method of %s instancez unbound %s methodr   z = z<lambda>z lambda z(...)r   rv   )r&   rA   r=   r   r*   rp  r_  r   r-   r`  ra  r   r1  r   rr  r   )r@   r   r)   r8  rG   rX  rb  rc  rd  r   re  r`  rf  r#   r   r   r   r   *  sJ    	zTextDoc.docroutinec             C   st   g  } | j  } | r2 | |  j |   | d  t |  pA d } | rg | |  j |   | d  d j |  S)Nr   r   )r   rp  r   rr  r"   )r@   r)   rJ   r8  rj   rC  r#   r   r   r   rG  \  s    	

zTextDoc._docdescriptorc             C   s   |  j  | | |  S)N)rG  )r@   r   r)   r8  rG   r   r   r   r   i  s    zTextDoc.docpropertyc             C   s   |  j  | | |  S)N)rG  )r@   r   r)   r8  rG   r   r   r   r   m  s    zTextDoc.docdatac       
      C   s   |  j  |  } | r_ | r% | d p( d | } | t |  }	 |	 d k  r_ | d  |	  d } | rx |  j |  d p{ d | } | d  k	 r | d |  j t |   7} | S)Nz = r   r   z...r   )r   r!   rp  rr  r1  )
r@   r   r)   r8  r#  r3   r#   r   ry   Zchopr   r   r   r   q  s     #zTextDoc.docother)r&   r'   r]   rm  rl  r   rp  rr  r   r!  r   r   r^  r   rG  r   r   r   r   r   r   r   rn    s   		e}2rn  c               @   s   e  Z d  Z d d   Z d S)_PlainTextDocc             C   s   | S)Nr   )r@   r/   r   r   r   rp    s    z_PlainTextDoc.boldN)r&   r'   r]   rp  r   r   r   r   r~  }  s   r~  c             C   s   t    a t |   d  S)N)getpagerpager)r/   r   r   r   r    s    	r  c              C   s  t  t j d  s t St  t j d  s, t St j j   sL t j j   rP t Sd t j k r t j d k rx d d   St j j	 d  d k r d	 d   Sd
 d   St j j	 d  d k r t St j d k r d d   St  t d  rt j
 d  d k rd d   Sd d  l }  |  j   \ } } t j |  z: t  t d  rgt j
 d |  d k rgd d   St SWd  t j |  Xd  S)NisattyPAGERwin32c             S   s   t  t |   t j d  S)Nr  )tempfilepagerplainr	   r   )r/   r   r   r   r+    s    zgetpager.<locals>.<lambda>ZTERMdumbemacsc             S   s   t  t |   t j d  S)Nr  )	pipepagerr  r	   r   )r/   r   r   r   r+    s    c             S   s   t  |  t j d  S)Nr  )r  r	   r   )r/   r   r   r   r+    s    c             S   s   t  t |   d  S)Nzmore <)r  r  )r/   r   r   r   r+    s    systemz(less) 2>/dev/nullr   c             S   s   t  |  d  S)NZless)r  )r/   r   r   r   r+    s    z	more "%s"c             S   s   t  |  d  S)NZmore)r  )r/   r   r   r   r+    s    )r  r  )r  r  )re   r   stdin
plainpagerstdoutr  r	   r   platformr~   r  tempfilemkstempclosettypagerunlink)r  fdr   r   r   r   r    s4     



$
(
r  c             C   s   t  j d d |   S)Nz.r   )r   r   )r/   r   r   r   r    s    r  c              C   s   d d  l  } | j | d d d | j } yL t j | j d d - } y | j |   Wn t k
 rm Yn XWd  QRXWn t k
 r Yn Xx( y | j	   PWq t k
 r Yq Xq Wd  S)Nr   shellTr  errorsbackslashreplace)

subprocessPopenPIPEioTextIOWrapperr  writeKeyboardInterruptr   wait)r/   cmdr  procpiper   r   r   r    s     
r  c             C   sv   d d  l  } | j   } t | d d d  } | j |   Wd  QRXz t j | d | d  Wd  t j |  Xd  S)Nr   wr  r  z "r  )r  mktempr   r  r	   r  r  )r/   r  r  r   rx   r   r   r   r    s    r  c             C   s4   t  t j d d   p d } |  j | d  j |  S)Nencodingzutf-8r  )r>   r   r  encodedecode)r/   r  r   r   r   _escape_stdout  s    r  c       
      C   s5  t  t |    j d  } yG d d  l } t j j   } | j |  } | j |  d d   } Wn0 t	 t
 t j f k
 r d  } d d   } Yn Xz|y t t j j d d   } Wn t k
 r d } Yn X| d k r d } | d } } t j j d j | d  |   d  x | | d   rt j j d	  t j j   |   }	 |	 d k rrt j j d  Pn5 |	 d k rt j j d | | d  | d } q|	 d k r| | | } | d k  rd } t j j d d j | | | |   d  | | } qWWd  | r0| j | | j |  Xd  S)Nr   r   c               S   s   t  j j d  S)Nr   )r   r  r   r   r   r   r   r+    s    zttypager.<locals>.<lambda>c               S   s!   t  j j   d  d  d  d  S)Nr   rv   )r   r  rw   r   r   r   r   r+    s    LINESr      z
-- more --qQz          bB)r  r  )r  r   )r  r  r  )r  r  r    ttyr   r  filenoZ	tcgetattrZ	setcbreakr   r   r  UnsupportedOperationr  r	   r   r~   ra  r  r  r"   flushZ	tcsetattrZ	TCSAFLUSH)
r/   r$   r  r  oldZgetcharhr   Zincr%  r   r   r   r    sL    '	
 /r  c             C   s    t  j j t t |     d  S)N)r   r  r  r  r  )r/   r   r   r   r    s    r  c             C   s$  t  j |   rQ |  j t j k r, d |  j St |  d  rF d |  j Sd |  j St  j |   rk d |  j St  j |   r d |  j j	 |  j j |  j f St  j
 |   r d |  j j	 |  j j |  j f St  j |   r d |  j St  j |   r d	 |  j St  j |   rd
 |  j St |   j S)Nzbuilt-in module r\   zpackage zmodule zbuilt-in function zgetset descriptor %s.%s.%szmember descriptor %s.%s.%szclass z	function zmethod )r   r+   r&   r   r   re   r:   r   __objclass__r'   r   r,   r8   r9   r   )thingr   r   r   describe  s.    r  c             C   s   d d   |  j  d  D } d \ } } xW | t |  k  r t d j | d  | d   |  } | r} | | d } } q+ Pq+ W| r | } n t } xD | | d   D]2 } y t | |  } Wq t k
 r d  SYq Xq W| S)Nc             S   s   g  |  ] } | r |  q Sr   r   )r   r   r   r   r   r   #  s   	 zlocate.<locals>.<listcomp>r   r   r   )Nr   )r    r!   r   r"   rW  r>   r   )r   r   r:  r   nZ
nextmoduler   r   r   r   r   locate!  s     & 	r  c             C   sy   t  |  t  rD t |  |  } | d  k r: t d |    | |  f St |  d d   } |  t  | t  rn | n d  f Sd  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   r1  r  r   r>   )r  r   r   r)   r   r   r   resolve:  s    
r  z Python Library Documentation: %sc             C   s'  | d  k r t  } t |  |  \ } } t |  } t j |  } | rx d | k rx | d | d  | j d   7} n# | r | | k	 r | d | j 7} t j |  p t j |  p t j	 |  p t j
 |  p t j |  p t | t  st |  } | d 7} | | d | j | |  S)Nr   z in z in module z objectz

)r/   r  r  r   r3  rfindr&   r+   r,   r-   r   r   r   r   r   r   )r  r   r   Zrendererr   r)   r{  r   r   r   r   
render_docH  s$    $
r  c             C   s   yE | d  k r( t  t |  | |   n | j t |  | | t   Wn5 t t f k
 r| } z t |  WYd  d  } ~ Xn Xd  S)N)r  r  r  	plaintextr   r   print)r  r   r   outputrJ   r   r   r   r#   a  s     r#   c             C   s   y~ t  |  |  \ } } t j t |  t j | |   } t | d d d d  } | j |  Wd  QRXt d | d  Wn5 t t	 f k
 r } z t |  WYd  d  } ~ Xn Xd  S)Nz.htmlr  r  zutf-8Zwrote)
r  htmlr   r  r   r   r  r  r   r   )r  r   r   r)   r   rx   rJ   r   r   r   writedocl  s    $r  r   c             C   sI   | d  k r i  } x0 t  j |  g |  D] \ } } } t |  q( Wd  S)N)r4  walk_packagesr  )r   pkgpathdoner?  r(   r@  r   r   r   	writedocsw  s
     %r  c               @   s  e  Z d  Z d d d d d d d d d d d	 d5d
 d6d d7d d8d d9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% dAd' dBd) d d* d d+ dCd, dDd. dEd dFd/ dGd dHd2 dIi! Z d3 dJd< dKd$ dLdQ dMdR dNd_ dOd` dPi Z dC dc d@ dd de df dg dh di dj dk dl dm dn do d3 dp dq dr ds dt du dv dw dx dw dy dz d{ dz i Z xa e j   D]S \ Z Z xD e D]< Z	 e j
 e	 e  Z e e k re d| e Z e e e	 <qWquWd} dQd3 dRd dSd dTd dUd dVd dWd dXd` dYd dZd d d& d[d d\d d]d d^d d} d d} d d_dj d`d dad dbd  dcd d d ddd< d d d d ded dfd dgd dhd did" djd dkd dld dmd dnd dod d d d d- dpd dqd drd dsdq dtd dud d d dvd dwd dxd dyd dzd d{d d|d d}d d~dd ddQ dd dd dd_ dd$ dd dd d	 d ddR ddd dd. dd dd ddd dddddiI Z dddd Z e dd   Z e dd   Z dd  Z e   Z e dd Z dd  Z dd  Z dd   Z d!d"  Z d#d$d%d& Z d'd(  Z d)d*  Z d+d,  Z d d-d. Z d d/d0 Z d1d2  Z d d3d4 Z dS(  HelperFalser   NoneTrueandZBOOLEANaswithassertbreak	while forclassCLASSES SPECIALMETHODScontinuedeffunctiondelBASICMETHODSelififelseexcepttryfinallyforbreak continue whilefromimportglobalnonlocal NAMESPACES
TRUTHVALUEMODULESinSEQUENCEMETHODSisZ
COMPARISONlambdaru  nonlocalglobal NAMESPACESnotorpassraise
EXCEPTIONSreturnwhilebreak continue if TRUTHVALUE CONTEXTMANAGERS EXCEPTIONS yieldyieldZSTRINGS''''r'b'"""r  r"b"	OPERATORS+rR  ***r   //%<<>>r   |^~r   r   <=>===!=<>ZUNARYAUGMENTEDASSIGNMENT+=-=*=/=%=&=|=^=<<=>>=**=//=ZBITWISEZCOMPLEXjJzOPERATORS FORMATTINGZPOWER,zTUPLES LISTS FUNCTIONSr   z ATTRIBUTES FLOAT MODULES OBJECTSz...ELLIPSIS:zSLICINGS DICTIONARYLITERALS@z	def classru   ra   ZPRIVATENAMESr`   zPRIVATENAMES SPECIALMETHODS`Z
BACKQUOTESr  zTUPLES FUNCTIONS CALLSr   [zLISTS SUBSCRIPTS SLICINGS]r   TYPEStypesRSTRINGS UNICODE NUMBERS SEQUENCES MAPPINGS FUNCTIONS CLASSES MODULES FILES inspectstrings4str UNICODE SEQUENCES STRINGMETHODS FORMATTING TYPESZSTRINGMETHODSstring-methodsSTRINGS FORMATTINGZ
FORMATTINGformatstringsUNICODE:encodings unicode SEQUENCES STRINGMETHODS FORMATTING TYPESZNUMBERSnumbersINTEGER FLOAT COMPLEX TYPESZINTEGERintegers	int rangeFLOATfloating
float math	imaginarycomplex cmathZ	SEQUENCEStypesseq$STRINGMETHODS FORMATTING range LISTSZMAPPINGSZDICTIONARIEStypesfunctions	def TYPESZMETHODStypesmethodsclass def CLASSES TYPESZCODEOBJECTSbltin-code-objectscompile FUNCTIONS TYPESZTYPEOBJECTSbltin-type-objectstypes TYPESZFRAMEOBJECTSZ
TRACEBACKSNONEbltin-null-objectbltin-ellipsis-objectSLICINGSZSPECIALATTRIBUTESspecialattrsrt  !class SPECIALMETHODS PRIVATENAMEStypesmodulesZPACKAGESEXPRESSIONSoperator-summarylambda or and not in is BOOLEAN COMPARISON BITWISE SHIFTING BINARY FORMATTING POWER UNARY ATTRIBUTES SUBSCRIPTS SLICINGS CALLS TUPLES LISTS DICTIONARIESZ
PRECEDENCEZOBJECTSobjectsZSPECIALMETHODSspecialnamesbBASICMETHODS ATTRIBUTEMETHODS CALLABLEMETHODS SEQUENCEMETHODS MAPPINGMETHODS NUMBERMETHODS CLASSEScustomizationhash repr str SPECIALMETHODSZATTRIBUTEMETHODSattribute-accessATTRIBUTES SPECIALMETHODSZCALLABLEMETHODScallable-typesCALLS SPECIALMETHODSsequence-types(SEQUENCES SEQUENCEMETHODS SPECIALMETHODSZMAPPINGMETHODSMAPPINGS SPECIALMETHODSNUMBERMETHODSnumeric-types*NUMBERS AUGMENTEDASSIGNMENT SPECIALMETHODSZ	EXECUTION	execmodel%NAMESPACES DYNAMICFEATURES EXCEPTIONSZ
NAMESPACESnaming3global nonlocal ASSIGNMENT DELETION DYNAMICFEATURESZDYNAMICFEATURESdynamic-featuresZSCOPINGZFRAMESr   try except finally raiseZCONVERSIONSconversionsZIDENTIFIERSidentifierskeywords SPECIALIDENTIFIERSZSPECIALIDENTIFIERS
id-classesatom-identifiersZLITERALSatom-literals=STRINGS NUMBERS TUPLELITERALS LISTLITERALS DICTIONARYLITERALSZTUPLESZTUPLELITERALS	exprlistsTUPLES LITERALSZLISTStypesseq-mutableLISTLITERALSlistsLISTS LITERALStypesmappingDICTIONARYLITERALSr  DICTIONARIES LITERALSZ
ATTRIBUTESattribute-references(getattr hasattr setattr ATTRIBUTEMETHODSZ
SUBSCRIPTSsubscriptionsslicingsZCALLScallspowerunaryZBINARYbinaryZSHIFTINGshiftingbitwisecomparisonsEXPRESSIONS BASICMETHODSbooleansEXPRESSIONS TRUTHVALUEZ	ASSERTIONZ
ASSIGNMENT
assignment	augassignZDELETIONZ	RETURNINGZ	IMPORTINGZCONDITIONALZLOOPINGcompoundfor while break continuetruth if while and or not BASICMETHODSZ	DEBUGGINGdebuggerpdbZCONTEXTMANAGERScontext-managersNc             C   s   | |  _  | |  _ d  S)N)_input_output)r@   inputr  r   r   r   ro   *  s    	zHelper.__init__c             C   s   |  j  p t j S)N)r  r   r  )r@   r   r   r   r+  .  s    zHelper.<lambda>c             C   s   |  j  p t j S)N)r  r   r  )r@   r   r   r   r+  /  s    c             C   s?   t  j   d d d k r% |    d Sd |  j j |  j j f S)Nr   r1   ?r   z<%s.%s instance>)r   stackr   r'   r]   )r@   r   r   r   __repr__1  s
    zHelper.__repr__c             C   sG   | |  j  k	 r |  j |  n$ |  j   |  j   |  j j d  d  S)Na  
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   introinteractr  r  )r@   requestr   r   r   __call__9  s    

	zHelper.__call__c             C   s   |  j  j d  x y |  j d  } | s, PWn t t f k
 rH PYn Xt | d d d d  j   } | j   d	 k rz P| d k r |  j   q |  j	 |  q Wd  S)
Nr   zhelp> r  r   r  r  quitr   )r  r  )
r  r  getliner  EOFErrorr0   r   r   r  r   )r@   r  r   r   r   r  F  s      zHelper.interactc             C   sJ   |  j  t j k r t  |  S|  j j |  |  j j   |  j  j   Sd  S)N)r  r   r  r  r  r  rw   )r@   promptr   r   r   r  U  s
    
zHelper.getlinec             C   s  t  |  t  d  k ro| j   } | d k r= |  j   q| d k rV |  j   q| d k ro |  j   q| d k r |  j   q| d  d  d k r |  j | j   d  q| |  j k r |  j |  q| d k r t	 t
 |  d  q| |  j k r|  j |  q| |  j k r7|  j |  q| rVt	 | d d |  j qt	 t d d |  j n/ t | t  r|    n t	 | d d |  j |  j j d  d  S)Nr   keywordssymbolstopicsr      zmodules r   r  r  r  zHelp on %s:r  r   )r  r  r  )r   r   listkeywordslistsymbols
listtopicslistmodulesr    r  
showsymbolr#   evalr  	showtopicr  r  r1  r   r  r  r  )r@   r  r   r   r   r   ^  s6             
zHelper.helpc             C   s2   |  j  j d t t j d  d  g d   d  S)Na  
Welcome to Python %s's help utility!

If this is your first time using Python, you should definitely check out
the tutorial on the Internet at http://docs.python.org/%s/tutorial/.

Enter the name of any module, keyword, or topic to get help on writing
Python programs and using Python modules.  To quit this help utility and
return to the interpreter, just type "quit".

To get a list of available modules, keywords, symbols, or topics, type
"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", type "modules spam".
r1   r   )r  r  r   r   r<  )r@   r   r   r   r  s  s    	zHelper.intrort   P   c       	   	   C   s   t  t |   } | | } t |  | d | } x t |  D] } x t |  D]t } | | | } | t |  k  rT |  j j | |  | | d k  rT |  j j d d | d t | |   qT W|  j j d  qA Wd  S)Nr   r   r   )r  sortedr!   r   r  r  )	r@   itemscolumnsr   Zcolwr  rowr  r  r   r   r   r    s    
.zHelper.listc             C   s*   |  j  j d  |  j |  j j    d  S)NzN
Here is a list of the Python keywords.  Enter any keyword to get more help.

)r  r  r  r  rF   )r@   r   r   r   r    s    	zHelper.listkeywordsc             C   s*   |  j  j d  |  j |  j j    d  S)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  rF   )r@   r   r   r   r    s    	zHelper.listsymbolsc             C   s*   |  j  j d  |  j |  j j    d  S)NzN
Here is a list of available topics.  Enter any topic name to get more help.

)r  r  r  r  rF   )r@   r   r   r   r    s    	zHelper.listtopicsc             C   s  y d d  l  } Wn& t k
 r8 |  j j d  d  SYn X|  j j | |  j j |   } | s~ |  j j d t |   d  St |  t d  k r |  j	 | |  S| \ } } y | j j | } Wn0 t
 k
 r |  j j d t |   d  SYn Xt | j   d  | r'| pd d | } | rd d  l } d d j | j    d }	 | j |	 d	  }
 |  j j d
 d j |
   d  S)Nr   zt
Sorry, topic and keyword documentation is not available because the
module "pydoc_data.topics" could not be found.
zno documentation found for %s
r   r   r   zRelated help topics: z, H   z
%s
)pydoc_data.topicsr   r  r  r  r~   r  r   r   r  KeyErrorr  r   textwrapr"   r    wrap)r@   topic
more_xrefs
pydoc_datatargetlabelxrefsr#   r  r/   Zwrapped_textr   r   r   r    s4    		!	zHelper.showtopicc             C   s   y d d  l  } Wn t k
 r( d SYn X|  j j | |  j j |   } | s\ t d   t | t  r{ |  j | |  S| \ } } | j j | } | r | p d d | } | | f S)Nr   t
Sorry, topic and keyword documentation is not available because the
module "pydoc_data.topics" could not be found.
r   zcould not find topicr   )r  r   )	r  r   r  r~   r  ra  r   r1  	_gettopic)r@   r  r  r  r  r  r  r#   r   r   r   r    s    		!zHelper._gettopicc             C   s9   |  j  | } | j d  \ } } } |  j | |  d  S)Nr   )r  	partitionr  )r@   symbolr  r  ra   r  r   r   r   r    s    zHelper.showsymbolc                s   | r, |  j  j d j |   t |  np |  j  j d  i  } | d d      f d d   } t   j   d | |  j | j    |  j  j d  d  S)	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             S   sS   | r0 | d d   d k r0 | d  d  d } | j  d  d k  rO d | | <d  S)	N	   z	.__init__z
 (package)r   r   r   ii)find)r   r(   r{  r   r   r   r   callback  s    z$Helper.listmodules.<locals>.callbackc                s     d  |  d   d  S)Nr   )r(   )r  r   r   onerror  s    z#Helper.listmodules.<locals>.onerrorr  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  rF   )r@   rI   r   r  r   )r  r   r    s    			zHelper.listmodules)r  r   )r  r  )r  r  )r  r  )r  r   )r  r  )r  r  )r  r  )r  r  )r  r  )r  r  )r  r  )r  ru  )r  r  )r  r   )r  r  )r  ru  )r  r  )r  r  )r  r  )r  r   )r  r  r  r  r  r  r  r  )r  rR  r  r   r   r  r  r  r  r   r  r  r  r   r   r  r	  r
  r  r  )r   r   r  r	  r
  r  r  )rR  r  )r  r  r  r  r  r  r  r  r  r  r  r  )r  r  r   r  r  r  )r  r  )r$  r%  )r&  r'  )r(  r)  )r*  r  )r&  r,  )r-  r.  )r/  r0  )r2  r3  )r4  r5  )r6  r7  )r8  r9  )r:  r;  )r<  r=  )r>  r?  )rA  r   )rB  rC  )rD  r   )r$  rE  )rF  r  )rH  rI  )rJ  r#  )rK  rL  )rM  rN  )rO  rP  )rQ  rR  )rS  rT  )rS  rU  )rW  rX  )rY  rZ  )r[  r\  )r]  r   )r   r^  )r_  r   )r`  ra  )rb  r   )rc  r   )rd  re  )rf  rg  )rh  ri  )rj  rk  )rl  rm  )r  rn  )ro  rp  )rq  r  )rr  r  )rs  rG  )rt  rG  )ru  rG  )rv  rG  )rw  rG  )rx  rG  )ry  rz  )r{  r|  )r}  r  )r~  rV  )r  r  )r  r  )r  r  )r  r  ) r&   r'   r]   r  Z_symbols_inverser  r  r  Zsymbols_r  r~   r  ro   r   r  r  r  r   r  r  r  r  r   r  r  r  r  r  r  r  r  r  r   r   r   r   r  ~  s4  		r  c               @   s%   e  Z d  Z d d d d d  Z d S)r  Nc             C   s  | r | j    } d |  _ i  } x t j D] } | d k r+ d | | <| d  k rf | d  | d  q+ t |  j px d } | j d  d } | d | } | j    j |  d k r+ | d  | |  q+ Wxt j	 d |  D]\ }	 } }
 |  j r P| d  k r| d  | d  q y t j
 |	 |  } Wn t k
 rCw Yn X| j } t | d	  ry | j |  } Wn% t k
 r| r| |  w Yn Xt t j |   pd } t | d
  r| j |  } qNd  } nr y t j j |  } Wn% t k
 r| r| |  w Yn X| j r6| j j   d n d } t | d d   } | d | } | j    j |  d k r | | | |  q W| r|   d  S)NF__main__r   r   r   r   z - r  
get_sourceget_filenamerX   )r   r  r   r   r   rW   r    r  r4  r  	_get_specr   r{   re   r  rF  rz   r  StringIOr  r   r   r   r   r   r>   )r@   r  rI   Z	completerr  seenr(   r)   r{  r?  r@  r   r{   sourcer   r   r   r   r   r    s`     	
"		
	
"zModuleScanner.run)r&   r'   r]   r  r   r   r   r   r    s   r  c             C   sV   d d   } d d   } t  j   + t  j d  t   j | |  d | Wd  QRXd  S)Nc             S   sE   | d d   d k r* | d  d  d } t  | | o= d |  d  S)Nr  z	.__init__z
 (package)z- ii)r  )r   r(   r{  r   r   r   r  C  s    zapropos.<locals>.callbackc             S   s   d  S)Nr   )r(   r   r   r   r  G  s    zapropos.<locals>.onerrorignorer  )warningscatch_warningsfilterwarningsr  r  )rI   r  r  r   r   r   r  A  s
    r  c                s   d d  l   d d  l  d d  l  d d  l  Gd d   d  j j    G f d d   d  j j   G      f d d   d  j  } | |  |  } | j   x% | j	 r | j
 r t j d  q W| S)	Nr   c               @   s(   e  Z d  Z d d   Z d d   Z d S)z!_start_server.<locals>.DocHandlerc             S   sx   |  j  j d  r d } n d } |  j d  |  j d d |  |  j   |  j j |  j |  j  |  j d   d  S)Nz.cssztext/cssz	text/html   zContent-Typez%s; charset=UTF-8zutf-8)	r   rd   Zsend_responseZsend_headerZend_headersZwfiler  
urlhandlerr  )r@   content_typer   r   r   do_GET  s    	
z(_start_server.<locals>.DocHandler.do_GETc             W   s   d  S)Nr   )r@   r   r   r   r   log_message  s    z-_start_server.<locals>.DocHandler.log_messageN)r&   r'   r]   r  r  r   r   r   r   
DocHandler  s   r  c                   s:   e  Z d  Z d d   Z   f d d   Z d d   Z d S)z _start_server.<locals>.DocServerc             S   sM   d |  _  |  j  | f |  _ | |  _ |  j j |  |  j |  j  d |  _ d  S)N	localhostF)hostaddressr  rK   ro   handlerr  )r@   portr  r   r   r   ro     s
    		z)_start_server.<locals>.DocServer.__init__c                s[   xJ |  j  sL   j |  j j   g g  g  d  \ } } } | r |  j   q W|  j   d  S)Nr   )r  selectsocketr  Zhandle_requestZserver_close)r@   Zrdwrex)r  r   r   serve_until_quit  s
    -z1_start_server.<locals>.DocServer.serve_until_quitc             S   s*   |  j  j |   |  j r& |  j |   d  S)N)rK   server_activater  )r@   r   r   r   r    s    	z0_start_server.<locals>.DocServer.server_activateN)r&   r'   r]   ro   r  r  r   )r  r   r   	DocServer  s   r  c                   sU   e  Z d  Z  f d d   Z      f d d   Z d d   Z d d   Z d	 S)
z#_start_server.<locals>.ServerThreadc                s>   | |  _  t |  |  _   j j |   d |  _ d  |  _ d  S)NF)r  r  r  Threadro   servingerror)r@   r  r  )	threadingr   r   ro     s
    		z,_start_server.<locals>.ServerThread.__init__c                s   ye  j  j  _    _  j j   _ t |  j    _  |  j	 |  j
  } | |  _ | j   Wn. t k
 r } z | |  _ WYd  d  } ~ Xn Xd  S)N)server
HTTPServerrK   r  r   ZMessageZMessageClassstaticmethodr  r  ready	docserverr  rF  r  )r@   Zdocsvre)r  r  emailhttpr   r   r    s    		z'_start_server.<locals>.ServerThread.runc             S   s>   d |  _  | j |  _ | j |  _ d |  j |  j f |  _ d  S)NTzhttp://%s:%d/)r  r  Zserver_portr  r  )r@   r  r   r   r   r    s    	z)_start_server.<locals>.ServerThread.readyc             S   s"   d |  j  _ d |  _ d  |  _ d  S)NTF)r  r  r  r  )r@   r   r   r   stop  s    	z(_start_server.<locals>.ServerThread.stopN)r&   r'   r]   ro   r  r  r  r   )r  r  r  r  r  r   r   ServerThread  s   r  g{Gz?)Zhttp.serverZemail.messager  r  r  ZBaseHTTPRequestHandlerr  r  r  r  r  timesleep)r  r  r  threadr   )r  r  r  r  r  r  r   _start_serverO  s    8"+"
r  z	text/htmlc                s  G f d d   d t   } |       f d d      f d d      f d d      f d	 d
      f d d   	   f d d      f d d      f d d      f d d             	 f	 d d   } |  j d  r|  d d   }  | d k r{t j j t j j t   } t j j | |   } t |   } d j | j	    SWd  QRXn | d k r| |   St
 d | |  f   d  S)Nc                   s.   e  Z d  Z   f d d   Z d d   Z d S)z_url_handler.<locals>._HTMLDocc                s'   d } d | } d | |     | f S)Nzpydoc_data/_pydoc.cssz1<link rel="stylesheet" type="text/css" href="%s">a  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Pydoc: %s</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
%s</head><body bgcolor="#f0f0f8">%s<div style="clear:both;padding-top:.5em;">%s</div>
</body></html>r   )r@   r   r   css_pathZcss_link)html_navbarr   r   r     s    z#_url_handler.<locals>._HTMLDoc.pagec             S   s   d | | f S)Nz<a href="getfile?key=%s">%s</a>r   )r@   r  r   r   r   r   r    s    z'_url_handler.<locals>._HTMLDoc.filelinkN)r&   r'   r]   r   r  r   )r  r   r   _HTMLDoc  s   r  c                 sU     j  d t j   t j   d t j   f  }  d |    j  t j d d   f S)Nz%s [%s, %s]r   aZ  
            <div style='float:left'>
                Python %s<br>%s
            </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>
            ZterseT)r   r  Zpython_versionZpython_buildZpython_compiler)r<  )r  r   r   r   	  s    z!_url_handler.<locals>.html_navbarc                 s   d d   }    j  d d d  } d d   t j D }   j | |   } | d   j d	 d d
 |  g } i  } x* t j D] } | j   j | |   q{ W| j d  d d j |  f S)Nc             S   s   d |  |  f S)Nz<a href="%s.html">%s</a>r   )r)   r   r   r   	bltinlink	  s    z3_url_handler.<locals>.html_index.<locals>.bltinlinkz7<big><big><strong>Index of Modules</strong></big></big>z#ffffffz#7799eec             S   s"   g  |  ] } | d  k r |  q S)r  r   )r   r)   r   r   r   r   $	  s   	 z4_url_handler.<locals>.html_index.<locals>.<listcomp>z<p>zBuilt-in Modulesz#ee77aaz|<p align=right><font color="#909090" face="helvetica,arial"><strong>pydoc</strong> by Ka-Ping Yee&lt;ping@lfw.org&gt;</font>zIndex of Modulesr   )	r   r   r   r  r   r   r   rk  r"   )r  r   namesr   r  r   )r  r   r   
html_index	  s    z _url_handler.<locals>.html_indexc       	         s   g      f d d   } t  j   7 t  j d  d d   } t   j | |  d | Wd  QRXd d   } g  }  j d	 d
 d  } x+   D]# \ } } | j | |  |  q W|  j d |  d
 d d j |   } d | f S)Nc                sK   | d d   d k r* | d  d  d }   j  | | o@ d | f  d  S)Nr  z	.__init__z
 (package)z- ii)r   )r   r(   r{  )search_resultr   r   r  9	  s    z3_url_handler.<locals>.html_search.<locals>.callbackr  c             S   s   d  S)Nr   )r(   r   r   r   r  @	  s    z2_url_handler.<locals>.html_search.<locals>.onerrorr  c             S   s   d |  |  f S)Nz<a href="%s.html">%s</a>r   )r)   r   r   r   r  E	  s    z4_url_handler.<locals>.html_search.<locals>.bltinlinkz5<big><big><strong>Search Results</strong></big></big>z#ffffffz#7799eezkey = %sz#ee77aaz<br>zSearch Results)	r  r  r  r  r  r   r   r   r"   )	rI   r  r  r  rj   r   r)   r{  r   )r  )r  r   html_search4	  s      	 z!_url_handler.<locals>.html_searchc                s   t  j j |   }  t j |    }   j | j    } Wd  QRXd | }   j d d d  } |   j d |  d d |  } d |  | f S)Nz<pre>%s</pre>z3<big><big><strong>File Listing</strong></big></big>z#ffffffz#7799eezFile: %sz#ee77aaz
getfile %s)	r.  r/  unquoter   r   r   r   r   r   )r   fpr$   Zbodyr   r   )r  r   r   html_getfileR	  s    
	z"_url_handler.<locals>.html_getfilec                 sn   d d   }    j  d d d  } t t j j    }   j | |   } |   j d d d |  } d | f S)Nc             S   s   d |  |  f S)Nz<a href="topic?key=%s">%s</a>r   )r)   r   r   r   r  b	  s    z4_url_handler.<locals>.html_topics.<locals>.bltinlinkz,<big><big><strong>INDEX</strong></big></big>z#ffffffz#7799eeZTopicsz#ee77aa)r   r  r  r  rF   r  r   )r  r   r  r   )r  r   r   html_topics_	  s    	z!_url_handler.<locals>.html_topicsc                 sn     j  d d d  }  t t j j    } d d   }   j | |  } |    j d d d |  } d | f S)Nz,<big><big><strong>INDEX</strong></big></big>z#ffffffz#7799eec             S   s   d |  |  f S)Nz<a href="topic?key=%s">%s</a>r   )r)   r   r   r   r  v	  s    z6_url_handler.<locals>.html_keywords.<locals>.bltinlinkZKeywordsz#ee77aa)r   r  r  r  rF   r  r   )r   r  r  r   )r  r   r   html_keywordso	  s    	z#_url_handler.<locals>.html_keywordsc                s  t  j   } t | |  } | j |   \ } } |  | j k rH d } n d }   j d | d d  } d   j |  }   j |  d d |  } | r t | j	    } d d	   }   j
 | |  }   j d
 d d |  } d | |  f d j | | | f  f S)NZKEYWORDZTOPICz)<big><big><strong>%s</strong></big></big>z#ffffffz#7799eez<pre>%s</pre>z#ee77aac             S   s   d |  |  f S)Nz<a href="topic?key=%s">%s</a>r   )r)   r   r   r   r  	  s    z7_url_handler.<locals>.html_topicpage.<locals>.bltinlinkzRelated help topics: z%s %sr   )r  r  r  r  r  r   r  r   r  r    r  r   r"   )r  bufZhtmlhelpr   r  r   r   r  )r  r   r   html_topicpage~	  s&    		z$_url_handler.<locals>.html_topicpagec                s^   t  |  d d } | d  k r6 |  d k r6 t d   t |  }   j | |   } | | f S)Nr   r   r  zcould not find object)r  ra  r  r   )r  r;   r   content)r  r   r   html_getobj	  s    z!_url_handler.<locals>.html_getobjc                sp     j  d d d  } d j   f d d   t t |  |  D  } |   j |  d d |  } d |  | f S)	Nz,<big><big><strong>Error</strong></big></big>z#ffffffz#7799eez<br>c             3   s   |  ] }   j  |  Vq d  S)N)r   )r   ry   )r  r   r   ri  	  s    z3_url_handler.<locals>.html_error.<locals>.<genexpr>z#bb0000z
Error - %s)r   r"   r   r   r   )r  r   r   r   )r  r   r   
html_error	  s    
z _url_handler.<locals>.html_errorc                s  |  } |  j  d  r% |  d  d  }  y|  d k rF    \ } } ny|  d k rd    \ } } n[|  d k r    \ } } n=d |  k r|  j d  \ } } }  | d k r  |   \ } } q| d	 k r  |   \ } } q| d
 k r4y  |   \ } } Wqt k
 r0 |   \ } } YqXq| d k r|  d k r^   \ } } qy  |   \ } } Wqt k
 r |   \ } } YqXqt d   n  |   \ } } Wn: t k
 r} z  | |  \ } } WYd  d  } ~ Xn X  j | |  S)Nz.html   r   rk  r  r  r]  z
search?keyzgetfile?keyz	topic?keyzget?keyzbad pydoc url)r   rk  )r   rk  )rd   r  ra  rF  r   )r  Zcomplete_urlr   r  opra   r   )	r  r  r  r  r  r  r  r  r  r   r   get_html_page	  sB    (z#_url_handler.<locals>.get_html_pager   r   ztext/cssr   z	text/htmlz"unknown content type %r for url %s)r   rc   r	   r   dirnamerealpathrX   r"   r   	readlinesr   )r  r  r  r  Z	path_herer  r  r   )
r  r  r  r  r  r  r  r  r  r  r   _url_handler  s,    		
**
r  open_browserTc            C   s$  d d  l  } t t |   } | j r5 t | j  d  S| j r d } | rZ | j | j  z y t d | j  t |  x^ | j r t d  } | j	   } | d k r Pq} | d k r | j | j  q} t |  q} WWn t
 t f k
 r t   Yn XWd  | j r| j   t d  Xd  S)Nr   z"Server commands: [b]rowser, [q]uitzServer ready atzserver> r  r  zServer stopped)
webbrowserr  r  r  r  r  r   r  r  r   r  r  r  )r  r  r  ZserverthreadZserver_help_msgr  r   r   r   browse	  s2    		
	
r  c             C   s%   t  |  t  o$ |  j t j  d k S)Nr   )r   r1  r  r	   sep)rP   r   r   r   ispath
  s    r  c              C   s  d d  l  }  Gd d   d t  } d t j k r| t j j t j d  } | t j k ri t j j |  t j j d d  y|  j  t j d d   d  \ } } d } d } d } d  } xp | D]h \ }	 }
 |	 d	 k r d
 } d
 } |	 d k rt	 |
  d  S|	 d k rd
 } |
 } |	 d k r d
 } q W| r[| d  k rGd } t
 | d | d  S| sg|  x | D] } t |  rt j j |  rt d |  Pyy t |  rt j j |  rt |  } | rt |  r t j j |  r t |  qt |  n t j |  Wqnt k
 rL} z t |  WYd  d  } ~ XqnXqnWWnc |  j | f k
 rt j j t j j t j d   d } t d j d | d t j   Yn Xd  S)Nr   c               @   s   e  Z d  Z d S)zcli.<locals>.BadUsageN)r&   r'   r]   r   r   r   r   BadUsage
  s    r	  r   r   r   zbk:p:wFz-bTz-kz-pz-wr  zfile %r does not exista  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} -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.  The -p option can be used with
    the -b option to explicitly specify the server port.

{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  )getoptrF  r   r   r	   r   argvremoveinsertr  r  r  existsr  rp   r   r   r  r  r   r   r  r   r   r  r  )r
  r	  Z	scriptdirZoptsr   writingZstart_serverr  r  optvalargrJ   r  r   r   r   cli	
  sd    %

 %)r  r  )Vr-  rR   rV   rU   rW  Zimportlib._bootstrapr   Zimportlib._bootstrap_externalZimportlib.machineryimportlib.utilr   r  r	   r4  r  r   r   r  r   Zurllib.parser.  r  collectionsr   reprlibr   	tracebackr   r   r   r%   r*   r.   r0   r5   r  
IGNORECASEr6   r7   r<   rA   rE   rQ   rg   rh   rr   rz   r   rF  r   r   r   r   r   r   rm  rn  r~  r  r  r  r  r  r  r  r  r  r  r/   r  r  r  r  r#   r  r  r  r   r  r  r  r  r  r  r  r&   r   r   r   r   <module>%   s   			
'
0>*  -  d!,			
 	=%V