o ?Og#@s4 dgZdZdZdZddlZddlZddlZddlZddl Zddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlmZddlmZddlmZd d Zd d Zd dZ ddZ!ddZ"ddZ#ddZ$ddZ%ddZ&ddZ'ddZ(dd Z)e*d!ej+Z,d"d#Z-d$d%Z.d&d'Z/d(d)Z0dd*d+Z1d,d-Z2d.d/Z3d0d1Z4d2d3Z5ifd4d5Z6Gd6d7d7e7Z8d8d9Z9difd:d;Z:Gdd?d?eZGdDdEdEe;Z?GdFdGdGe?Z@dHdIaAdJdKZBdLdMZCdNdOZDdPdQZEdRdSZFdTdUZGdVdWZHdXdYZIddZd[ZJe?ZKe@ZLe=ZMdd\d]ZN  dd_d`ZO  ddadbZPddcddZQddfdgZRGdhdidiZSeSZTGdjdkdkZUdldmZVdndoZWddqdrZXddsdtdudvdwZYdxdyZZdzd{Z[d|d}Z\d~dZ]e^dkre]dSdS)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]$}tj|pd}tj|}||vr,tj|r,||||q|SN.)syspathosabspathnormcaseisdirappend)dirsZnormdirsdirZnormdirr,/opt/alt/python310/lib64/python3.10/pydoc.pypathdirsRs    rcCst|o t|tj SN)inspectZisclass isinstancetypes GenericAliasobjectrrr_isclass^srcCsNtj|j}|dur dS|jdddD]}t||}qt|s%dS|S)Nr)rmodulesget __module__ __qualname__splitgetattrr)funcclsnamerrr _findclassas r&c Cst|r#|jj}|j}t|rtt||dd|jur|}n|j}nt|r=|j}t |}|dus:t|||urrstrr7)r8r<Ztypedocrrrr6s   r6c CsP t|}|durzt|}Wn ttfyYdSwt|ts#dSt|Sr)r6r=r7 TypeErrorrrArZcleandoc)rr<rrr_getdocs   rCcCs. t|p t|}|rtdd|pdS)Nz^ * )rCrZ getcommentsresubrstrip)rresultrrrgetdocsrIcCsh |d}t|dkr|ddfSt|dkr-|ds-|dd|ddfSdd|fS)N rrD)stripr!lenrGjoin)r<linesrrrsplitdocs  rQcCs$ |j}|j|kr|jd|}|Sr)r*r)rmodnamer%rrr classnames  rScCs> t|pt|pt|pt|pt|pt| Sr)rismoduler isroutineZisframeZ istracebackZiscoderrrrisdatasrVcGs2 |r|d||d}|dd}|s|S)NrKrrL)rOr!)textZpairsrrrreplaces  rXcCsZ t||kr+td|dd}td|d|}|d|d|t||dS|S)NrrL...)rNmax)rWmaxlenZpreZpostrrrcrams  $r]z at 0x[0-9a-f]{6,16}(>+)$cCs td|S)Nz\1) _re_stripidrFrWrrrstripids r`cCs> t|rdSt|rt|dd}t|p|du SdS)NTr+F)rr)r.r"rT)fnr9rrr_is_bound_methods   rbcCs^i}t|tjD]\}}d||<q |jD] }|t|q|D] }t||||<q#|SNrK)r getmembersrU __bases__update allmethodskeysr")clmethodskeyvaluer;rrrrgs   rgcCs: g}g}|D]}||r||q||q||fSrr)s predicateZyesZnoxrrr _split_lists  rqcCsZ |dvrdS|dr|drdS|drt|drdS|dur'||vS|d S)N> __builtins__r*r> __loader____path____file__ __cached__ __version__ __package__ __author____date__r(r __spec__ __credits__rr__rK__fieldsT) startswithendswithhasattr)r%allr8rrr visiblenames rcCsZ g}t|D]"\}}}}t|r!d}t|tr!|jdur!d}|||||fq|S)Ndata descriptorreadonly property)rclassify_class_attrsr1rr/fsetr)rresultsr%kindr$rlrrrr)s rcs\ t|dgz fddtDWn tyiYnwfdd}|j|ddS)Nrcsi|] \}}||tqSr)rN).0ir%)fieldsrr :z#sort_attributes..cs|dd|dfSNr)r)attr) field_orderrr=sz!sort_attributes..rk)r" enumeraterBsort)attrsrZkeyfuncr)rrrsort_attributes4s   rcCs< tj|rdD]}tjtj|d|rdSq dS)N)z.pyz.pyc__init__TF)r r r isfilerO)r extrrr ispackageBs rcCs|}|dddks|s#|}|sn |dddks|r|}|dddkr5|dd}|dddkrk|dd}|dddkrQ|dd}|s`|}|s\n|rU|dd }|Sd}|S) NrK#zr"""rY"""r\r)readlinerMr!)filelinerHrrrsource_synopsisJs$ rc Cs. t|j}||d\}}|dus||kr|ttjjr%tjj }n|ttjj r3tjj }nd}|durbzt |}Wn tyJYdSw| t|}Wdn1s\wYn-|d|}tjjd||d}ztj|} WnYdStjd=| jr| jdnd}||f||<|S)NNNZ__temp__loaderr)r statst_mtimerrtuple importlib machineryBYTECODE_SUFFIXESSourcelessFileLoaderEXTENSION_SUFFIXESExtensionFileLoadertokenizeopenOSErrorrutilspec_from_file_location _bootstrap_loadrrr> splitlines) filenamecachemtimeZ lastupdaterHZ loader_clsrrspecmodulerrrsynopsis[s>        rc@seZdZ ddZddZdS)ErrorDuringImportcCs||_|\|_|_|_dSr)rexcrltb)r9rexc_inforrrrszErrorDuringImport.__init__cCs|jj}d|j||jfS)Nzproblem in %s - %s: %s)rr*rrl)r9rrrr__str__szErrorDuringImport.__str__N)r*rr rrrrrrrs rc Cs tjj}t|d}||t|k}Wdn1swYtj|}tj |\}}|r;tj ||}ntj ||}tjj |||d}ztj|WSt|t)Nrbr)rr MAGIC_NUMBERrreadrNr r basenamesplitext_bootstrap_externalrSourceFileLoaderrrrrrr) r magicrZ is_bytecoderr%rrrrrr importfiles  rc s z/|r+tjvr+tjvr+fddtjD}g|D] }tj|||<tj|=qt}Wn8t\}}}} tjvrKttjj| |turUt|j| t |t rb|j krbYdStt dddD]} zt || }WqrtyYdSw|S)Ncsg|] }|dr|qS)r)r)rmr rr rzsafeimport..rrK)rrbuiltin_module_names __import__rrru SyntaxErrorr issubclass ImportErrorr%r!r"r7) r forceloadrZsubsrkrrrlrinfopartrrr safeimports,     rc@sfeZdZejddejddZd ddZ d ddZ e Z Z Z ZZZed fd d ZdS) Doc PYTHONDOCSz%https://docs.python.org/%d.%d/libraryNrLcGs ||f|}z"t|r|j|WSt|r|j|WSt|r(|j|WSWn ty2Ynwt|r=|j |S|j |Sr) rrT docmodulerdocclassrU docroutiner7r1docdatadocother)r9rr%argsrrrdocuments   z Doc.documentcGs( d|o dt|t|jf}t|)Nz.don't know how to document object%s of type %s )reprr@r*rB)r9rr%rmessagerrrfails zDoc.failZstdlibcCs zt|}Wn tyd}Ynwtjd|j}tj|}t |t trc|j dvs=| |rc| tj |dsc|j dvrc| drUd|d|j }|Stj ||j d }|Sd}|S) N (built-in)r) errno exceptionsZgcZimpmarshalposixsignalr_threadZ zipimportz site-packages)z xml.etreeztest.pydoc_mod)zhttp://zhttps://z {}/{}.html/.html)r getabsfilerBr environrrr r rr@r*rrOformatrGlower)r9rZbasedirrdoclocrrr getdoclocs,     z Doc.getdoclocr)r*rr r rrr version_inforrrrrrr docpropertyr sysconfigZget_pathrrrrrrs   rc@sFeZdZ ddZddZddZddZd d ZeZd d Z eZ d S)HTMLReprcC,t|d|_|_d|_d|_|_dSN drrmaxlistmaxtuplemaxdict maxstringmaxotherr9rrrr   zHTMLRepr.__init__cCst|ddddddS)N&z&z>)rXr9rWrrrescapeszHTMLRepr.escapecCs t||Sr)rrr9rrrrr z HTMLRepr.reprcCsZtt|dr ddt|j}t||r t||||S|ttt ||j SNr*repr_r~) rr@rOr*r!r"r r]r`rrr9rplevelZ methodnamerrrrepr1s  zHTMLRepr.repr1cCs^t||j}t|}d|vr%dt|ddvr%d|d|||dStdd||S)Nr\\rDrrz-((\\[\\abfnrtv\'"]|\\[0-9]..|\\x..|\\u....)+)z\1)r]rrrXr rErFr9rprtestZtestreprrrr repr_strings zHTMLRepr.repr_stringcCs:z|ttt||jWS|d|jjYSNz <%s instance>)r r]r`rrr,r*r9rprrrr repr_instance*szHTMLRepr.repr_instanceN) r*rr rr rrrrepr_strrZ repr_unicoderrrrrs rc@seZdZ eZejZejZddZd0ddZ  d1d d Z d d Z d dZ d2ddZ ddZ ddZddZddZddZddZdiiifddZd3d d!Zd4d"d#Zddiifd$d%Zd&d'Zddiiidfd(d)Zd5d*d+ZeZd4d,d-Zd3d.d/ZdS)6HTMLDoccC d||fS)Nz Python: %s %s r)r9titlecontentsrrrpage;sz HTMLDoc.pagerDcCs d|||||p dfS)Na'
 
 
%s
%s
 r)r9rfgcolbgcolZextrasrrrheadingEszHTMLDoc.headingNr c Cs` |dur dd|d}d|||f} |r!| d||||f} n | d|||f} | d|S)Nzr zz

zR z( z'
 
%s
%s %s
%s
%s%s%s
r) r9rr!r"rwidthZpreludeZ marginaliaZgaprHrrrsectionPs  zHTMLDoc.sectioncGs d|}|j|g|RS)Nz%s)r&)r9rrrrr bigsectionfszHTMLDoc.bigsectionc Cs( ||}t|dddddddd S)N z rr rJ
)r  expandtabsrXr rrr preformatks  zHTMLDoc.preformatrcCs d}t||d|}t|D],}|dd|}t|||||D]}|t|kr8||||d}q&|d}qd|S)NrDrKzrr)zz7%s
)rNrange)r9listrZcolsrHrowscolrrrr multicolumnqs   zHTMLDoc.multicolumncCsd|S)Nz%srr rrrgrey}sz HTMLDoc.greycGs, |D]}||vrd|||fSq|S)N%sr)r9r%Zdictsr4rrrnamelinks zHTMLDoc.namelinkcCsP |jtj|j}}t||r#t|||ur#d|j|t||fSt||S)Nz%s)r*rrrrrr"rS)r9rrRr%rrrr classlinks zHTMLDoc.classlinkcCs d|j|jfSNz%s)r*r rrr modulelinkszHTMLDoc.modulelinkcCsT |\}}}}|r||S|rd||f}nd|}|r"d|}n|}d||fS)Nz %s.%s.htmlz%s.htmlz"%s (package)r2)r1)r9Z modpkginfor%r rshadowedurlrWrrr modpkglinks    zHTMLDoc.modpkglinkcCr)Nz%sr)r9r8r rrrfilelinks zHTMLDoc.filelinkcCs |p|j}g}d}td} |||} | sn| \} } ||||| | \} } }}}}| rH|| dd}|d||fng|r\dt|}|d||| fnS|rpdt|}|d||| fn?|r|| | d d kr|d | ||n'|d |n|| | d d kr|| ||||n || ||| }q||||dd |S)NrzJ\b((http|https|ftp)://\S+[\w/]|RFC[- ]?(\d+)|PEP[- ]?(\d+)|(self\.)?(\w+))T"z"r2z'http://www.rfc-editor.org/rfc/rfc%d.txtz)https://www.python.org/dev/peps/pep-%04d/rK(zself.zself.%srD) r rEcompilesearchspanrgroupsrXintr3rO)r9rWr funcsclassesrjrherepatternmatchstartendrZschemeZrfcZpepZselfdotr%r8rrrmarkups>       zHTMLDoc.markupc Cs d}|D]T}t|tdurF|\}}|d}||||}|rA||fkrAg}|D] } ||| |q*|dd|d}|d}qt|tgurY|d||||}qd |S) NrDrz"

r<, )z
z
%s
z
%s
)r@r4rrO formattree) r9treerRparentrHentrycbasesparentsr;rrrrLs& zHTMLDoc.formattreec# s |j}z|j}Wn tyd}Ynw|d}g}tt|dD]}|dd|d|d||fq$d||dd} d| } zt |} t j | } | | } Wn tyhd} Ynwg}t|drt|j}|ddd kr|ddd kr|dd}|d |t|d r|t|j|r| d d|} |}|durdt}nd}| ddd| |}t|tj}gi}}t|tD]*\}}|dust|p||ur t|||r |||fd|||<||<q|D]@\}}|jD]7}|j|j}}tj !|}||krK|rKt||rKt"|||urK||vrK|d|||<||<qqgi}}t|tj#D]8\}}|dusrt$|srt||urt|||r|||fd|||<t%|r||||<q[g}t|t&D]\}}t|||r|||fq't(|j)||}|od|}|d|}t|drg}t*+|j,D]\}}} |||| dfq|-.|j/}!|0ddd|!}n|r.|fdd}!|0ddd|!}|rId d!|D}"1t2|"d|g}!|D]\}}|!3|||||q*|0d"dd#d$|!}|rog}!|D]\}}|!3|||||qP|0d%dd&d$|!}|rg}!|D]\}}|!3||qv|0d'dd(d)|!}t|d*r't|j4j)}!|0d+dd|!}t|d,rƈ't|j5j)}!|0d-dd|!}|S).NrrKz5%sr)%srrw $Revision: $z version %srzz (%s)rJz-
Module ReferencerD#ffffff#7799eezindex
rz.html#z#-z %sz

%s

rtrzPackage Contentsz#aa55cccs|dSrc)r6trrrr9z#HTMLDoc.docmodule..ZModulescSg|]\}}|qSrrrrkrlrrrr>z%HTMLDoc.docmodule..ZClasses#ee77aarZ Functionsz#eeaa77ZDataz#55aa55r)ryZAuthorr|ZCredits)6r*__all__r7r!r,rNrrOrrurllibparseZquoter:rBrrArwrMr rzrlocalsr#rdrTr getmodulerrerrrrr"rUr.r-rVrIrIr+pkgutil iter_modulesrtrr0r9r'rL getclasstreerryr|)#r9rr%modignoredrpartsZlinksrZ linkednameheadr r8r:rversionrrHrrCZcdictrkrlr;rRrrBZfdictdatar<modpkgsimporterispkgr classlistrrrrs                             zHTMLDoc.docmodulec st j}|p|}j}g} | jGfddd} | tt} t| dkrEd| D] } d| j q3dfdd} fd d }fd d }fd dt D}i|D]2\}}}}d|d||<}zt |}Wn t yYnwz||<Wqwt yYqww|r+| r| n|ddt|fdd\}}tjur҈tjur|}qurd}n dj }|d7}t|| d||dd}| d||dd}| d||dd}|d||dd}|d||d d}|d!||d"d}|}|sd#| } ||kr.HorizontalRulecS d|_dSrZneedonerrrrrh z1HTMLDoc.docclass..HorizontalRule.__init__c|jrdd|_dS)Nz
rKrtrpushrrmaybej z.HTMLDoc.docclass..HorizontalRule.maybeNr*rr rryrrwrrHorizontalRulegr|rLz&
Method resolution order:
z
%s

c st||\}}|rE||D]1\}}}}zt|}Wnty2||Ynw||dq|S)NrJrqryr" Exceptionrrmsgrrookr%rhomeclsrlrCrBhrmdictrhrrxr9rrspillzs   zHTMLDoc.docclass..spillcJt||\}}|r#||D]\}}}}||q|Srrqryrrrrhrxr9rrspilldescriptorsz*HTMLDoc.docclass..spilldescriptorsc st||\}}|rM||D]9\}}}}t||}t|} | s0d|nt|j} d| } d|| fdq|S)Nz
%s
z
%sz
%s%s
rJ)rqryrr"rIrIr+) rrrorr%rrrlr;r<rrr spilldatas  z#HTMLDoc.docclass..spilldatac,g|]\}}}}t|dr||||fqS)r8rrr%rr$rlrrrr  z$HTMLDoc.docclass..r-rc |duSNrLrrY thisclassrrr z"HTMLDoc.docclass.. defined hereinherited from %sz:
z Methods %scS |ddkSNrKmethodrrYrrrrrzClass methods %scSrNrKz class methodrrYrrrrrzStatic methods %scSrNrKz static methodrrYrrrrrzReadonly properties %scSrNrKrrrYrrrrrzData descriptors %scSrNrKrrrYrrrrrzData and other attributes %scSrNrKrmrrYrrrrrrDz*class %sz/%s = class %s(%s)rJ()r(z%s
 
z#000000z#ffc8d8rY)r*rerrrgetmrorNryr4rrr"rrBpopleftrqbuiltinsrrrO signature ValueErrorrAr rIrIr+r&)r9rr%rhrBrCrirealnamerQrr|mror;rrrrrkrrrlanchor inheritedtagrrRdeclrargspecr<r) rCrBrrrhrrxr9rrr\s                 # zHTMLDoc.docclasscCs |d||SN=)r1rr rrr formatvaluezHTMLDoc.formatvaluec Cs |j}|p|}|r |jpdd|} d} d} t|rF|jj} |r.| |ur-d|| |} n|jdur>d||jj|} nd|| |} t|sPt|rSd} nd} ||kr`d| |f}n"|ryt||g|uryd |jd||f}d } n|}d | ||f}d}t |rzt |}Wn t t fyd}Ynw|rt |}|d krd |}|d d}|sd}| |||| o|d| }| rd|S|t||j|||}|od|}d||fS)NrDrr from  method of %s instance unbound %s methodasync z$%sz%srKz)%s = %sz$%s lambda r(...)z'%sz
%s
z
%s
z
%s
%s
)r*rbr+r,r4riscoroutinefunctionisasyncgenfunctiongetattr_staticrUrrrBrAr r1rIrIr+)r9rr%rhrBrCrjrirrnoteskipdocsimclassasyncqualifierrZreallinkrrrr<rrrrsr       zHTMLDoc.docroutinecCsP g}|j}|r|d||t||j}|r|d||dd|S)Nz!
%s
z
%s
r~rD)rrIrIr+rOr9rr%rhrirrxr<rrrrCs   zHTMLDoc.docdatacGs |rd|pd}|||S)Nz%s = rDr)r9rr%rhriZlhsrrrrSszHTMLDoc.docothercCs g}|dur i}t|gD]\}}}tdd|Drq||d|||vfd||<q||||j}||dd|S)Ncss,|]}dt|kodknVqdS)iiN)ordrZchrrr ]s*z HTMLDoc.index..rDrKrWr_)rerfanyrrr0r9r')r9rr7rnror%rprrrrindexXs  z HTMLDoc.indexrD)r$rDNr )rrrNNN)r*rr r_repr_instancerr rr#r&r'r+r0r1r3r4r6r9r:rIrLrrrrrrrrrrrrr2s@      + y# A rc@s2eZdZ ddZddZddZeZddZd S) TextReprcCrrrrrrrrkrzTextRepr.__init__cCsTtt|dr ddt|j}t||r t||||Sttt||j Sr ) rr@rOr*r!r"r]r`rrrrrrrqs  zTextRepr.repr1cCsHt||j}t|}d|vr"dt|ddvr"d|d||dS|S)NrrrDrr)r]rrrXrrrrrxs zTextRepr.repr_stringcCs.z ttt||jWSd|jjYSr)r]r`rrr,r*rrrrrszTextRepr.repr_instanceN)r*rr rrrrrrrrrris rc@s|eZdZ eZejZddZdddZddZdd d Z dd d Z dddZ ddZ dddZ dddZeZdddZdS)TextDoccCs ddd|DS)NrDcss|] }|d|VqdS)NrrrrrrszTextDoc.bold..)rOr rrrboldrz TextDoc.bold cs@ |sdSfdd|dD}|r|d|d<d|S)NrDcsg|]}|qSrrrrprefixrrrr^z"TextDoc.indent..rJr)r!rGrO)r9rWrrPrrrindents  zTextDoc.indentcCs& ||}||d|dS)NrJr()rrGr)r9rrZclean_contentsrrrr&szTextDoc.sectionNrDc s d}|D]I}t|tdur:|\}}||t|}|r5||fkr5fdd|D} |dd| }|d}qt|tgurN|||||d}q|S) NrDrc3s|]}t|VqdSrrS)rrPrRrrrz%TextDoc.formattree..rrJrJr)r@rSrOrL) r9rMrRrNrrHrOrPrQrRrrrrLs   zTextDoc.formattreec Cs |j}tt|\}}|d||od|}t|dd}||}|dur1||d|d}|r;||d|}g} t|tD]\} } |dusTt | pQ||urat | ||ra| | | fqCg} t|tj D]!\} } |dust | st | |urt | ||r| | | fqkg} t|tD]\} } t | ||r| | | fqg}t}t|drt|jD]\}}}|||r| |dq| |q|||d d |}g}t|tjD]\} } | j|d r| |vr| | q|r|||d d |}| rCd d| D}|t|d|g}| D]\} } | || | |q(||dd |}| reg}| D]\} } | || | |qJ||dd |}| rg}| D]\} } | |j| | |ddql||dd |}t|drt|j}|dddkr|dddkr|dd}||d|}t|dr||dt|j }t|dr||dt|j!}t|dr||d t|j"}zt#|}Wn t$yd!}Ynw||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 DESCRIPTIONrt (package)zPACKAGE CONTENTSrJrZ SUBMODULEScSr\rrr]rrrrr^z%TextDoc.docmodule..rKCLASSES FUNCTIONSF)r\ZDATArwrTrUrrVZVERSIONrzZDATEryZAUTHORr|ZCREDITSrZFILE)%r*rQrIr&r"rrrdrrdrrrUr.rVsetrrerfrtaddrrOrTrrLrgrrrArwrMrzryr|rrB)r9rr%rhZsynopdescrHrrrCrkrlrBrmrnZ modpkgs_namesrorRrpZ submodulesrqrrlrrrrrs                  $   zTextDoc.docmodulec sB j}|p|}j}jfdd}||krd|}n |d|}|r7t||} |dd| }g} | jzt} Wn t t fyPd} Ynw| ret | } | re| dkre|| dt } | rq| dt t}t|d krd |D] }d ||qd td dtDt jd}t|}d}|rшd|d|D]}d |q||kr͈dt ||dd Gfddd}|fdd}fdd}fdd}fddtD}|r|r|n|dd t|fdd \}}tjur1tjur1|}qur9d!}nd"tj}t||d#||d$d }|d%||d&d }|d'||d(d }|d)||d*d }|d+||d,d }|d-||d.d }|}|sd| } | s|dS|d| d/dS)0NcSs t||Srr)rPrrrrmakenameruz"TextDoc.docclass..makenameclass z = class rrJrrJrLzMethod resolution order:rrDcss0|]}|jds|jdkrt|jVqdS)r~rN)r*rrrA)rr$rrrrCs  z#TextDoc.docclass..rrzBuilt-in subclasses:z ... and z other subclassescrr)z(TextDoc.docclass..HorizontalRulecSrsrrtrrrrrUruz1TextDoc.docclass..HorizontalRule.__init__crv)NzF----------------------------------------------------------------------rKrtrrwrrryWrzz.TextDoc.docclass..HorizontalRule.maybeNr{rrwrrr|Tr}r|c st||\}}|r>||D]*\}}}}zt|}Wnty2||Yqw||q|Srrrrrhrrxr9rrr]s zTextDoc.docclass..spillcrrrrrrrrnrz*TextDoc.docclass..spilldescriptorsc st||\}}|rB||D].\}}}}t|}zt|} Wnty2|j|} Ynwj| |d|ddq|S)Nr)r\r<rJ)rqryrIr"r7__dict__r) rrrorr%rrrlr<r8rrrrws z#TextDoc.docclass..spilldatacrrrrrrrrrz$TextDoc.docclass..rcrrrrYrrrrrz"TextDoc.docclass..rrz Methods %s: cSrrrrYrrrrrzClass methods %s: cSrrrrYrrrrrzStatic methods %s: cSrrrrYrrrrrzReadonly properties %s: cSrrrrYrrrrrzData descriptors %s: cSrrrrYrrrrrzData and other attributes %s: cSrrrrYrrrrrz | )r*rerrmaprOrrrrrBrArIrrrNsortedr@__subclasses__rrrrqrrrSrrrG)r9rr%rhrirrQrrrRrrrr<rr;Z subclassesZno_of_subclassesZMAX_SUBCLASSES_TO_DISPLAYZ subclassnamer|rrrrrrr)rrhrrxr9rrrs                 #zTextDoc.docclasscCs d||Srrr rrrrzTextDoc.formatvaluec Cs |j}|p|}d}d}t|r8|jj}|r"||ur!dt||}n|jdur1dt|jj|}ndt||}t|sBt|rEd} nd} ||krQ||} n|r^t ||g|ur^d}||d|} d} t |rzt |} Wn t t fyd} Ynw| rt| } |d kr||d } | dd } | sd } | | | |} |r| d St|pd}| d |o||d S)NrDrrrrrrK = rz lambda rrrJ)r*rbr+r,rSrrrrrrUrrrBrArIrrG)r9rr%rhrirrrrrrrrrr<rrrrsZ      zTextDoc.docroutinecCsV g}|j}|r||||dt|pd}|r&||||dd|S)NrJrD)rrrIrrOrrrrrs  zTextDoc.docdatac Cs ||}|r$|r|dpd|}|t|} | dkr$|d| d}|r-||dp.d|}|s7t|}|rF|d|t|d7}|S)NrrDrrZrJ)rrNrrIrrA) r9rr%rhrNr\r<rrZchoprrrrs  zTextDoc.docother)r)NrDrr)NNNNN)r*rr rrrrrr&rLrrrrrrrrrrrrs     e  7rc@seZdZ ddZdS) _PlainTextDoccCs|Srrr rrrr z_PlainTextDoc.boldN)r*rr rrrrrr s rcCs tat|dSr)getpagerpagerr_rrrrs rc sF ttjds tSttjdstStjrtjstStjdp(tjdrJtj dkr6fddStjddvrDfd dSfd dStjddvrTtStj dkr]d dSttd rmt d dkrmddSddl }| \}}t |z ttd rt d|dkrddWt|StWt|St|w)NisattyZMANPAGERZPAGERwin32ctt|Sr tempfilepagerplainr_Z use_pagerrrr#r[zgetpager..ZTERM)ZdumbZemacscrr) pipepagerrr_rrrr%r[cs t|Srrr_rrrr' cSstt|dS)Nzmore /dev/nullrcS t|dS)NZlessrr_rrrr-rz more "%s"cSr)NZmorerr_rrrr4r)rrstdin plainpagerstdoutrr rrplatformrtempfileZmkstempcloseunlinkttypager)rfdrrrrrs:          rcCs tdd|S)Nz.rD)rErFr_rrrr:rrc Cs ddl}|j|d|jdd}z&|j}z||Wn ty$YnwWdn1s/wYWn ty>Ynw z|WdStyPYnwq@)NrTbackslashreplace)shellrerrors) subprocessPopenPIPErwriteKeyboardInterruptrwait)rWcmdrprocpiperrrr>s4    rc Cs ddl}|B}tj|d}t|ddtjdkrtdndd }| |Wdn1s3wYt |d|dWddS1sNwYdS) Nrz pydoc.outwrr)rencodingz "r;) rZTemporaryDirectoryr r rOrrrdevice_encodingr r)rWr rZtempdirrrrrrrVs    "rcCs$ttjddpd}||d|S)Nrutf-8r)r"rrencodedecode)rWrrrr_escape_stdoutbsrc Cs tt|d}zddl}tj}||}||dd}Wnt t t j fy6d}dd}Ynwzz t tjdd}Wn tyNd}Ynw|dkrUd}|d}}tjd|d|d||drtjd tj|} | d vrtjd nB| d vrtjd ||d|d}qj| d vr|||}|dkrd}tjdd||||d||}||dspW|r|||j|dSdS|r|||j|ww)NrJrcSs tjdSrc)rrrrrrrrorzttypager..cSstjddddS)NrrK)rrrrrrrrrsZLINESrKz -- more --)qQz ) rJ)bB)rrr!ttyrrfilenoZ tcgetattrZ setcbreakrr7ioUnsupportedOperationrAr rrrrr rOflushZ tcsetattrZ TCSAFLUSH) rWrPrroldZgetcharhrZincrPrrrrgsZ             & rcCs tjtt|dSr)rrr rrr_rrrrsrcCs t|r |jtjvrd|jSt|drd|jSd|jSt|r*d|jSt|r;d|jj |jj|jfSt |rLd|jj |jj|jfSt |rUd|jSt |r_d |jSt |rid |jSt|jS) Nzbuilt-in module rtzpackage zmodule zbuilt-in function zgetset descriptor %s.%s.%szmember descriptor %s.%s.%srz function zmethod )rrTr*rrrr.Zisgetsetdescriptorr2rr3rr-r)r@)thingrrrdescribes4                  r&c Cs dd|dD}d\}}|t|kr4td|d|d|}|r-||d}}nn|t|ks|r9|}nt}||dD]}zt||}WqAtyUYdSw|S)NcSsg|]}|r|qSrr)rrrrrrr^zlocate..rrrK)r!rNrrOrr"r7)r rrjrnZ nextmodulerrrrrlocates$   r(cCsV t|trt||}|durtd|||fSt|dd}|t|tr(|fSdfS)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*)rrAr(rr")r%rrr%rrrresolves   r) Python Library Documentation: %scCs |durt}t||\}}t|}t|}|r+d|vr+|d|d|d7}n |r8||ur8|d|j7}t|s`t|s`t |s`t |s`t |s`t |drX|j }nt|}|d7}||d|||S)Nrz in z in module __origin__z objectr()rWr)r&rrdrfindr*rTrrUr1rCrr+r@r)r%rrZrendererrr%rrrrr render_docs0     r-c Csn z|durtt|||WdS|t|||tWdSttfy6}z t|WYd}~dSd}~wwr)rr-r  plaintextrrprint)r%rroutputrlrrrr<sr<c Cs z;t||\}}tt|t||}t|dddd }||Wdn1s.wYtd|dWdStt fyU}z t|WYd}~dSd}~ww)Nrrr)rZwrote) r)htmlrr&rrr r/rr)r%rrr%rrrlrrrwritedocs r2rDcCs4 |duri}t|g|D] \}}}t|qdSr)re walk_packagesr2)rpkgpathZdonerorRrprrr writedocs s   r5c@seZdZiddddddddddd d d d d dddddddddddddddddddid d!d"d#d$d%dd&d#d'd(d)d*d+d,d-d.d/d0dd1dd2d3d4d5d6d7dd8d9d:dd;dd?d@DZdAdBdCdDgeRdEdFdGdHdIdJdKZdLdMdNdOdPdQdRdSdTdUdVdWdWdXdXdYZeD]\ZZ e D]Z e e eZ ee vre dZeZ e ee <qqid[d\dSd]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxd[dyd[idzd{dPd|d}d~dddddd#ddddddddddddddddddddddidddddddddddddddddddTdddddldddddddodddidddddddddMdddddddÓddœd+dƓddǓdd ddʓdd̓dddd6dd#ddddddԜZ dddׄZ eddلZeddۄZdd݄ZeZefdd߄ZddZddZddZddZdddZddZddZddZdddZdddZddZdddZ dS)HelperFalserDNoneTrueandZBOOLEANaswithassert)r=rDasync)r>rDawait)r?rDbreak)r@ while forclass)rBzCLASSES SPECIALMETHODScontinue)rCrAdef)ZfunctionrDdel)rE BASICMETHODSelififelse)rIrAexcepttryfinallyfor)rMzbreak continue whilefromimportglobal)rPznonlocal NAMESPACES)rH TRUTHVALUE)rOMODULESin)rSSEQUENCEMETHODSis COMPARISONlambda)rWrnonlocal)rXzglobal NAMESPACESnotorpass)r[rDraise)r\ EXCEPTIONSreturn)r^r)rKr]while)r_zbreak continue if TRUTHVALUE)r<z CONTEXTMANAGERS EXCEPTIONS yieldyield)r`rDcCsg|] }dD]}||qqS)'r;r)rprrrrrErzHelper.)rfrurbz'''r;r)+r***rz//%<<>>r|^~rr<=>===!=<>)rrrorprqrrrs)rrn) z+=z-=z*=z/=z%=z&=z|=z^=z<<=z>>=z**=z//=)rjrkrrlrmrn)jJ)STRINGS OPERATORSrVUNARYAUGMENTEDASSIGNMENTBITWISECOMPLEXzOPERATORS FORMATTINGZPOWERzTUPLES LISTS FUNCTIONSz ATTRIBUTES FLOAT MODULES OBJECTSELLIPSISzSLICINGS DICTIONARYLITERALSz def classrvZ PRIVATENAMESzPRIVATENAMES SPECIALMETHODSZ BACKQUOTESzTUPLES FUNCTIONS CALLSzLISTS SUBSCRIPTS SLICINGS)rirh,rrZ:@rr~r}`r<rK[]rTYPES)rzRSTRINGS UNICODE NUMBERS SEQUENCES MAPPINGS FUNCTIONS CLASSES MODULES FILES inspect)stringsz4str UNICODE SEQUENCES STRINGMETHODS FORMATTING TYPESZ STRINGMETHODS)zstring-methodszSTRINGS FORMATTINGZ FORMATTING)Z formatstringsrwUNICODE)rz:encodings unicode SEQUENCES STRINGMETHODS FORMATTING TYPESZNUMBERS)ZnumberszINTEGER FLOAT COMPLEX TYPESZINTEGER)Zintegersz int rangeZFLOAT)Zfloatingz float mathr{)Z imaginaryz complex cmathZ SEQUENCES)Ztypesseqz$STRINGMETHODS FORMATTING range LISTSZMAPPINGSZ DICTIONARIESr)Ztypesfunctionsz def TYPESZMETHODS)Z typesmethodszclass def CLASSES TYPESZ CODEOBJECTS)zbltin-code-objectszcompile FUNCTIONS TYPESZ TYPEOBJECTS)zbltin-type-objectsz types TYPESZ FRAMEOBJECTSZ TRACEBACKSZNONE)zbltin-null-objectrD)zbltin-ellipsis-objectSLICINGSZSPECIALATTRIBUTES)Z specialattrsrDr)rz!class SPECIALMETHODS PRIVATENAMESrR)Z typesmodulesrOZPACKAGES EXPRESSIONS)zoperator-summaryzlambda or and not in is BOOLEAN COMPARISON BITWISE SHIFTING BINARY FORMATTING POWER UNARY ATTRIBUTES SUBSCRIPTS SLICINGS CALLS TUPLES LISTS DICTIONARIESrwZ PRECEDENCEZOBJECTS)ZobjectsrZSPECIALMETHODS)Z specialnameszbBASICMETHODS ATTRIBUTEMETHODS CALLABLEMETHODS SEQUENCEMETHODS MAPPINGMETHODS NUMBERMETHODS CLASSESrF)Z customizationzhash repr str SPECIALMETHODSZATTRIBUTEMETHODS)zattribute-accesszATTRIBUTES SPECIALMETHODSZCALLABLEMETHODS)zcallable-typeszCALLS SPECIALMETHODSrT)sequence-typesz(SEQUENCES SEQUENCEMETHODS SPECIALMETHODSZMAPPINGMETHODS)rzMAPPINGS SPECIALMETHODS NUMBERMETHODS)z numeric-typesz*NUMBERS AUGMENTEDASSIGNMENT SPECIALMETHODSZ EXECUTION)Z execmodelz%NAMESPACES DYNAMICFEATURES EXCEPTIONSZ NAMESPACES)Znamingz3global nonlocal ASSIGNMENT DELETION DYNAMICFEATURESZDYNAMICFEATURES)zdynamic-featuresrDZSCOPINGZFRAMESr])rztry except finally raiseZ CONVERSIONS)Z conversionsrDZ IDENTIFIERS)Z identifierszkeywords SPECIALIDENTIFIERSZSPECIALIDENTIFIERS)z id-classesrD)zatom-identifiersrDZLITERALS)z atom-literalsz=STRINGS NUMBERS TUPLELITERALS LISTLITERALS DICTIONARYLITERALSZTUPLESZ TUPLELITERALS)Z exprlistszTUPLES LITERALSZLISTS)ztypesseq-mutable LISTLITERALSr)ZlistszLISTS LITERALS)Z typesmappingDICTIONARYLITERALSr)r4zDICTIONARIES LITERALSZ ATTRIBUTES)zattribute-referencesz(getattr hasattr setattr ATTRIBUTEMETHODSZ SUBSCRIPTS)Z subscriptionsrTr)ZslicingsrTZCALLS)Zcallsr)Zpowerrrx)ZunaryrZBINARY)ZbinaryrZSHIFTING)Zshiftingrrz)Zbitwiser)Z comparisonszEXPRESSIONS BASICMETHODS)ZbooleanszEXPRESSIONS TRUTHVALUEZ ASSERTIONZ ASSIGNMENT)Z assignmentryry)Z augassignrZDELETIONZ RETURNINGZ IMPORTING)Zcompoundzfor while break continue)truthz if while and or not BASICMETHODS)ZdebuggerZpdb)zcontext-managersr<)Z CONDITIONALZLOOPINGrQZ DEBUGGINGZCONTEXTMANAGERSNcCs||_||_dSr)_input_output)r9inputr0rrrrs zHelper.__init__cC |jptjSr)rrrrrrrr z Helper.inputcCrr)rrrrrrrr0rz Helper.outputcCs2tdddkr|dSd|jj|jjfS)NrKrY?rDz<%s.%s instance>)rstackr,rr rrrr__repr__s zHelper.__repr__cCs8||jur ||dS|||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. )_GoInteractiverintrointeractr0r r9Zrequestrrr__call__s zHelper.__call__c Cs|jd z |d}|sWdSWn ttfyYdSw|}t|dkrJ|d|dkr8dvrJnn|d|ddvrJ|dd}|d vrRdS|d kr[|n| |q) NrJTzhelp> rLrrrarK)rquitr) r0r getliner EOFErrorrMrNrrrrrrrrs"  ,   zHelper.interactcCs6 |jtjur t|S|j||j|jSr)rrrr0r r"r)r9promptrrrrs     zHelper.getlinecCs8t|tdur|}|dkr|n|dkr|nv|dkr'|nm|dkr0|nd|dddkrB||dnR||jvrM||nG|d vrYt t |d n;||j vrd| |n0||j vro| |n%|rzt |d |jd nt td |jd nt|tr|nt |d |jd |jd dS) NrDkeywordssymbolstopicsrzmodules rK)r9r7r8z Help on %s:)r0rJ)r@rM listkeywords listsymbols listtopics listmodulesr!r showsymbolr<evalr showtopicrrrArr6r0r rrrrrs$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.%drL)r0r rrrrrrrrsz Helper.introrPc Cstt|}||}t||d|}t|D];}t|D].}|||}|t|krL|j||||dkrL|jdd|dt||q|jdqdS)NrKrrJ)r-rrNr,r0r ) r9itemscolumnsr%Zcolwr.rowr/rrrrr-%s      $z Helper.listcC |jd||jdS)NzN Here is a list of the Python keywords. Enter any keyword to get more help. )r0r r-rrhrrrrr2 zHelper.listkeywordscCr)Nzx Here is a list of the punctuation symbols which Python assigns special meaning to. Enter any symbol to get more help. )r0r r-rrhrrrrr9s zHelper.listsymbolscCr)NzN Here is a list of available topics. Enter any topic name to get more help. )r0r r-rrhrrrrrArzHelper.listtopicsc Cs*zddl}Wnty|jdYdSw|j||j|}|s0|jdt|dSt|tdur>| ||S|\}}z|jj|}Wnt y^|jdt|YdSw| d}|ro|pjdd|}|rddl }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 rDrJrRelated help topics: rJHz %s )pydoc_data.topicsrr0r rrrrr@rKeyErrorrMtextwraprOr!Zwrapr) r9topic more_xrefs pydoc_datatargetlabelxrefsr<rrWZ wrapped_textrrrrHs8        zHelper.showtopiccCs zddl}Wn tyYdSw|j||j|}|s#tdt|tr.|||S|\}}|jj|}|rB|p=dd|}||fS)Nr)rrDzcould not find topicrDr) rrrrrrrrA _gettopic)r9rrrrrrr<rrrrhs      zHelper._gettopiccCs*|j|}|d\}}}|||dS)Nr)r partitionr)r9symbolrrr~rrrrrs zHelper.showsymbolcsx|r|jd|t|dS|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... cSsB|r|dddkr|ddd}|ddkrd||<dSdS)N .__init__rrrrK)find)r rRrrrrrcallbacks  z$Helper.listmodules..callbackcsd|ddSrrrrrronerrorsz#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". )r0r rapropos ModuleScannerrunr-rh)r9rkrrrrrrs    zHelper.listmodulesr)rrr)!r*rr rZ _strprefixesZ_symbols_inverserrrZsymbols_rrrrr/rr0rrrrrrrrr-rrrrrrrrrrrr6s       !"#'          !"%&'(*+-./012345679:;<=>?@ABCDEFGHIJKLMNOP W         r6c@seZdZ dddZdS)rNc Cs|r|}d|_i}tjD]8}|dkrFd||<|dur#|d|dqt|jp)d}|dd}|d|}||dkrF|d||qtj |dD]\} }} |jrWn|durb|d|dqMzt | |} Wn t ysYqMw| j } t | d rz| |} Wnty|r||YqMwtt| pd}t | d r| |}n-d}n*ztj| }Wnty|r||YqMw|jr|jdnd}t|d d}|d|}||dkr||||qM|r|dSdS) NF__main__rKrDrJrrr get_source get_filenameru)rrrrrr>r!rrer3 _get_specrrrrrrr StringIOrrrrrrr")r9rrkZ completerrseenrRr%rrorprrsourcer rrrrrsj              zModuleScanner.runr)r*rr rrrrrrsrcCs\ dd}dd}ttdtj|||dWddS1s'wYdS)NcSs6|dddkr|ddd}t||od|dSNrrrz- )r/r rRrrrrrszapropos..callbackcSdSrrrrrrrrzapropos..onerrorignorer)warningscatch_warningsfilterwarningsrr)rkrrrrrrs  "rcs ddlddlddlddlGdddjjGfdddjjGfdddj}||||}||j sQ|j sQt d|j sQ|j rF|S) Nrc@seZdZddZddZdS)z!_start_server..DocHandlercSsZ |jdr d}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)r9 content_typerrrdo_GET0 s   z(_start_server..DocHandler.do_GETcWrrr)r9rrrr log_message@ sz-_start_server..DocHandler.log_messageN)r*rr rrrrrr DocHandler. s rcs(eZdZddZfddZddZdS)z _start_server..DocServercSs6||_|j|f|_||_|j||j|jd|_dSNF)hostZaddressrr;rhandlerr)r9rportrrrrrF s   z)_start_server..DocServer.__init__csB|js|jgggd\}}}|r||jr|dSrc)rselectZsocketrZhandle_requestZ server_close)r9ZrdZwrZexrrrserve_until_quitM s  z1_start_server..DocServer.serve_until_quitcSs$|j||jr||dSdSr)r;server_activaterrrrrrT s z0_start_server..DocServer.server_activateN)r*rr rrrrrrr DocServerD s  rcs:eZdZfddZfddZddZddZd S) z#_start_server..ServerThreadcs2||_||_t||_j|d|_d|_dSr)rrrArThreadrservingerror)r9rrr) threadingrrr[ s    z,_start_server..ServerThread.__init__c s| z&jj__jj_t|j_|j |j |j }||_ | WdSty=}z ||_WYd}~dSd}~wwr)server HTTPServerr;rrZMessageZ MessageClass staticmethodrrrready docserverrrr)r9Zdocsvre)rremailhttprrrc s   z'_start_server..ServerThread.runcSs,d|_|j|_|j|_d|j|jf|_dS)NTz http://%s:%d/)rrZ server_portrr8)r9rrrrrp sz)_start_server..ServerThread.readycSs( d|j_|d|_d|_d|_dS)NTF)rrrOrr8rrrrstopv s  z(_start_server..ServerThread.stopN)r*rr rrrrr)rrrrrrr ServerThreadY s   rg{Gz?) Z http.serverZ email.messagerrrZBaseHTTPRequestHandlerrrrGrrtimesleep)rhostnamerrthreadr)rrrrrrr _start_servers7 '   rrcs. Gfdddt}|fddfddfddfd d fd d fd dfddfddfdd}|drV|dd}|dkrtjtjt}tj||}t|}d| WdS1swYn|dkr||St d||f)NcseZdZfddZdS)z_url_handler.._HTMLDoccs d}d|}d|||fS)Nzpydoc_data/_pydoc.cssz1a  Pydoc: %s %s%s
%s
r)r9rrcss_pathZcss_link html_navbarrrr s z#_url_handler.._HTMLDoc.pageN)r*rr rrrrr_HTMLDoc srcs>dttdtf}d|tjddfS)Nz %s [%s, %s]raZ
Python %s
%s
T)Zterse)r rZpython_versionZ python_buildZpython_compiler)rlr1rrr s  z!_url_handler..html_navbarcs dd}ddd}ddtjD}||}|dd dd |g}i}tjD] }|||q+|d d d |fS)NcS d||fSr5rr%rrr bltinlink r z3_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 ModulesrD) r#rrr0r'r rrrO)rr#namesrrrrrr html_index s$  z _url_handler..html_indexc s gfdd}ttddd}tj|||dWdn1s*wYdd}g}d d d }D] \}}||||q>|d |d d d|}d|fS)Ncs:|dddkr|ddd}||od|fdSrrmrZ search_resultrrr sz3_url_handler..html_search..callbackrcSrrrrrrrr rz2_url_handler..html_search..onerrorrcSrr5rrrrrr r z4_url_handler..html_search..bltinlinkz5Search ResultsrWrXzkey = %sr_
zSearch Results) rrrrrr#rr'rO) rkrrrrr#r%rrrrr html_search s(    z!_url_handler..html_searchcsN dd}ddd}ttj}||}|ddd|}d|fS)NcSrNz%srrrrrr r z4_url_handler..html_topics..bltinlink,INDEXrWrXZTopicsr_)r#rr6rrhr0r')rr#rrrrr html_topics s z!_url_handler..html_topicscsN ddd}ttj}dd}||}|ddd|}d|fS)NrrWrXcSrrrrrrrr r z6_url_handler..html_keywords..bltinlinkZKeywordsr_)r#rr6rrhr0r')r#rrrrrr html_keywords s z#_url_handler..html_keywordscs t}t||}||\}}||jvrd}nd}d|dd}d|}|dd|}|rMt| }dd } ||} d dd|}d ||fd |||ffS) NZKEYWORDZTOPICrSrWrXz

%s
r_cSrrrrrrrr& r z7_url_handler..html_topicpage..bltinlinkrz%s %srD) r rr6rrr#rIr'rr!r0r&rO)rZbufZhtmlhelprrrr#rrrrhtml_topicpage s.     z$_url_handler..html_topicpagecs@t|dd}|dur|dkrtdt|}||}||fS)NrK)rr8zcould not find object)r(rr&r)r8r8rcontentrrr html_getobj/ s  z!_url_handler..html_getobjcsPddd}dfddtt||D}||dd|}d||fS) Nz,ErrorrWrXrc3s|]}|VqdSr)r rrrrr; rz3_url_handler..html_error..z#bb0000z Error - %s)r#rOrr@r')r8rr#rrrr html_error7 s   z _url_handler..html_errorc sb |}|dr|dd}z|dvr\}}nw|dkr#\}}nm|dkr-\}}ncd|vr|d\}}}|dkrD|\}}nL|dkr`z|\}}Wn?ty_|\}}Yn1w|d kr|dvrn\}}n"z|\}}Wnty|\}}Yn wtd |\}}Wnty}z ||\}}WYd}~nd}~ww||S) Nr)rDrrrrz search?keyz topic?keyzget?keyz bad pydoc url)rrrrr)r8Z complete_urlrr opr~r)r1rr rr rr r rr get_html_pageA sJ          z#_url_handler..get_html_pagerrKrrDrz"unknown content type %r for url %s) rrr r dirnamerealpathrurOr readlinesrB)r8rrrZ path_hererfpr) r1rr rr rrr r r _url_handler s.         (   "rT localhost) open_browserrc Cs ddl}tt||}|jrt|jdS|jr}d}|r"||jzMz.td|jt||jrPtd}| }|dkr>n|dkrI||jnt||js1Wnt t fy_tYnwW|jrn| tddSdS|jr|| tdwwdS)Nrz"Server commands: [b]rowser, [q]uitzServer ready atzserver> rrzServer stopped) webbrowserrrrr/rrr8rrr rr)rrrrZ serverthreadZserver_help_msgr rrrbrowsev sF        rcCst|to |tjdkSr)rrArr sep)rprrrispath srcCsx d|vstj|vst|vrdStjt}tj|}|}||vr2tj||s2||| dt|S)NrDr) r curdirgetcwdr rrucopysamefileremoveinsert)Z given_pathZargv0Z stdlib_dirZ script_dir revised_pathrrr_get_revised_path s    r$cCs2 ttjtjd}|dur|tjdd<dSdSr)r$rr argv)r#rrr_adjust_cli_sys_path s r&c Cs ddl}Gdddt}tz|tjddd\}}d}d}d}d}d}|D].\} } | dkr6d }d }| d krBt| WdS| d krJd }| }| d krPd }| d krXd }| }q*|ret|||dWdS|si||D]W} t| rtj | st d| WdSz+t| rtj | rt | } |rt| rtj | rt| n t| nt| Wqkty} z t | WYd} ~ qkd} ~ wwWdS|j|fytj tj tjdd} t dj| tjdYdSw)Nrc@s eZdZdS)zcli..BadUsageN)r*rr rrrrBadUsage rr'rKzbk: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. )r r)getoptrr&rr%rrrr r existsr/rrr r5r2rrrrrrr)r(r'ZoptsrZwritingZ start_serverrrroptvalargrlr rrrcli sn     r-rr)r)r*rN)rDN)r)_r`ryrzr|rZimportlib._bootstraprZimportlib._bootstrap_externalimportlib.machineryimportlib.utilrr r rerrErrrrrZ urllib.parserar collectionsrreprlibr tracebackrrrr&r=r6rCrIrQrSrVrXr]r= IGNORECASEr^r`rbrgrqrrrrrrrrrrrrrrrrrrrrrrrrr&r(rWr.r1r)r-r<r2r5r6rrrrrrrr$r&r-r*rrrrs&      3     ' 0:*; " ,    = n% U