a ze@sdgZdZdZdZddlZddlZddlZddlZddl Zddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlmZddlmZddlmZd d Zd d Zd dZddZ ddZ!ddZ"ddZ#ddZ$ddZ%ddZ&ddZ'e(dej)Z*d d!Z+d"d#Z,d$d%Z-d&d'Z.dd(d)Z/d*d+Z0d,d-Z1d.d/Z2d0d1Z3ifd2d3Z4Gd4d5d5e5Z6d6d7Z7difd8d9Z8Gd:d;d;Z9Gdd?d?e9Z;Gd@dAdAeZdFdGa?dHdIZ@dJdKZAdLdMZBdNdOZCdPdQZDdRdSZEdTdUZFdVdWZGddXdYZHe=ZIe>ZJe;ZKddZd[ZLdd]d^ZMdd_d`ZNddadbZOddddeZPGdfdgdgZQeQZRGdhdidiZSdjdkZTdldmZUddodpZVddqdrdsdtduZWdvdwZXdxdyZYdzd{ZZd|d}Z[e\d~kre[dS)helpzKa-Ping Yee z26 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_onlycCs\g}g}tjD]H}tj|pd}tj|}||vrtj|r||||q|SN.)syspathosabspathnormcaseisdirappend)dirsZnormdirsdirnormdirr9/opt/bitninja-python-dojo/embedded/lib/python3.9/pydoc.pypathdirsQs    rcCsPtj|j}|durdS|jdddD]}t||}q.t|sLdS|S)Nr) rmodulesget __module__ __qualname__splitgetattrinspectisclass)funcclsnamerrr _findclass]s  r!c Cst|rJ|jj}|j}t|r@tt||dd|jur@|}n|j}n$t|r~|j}t |}|dusxt|||ur|dSnt |r|j}|j}t|r|j d||j kr|}n|j}nt |t r|j}|j}t |}|dust|||urdSntt|st|rj|j}|j}t|||ur2dSt|rnt|dd}t |trn||vrn||SndS|jD]F}ztt||}WntyYqtYn0|durt|SqtdS)N__func__r __slots__)rismethodr"__name____self__rr __class__ isfunctionr! isbuiltinr isinstancepropertyfgetZismethoddescriptorisdatadescriptor __objclass__ismemberdescriptordict__mro__ _getowndocAttributeError)objr selfrrslotsbasedocrrr_finddocgsZ              r9cCsdzJt|d}|durWdS|turFt|j}t|trF||krFWdS|WSty^YdS0dS)N__doc__)object__getattribute__typer:r*strr3)r4r8Ztypedocrrrr2s   r2c CsNt|}|dur6z t|}Wnttfy4YdS0t|tsDdSt|SN)r2r9r3 TypeErrorr*r>rZcleandoc)r;r8rrr_getdocs  rAcCs,t|pt|}|r(tdd|p*dS)Nz^ * )rArZ getcommentsresubrstrip)r;resultrrrgetdocsrGcCsf|d}t|dkr&|ddfSt|dkrX|dsX|dd|ddfSdd|fS)N rrB)striprlenrEjoin)r8linesrrrsplitdocs   rOcCs"|j}|j|kr|jd|}|Sr)r%r)r;modnamer rrr classnames rQcCs>t|p:t|p:t|p:t|p:t|p:t| Sr?)rismoduler isroutineZisframeZ istracebackZiscoder;rrrisdatasrUcGs.|r*|d||d}|dd}q|S)NrIrrJ)rMr)textpairsrrrreplacesrXcCsXt||krTtd|dd}td|d|}|d|d|t||dS|S)NrrJ...)rLmax)rVmaxlenpreZpostrrrcrams  $r^z at 0x[0-9a-f]{6,16}(>+)$cCs td|S)Nz\1) _re_stripidrDrVrrrstripidsracCs<t|rdSt|r8t|dd}t|p4|du SdS)NTr&F)rr$r)rrR)fnr5rrr_is_bound_methods    rccCs^i}t|tjD]\}}d||<q|jD]}|t|q*|D]}t||||<qF|SNrI)r getmembersrS __bases__update allmethodskeysr)clmethodskeyvaluer7rrrrhs   rhcCs8g}g}|D]"}||r$||q ||q ||fSr?r)s predicateZyesnoxrrr _split_lists  rscCs\|dvr dS|dr$|dr$dS|dr __cached__ __credits____path__ __package__ __author__r:__date__rr%__file__ __loader__r__spec__ __builtins__r# __version__r__rI__fieldsT) startswithendswithhasattr)r allr4rrr visiblenamesrcCsXg}t|D]D\}}}}t|r@d}t|tr@|jdur@d}|||||fq|S)Ndata descriptorreadonly property)rclassify_class_attrsr-r*r+fsetr)r;resultsr kindrrmrrrr%s rcsZt|dgzfddtDWnty<iYn0fdd}|j|ddS)Nrcsi|]\}}||tqSr)rL).0ir )fieldsrr 6z#sort_attributes..cs|dd|dfSNr)r)attr) field_orderrr9rz!sort_attributes..rl)r enumerater@sort)attrsr;Zkeyfuncr)rrrsort_attributes0s    rcCs:tj|r6dD]$}tjtj|d|rdSqdS)N)z.pyz.pyc__init__TF)r r r isfilerM)r extrrr ispackage>s  rcCs|}|dddks |s0|}|sq0q|}|dddkrT|dd}|dddkr|dd}|dddkr|dd}|s|}|sqq|dd }nd}|S) NrI#zr"""rY"""r\r)readlinerKr)filelinerFrrrsource_synopsisFs rc Cs2t|j}||d\}}|dus.||kr.|ttjjrJtjj }n |ttjj rftjj }nd}|durzt |}WntyYdS0|t|}Wdn1s0Yn^|d|}tjjd||d}ztj|} WnYdS0tjd=| jr| jdnd}||f||<|S)N)NNZ__temp__loaderr)r statst_mtimerrtuple importlib machineryBYTECODE_SUFFIXESSourcelessFileLoaderEXTENSION_SUFFIXESExtensionFileLoadertokenizeopenOSErrorrutilspec_from_file_location _bootstrap_loadrrr: splitlines) filenamecachemtimeZ lastupdaterFZ loader_clsrrspecmodulerrrsynopsisWs6    (   rc@seZdZddZddZdS)ErrorDuringImportcCs||_|\|_|_|_dSr?)rexcrmtb)r5rexc_inforrrrszErrorDuringImport.__init__cCs|jj}d|j||jfS)Nzproblem in %s - %s: %s)rr%rrm)r5rrrr__str__szErrorDuringImport.__str__N)r%rrrrrrrrr~src Cstjj}t|d"}||t|k}Wdn1s:0Ytj|}tj |\}}|rttj ||}ntj ||}tjj |||d}ztj|WSt|tYn0dS)Nrbr)rr MAGIC_NUMBERrreadrLr r basenamesplitext_bootstrap_externalrSourceFileLoaderrrrrrr) r magicrZ is_bytecoderr rrrrrr importfiles 0 rc sz^|rTtjvrTtjvrTfddtjD}g|D]}tj|||<tj|=q8t}Wnzt\}}}} tjvrttjj| n>|turt|j| n(t |t r|j krYdSttYn0 dddD],} zt || }WqtyYdS0q|S)Ncsg|]}|dr|qS)r)r)rmr rr rzsafeimport..rrI)rrbuiltin_module_names __import__rrrz SyntaxErrorr issubclass ImportErrorr rrr3) r forceloadrZsubsrlrrrmrinfopartrrr safeimports*    rc@sfeZdZejddejddZd ddZ d ddZ e Z Z Z ZZZed fd d ZdS)Doc PYTHONDOCSz%https://docs.python.org/%d.%d/libraryNrJcGs||f|}zFt|r$|j|WSt|r:|j|WSt|rP|j|WSWntydYn0t|rz|j |S|j |Sr?) rrR docmodulerdocclassrS docroutiner3r-docdatadocother)r5r;r argsrrrdocuments  z Doc.documentcGs*d|odt|t|jf}t|dS)Nz.don't know how to document object%s of type %s )reprr=r%r@)r5r;r rmessagerrrfailszDoc.failZstdlibcCszt|}Wnty$d}Yn0tjd|j}tj|}t |t tr|j dvsx| |r| tj |ds|j dvr| drd|d|j f}qtj ||j d }nd}|S) N (built-in)r) errno exceptionsgcZimpmarshalposixsignalr_threadZ zipimportz site-packages)z xml.etreeztest.pydoc_mod)zhttp://zhttps://z%s/%s/.html)r getabsfiler@r environrrr r r*r=r%rrMrElower)r5r;Zbasedirrdoclocrrr getdoclocs(    z Doc.getdocloc)N)N)r%rrr rrr version_inforrrrrrr docpropertyr sysconfigZget_pathrrrrrrs   rc@sDeZdZddZddZddZddZd d ZeZd d Z eZ d S)HTMLReprcCs,t|d|_|_d|_d|_|_dSN drrmaxlistmaxtuplemaxdict maxstringmaxotherr5rrrrs  zHTMLRepr.__init__cCst|ddddddS)N&z&z>)rXr5rVrrrescape szHTMLRepr.escapecCs t||Sr?)rrr5r;rrrrsz HTMLRepr.reprcCsZtt|dr@ddt|j}t||r@t||||S|ttt ||j SNr%repr_r) rr=rMr%rrr r^rarrr5rrlevelZ methodnamerrrrepr1s  zHTMLRepr.repr1cCs^t||j}t|}d|vrJdt|ddvrJd|d|||dStdd||S)Nr\\rBrrz-((\\[\\abfnrtv\'"]|\\[0-9]..|\\x..|\\u....)+)z\1)r^rrrXr rCrDr5rrrtestZtestreprrrr repr_strings zHTMLRepr.repr_stringcCs@z|ttt||jWS|d|jjYS0dSNz <%s instance>)r r^rarrr'r%r5rrrrrr repr_instance&szHTMLRepr.repr_instanceN) r%rrrr rrrrepr_strrZ repr_unicoderrrrrs rc@seZdZeZejZejZddZd0ddZd1d d Z d d Z d dZ d2ddZ ddZ ddZddZddZddZddZdiiifddZd3d d!Zd4d"d#Zddiifd$d%Zd&d'Zddiiidfd(d)Zd5d*d+ZeZd6d,d-Zd7d.d/ZdS)8HTMLDoccCs d||fS)Nz Python: %s %s r)r5titlecontentsrrrpage7sz HTMLDoc.pagerBcCsd|||||pdfS)Na'
 
 
%s
%s
 r)r5rfgcolbgcolextrasrrrheadingAszHTMLDoc.headingNrc Cs^|durdd|d}d|||f} |r@| d||||f} n| d|||f} | d|S)Nzrzz

zR z( z'
 
%s
%s %s
%s
%s%s%s
r) r5rrrrwidthZpreludeZ marginaliaZgaprFrrrsectionLs zHTMLDoc.sectioncGsd|}|j|g|RS)Nz%s)r$)r5rrrrr bigsectionbszHTMLDoc.bigsectionc Cs&||}t|dddddddd S)N z rrrH
)r  expandtabsrXrrrr preformatgs zHTMLDoc.preformatrcCsd}t||d|}t|D]X}|dd|}t|||||D]$}|t|krJ||||d}qJ|d}q d|S)NrBrIzrr'zz7%s
)rLrange)r5listformatZcolsrFrowscolrrrr multicolumnms   zHTMLDoc.multicolumncCsd|S)Nz%srrrrrgreyyrz HTMLDoc.greycGs*|D] }||vrd|||fSq|S)N%sr)r5r Zdictsr0rrrnamelink{szHTMLDoc.namelinkcCsN|jtj|j}}t||rDt|||urDd|j|t||fSt||S)Nz%s)r%rrrrrrrQ)r5r;rPr rrrr classlinks zHTMLDoc.classlinkcCsd|j|jfSNz%s)r%r rrr modulelinkszHTMLDoc.modulelinkcCsR|\}}}}|r||S|r,d||f}nd|}|rBd|}n|}d||fS)Nz %s.%s.htmlz%s.htmlz"%s (package)r1)r0)r5Z modpkginfor r rshadowedurlrVrrr modpkglinks   zHTMLDoc.modpkglinkcCs d||fS)Nz%sr)r5r7r rrrfilelinkszHTMLDoc.filelinkcCs|p|j}g}d}td}|||} | s0qh| \} } ||||| | \} } }}}}| r|| dd}|d||fn|rdt|}|d||| fn|rdt|}|d||| fn|r"|| | dd kr|d | ||n|d |n@|| | dd krP|| ||||n|| ||| }q||||dd |S) NrzJ\b((http|https|ftp)://\S+[\w/]|RFC[- ]?(\d+)|PEP[- ]?(\d+)|(self\.)?(\w+))"z"r1z'http://www.rfc-editor.org/rfc/rfc%d.txtz)https://www.python.org/dev/peps/pep-%04d/rI(zself.zself.%srB) r rCcompilesearchspanrgroupsrXintr2rM)r5rVr funcsclassesrkrherepatternmatchstartendrschemeZrfcZpepZselfdotr r7rrrmarkups8      zHTMLDoc.markupc Csd}|D]}t|tdur|\}}|d}||||}|r||fkrg}|D]} ||| |qR|dd|d}|d}qt|tgur|d||||}qd |S) NrBrz"

r;, )z
z
%s
z
%s
)r=r3rrM formattree) r5treerPparentrFentrycbasesparentsr7rrrrLs"  zHTMLDoc.formattreec# s|j}z |j}Wnty&d}Yn0|d}g}tt|dD],}|dd|d|d||fqFd||dd} d| } z&t |} t j | } | | } Wntyd} Yn0g}t|dr2t|j}|ddd kr|ddd kr|dd}|d |t|d rT|t|j|rl| d d|} |}|durdt}nd}| ddd| |}t|tj}gi}}t|tjD]Z\}}|dust|p||urt|||r|||fd|||<||<q|D]\}}|jD]n}|j|j}}tj !|}||kr<|r%sr)%srr~ $Revision: $z version %sryz (%s)rJz-
Module ReferencerB#ffffff#7799eezindex
rz.html#z#-z %sz

%s

rvrzPackage Contentsz#aa55cccs|dSrd)r5trrrr5rz#HTMLDoc.docmodule..ZModulescSsg|] \}}|qSrrrrlrmrrrr:rz%HTMLDoc.docmodule..ZClasses#ee77aarZ Functionsz#eeaa77ZDataz#55aa55r'rxZAuthorruZCredits)6r%__all__r3rr*rLrrMrrurllibparsequoter9r@rr>r~rKr ryrlocalsr!rerRr getmodulerrfrrrrrrSr)r(rUrIrGr)pkgutil iter_modulesrvrr/r8r%rL getclasstreerrxru)#r5r;r modignoredrpartsZlinksrZ linkednameheadr r7r9rversionrrFrrBZcdictrlrmr7rPrrAZfdictdatar8modpkgsimporterispkgr classlistrrrrs          $                        zHTMLDoc.docmodulec sj}|p |}j}g} | jGfddd} | tt} t| dkrd| D]} d| j qddfdd} fd d }fd d }fd dt D}i|D]j\}}}}d|d||<}zt |}Wnt y2Yn0z ||<Wqt yTYq0q|rf| rn| n |ddt|fdd\}}tjurtjur|}qXn"urd}ndj }|d7}t|| d||dd}| d||dd}| d||dd}|d||dd}|d||d d}|d!||d"d}|}qXd#| } ||krd$||f}nd%|||f}|rg}|D]} || j q|d&d'|}d#}zt}Wntt fyd}Yn0|r2t|}|r2|d(kr2||d)}t}|rN||pJd#}|j}|ond*|}|d+d,| d-|S).Ncs eZdZddZfddZdS)z(HTMLDoc.docclass..HorizontalRulecSs d|_dSrZneedonerrrrrdsz1HTMLDoc.docclass..HorizontalRule.__init__cs|jrdd|_dS)Nz
rIrprpushrrmaybefsz.HTMLDoc.docclass..HorizontalRule.maybeNr%rrrrsrrqrrHorizontalRulecsrurJz&
Method resolution order:
z
%s

c st||\}}|r||D]b\}}}}zt|}Wn$tyd||Yn0||dq&|S)NrHrsrsr Exceptionrrmsgrrpokr rhomeclsrmrBrAhrmdictrfr;rrr5rrspillvs   zHTMLDoc.docclass..spillcsJt||\}}|rF||D]\}}}}||q&|Sr?rsrsrryr~rfrrr5rrspilldescriptorssz*HTMLDoc.docclass..spilldescriptorsc st||\}}|r||D]r\}}}}t||}t|} | s`d|n0t|j} d| } d|| fdq&|S)Nz
%s
z
%sz
%s%s
rH)rsrsrrrGrIr)) rzrrpr{r rr|rmr7r8r}rr spilldatas  z#HTMLDoc.docclass..spilldatacs,g|]$\}}}}t|dr||||fqS)r4rrr rrrmrTrrrs  z$HTMLDoc.docclass..r-rcs |duSNrJrrY thisclassrrrrz"HTMLDoc.docclass.. defined hereinherited from %sz:
z Methods %scSs |ddkSNrImethodrrYrrrrrzClass methods %scSs |ddkSNrIz class methodrrYrrrrrzStatic methods %scSs |ddkSNrIz static methodrrYrrrrrzReadonly properties %scSs |ddkSNrIrrrYrrrrrzData descriptors %scSs |ddkSNrIrrrYrrrrrzData and other attributes %scSs |ddkSNrIrkrrYrrrrrrBz*class %sz/%s = class %s(%s)rJ()r&z%s
 
z#000000z#ffc8d8rY)r%rfrrrgetmrorLrsr3rrrrxr@popleftrsbuiltinsr;rrM signature ValueErrorr>r rGrIr)r$)r5r;r rfrArBrgrealnamerQrrumror7rrrrrlrr|rmanchor inheritedtagrrRdeclrargspecr8r) rBrAr~rrfr;rrr5rrrXs                   zHTMLDoc.docclasscCs|d||SN=)r0rr rrr formatvalueszHTMLDoc.formatvaluec Cs|j}|p |}|r|jpdd|} d} d} t|r|jj} |rZ| |urd|| |} n0|jdurzd||jj|} nd|| |} t|st|rd} nd} ||krd| |f}nD|rt||g|urd |jd||f}d } n|}d | ||f}d}t |rjzt |}Wnt t fy<d}Yn0|rjt |}|d krjd |}|d d}|std}| |||| o|d| }| rd|S|t||j|||}|od|}d||fSdS)NrBrr from  method of %s instance unbound %s methodasync z$%sz%srIz)%s = %sz$%s lambda r(...)z'%sz
%s
z
%s
z
%s
%s
)r%rcr&r'r3riscoroutinefunctionisasyncgenfunctiongetattr_staticrSrrr@r>r r0rIrGr))r5r;r rfrArBrkrjrrnoteskipdocsimclassasyncqualifierrZreallinkrrrr8rrrrsl       zHTMLDoc.docroutinecCsNg}|j}|r|d||t||j}|r<|d||dd|S)Nz!
%s
z
%s
rvrB)rrIrGr)rMr5r;r rfrjrrrr8rrrr?s  zHTMLDoc.docdatacGs|r d|pd}|||S)Nz%s = rBr)r5r;r rfrgZlhsrrrrOszHTMLDoc.docothercCsg}|duri}t|gD]<\}}}tdd|Dr:q||d|||vfd||<q||||j}||dd|S)Ncss*|]"}dt|kodknVqdS)iiN)ordrZchrrr Yrz HTMLDoc.index..rBrIrWr\)rcrdanyrrr/r8r%)r5rr6rlrmr rnrrrrindexTs  z HTMLDoc.index)rB)r"rBNr)r)N)NN)NNN)NN)N)r%rrr_repr_instancerr rr!r$r%r)r/r0r2r3r5r8r9rIrLrrrrrrrrrrrrr.s<   +  y# A  rc@s0eZdZddZddZddZeZddZd S) TextReprcCs,t|d|_|_d|_d|_|_dSrrrrrrrgs  zTextRepr.__init__cCsTtt|dr@ddt|j}t||r@t||||Sttt||j Sr ) rr=rMr%rrr^rarrr rrrrms  zTextRepr.repr1cCsHt||j}t|}d|vrDdt|ddvrDd|d||dS|S)NrrrBrr)r^rrrXrrrrrts  zTextRepr.repr_stringcCs4zttt||jWSd|jjYS0dSr)r^rarrr'r%rrrrrszTextRepr.repr_instanceN)r%rrrrrrrrrrrres  rc@szeZdZeZejZddZdddZddZdd d Z dd d Z dddZ ddZ dddZ dddZeZdddZdS)TextDoccCsddd|DS)NrBcss|]}|d|VqdS)NrrrrrrrzTextDoc.bold..)rMrrrrboldsz TextDoc.bold cs>|sdSfdd|dD}|r4|d|d<d|S)NrBcsg|] }|qSrrrrprefixrrrrz"TextDoc.indent..rHr)rrErM)r5rVrrNrrrindentszTextDoc.indentcCs$||}||d|dS)NrHr&)rrEr)r5rrZclean_contentsrrrr$szTextDoc.sectionNrBc sd}|D]}t|tdurr|\}}||t|}|rh||fkrhfdd|D} |dd| }|d}qt|tgur|||||d}q|S) NrBrc3s|]}t|VqdSr?rQ)rrPrPrrrrz%TextDoc.formattree..rrJrHr)r=rQrMrL) r5rMrPrNrrFrOrPrQrRrrrrLs  zTextDoc.formattreec Cs"|j}tt|\}}|d||o(d|}t|dd}||}|dur`||d|d}|rt||d|}g} t|tjD]<\} } |dust | p||urt | ||r| | | fqg} t|tj D]F\} } |dust | st | |urt | ||r| | | fqg} t|tD]&\} } t | ||r.| | | fq.g}t}t|drt|jD]6\}}}|||r| |dn | |qx|||d d |}g}t|tjD]0\} } | j|d r| |vr| | q|r6|||d d |}| rd d| D}|t|d|g}| D]\} } | || | |qd||dd |}| rg}| D]\} } | || | |q||dd |}| r&g}| D]"\} } | |j| | |ddq||dd |}t|drt|j}|dddkrp|dddkrp|dd}||d|}t|dr||dt|j }t|dr||dt|j!}t|dr||d t|j"}zt#|}Wnt$y d!}Yn0||d"|}|S)#NNAME - r]zMODULE 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 DESCRIPTIONrv (package)zPACKAGE CONTENTSrHrZ SUBMODULEScSsg|] \}}|qSrrr[rrrrrz%TextDoc.docmodule..rICLASSES FUNCTIONSF)r\ZDATAr~rTrUrrVVERSIONryZDATErxZAUTHORruZCREDITSrFILE)%r%rOrGr$rrrrerrbrrrSr)rUsetrrcrdrvaddrrMrRrrLrerrr>r~rKryrxrurr@)r5r;r rfZsynopdescrFrrrBrlrmrArkrlZ modpkgs_namesrmrPrnZ submodulesrorrjrrrrrs                 $    zTextDoc.docmodulec sJj}|p |}j}jfdd}||kr:d|}n|d|}|rlt||} |dd| }g} | jzt} Wnt t fyd} Yn0| rt | } | r| dkrȈ|| dt } | r| dt t}t|d kr(d |D]}d ||qd td dtDt jd}t|}d}|rd|d|D]}d |ql||krdt ||dd Gfddd}|fdd}fdd}fdd}fddtD}|r|r(|n |dd t|fdd \}}tjurltjurl|}qn ur|d!}nd"tj}t||d#||d$d }|d%||d&d }|d'||d(d }|d)||d*d }|d+||d,d }|d-||d.d }|}qd| } | s.|dS|d| d/dS)0NcSs t||Sr?r)rPrrrrmakenamesz"TextDoc.docclass..makenameclass z = class rrJrrHrJzMethod resolution order:rrBcss.|]&}|jds|jdkrt|jVqdS)rrN)r%rrr>)rrrrrr?sz#TextDoc.docclass..rrzBuilt-in subclasses:z ... and z other subclassescs eZdZddZfddZdS)z(TextDoc.docclass..HorizontalRulecSs d|_dSrrprrrrrQsz1TextDoc.docclass..HorizontalRule.__init__cs|jrdd|_dS)NzF----------------------------------------------------------------------rIrprrqrrrsSsz.TextDoc.docclass..HorizontalRule.maybeNrtrrqrrruPsruc st||\}}|r|||D]T\}}}}zt|}Wn$tyd||Yq&0||q&|Sr?rwryr~rfr;rrr5rrrYs zTextDoc.docclass..spillcsJt||\}}|rF||D]\}}}}||q&|Sr?rryrrrrjsz*TextDoc.docclass..spilldescriptorsc st||\}}|r||D]\\}}}}t|}zt|} Wntyd|j|} Yn0j| |d|ddq&|S)Nr)r\r8rH)rsrsrGrr3__dict__r) rzrrpr{r rr|rmr8r4rrrrss z#TextDoc.docclass..spilldatacs,g|]$\}}}}t|dr||||fqSrrrrTrrrs  z$TextDoc.docclass..rcs |duSrrrYrrrrrz"TextDoc.docclass..rrz Methods %s: cSs |ddkSrrrYrrrrrzClass methods %s: cSs |ddkSrrrYrrrrrzStatic methods %s: cSs |ddkSrrrYrrrrrzReadonly properties %s: cSs |ddkSrrrYrrrrrzData descriptors %s: cSs |ddkSrrrYrrrrrzData and other attributes %s: cSs |ddkSrrrYrrrrrz | )r%rfrrmaprMrrrrr@r>rGrrrLsortedr=__subclasses__rrrrsrr;rQrrrE)r5r;r rfrgrrQrrrRrrrr8rr7Z subclassesZno_of_subclassesZMAX_SUBCLASSES_TO_DISPLAYZ subclassnamerurrrrrrr)r~rfr;rrr5rrrs                   zTextDoc.docclasscCsd||Srrr rrrrszTextDoc.formatvaluec Cs|j}|p |}d}d}t|rn|jj}|rB||urndt||}n,|jdur`dt|jj|}ndt||}t|st|rd} nd} ||kr||} n,|rt ||g|urd}||d|} d} t |r:zt |} Wnt t fyd} Yn0| r:t| } |d kr:||d } | dd } | sDd } | | | |} |rb| d St|pnd}| d |o||d SdS)NrBrrrrrrI = rz lambda rrrH)r%rcr&r'rQrrrrrrSrrr@r>rGrrE)r5r;r rfrjrrrrrrrrrr8rrrrsT       zTextDoc.docroutinecCsTg}|j}|r$||||dt|p.d}|rJ||||dd|S)NrHrB)rrrGrrMrrrrrs zTextDoc.docdatac Cs||}|rF|r|dpd|}|t|} | dkrF|d| d}|rX||dpZd|}|slt|}|r|d|t|d7}|S)NrrBrrZrH)rrLrrGrr>) r5r;r rfrNr\r8rrZchoprrrrs  zTextDoc.docother)r)NrB)NN)NN)NNN)NNN)NNNNN)r%rrrrrrrr$rLrrrrrrrrrrrrs   e  7 rc@seZdZddZdS) _PlainTextDoccCs|Sr?rrrrrr sz_PlainTextDoc.boldN)r%rrrrrrrrsrcCstat|dSr?)getpagerpagerr`rrrrsrc sZttjdstSttjds tStjr4tjs8tStjdpNtjdrtj dkrjfddStjddvrfd dSfd dStjddvrtStj dkrd dSttd rt d dkrddSddl }| \}}t |zRttd r,t d|dkr,ddWt|StWt|SWt|n t|0dS)NisattyZMANPAGERZPAGERwin32cstt|Sr? tempfilepagerplainr`Z use_pagerrrrrzgetpager..ZTERM)ZdumbZemacscstt|Sr?) pipepagerrr`rrrr!rcs t|Sr?rr`rrrr#rcSstt|dS)Nzmore /dev/nullrcSs t|dS)NZlessrr`rrrr)rz more "%s"cSs t|dS)NZmorerr`rrrr0r)rrstdin plainpagerstdoutrr rrplatformrtempfilemkstempcloseunlinkttypager)rfdrrrrrs>            rcCstdd|S)Nz.rB)rCrDr`rrrr6src Csddl}|j|d|jd}zVtj|jdd2}z||WntyNYn0Wdn1sd0YWntyYn0z| WqWqtyYq0qdS)NrT)shellrbackslashreplace)errors) subprocessPopenPIPEio TextIOWrapperrwriteKeyboardInterruptrwait)rVcmdrprocpiperrrr:s (  rc Csddl}|}tj|d}t|ddtjdkr.cSstjddddS)NrrI)rrrrrrrrmrLINESrIz -- more --)qQz ) rH)bB)rrrttyrrfilenoZ tcgetattrZ setcbreakrr3rUnsupportedOperationr@r rrrrrrMflushZ tcsetattrZ TCSAFLUSH) rVrNrroldZgetcharhrZincrPrrrrbsN              & rcCstjtt|dSr?)rrrrrr`rrrrsrcCst|r>|jtjvr d|jSt|dr4d|jSd|jSt|rRd|jSt|rtd|jj |jj|jfSt |rd|jj |jj|jfSt |rd|jSt |rd |jSt |rd |jSt|jS) Nzbuilt-in module rvzpackage zmodule zbuilt-in function zgetset descriptor %s.%s.%szmember descriptor %s.%s.%srz function zmethod )rrRr%rrrr)Zisgetsetdescriptorr.rr/rr(r$r=)thingrrrdescribes2                  rc Csdd|dD}d\}}|t|kr\td|d|d|}|r\||d}}qq\q|rf|}nt}||dD]*}zt||}WqvtyYdS0qv|S)NcSsg|] }|r|qSrr)rrrrrrrzlocate..rrrI)rrLrrMrrr3)r rrhrnZ nextmoduler;rrrrlocates   rcCsVt|tr0t||}|dur(td|||fSt|dd}|t|trL|ndfSdS)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*r>rrr)rrr;r rrrresolves   r Python Library Documentation: %scCs|dur t}t||\}}t|}t|}|rTd|vrT|d|d|d7}n|rn||urn|d|j7}t|st|st |st |st |st |dr|j }nt|}|d7}||d|||S)Nrz in z in module __origin__z objectr&)rVrrrrbrfindr%rRrrSr-rArrr=r)rrrZrendererr;r rrrrr render_docs.     rc Cshz2|durtt|||n|t|||tWn0ttfyb}zt|WYd}~n d}~00dSr?)rrr plaintextrrprint)rrroutputrmrrrr8s r8c Csztt||\}}tt|t||}t|dddd}||Wdn1sZ0Ytd|dWn0tt fy}zt|WYd}~n d}~00dS)Nrrr)rZwrote) rhtmlrrrrrrrr)rrr;r rrrmrrrwritedocs(r!rBcCs2|dur i}t|g|D]\}}}t|qdSr?)rc walk_packagesr!)rpkgpathdonermrPrnrrr writedocss  r%cJ@s.eZdZdddddddddddd d d d d ddddddddddddddddddddd$Zd d!d"DZd#d$d%d&geRd'd(d)d*d+d,d-Zd.d/d0d1d2d3d4d5d6d7d8d9d9d:d:d;ZeD]:\ZZ e D],Z e e eZ ee vre d<eZ e ee <qqd=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdLdMdNdOdPdQddRdSdSdTdUdVdWdXdYdZd[d\d]d^d_d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{dd d|d}d~ddIZ dddZ eddZeddZddZeZefddZddZddZddZddZdddZddZddZddZdddZdddZddZdddZ dS)HelperrBBOOLEANwith)assertrB)asyncrB)awaitrB)break while for)classzCLASSES SPECIALMETHODS)continuer-)functionrB)del BASICMETHODSif)elser-try)forzbreak continue whileimport)globalznonlocal NAMESPACES)r3 TRUTHVALUE)r7MODULES)inSEQUENCEMETHODS COMPARISON)lambdar)nonlocalzglobal NAMESPACES)passrB)raise EXCEPTIONS)returnr)r5rB)whilezbreak continue if TRUTHVALUE)r(z CONTEXTMANAGERS EXCEPTIONS yield)yieldrB)$FalseNoneTrue__peg_parser__andasr)r*r+r,r.r/defr1elifr4exceptfinallyr6fromr8r3r7r;isr>r?notorr@rArCr5rDr(rEcCsg|]}dD] }||q qS)'r:r)rprrrrrArzHelper.)r frurUz'''r:r)+r***rz//%<<>>r|^~rr<=>===!=<>)rrrbrcrdrerf)rra) z+=z-=z*=z/=z%=z&=z|=z^=z<<=z>>=z**=z//=)r]r^rr_r`ra)jJ)STRINGS OPERATORSr=UNARYAUGMENTEDASSIGNMENTBITWISECOMPLEXzOPERATORS FORMATTINGPOWERzTUPLES LISTS FUNCTIONSz ATTRIBUTES FLOAT MODULES OBJECTSELLIPSISzSLICINGS DICTIONARYLITERALSz def classri PRIVATENAMESzPRIVATENAMES SPECIALMETHODSZ BACKQUOTESzTUPLES FUNCTIONS CALLSzLISTS SUBSCRIPTS SLICINGS)r\r[,rrZ:@rrr`r;rK[]r)typeszRSTRINGS UNICODE NUMBERS SEQUENCES MAPPINGS FUNCTIONS CLASSES MODULES FILES inspect)stringsz4str UNICODE SEQUENCES STRINGMETHODS FORMATTING TYPES)zstring-methodszSTRINGS FORMATTING)Z formatstringsrj)ryz:encodings unicode SEQUENCES STRINGMETHODS FORMATTING TYPES)ZnumberszINTEGER FLOAT COMPLEX TYPES)Zintegersz int range)Zfloatingz float math)Z imaginaryz complex cmath)Ztypesseqz$STRINGMETHODS FORMATTING range LISTS DICTIONARIES)Ztypesfunctionsz def TYPES)Z typesmethodszclass def CLASSES TYPES)zbltin-code-objectszcompile FUNCTIONS TYPES)zbltin-type-objectsz types TYPESTYPES)zbltin-null-objectrB)zbltin-ellipsis-objectSLICINGS)Z specialattrsrB)rxz!class SPECIALMETHODS PRIVATENAMES)Z typesmodulesr7)zoperator-summaryzlambda or and not in is BOOLEAN COMPARISON BITWISE SHIFTING BINARY FORMATTING POWER UNARY ATTRIBUTES SUBSCRIPTS SLICINGS CALLS TUPLES LISTS DICTIONARIES EXPRESSIONS)Zobjectsr{)Z specialnameszbBASICMETHODS ATTRIBUTEMETHODS CALLABLEMETHODS SEQUENCEMETHODS MAPPINGMETHODS NUMBERMETHODS CLASSES)Z customizationzhash repr str SPECIALMETHODS)zattribute-accesszATTRIBUTES SPECIALMETHODS)zcallable-typeszCALLS SPECIALMETHODS)sequence-typesz(SEQUENCES SEQUENCEMETHODS SPECIALMETHODS)r~zMAPPINGS SPECIALMETHODS)z numeric-typesz*NUMBERS AUGMENTEDASSIGNMENT SPECIALMETHODS)Z execmodelz%NAMESPACES DYNAMICFEATURES EXCEPTIONS)Znamingz3global nonlocal ASSIGNMENT DELETION DYNAMICFEATURES)zdynamic-featuresrB NAMESPACES)rztry except finally raise)Z conversionsrB)Z identifierszkeywords SPECIALIDENTIFIERS)z id-classesrB)zatom-identifiersrB)z atom-literalsz=STRINGS NUMBERS TUPLELITERALS LISTLITERALS DICTIONARYLITERALS SEQUENCES)Z exprlistszTUPLES LITERALS)ztypesseq-mutable LISTLITERALS)ZlistszLISTS LITERALS)Z typesmappingDICTIONARYLITERALS)r0zDICTIONARIES LITERALS)zattribute-referencesz(getattr hasattr setattr ATTRIBUTEMETHODS)Z subscriptionsr<)Zslicingsr<)Zcallsr})Zpowerr})Zunaryr})binaryr})Zshiftingr})Zbitwiser})Z comparisonszEXPRESSIONS BASICMETHODS)ZbooleanszEXPRESSIONS TRUTHVALUEr))Z assignmentrl)Z augassign NUMBERMETHODSr1rC)Zcompoundzfor while break continue)truthz if while and or not BASICMETHODS)ZdebuggerZpdb)zcontext-managersr()Ir{riZ STRINGMETHODSZ FORMATTINGUNICODEZNUMBERSZINTEGERFLOATrnrZMAPPINGSrZMETHODSZ CODEOBJECTSZ TYPEOBJECTSZ FRAMEOBJECTSZ TRACEBACKSNONErpZSPECIALATTRIBUTESrr:ZPACKAGESr}rjZ PRECEDENCEZOBJECTSZSPECIALMETHODSr2ZATTRIBUTEMETHODSZCALLABLEMETHODSr<ZMAPPINGMETHODSrZ EXECUTIONrZDYNAMICFEATURESZSCOPINGZFRAMESrBZ CONVERSIONSZ IDENTIFIERSZSPECIALIDENTIFIERSrqZLITERALSZTUPLESZ TUPLELITERALSZLISTSrrzrZ ATTRIBUTESZ SUBSCRIPTSr|ZCALLSrorkZBINARYZSHIFTINGrmr=r'Z ASSERTIONZ ASSIGNMENTrlZDELETIONZ RETURNINGZ IMPORTINGZ CONDITIONALZLOOPINGr9Z DEBUGGINGZCONTEXTMANAGERSNcCs||_||_dSr?)_input_output)r5inputrrrrrszHelper.__init__cCs |jp tjSr?)rrrrrrrrsz Helper.inputcCs |jp tjSr?)rrrrrrrrsz Helper.outputcCs2tdddkr|dSd|jj|jjfS)NrIrY?rBz<%s.%s instance>)rstackr'rrrrrr__repr__s zHelper.__repr__cCs6||jur||n|||jddS)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. )_GoInteractiverintrointeractrrr5Zrequestrrr__call__s   zHelper.__call__c Cs|jdz|d}|s WqWnttfy<YqYn0|}t|dkr|d|dkrndvrnn |d|ddvr|dd}|dvrq|d kr|q | |q dS) NrHzhelp> rJrrrTrI)rquitr) rrgetlinerEOFErrorrKrLrrrrrrrrs    ,  zHelper.interactcCs8|jtjurt|S|j||j|jSdSr?)rrrrrrr)r5promptrrrrs    zHelper.getlinecCs<t|tdur|}|dkr,|n|dkr>|n|dkrP|n|dkrb|n|dddkr||dn||jvr||nj|d vrt t |d nR||j vr| |n<||j vr| |n&|rt |d |jd nt td |jd n$t|tr|nt |d |jd |jd dS) NrBkeywordssymbolstopicsrzmodules rI)rHrFrGz Help on %s:)rrH)r=rK listkeywords listsymbols listtopics listmodulesrr showsymbolr8evalr showtopicrrr>r*r&rrrrrrrs$z Helper.helpcCs$|jddtjdddS)Na Welcome to Python {0}'s help utility! If this is your first time using Python, you should definitely check out the tutorial on the Internet at https://docs.python.org/{0}/tutorial/. Enter the name of any module, keyword, or topic to get help on writing Python programs and using Python modules. To 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". z%d.%drJ)rrr,rrrrrrrs z Helper.introrPc Cstt|}||}t||d|}t|D]v}t|D]\}|||}|t|kr<|j||||dkr<|jdd|dt||q<|jdq0dS)NrIrrH)r+rrLr*rr) r5itemscolumnsr#Zcolwr-rowr.rrrrr+!s      &z Helper.listcCs |jd||jdS)NzN Here is a list of the Python keywords. Enter any keyword to get more help. )rrr+rrirrrrr.s zHelper.listkeywordscCs |jd||jdS)Nzx Here is a list of the punctuation symbols which Python assigns special meaning to. Enter any symbol to get more help. )rrr+rrirrrrr5s zHelper.listsymbolscCs |jd||jdS)NzN Here is a list of available topics. Enter any topic name to get more help. )rrr+rrirrrrr=s zHelper.listtopicsc Cs,z ddl}Wn ty,|jdYdS0|j||j|}|s`|jdt|dSt|tdur|| ||S|\}}z|jj|}Wn(t y|jdt|YdS0| d}|r|pdd|}|r ddl }dd |d} || d } |d d | 7}t|dS) Nrt Sorry, topic and keyword documentation is not available because the module "pydoc_data.topics" could not be found. zno documentation found for %s rBrHrRelated help topics: rJHz %s )pydoc_data.topicsrrrrrrrr=rKeyErrorrKtextwraprMrwrapr) r5topic more_xrefs pydoc_datatargetlabelxrefsr8rrVZ wrapped_textrrrrDs4       zHelper.showtopiccCsz ddl}Wnty YdS0|j||j|}|sDtdt|trZ|||S|\}}|jj|}|r|pxdd|}||fS)Nr)rrBzcould not find topicrBr) rrrrrrr*r> _gettopic)r5rrrrrrr8rrrrds      zHelper._gettopiccCs*|j|}|d\}}}|||dS)Nr)r partitionr)r5symbolrrrrrrrrs zHelper.showsymbolcsv|r |jd|t|nR|jdi}|fddfdd}tj|d|||jddS) 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... cSs>|r$|dddkr$|ddd}|ddkr:d||<dS)N .__init__rrrrI)find)r rPrrrrrcallbacksz$Helper.listmodules..callbackcsd|ddSr?rrrrronerrorsz#Helper.listmodules..onerrorrz Enter any module name to get more help. Or, type "modules spam" to search for modules whose name or summary contain the string "spam". )rrr,apropos ModuleScannerrunr+ri)r5rlrrrrrrs     zHelper.listmodules)NN)rr)rB)rB)rB)!r%rrrZ _strprefixesZ_symbols_inverserrrZsymbols_rrrrr+rrrr;rrrrrrr+rrrrrrrrrrrr& sD(    W       r&c@seZdZdddZdS)rNc Cs|r |}d|_i}tjD]p}|dkrd||<|durF|d|dqt|jpRd}|dd}|d|}||dkr|d||qtj |dD]V\} }} |jrq|dur|d|dqzt | |} Wnt yYqYn0| j } t | d rjz| |} Wn&ty6|r.||YqYn0tt| pJd}t | d rd| |}nd}n^ztj| }Wn&ty|r||YqYn0|jr|jdnd}t|d d}|d|}||dkr||||q|r|dS) NF__main__rIrBrHrrr get_source get_filenamerz)rrrrrr:rrrcr" _get_specrrrrrxrrStringIOrrrrrrr)r5rrlZ completerrseenrPr rrmrnrrsourcer rrrrrs^            zModuleScanner.run)NNN)r%rrrrrrrrsrcCsXdd}dd}t,tdtj|||dWdn1sJ0YdS)NcSs6|dddkr |ddd}t||o.d|dSNrrrz- )rr rPrrrrrszapropos..callbackcSsdSr?rrrrrrszapropos..onerrorignorer)warningscatch_warningsfilterwarningsrr)rlrrrrrrs   rcsddlddlddlddlGdddjjGfdddjjGfdddj}||||}||j s|j st dq~|S) Nrc@seZdZddZddZdS)z!_start_server..DocHandlercSsX|jdrd}nd}|d|dd|||j||j|ddS)Nz.csstext/css text/htmlz Content-Typez%s; charset=UTF-8r) r rZ send_responseZ send_headerZ end_headersZwfiler urlhandlerr)r5 content_typerrrdo_GET, s   z(_start_server..DocHandler.do_GETcWsdSr?r)r5rrrr log_message< sz-_start_server..DocHandler.log_messageN)r%rrrrrrrr DocHandler* srcs(eZdZddZfddZddZdS)z _start_server..DocServercSs6||_|j|f|_||_|j||j|jd|_dSNF)hostaddressrr7rhandlerr)r5rportrrrrrB s  z)_start_server..DocServer.__init__cs>|js2|jgggd\}}}|r|q|dSrd)rselectsocketrZhandle_requestZ server_close)r5Zrdwrexrrrserve_until_quitI s  z1_start_server..DocServer.serve_until_quitcSs |j||jr||dSr?)r7server_activaterrrrrrP s z0_start_server..DocServer.server_activateN)r%rrrrrrrrr DocServer@ s rcs:eZdZfddZfddZddZddZd S) z#_start_server..ServerThreadcs2||_||_t||_j|d|_d|_dSr)rrr@rThreadrservingerror)r5rrr) threadingrrrW s   z,_start_server..ServerThread.__init__c szzJjj__jj_t|j_|j |j |j }||_ | Wn*tyt}z||_WYd}~n d}~00dSr?)server HTTPServerr7rrZMessageZ MessageClass staticmethodrrrready docserverrrxr)r5Zdocsvre)rremailhttprrr_ s    z'_start_server..ServerThread.runcSs,d|_|j|_|j|_d|j|jf|_dS)NTz http://%s:%d/)rrZ server_portrr7)r5rrrrrl sz)_start_server..ServerThread.readycSs&d|j_|d|_d|_d|_dS)NTF)rrrMrr7rrrrstopr s z(_start_server..ServerThread.stopN)r%rrrrrrr)rrrrrrr ServerThreadU s  rg{Gz?) Z http.serverZ email.messagerrrZBaseHTTPRequestHandlerrrrFrrtimesleep)rhostnamerrthreadr)rrrrrrr _start_servers8'   rrcs6Gfdddt}|fddfddfddfd d fd d fd dfddfddfdd}|dr|dd}|dkrtjtjt}tj||}t|}d| WdS1s0Yn|dkr"||St d||fdS)NcseZdZfddZdS)z_url_handler.._HTMLDoccsd}d|}d|||fS)Nzpydoc_data/_pydoc.cssz1a  Pydoc: %s %s%s
%s
r)r5rrcss_pathZcss_link html_navbarrrr s z#_url_handler.._HTMLDoc.pageN)r%rrrrrrr_HTMLDoc srcs>dttdtf}d|tjddfS)Nz %s [%s, %s]raZ
Python %s
%s
T)Zterse)r rZpython_versionZ python_buildZpython_compiler)rjr rrr s  z!_url_handler..html_navbarcsdd}ddd}ddtjD}||}|dd dd |g}i}tjD]}|||qT|d d d |fS)NcSs d||fSr4rr rrr bltinlink sz3_url_handler..html_index..bltinlinkz7Index of ModulesrWrXcSsg|]}|dkr|qS)rr)rr rrrr sz4_url_handler..html_index..z

zBuilt-in Modulesr\z|

pydoc by Ka-Ping Yee<ping@lfw.org>zIndex of ModulesrB) r!rrr/r%r rrrM)rr!namesrrrrrr html_index s"  z _url_handler..html_indexc sgfdd}t4tddd}tj|||dWdn1sR0Ydd}g}d d d }D]\}}||||qz|d |d d d|}d|fS)Ncs:|dddkr |ddd}||o0d|fdSrrnrZ search_resultrrr sz3_url_handler..html_search..callbackrcSsdSr?rrrrrr sz2_url_handler..html_search..onerrorrcSs d||fSr4rrrrrr sz4_url_handler..html_search..bltinlinkz5Search ResultsrWrXzkey = %sr\
zSearch Results) rrrrrr!rr%rM) rlrrrrr!r rrrrr html_search s$   0 z!_url_handler..html_searchcsLdd}ddd}ttj}||}|ddd|}d|fS)NcSs d||fSNz%srrrrrr sz4_url_handler..html_topics..bltinlink,INDEXrWrXZTopicsr\)r!rr&rrir/r%)rr!rrrrr html_topics s z!_url_handler..html_topicscsLddd}ttj}dd}||}|ddd|}d|fS)NrrWrXcSs d||fSrrrrrrr sz6_url_handler..html_keywords..bltinlinkZKeywordsr\)r!rr&rrir/r%)r!rrrrrr html_keywords s z#_url_handler..html_keywordscst}t||}||\}}||jvr0d}nd}d|dd}d|}|dd|}|rt| }dd } ||} d dd|}d ||fd |||ffS) NZKEYWORDZTOPICrSrWrXz

%s
r\cSs d||fSrrrrrrr" sz7_url_handler..html_topicpage..bltinlinkrz%s %srB) rrr&rrr!rIr%rrr/r$rM)rbufZhtmlhelprrrr!rrrrhtml_topicpage s,     z$_url_handler..html_topicpagecs@t|dd}|dur$|dkr$tdt|}||}||fS)NrI)rrGzcould not find object)rrrr)r7r4rcontentrrr html_getobj+ s   z!_url_handler..html_getobjcsPddd}dfddtt||D}||dd|}d||fS) Nz,ErrorrWrXrc3s|]}|VqdSr?)r rrrrr7 rz3_url_handler..html_error..z#bb0000z Error - %s)r!rMrr=r%)r7rr!rrrr html_error3 s  z _url_handler..html_errorc sp|}|dr|dd}z|dvr2\}}n|dkrF\}}n|dkrZ\}}nd|vr |d\}}}|dkr|\}}n|dkrz|\}}Wnty|\}}Yn0nZ|d kr|dvr\}}n2z|\}}Wn ty|\}}Yn0ntd n |\}}Wn4tyb}z||\}}WYd}~n d}~00||S) Nr)rBrrrrz search?keyz topic?keyzget?keyz bad pydoc url)rrrrxr)r7Z complete_urlrroprr)r r r rrrrrrr get_html_page= s>          $z#_url_handler..get_html_pagerrIrrBrz"unknown content type %r for url %s) rrr r dirnamerealpathrzrMr readlinesr@)r7rrr Z path_hererfpr) r r r rrrrrrr _url_handler s*         (    0 rT localhost) open_browserrc Csddl}tt||}|jr(t|jdS|jrd}|rB||jzzZtd|jt||jrtd}| }|dkr|qqZ|dkr||jqZt|qZWnt t fytYn0W|jr| tdn|jr| td0dS)Nrz"Server commands: [b]rowser, [q]uitzServer ready atzserver> rr zServer stopped) webbrowserrrrrrrr7rrrrr)rrrrZ serverthreadZserver_help_msgrrrrbrowser s8     rcCst|to|tjdkSr)r*r>rr sep)rrrrrispath srcCsvd|vstj|vst|vr"dStjt}tj|}|}||vrbtj||sb||| dt|S)NrBr) r curdirgetcwdr rrzcopysamefileremoveinsert)Z given_pathZargv0Z stdlib_dirZ script_dir revised_pathrrr_get_revised_path s    r cCs,ttjtjd}|dur(|tjdd<dSr)r rr argv)rrrr_adjust_cli_sys_path sr"c Csddl}Gdddt}tzx|tjddd\}}d}d}d}d}d}|D]\\} } | dkrld }d }| d krt| WdS| d krd }| }| d krd }| d krTd }| }qT|rt|||dWdS|s||D]} t| rtj | st d| qz`t| r&tj | r&t | } |rXt| rNtj | rNt| nt| n t| Wqty} zt | WYd} ~ qd} ~ 00qWnL|j|fytj tj tjdd} t dj| tjdYn0dS)Nrc@s eZdZdS)zcli..BadUsageN)r%rrrrrrBadUsage rr#rIzbk:n:p:wFrz-bTz-kz-pz-wz-n)rrzfile %r does not existapydoc - the Python documentation tool {cmd} ... Show text documentation on something. 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 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 Search for a keyword in the synopsis lines of all available modules. {cmd} -n Start an HTTP server with the given hostname (default: localhost). {cmd} -p Start an HTTP server on the given port on the local machine. Port number 0 can be used to get an arbitrary unused port. {cmd} -b Start an HTTP server on an arbitrary unused port and open a Web browser to interactively browse documentation. This option can be used in combination with -n and/or -p. {cmd} -w ... Write out the HTML documentation for a module to a file in the current directory. If contains a '{sep}', it is treated as a filename; if it names a directory, documentation is written for all the contents. )rr)getoptrxr"rr!rrrr r existsrrrr r%r!rrrrrr,r)r$r#ZoptsrwritingZ start_serverrrroptvalargrmrrrrcli s`    $r*r)NN)r)r)rrN)rrN)r)rBN)r)r)]r]rxryrurZimportlib._bootstraprZimportlib._bootstrap_externalZimportlib.machineryimportlib.utilrrr rcrrCrrrr urllib.parser^r collectionsrreprlibr tracebackrrr!r9r2rArGrOrQrUrXr^r< IGNORECASEr_rarcrhrsrrrrrrrxrrrrrrrrrrrrrrrrrrrrVrr rrr8r!r%r&rrrrrrrr r"r*r%rrrr(s      3      ' 0:*; " ,    = n% U