
    Je                         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mZmZ ddlmZmZ ddlmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#  G d de      Z$dd	Z%d
 Z&y)zPyDoc patch    N)_DEV)is_dark_interfaceget_font)to_text_string)	classnameclassify_class_attrsdescribeDocformat_exception_onlyHelperHTMLRepr_is_bound_methodModuleScannerlocatereplacevisiblenameisdatagetdocdeque_split_listc                      e Zd ZdZ e       Zej                  Zej                  Zd ZddZ		 	 	 ddZ
d Zd Zd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fdZd ZddZddZddZddZy) CustomHTMLDocz
    Formatter class for HTML documentation.

    See:
    https://github.com/aroberge/mod_pydoc/blob/master/mod_pydoc/pydoc.py
    c                     d|d|dS )Format an HTML page.z+<!doctype html>
<html><head><title>Python: z.</title>
<meta charset="UTF-8">
</head><body>
z
</body></html> )selftitlecontentss      G/usr/lib/python3/dist-packages/spyder/plugins/onlinehelp/pydoc_patch.pypagezCustomHTMLDoc.page.   s     H& 	&    c                 .    dj                  ||xs d      S )zFormat a page heading.z`
<table class="heading">
<tr><td>{}</td><td class="align_right normal">{}</td></tr></table>
    &nbsp;format)r   r   extrass      r    headingzCustomHTMLDoc.heading8   s     	uf()	*r"   Nc                     dj                  ||      }|r|dj                  |||      z   }n|r|dj                  ||      z   }dj                  |      }|dz   |z   S )z Format a section with a heading.z;
<table class="{}">
<tr>
<td colspan="3">
{}</td></tr>
    zI
<tr><td rowspan="2">{}</td>
<td colspan="2">{}</td></tr>
<tr><td>{}</td>z
<tr><td>{}</td><td>{}</td>z{}</td></tr></table><br>z
<td class="inner_table">r%   )	r   r   r   widthprelude
marginaliagap	css_classresults	            r    html_sectionzCustomHTMLDoc.html_section?   s    

 	y%  	   6*gs34F  $fZ56F .44X>44x??r"   c                 P    dj                  |      } | j                  |g|i |S )z$Format a section with a big heading.z%<span class="section_title">{}</span>)r&   r0   )r   r   argskwargss       r    
bigsectionzCustomHTMLDoc.bigsectionV   s/    7>>uE t  8888r"   c                 f    | j                  |j                               }t        |dddddddd	      S )z!Format literal preformatted text.z

z
 
 r$   
<br>
)escape
expandtabsr   r   texts     r    	preformatzCustomHTMLDoc.preformat[   s7    {{4??,-tVWfg (D(< 	<r"   c                     d}t        |      |z   dz
  |z  }t        |      D ]L  }|dd|z  z  z   }t        ||z  ||z  |z         D ]"  }|t        |      k  s| |||         z   dz   }$ |dz   }N d|z  S )z0Format a list of items into a multi-column list.    z/<td style="width:%d%%;vertical-align:text-top">d   r8   z</td>z.<table style="width:100%%"><tr>%s</tr></table>)lenrange)r   listr&   colsr/   rowscolis           r    multicolumnzCustomHTMLDoc.multicolumna   s    D	$q 4'; 	&CJ9   48T#Xd]3 As4y=#fT!Wo5@FA g%F	& @&HHr"   c                     d|z  S )z
Grey span.z<span class="grey">%s</span>r   r;   s     r    greyzCustomHTMLDoc.greyo   s    -44r"   c                 8    |D ]  }||v sd||   d|dc S  |S )z:Make a link for an identifier, given name-to-URL mappings.	<a href=""></a>r   )r   namedictsdicts       r    namelinkzCustomHTMLDoc.namelinks   s0     	BDt|04T
DAA	B r"   c           	          |j                   t        j                  j                  |j                        }}t        ||      r.t        ||      |u r d|j                   d|dt        ||      dS t        ||      S )zMake a link for a class.rM   .html#rN   rO   )__name__sysmodulesget
__module__hasattrgetattrr   )r   objectmodnamerP   modules        r    	classlinkzCustomHTMLDoc.classlinkz   se    8I8I(Jf64 WVT%:f%Dy'AC C))r"   c                 <    d|j                   d|j                   dS )zMake a link for a module.rM   .html">rO   )rV   r   r]   s     r    
modulelinkzCustomHTMLDoc.modulelink   s     OOV__. 	.r"   c                 |    |\  }}}}|r| j                  |      S |r	|d|d}nd|z  }|rd|z  }n|}d|d|dS )z;Make a link for a module or package to display in an index...htmlz%s.htmlz%s&nbsp;(package)rM   rN   rO   )rK   )r   
modpkginforP   path	ispackageshadowedurlr<   s           r    
modpkglinkzCustomHTMLDoc.modpkglink   sV    *4'dIx99T?""&-Cd"C&-DD(+T22r"   c                     d|d|dS )zMake a link to source file.z<a href="file:rN   rO   r   r   rl   ri   s      r    filelinkzCustomHTMLDoc.filelink   s    -0$77r"   c                 X   |xs | j                   }g }d}t        j                  d      }	 |j                  ||      }	|	sn@|	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       ng|||d
z    dk(  r$|j                  | j                  ||||             n8|r|j                  d|z         n!|j                  | j                  ||             |}V|j                   |||d              dj                  |      S )z
        Mark up some plain text, given a context of symbols to look for.

        Each context dictionary maps object names to anchor names.
        r   zD\b((http|ftp)://\S+[\w/]|RFC[- ]?(\d+)|PEP[- ]?(\d+)|(self\.)?(\w+))"z&quot;rM   rN   rO   z'http://www.rfc-editor.org/rfc/rfc%d.txtz(http://www.python.org/dev/peps/pep-%04d/r@   (zself.%sNr?   )r9   recompilesearchspanappendgroupsr   intrS   join)r   r<   r9   funcsclassesmethodsresultsherepatternmatchstartendallschemerfcpepselfdotrP   rl   s                      r    markupzCustomHTMLDoc.markup   s    &4;;** 0 1 NN4.EJE3NN6$tE"23438<<>0Cc7DSk))#x8SAB?#c(JVC[IJ@3s8KVC[IJc#a%C'MM$@By4/0t}}T7;<D1 2 	vd45k*+wwwr"   c                    d}|D ]  }t        |      t        d      u rq|\  }}|dz   }|| j                  ||      z   }|rJ||fk7  rDg }|D ]#  }	|j                  | j                  |	|             % |dz   dj                  |      z   dz   }|dz   }t        |      t        g       u s|d| j	                  ||      z  z   } d	|z  S )
zS
        Produce HTML for a class tree as given by inspect.getclasstree().
        r?   r   z<dt>rs   , )z
</dt>z<dd>
%s</dd>
z<dl><dt></dt>
%s<dd></dd></dl>
)typer`   rx   r{   
formattree)
r   treer^   parentr/   entrycbasesparentsbases
             r    r   zCustomHTMLDoc.formattree   s      	'EE{d2h& 5&$..G"<<Uvi/ G % Ft~~dG'DEF#c\DIIg,>>DF)+eR("3doo7A7' #' '	' 3V;;r"   c                      |j                   }	 |j                  }|j                  d      }g }t	        t        |      dz
        D ];  }|j                  dj                  dj                  |d|dz          ||                = dj                  ||dd z         }		 t        j                  |      }
|
}t        j                  dk(  rddl}|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t1               z  }nd}d|z   |z   } j3                  |	|      }t        j4                  |t        j6                        }g i }}t        j4                  |t        j8                        D ]Q  \  }}|t        j:                  |      xs ||u s$t=        |||      s2|j                  ||f       d|z   x||<   ||<   S |D ]  \  }}|j>                  D ]s  }|j                   |j@                  }}t        jB                  jE                  |      }||k7  s@|sCt#        ||      sPtG        ||      |u s_||vsd|dz   |z   x||<   ||<   u  g i }}t        j4                  |t        jH                        D ]{  \  }}|-t        jJ                  |      st        j:                  |      |u s5t=        |||      sC|j                  ||f       d|z   ||<   t        jL                  |      st||   ||<   } g }t        j4                  |tN              D ]&  \  }}t=        |||      s|j                  ||f       (  jQ                  tS        |       jT                  ||      }|xr dj                  |      }|d|z  z   }t#        |d      rg }tW        jX                  |jZ                        D ]  \  } }}!|j                  |||!df        |j]                           j_                  | j`                        }"| jc                  d|"d      z   }n.|r, j_                  | fd      }"| jc                  d|"d      z   }|r|D cg c]  \  }}|	 }#}} je                  t        jf                  |#d      |      g}"|D ])  \  }}|"j                   ji                  |||||             + | jc                  d d!j                  |"      d"      z   }|rVg }"|D ])  \  }}|"j                   ji                  |||||             + | jc                  d#d!j                  |"      d$      z   }|rSg }"|D ]&  \  }}|"j                   ji                  ||             ( | jc                  d%d&j                  |"      d'      z   }t#        |d(      rF jQ                  t%        |jj                         jT                        }"| jc                  d)|"d*      z   }t#        |d+      rF jQ                  t%        |jl                         jT                        }"| jc                  d,|"d-      z   }|S # t        $ r d}Y w xY w# t         $ r d}Y w xY wc c}}w ).z/Produce HTML documentation for a module object.Nrf   r@   z/<a href="{}.html" class="docmodule_link">{}</a>win32r   z
(built-in)__version__   z$Revision: $z
version %s__date__z (%s)r   z-<br><a href="%(docloc)s">Module Reference</a>r?   z<a href=".">index</a><br>#rU   z#-z<code>{}</code>z
<p>%s</p>
__path__zPackage Contentspackager.   c                 ,    j                  | d         S Nr@   )rd   )tr   s    r    <lambda>z)CustomHTMLDoc.docmodule.<locals>.<lambda>6  s    4??1Q4#8 r"   Modulesr_   Classesr6   r}   	Functions	functionsDatar8   data
__author__Authorauthor__credits__Creditscredits)7rV   __all__AttributeErrorsplitrC   rB   rx   r&   r{   inspect
getabsfilerW   platform
nturl2pathpathname2urlrp   	TypeErrorr[   strr   stripr9   r   	getdocloclocalsr(   
getmembersismoduleisclass	getmoduler   	__bases__rZ   rX   rY   r\   	isroutine	isbuiltin
isfunctionr   r   r   r=   pkgutiliter_modulesr   sortrI   rm   r4   r   getclasstreedocumentr   r   )$r   r]   rP   modignoredr   partslinksrH   headri   rl   r   rp   infoversiondoclocr'   r/   rX   r}   cdictkeyvaluer   r^   r_   r|   fdictr   docmodpkgsimporterispkgr   	classlists$   `                                   r    	docmodulezCustomHTMLDoc.docmodule   s$   	..C 

3s5z!|$ 	7ALLAHHXXeDQqSk*E!H67	7 xxbc
*+	$%%f-DC||w&! --d3}}S$/H 6=)&,,-Gs|11gbclc6I!"R...0KKt{{7';;<6:&KKC$89:'DIIdO33D'?&(J  F,x7&@dF+$$VW-=-=>R!,,VW__E 	:JC&&u-7FBsC0NNC<003c	9E#Ju	: " 	:JC :#}}dooW1d?v'&#2Fvs+t3e+ '( 2S 8:E#Jt:	: 2u!,,VW5F5FG 		2JC%%e,%%e,6sC0LL#u.!%E#J))%0',Sze		2 !,,VV< 	*JC3V,S%L)	* kk&.$..%G3'..s3-#--6:&G,3,@,@OO-% :('5ua89: LLN''AHdoo"H	 . C CF''8:Hdoo8x . 9 9F 3:;<C;I; 4 4Y BDIKH% C
UMM%dE5ACC doo388H- . D DFH# C
UMM%dE5ACC dooSXXh/; . H HFH" ;
UeS 9:;dooh/6 . C CF6<({{3v'8'8#94>>JHdoo(h . 8 8F6=){{3v'9'9#:DNNKHdoo8y . : :F u  	C	   	$#H	$X <s*   [& A[8 	\
&[54[58\\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|}Du rd}nd j                  j                        z  }|dz  }|j'                  d         |d|z  |d       } |d|z  |d       } |d|z  |d       } |d|z  |d       } |d|z  |d       } |d|z  |d       }|g k(  sJ |}|rd j)                  |	      }	|k(  r
d!|d"|d#}n|d$|d%|d#}|rKg }|D ]-  }|j                   j                  |j                               / |d&d'j)                  |      z  z   } j+                  t-               j.                        }|xr d(|z  } j1                  ||	d)|d*+      S c c}}}}w # t        $ r Y w xY w# t        $ r Y w xY w),z.Produce HTML documentation for a class object.c                       e Zd Zd Z fdZy).CustomHTMLDoc.docclass.<locals>.HorizontalRulec                     d| _         y Nr   needoner   s    r    __init__z7CustomHTMLDoc.docclass.<locals>.HorizontalRule.__init__g  s	     r"   c                 <    | j                   r d       d| _         y )Nz<hr>
r@   r   )r   pushs    r    maybez4CustomHTMLDoc.docclass.<locals>.HorizontalRule.maybej  s    <<N r"   N)rV   rZ   __qualname__r   r   )r   s   r    HorizontalRuler   f  s    !!r"   r      z&<dl><dt>Method resolution order:</dt>
z<dd>%s</dd>
</dl>
c                 &   t        ||      \  }}|rV
j                           |        |D ]9  \  }}}}	 t        |      } j                  ||	              d       ; |S # t        $ r  j                  ||             Y 0w xY w)Nr7   )r   r   r\   r   	Exception_docdescriptor)msgattrs	predicateokrP   kindhomeclsr   r}   r|   hrmdictr   r]   r   r   s           r    spillz%CustomHTMLDoc.docclass.<locals>.spillz  s    #E95IB
S	24 .D$
% ' 5 T]]!4eWe"$ % J L % D T00ucBC	Ds   A++"BBc                     t        ||      \  }}|r=j                           
|        |D ]   \  }}}} 
j                  ||	             " |S N)r   r   r   )r   r   r   r   rP   r   r   r   r   r   r   r   s           r    spilldescriptorsz0CustomHTMLDoc.docclass.<locals>.spilldescriptors  s\    #E95IB
S	24 @.D$,,T5#>?@Lr"   c                    t        ||      \  }}|rj                           |        |D ]  \  }}}}j                  t        |      |      }t	        |      st        j                  |      rt        |dd       }	nd }	|	 d|z         n;j                  t        |      j                  
      }	d|	z  }	 d||	d        d        |S )N__doc__<dl><dt>%s</dt><dd></dd></dl>
<dd><code>%s</code></dd><dl><dt>z</dt></dl>
r7   )
r   r   docotherr\   callabler   isdatadescriptorr   r   r=   )r   r   r   r   rP   r   r   r   r   r   r}   r|   r   r   r   r]   r   r   s             r    	spilldataz)CustomHTMLDoc.docclass.<locals>.spilldata  s    #E95IB
S	24 .D$==)>cJD'*B*B5*I%eY="{>EF"kk&-*/%A83>4EFJ Lr"   )objr   -r   c                     | d   u S )Nr   r   )r   	thisclasss    r    r   z(CustomHTMLDoc.docclass.<locals>.<lambda>  s    1!2 r"   zdefined herezinherited from %sz:<br>
c                     | d   S r   r   r   s    r    r   z(CustomHTMLDoc.docclass.<locals>.<lambda>  s
    QqT r"   )r   z
Methods %sc                     | d   dk(  S )Nr@   methodr   r  s    r    r   z(CustomHTMLDoc.docclass.<locals>.<lambda>  s    AaDH$4 r"   zClass methods %sc                     | d   dk(  S )Nr@   zclass methodr   r  s    r    r   z(CustomHTMLDoc.docclass.<locals>.<lambda>  s    AaDN$: r"   zStatic methods %sc                     | d   dk(  S )Nr@   zstatic methodr   r  s    r    r   z(CustomHTMLDoc.docclass.<locals>.<lambda>  s    AaDO$; r"   zReadonly properties %sc                     | d   dk(  S )Nr@   zreadonly propertyr   r  s    r    r   z(CustomHTMLDoc.docclass.<locals>.<lambda>  s    qt7J/J r"   zData descriptors %sc                     | d   dk(  S )Nr@   zdata descriptorr   r  s    r    r   z(CustomHTMLDoc.docclass.<locals>.<lambda>  s    qt7H/H r"   zData and other attributes %sc                     | d   dk(  S )Nr@   r   r   r  s    r    r   z(CustomHTMLDoc.docclass.<locals>.<lambda>  s    ! r"   r?   
<span id="z" class="signature"> class </span>z = <span id="z" class="signature">class z(%s)r   z<code>%s<br>&nbsp;</code>   docclassr   )rV   r   rx   r   r   getmrorB   r   r`   rZ   r	   r   r\   r   r   popleftr   builtinsr]   r   r{   r   r   r=   r0   ) r   r]   rP   r   r|   r}   r   realnamer   r   r   mror   r   r   r  r   clsr   r   r   r   anchor	inheritedtagr   r   r   r   r   r   r	  s    `` ```                      @@@@r    r  zCustomHTMLDoc.docclass[  s    ??x  	! 	!  GNN6*+s8a<HHJ:; J_t~~d6<6G6G(I I JJ O	 	(		 	, 0DF/K3 3+T4e&1 c5) 3 3 ). 	%Cw"%*s"2S"88E#J-
  &e	 KKM	!!HQK	*2 4E9 HOO+!f$$)DNNv00-2 29C JJ>J* ,,e46E,s2E:<E-3U;=E$%=%CU%JLE$%:S%@%%HJE<sBE68EB;;EG J 778$8h E
 $*  G Ht~~dF4E4EFGHFTYYw%777Ekk6NDNNE7EC71C7  8Qz ! ; 	;W3     s*   1K'
2K/?K?/	K<;K<?	LLc                 H    | j                  d| j                  |      z         S )z)Format an argument default value as text.=)rK   reprrc   s     r    formatvaluezCustomHTMLDoc.formatvalue  s    yytyy0011r"   c                    |j                   }|xs |}|xr |j                   xs ddz   |z   }	d}
d}t        |      r}|j                  j                  }|r||urad| j	                  ||      z   }
nK|j                  *d| j	                  |j                  j                  |      z  }
nd| j	                  ||      z  }
||k(  r
d|	d	|d
}nJ|r;||j
                  v r-|j
                  |   |u rd|j                   dz   |z   d|d}d}n|}d|	d	|d|}d}t        j                  |      r2	 t        j                  |      }|rt        |      }|dk(  r
d|z  }|dd }|sd}||z   |
xr | j                  |
      z   }|rd|z  S | j                  t        |      | j                  |||      }|xr d|z  }d|d|dS # t        t        f$ r d}Y w xY w)z;Produce HTML documentation for a function or method object.r?   r  r   z from Nz method of %s instancez unbound %s methodr  z" class="signature">r  z
<a href="#rN   rO   r@   z
</span> = z<lambda>z%s <em>lambda</em> r   z(...)r   r   r  z</dt><dd></dd>r   )rV   r   __self__	__class__r`   __dict__r   r   	signature
ValueErrorr   r   rK   r   r   r=   )r   r]   rP   r   r|   r}   r~   clr  r  noteskipdocsimclassr   reallinkargspecr(  declr   s                      r    
docroutinezCustomHTMLDoc.docroutine  s    ??x$*c1D8F#oo//G"$#dnnWc&BBD??.3dnn11378 8D 0$..3& &D 8"E x2;;.KK)V3KK#%0(<#h(EV$!#--f5	 i.z)1D8E
 &amGGw$":499T?;4t;;++vwIC:4s:C:>DD- 	* ! 	!s   *F; ;GGc                     g }|j                   }|r |d|z         |j                  0| j                  t        |      | j                        } |d|z          |d       dj                  |      S )Nz<dl><dt>%s</dt>
z<dd><code>%s</code></dd>
z<dd></dd></dl>
r?   )rx   r   r   r   r=   r{   )r   rP   r   r   r   r   r   s          r    r   zCustomHTMLDoc._docdescriptor<  si    ~~$t+,==$++fUmT^^<C-34 wwwr"   c                 (    | j                  |||      S )z*Produce html documentation for a property.r   r   r]   rP   r   r*  s        r    docpropertyzCustomHTMLDoc.docpropertyI      ""455r"   c                 D    |xr d|z  xs d}|| j                  |      z   S )z-Produce HTML documentation for a data object.z%s = r?   )r"  )r   r]   rP   r   r   lhss         r    r  zCustomHTMLDoc.docotherM  s)    %w~+TYYv&&&r"   c                 (    | j                  |||      S )z1Produce html documentation for a data descriptor.r4  r5  s        r    docdatazCustomHTMLDoc.docdataR  r7  r"   c                 B   g }|i }t        j                  |g      D ]5  \  }}}t        d |D              r|j                  |d|||v f       d||<   7 |j	                          t        |      r0| j                  || j                        }| j                  ||d      S y)z2Generate an HTML index for a directory of modules.c              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&CustomHTMLDoc.index.<locals>.<genexpr>\  s!     @RFc"g///@s   #%r?   r@   indexr   )	r   r   anyrx   r   rB   rI   rm   r4   )r   dirrk   r   r   rP   r   r   s           r    rB  zCustomHTMLDoc.indexV  s    H%,%9%93%%@ 	!HdE@4@@ NND"eTX-=>?HTN	 	w<''AH??3G?DDr"   )r?   )   r?   Nr$   r?   )   r   )NN)NNN)rV   rZ   r   r   r   _repr_instancer"  r9   r!   r(   r0   r4   r=   rI   rK   rS   r`   rd   rm   rp   r   r   r   r  r#  r1  r   r6  r  r;  rB  r   r"   r    r   r       s     ZND""F&* *+-5@.9
<I5*.
38 #'b"b ' V<*B %)d"b ];~2 '+R<E| 6'
6r"   r   c           	      |  	
  G fddt               } |       fd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        t        d      || fz        # 1 sw Y   "xY w)aB  Pydoc url handler for use with the pydoc server.

    If the content_type is 'text/css', the _pydoc.css style
    sheet is read and returned if it exits.

    If the content_type is 'text/html', then the result of
    get_html_page(url) is returned.

    See https://github.com/python/cpython/blob/master/Lib/pydoc.py
    c                       e Zd Z fdZd Zy)_url_handler.<locals>._HTMLDocc                     t        d      j                         }t        d      j                         }t               rd}nd}d|z  }d|z  }d|d	||d
|d 	       d|d}|S )r   	rich_font)optionfontzstatic/css/dark_pydoc.csszstatic/css/light_pydoc.cssz2<link rel="stylesheet" type="text/css" href="/%s">z'<style>code {font-family: "%s"}</style>zY<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Pydoc: zM</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
z,</head><body style="clear:both;font-family:'z'">
z*<div style="clear:both;padding-top:.7em;">z</div>
</body></html>)r   familyr   )
r   r   r   rich_text_fontplain_text_fontcss_pathcss_link
code_style	html_pagehtml_navbars
            r    r!   z#_url_handler.<locals>._HTMLDoc.pagex  s|    %[9@@BN&f5<<>O "67 E 
 :OK  Hj. ]H.I r"   c                     d|d|dS )Nz<a href="getfile?key=rN   rO   r   ro   s      r    rp   z'_url_handler.<locals>._HTMLDoc.filelink  s    8;TBBr"   N)rV   rZ   r   r!   rp   )rV  s   r    _HTMLDocrJ  v  s    	8	Cr"   rX  c                     j                  t        j                         dt        j                         d   dt        j                         d      } d| dj                  t        j                  d            d	S )
Nz [r   r   ]z=
            <div style='float:left'>
                Python <br>T)tersea  
            </div>
            <div style='float:right'>
                <div style='text-align:right; padding-bottom:.7em;'>
                  <a href="index.html">Module Index</a>
                  : <a href="topics.html">Topics</a>
                  : <a href="keywords.html">Keywords</a>
                </div>
                <div style='text-align:right;'>
                    <form action="search" style='display:inline;'>
                      <input class="input-search" type=text name=key size="22">
                      <input class="submit-search" type=submit value="Search">
                    </form>
                </div>
            </div>
            )r9   r   python_versionpython_buildpython_compiler)r   htmls    r    rV  z!_url_handler.<locals>.html_navbar  sg    ++x/F/F/H/7/D/D/Fq/I/7/G/G/IK L( 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 )zIndex page.c                     d| d| dS NrM   rb   rO   r   rP   s    r    	bltinlinkz3_url_handler.<locals>.html_index.<locals>.bltinlink      15t<<r"   z<span>Index of Modules</span>__main__z<p>zBuilt-in Modulesbuiltin_modulesr   zT<p class="ka_ping_yee"><strong>pydoc</strong> by Ka-Ping Yee&lt;ping@lfw.org&gt;</p>zIndex of Modulesr?   )	r(   rW   builtin_module_namesrI   r4   ri   rx   rB  r{   )re  r(   rP   namesr   seenrD  r`  s          r    
html_indexz _url_handler.<locals>.html_index  s    	= ,,>?"%":": ($J&  ( (##E95UT__4E &5 &G G H 88 	3COODJJsD12	3 	'	( "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j                  |       d	j                  |      d
      z   }d|fS # 1 sw Y   |xY w)zSearch results page.c                 Z    |dd  dk(  r|d d dz   }j                  ||xr d|z   f       y )Niz	.__init__z
 (package)z- )rx   )ri   r^   descsearch_results      r    callbackz3_url_handler.<locals>.html_search.<locals>.callback  s=    rs|{*!#2,5  '4+?D4K!@Ar"   ignorec                      y r   r   )r^   s    r    onerrorz2_url_handler.<locals>.html_search.<locals>.onerror  s    r"   )rt  Nc                     d| d| dS rc  r   rd  s    r    re  z4_url_handler.<locals>.html_search.<locals>.bltinlink  rf  r"   zSearch Resultszkey = {}r[  rv   r   )
warningscatch_warningsfilterwarningsr   runr(   rx   r4   r&   r{   )r   rq  rt  re  r   r(   rP   ro  r   rp  r`  s            @r    html_searchz!_url_handler.<locals>.html_search  s     	B
 $$& 	@##H-O#w?		@	= ,,/0' 	3JD$NN9T?T12	3T__c"FKK$8H - N N))#	@ 	@s   5CCc                 @   | j                  dd      } t        j                  |       5 }j                  |j	                               }ddd       dz  }j                  d      }|j                  dj                  |       |d      z   }d	| z  |fS # 1 sw Y   LxY w)
z-Get and display a source file listing safely.z%20r6   N<pre>%s</pre>zFile ListingzFile: {}getfiler   z
getfile %s)r   tokenizeopenr9   readr(   r4   r&   )ri   fplinesbodyr(   r   r`  s         r    html_getfilez"_url_handler.<locals>.html_getfile  s    ||E3']]4  	+BKK	*E	+&,,~.T__Z->->t-Dd7@ - B Bd"H,,	+ 	+s    BBc                      d } j                  d      dz   }t        t        j                  j	                               }j                  ||       }|j                  d|d      z   }d|fS )zIndex of topic texts available.c                     d| d| dS Nz<a href="topic?key=rN   rO   r   rd  s    r    re  z4_url_handler.<locals>.html_topics.<locals>.bltinlink      6:DAAr"   zIndex of Topicsr[  Topicstopicsr   )r(   sortedr   r  keysrI   r4   )re  r(   rj  r   r`  s       r    html_topicsz!_url_handler.<locals>.html_topics  st    	B ,,01F:v}}))+,##E95T__h( - 4 4!!r"   c                      j                  d      } t        t        j                  j	                               }d }j                  ||      }| dz   j                  d|d      z   }d|fS )zIndex of keywords.zIndex of Keywordsc                     d| d| dS r  r   rd  s    r    re  z6_url_handler.<locals>.html_keywords.<locals>.bltinlink  r  r"   r[  Keywordskeywordsr   )r(   r  r   r  r  rI   r4   )r(   rj  re  r   r`  s       r    html_keywordsz#_url_handler.<locals>.html_keywords  st    ,,23v++-.	B ##E95V#dooJ '6 '8 88##r"   c                    t        j                         }t        ||      }|j                  |       \  }}| |j                  v rd}nd}j                  |      }dj                  |      z  }j                  | |d      }|rBt        |j                               }d }j                  ||      }j                  d|d      }|d| d	j                  |||f      fS )
zTopic or keyword help page.KeywordTopicr|  r  r   c                     d| d| dS r  r   rd  s    r    re  z7_url_handler.<locals>.html_topicpage.<locals>.bltinlink  s    :>EEr"   zRelated help topics: r6   r?   )ioStringIOr   	_gettopicr  r(   r   r4   r  r   rI   r0   r{   )	topicbufhtmlhelpr   xrefsr   r(   re  r`  s	           r    html_topicpagez$_url_handler.<locals>.html_topicpage	  s    kkm#s#",,U3%H%%%EE,,u%"T[[%::??5(h?G5;;=)EF $$UI6E%%&=u08 & :E %((E235 	5r"   c                     t        | d      }|| dk7  rt        t        d            t        |      }j	                  ||       }||fS )Nr@   )	forceloadNoneziThere was an error while retrieving documentation for the object you requested: Object could not be found)r   r)  r   r
   r   )rl   r  r   contentr`  s       r    html_getobjz!_url_handler.<locals>.html_getobj!  s]    SA&;3&= L MN N --S)g~r"   c                     j                  d      }t        r.dj                  fdt        t	        |      |      D              }ndt        |      z  }|j                  | |d      z   }d| z  |fS )NErrorr[  c              3   @   K   | ]  }j                  |        y wr   )r9   )r?  liner`  s     r    rA  z3_url_handler.<locals>.html_error.<locals>.<genexpr>.  s       #J4;;t#4 #Js   z%serrorr   z
Error - %s)r(   r   r{   r   r   r   r4   )rl   excr(   r   r`  s       r    
html_errorz _url_handler.<locals>.html_error+  sw    ,,w'{{ #J#8cC#H#J JH nS11HT__S(g_NNc!8++r"   c                 ~  	 | }| j                  d      r| dd } 	 | dv r        \  }}n| dk(  r        \  }}n| dk(  r        \  }}nd| v r~| j                  d      \  }}} |dk(  r |       \  }}nc|d	k(  r 	|       \  }}nR|d
k(  r	  |       \  }}n@|dk(  r| dv r        \  }}n,	  
|       \  }}nt         |d      | z         
|       \  }}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)zGenerate an HTML page for url.rg   N)r?   rB  r  r  r!  z
search?keyzgetfile?keyz	topic?keyzget?keyzZThere was an error while retrieving documentation for the object you requested: Bad URL %s)endswith	partitionr)  r   r!   )rl   complete_urlr   r  opr   r  r`  r  r  r  rl  r  rz  r  r  s          r    get_html_pagez#_url_handler.<locals>.get_html_page5  s   << cr(C$	;m#!+w!,w
"!.w ]]3/
As%%0%5NE7=(%1#%6NE7;&:)7)<w 9_m+)3wA-8-=NE7 % E FHKLM M "-S!1w yy(() & :)4S)9w:  * A-;C-@NE7A  	;'c:NE7	;s`   A/D C) D ,D 7 D )D =D ?D  D DD DD 	D<&D77D</r@   Ntext/cssr?   	text/htmlzrThere was an error while retrieving documentation for the object you requested: unknown content type %r for url %s)r   
startswithosri   dirnamerealpath__file__r{   r  	readlinesr   r   )rl   content_typerX  r  	path_hererR  r  r`  r  r  r  rl  r  rV  rz  r  r  s          @@@@@@@@@@r    _url_handlerr  k  s   C= CB :DH.5,*:
-"$50,*) *)X ~~c!"gz!GGOOBGG$4$4X$>?	77<<	3/(^ 	+r772<<>*	+ 	+		$S!!
	 M 	N3	 ! !	+ 	+s   #D22D;c                   	
 ddl 	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                        } || ||      }d	|_	        |j                          |j                  s6|j                  s*|j                  d
       |j                  s|j                  s*|S )z
    Start an HTTP server thread on a specific port.

    This is a reimplementation of `pydoc._start_server` to handle connection
    errors for 'do_GET'.

    Taken from PyDoc: https://github.com/python/cpython/blob/3.7/Lib/pydoc.py
    r   Nc                       e Zd Zd Zd Zy)!_start_server.<locals>.DocHandlerc                 l   | j                   j                  d      rd}nd}| j                  d       | j                  dd|z         | j	                          	 | j
                  j                  | j                  | j                   |      j                  d             y# t        $ r Y yt        $ r Y yw xY w)	zProcess a request from an HTML browser.

            The URL received is in self.path.
            Get an HTML page from self.urlhandler and send it.
            z.cssr  r     zContent-Typez%s; charset=UTF-8zutf-8N)ri   r  send_responsesend_headerend_headerswfilewrite
urlhandlerencodeConnectionAbortedErrorBrokenPipeError)r   r  s     r    do_GETz(_start_server.<locals>.DocHandler.do_GET  s     yy!!&))*s# 3l BD

  II|"--3VG_>)  "  	s   AB 	B3(B32B3c                      y r   r   )r   r2   s     r    log_messagez-_start_server.<locals>.DocHandler.log_message  s    r"   N)rV   rZ   r   r  r  r   r"   r    
DocHandlerr    s    	8	r"   r  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addressrq  r   r   handlerquit)r   r  portrq  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socketfileno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 r   )r   server_activaterq  r   s    r    r  z0_start_server.<locals>.DocServer.server_activate  s,    II%%d+}}d# r"   N)rV   rZ   r   r   r  r  )r  s   r    	DocServerr    s    		 	$r"   r  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 | _        y r  )r  r  rz   r  Threadr   servingr  )r   r  r  r  	threadings       r    r   z,_start_server.<locals>.ServerThread.__init__  s>    (DODID	DI%%d+ DLDJr"   c                 n   	 j                   j                  _        _        j                  j
                  _        t        | j                        _         | j                  | j                  | j                        }|| _        |j                          y# t        $ r}|| _        Y d}~yd}~ww xY w)zStart the server.N)server
HTTPServerr   r  messageMessageMessageClassstaticmethodr  r  r  ready	docserverr  r   r  )r   docsvrer  r  emailhttps      r    ry  z'_start_server.<locals>.ServerThread.run  s    	!%!7!7	$.	!*/--*?*?
'(4T__(E
%"499diiD!''') 

s   BB 	B4#B//B4c                     d| _         |j                  | _        |j                  | _        d| j                  | j                  fz  | _        y )NTzhttp://%s:%d/)r  r  server_portr  rl   )r   r  s     r    r  z)_start_server.<locals>.ServerThread.ready  s:    DLDI**DI&$))TYY)??DHr"   c                 p    d| j                   _        | j                          d| _         d| _        d| _        y)z'Stop the server and this thread nicely.TNF)r  r  r{   r  rl   r   s    r    stopz(_start_server.<locals>.ServerThread.stop  s.    "&DNNIIK "DN DLDHr"   N)rV   rZ   r   r   ry  r  r  )r  r  r  r  r  s   r    ServerThreadr    s    			@	r"   r  Tg{Gz?)http.serveremail.messager  r  timer  BaseHTTPRequestHandlerr  r  daemonr   r  r  sleep)r  hostnamer  r   r  threadr  r  r  r  r  r  s         @@@@@@r    _start_serverr  q  s      T[[77  D$DKK** $*% %y'' %N *h5FFM
LLN ll6>>

3 ll6>>Mr"   )r  )'r   r  r  r   r  r   r   rt   rW   r~  rv  spyder.config.baser   r   spyder.config.guir   r   spyder.py3compatr   pydocr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r"   r    <module>r     sh      	  	   	 
   & 9 +5 5 5 5 5
H	C H	VC!Ltr"   