Yfؔ@s4dgZdZdZdZddlZddlZddlZddlZddl Zddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlmZddlmZddlmZd d Zd d Zd dZddZddZ ddZ!ddZ"ej#dej$Z%ddZ&ddZ'ddZ(ddZ)d d!Z*ddd"d#Z+d$d%Z,d&d'Z-d(d)Z.id*d+Z/Gd,d-d-e0Z1d.d/Z2did0d1Z3Gd2d3d3Z4Gd4d5d5eZ5Gd6d7d7e4Z6Gd8d9d9eZ7Gd:d;d;e4Z8Gd<d=d=e8Z9d>d?a:d@dAZ;dBdCZ<dDdEZ=dFdGZ>dHdIZ?dJdKZ@dLdMZAdNdOZBddPdQZCe8ZDe9ZEe6ZFddRdSZGdTdddUdVZHdTdddWdXZIddYdZZJd[dd\d]ZKGd^d_d_ZLeLZMGd`dadaZNdbdcZOdddeZPdfdgdhZQddidjdkdlZRdmdnZSdodpZTeUdqkr0eTdS)rhelpzKa-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_onlycCsg}g}xstjD]h}tjj|p.d}tjj|}||krtjj|r|j||j|qW|S)N.)syspathosabspathnormcaseisdirappend)dirsZnormdirsdirnormdirr*/opt/alt/python35/lib64/python3.5/pydoc.pypathdirsMs rcCsCtj|ptj|}|r?tjdd|jpBdS)Nz^ * )inspectgetdocZ getcommentsresubrstrip)objectresultrrrrYsrcCs|jjd}t|dkr5|ddfSt|dkry|dj ry|ddj|ddfSddj|fS)N rr)stripsplitlenrjoin)doclinesrrrsplitdoc^s #!r%cCs-|j}|j|kr)|jd|}|S)Nr)__name__ __module__)rmodnamenamerrr classnamegs r*cCsYtj|pWtj|pWtj|pWtj|pWtj|pWtj| S)N)rismoduleisclass isroutineZisframeZ istracebackZiscode)rrrrisdatansr.cGsAx:|r<|dj|j|d}|dd}qW|S)Nrrr)r"r )textZpairsrrrreplacets  r0cCsnt||krjtd|dd}td|d|}|d|d|t||dS|S)Nrrz...)r!max)r/maxlenpreZpostrrrcram{s *r5z at 0x[0-9a-f]{6,16}(>+)$cCstjd|S)Nz\1) _re_stripidr)r/rrrstripidsr7cCs:tj|p9tj|p9tj|p9tj|S)N)r isfunctionismethod isbuiltinZismethoddescriptor)objrrr_is_some_methodsr<cCsRtj|rdStj|rNt|dd}tj|pL|dk SdS)NT__self__F)rr9r:getattrr+)fnselfrrr_is_bound_methods rAcCsi}x*tj|tD]\}}d||)clmethodskeyvaluebaserrrrEsrEcCsPg}g}x7|D]/}||r5|j|q|j|qW||fS)N)r )s predicateyesnoxrrr _split_lists  rQcCs||dkrdS|jdr2|jdr2dS|jdrTt|drTdS|dk rj||kS|jd SdS)N __author__ __builtins__ __cached__ __credits____date____doc____file____spec__ __loader__r'r& __package____path__ __qualname__ __slots__ __version__r__r__fieldsT>rYrTrUr\r_r[rVr'rRrXr^r]rSrZrWr&) startswithendswithhasattr)r)allr;rrr visiblenames   rgcCs^g}xQtj|D]@\}}}}tj|r=d}|j||||fqW|S)Nzdata descriptor)rclassify_class_attrsisdatadescriptorr )rresultsr)kindclsrJrrrrhs "rhcCsPtjj|rLx7dD]/}tjjtjj|d|rdSqWdS)N.py.pyc__init__TF)rmrn)r rr isfiler")rextrrr ispackages  %rrcCs|j}x:|dddks2|j rH|j}|sPqW|j}|dddkr{|dd}|dddkr |dd}|d ddkr|dd }x#|js|j}|sPqW|jddj}nd}|S) Nr#zr"""r1z"""\rrv)readlinerr )filelinerrrrsource_synopsiss& &   rzc Cstj|j}|j|d\}}|dksB||kr||jttjjrltjj }n0|jttjj rtjj }nd}|dkryt j |}Wntk rdSYnX|t|}WdQRXn{|d|}tjjd|d|}ytjj|} Wn dSYnXtjd=| jrf| jjdnd}||f||<|S)NZ__temp__loaderr)NN)r statst_mtimegetrdtuple importlib machineryBYTECODE_SUFFIXESSourcelessFileLoaderEXTENSION_SUFFIXESExtensionFileLoadertokenizeopenOSErrorrzutilspec_from_file_location _bootstrap_loadrmodulesrW splitlines) filenamecachemtimeZ lastupdaterZ loader_clsrxr{specmodulerrrsynopsiss4      "rc@s(eZdZddZddZdS)ErrorDuringImportcCs%||_|\|_|_|_dS)N)rexcrJtb)r@rexc_inforrrros zErrorDuringImport.__init__cCs#|jj}d|j||jfS)Nzproblem in %s - %s: %s)rr&rrJ)r@rrrr__str__s zErrorDuringImport.__str__N)r&r'r]rorrrrrrs  rc Cstjj}t|d4}|jt|}||tjjfk}WdQRXtjj |}tjj |\}}|rtj j ||}ntj j ||}tjj||d|} ytjj| SWnt|tjYnXdS)Nrbr{)rr MAGIC_NUMBERrreadr!_BACKCOMPAT_MAGIC_NUMBERr rbasenamesplitext_bootstrap_externalrSourceFileLoaderrrrrrr) rmagicrxZ first_bytesZ is_bytecoderr)rqr{rrrr importfile s rc s{y|rvtjkrvtjkrvfddtjD}x0g|D]!}tj|||Ks zsafeimport..rr)rrbuiltin_module_names __import__rrrX SyntaxErrorr ImportErrorr)r r>AttributeError) r forceloadrZsubsrIrrrJrinfopartr)rr safeimport7s.   rc@seZdZejjddejddZdddZ dddZ e Z Z Z ZZZejjejd d ejddd d ZdS) Doc PYTHONDOCSz%https://docs.python.org/%d.%d/libraryNrc Gs||f|}tj|r,|j|Stj|rH|j|SyXtj|rg|j|Stj|r|j|Stj|r|j |SWnt k rYnXt |t r|j |S|j|S)N)risgetsetdescriptordocdataismemberdescriptorr+ docmoduler,docclassr- docroutiner isinstanceproperty docpropertydocother)r@rr)argsrrrdocumentms"      z Doc.documentcGs9d|odt|t|jf}t|dS)Nz.don't know how to document object%s of type %s )reprtyper& TypeError)r@rr)rmessagerrrfails&zDoc.faillibz python%d.%dcCsytj|}Wntk r-d}YnXtjjd|j}tjj|}t |t tr|j dks|j |r|j tjj |d  r|j dkr|j drd|jd|j jf}qtjj ||j jd}nd}|S)Nz (built-in)rerrno exceptionsgcimpmarshalposixsignalr_thread zipimportz site-packages xml.etreetest.pydoc_modhttp://https://z%s/%s/z.html) rrrrrrrrrr)rr)rr)r getabsfilerr environr~rrr rrr&rcr"rlower)r@rZbasedirrxdoclocrrr getdoclocs$   %%z Doc.getdocloc)r&r'r]r rr~r version_inforrrrrrrrrrr"base_exec_prefixrrrrrrgs  rc@sdeZdZddZddZddZddZd d ZeZd d Z eZ d S)HTMLReprcCs:tj|d|_|_d|_d|_|_dS)N d)rromaxlistmaxtuplemaxdict maxstringmaxother)r@rrrros  zHTMLRepr.__init__cCst|ddddddS)N&z&z>)r0)r@r/rrrescapeszHTMLRepr.escapecCstj||S)N)rr)r@rrrrrsz HTMLRepr.reprcCstt|dr\ddjt|jj}t||r\t||||S|jttt ||j S)Nr&repr_ra) rerr"r&r r>rr5r7rr)r@rPlevel methodnamerrrrepr1s "zHTMLRepr.repr1cCst||j}t|}d|krcdt|ddkrcd|d|j||dStjdd|j|S)Nruz\\rrrz-((\\[\\abfnrtv\'"]|\\[0-9]..|\\x..|\\u....)+)z\1)r5rrr0rrr)r@rPrtesttestreprrrr repr_strings $! zHTMLRepr.repr_stringc CsOy)|jttt||jSWn|jd|jjSYnXdS)Nz <%s instance>)rr5r7rr __class__r&)r@rPrrrr repr_instances)zHTMLRepr.repr_instanceN) r&r'r]rorrrrrepr_strrZ repr_unicoderrrrrs       rc@seZdZeZejZejZddZdddZddddd d Z d d Z d dZ dddZ ddZ ddZddZddZddZddZdiiiddZdd d!Zddd"d#Zddiid$d%Zd&d'Zddiiidd(d)Zd*d+Zdddd,d-Zddd.d/Zdddd0d1Zdd2d3ZdS)4HTMLDoccCsd||fS)Nz Python: %s %s r)r@titlecontentsrrrpagesz HTMLDoc.pagercCsd|||||pdfS)Na'
 
 
%s
%s
z r)r@rfgcolbgcolextrasrrrheadings zHTMLDoc.headingNz c Csw|dkrdd|d}d|||f} |rT| d||||f} n| d|||f} | d|S)Nzz zz

zR z( z'
 
%s
%s %s
%s
%s%s%s
r) r@rrrrwidthZpreludeZ marginaliaZgaprrrrsections zHTMLDoc.sectioncGsd|}|j||S)Nz%s)r)r@rrrrr bigsections zHTMLDoc.bigsectionc Cs7|j|j}t|dddddddd S)Nz z rz rz
)r expandtabsr0)r@r/rrr preformatszHTMLDoc.preformatrtcCsd}t||d|}xt|D]r}|dd|}xMt|||||D]0}|t|kr_||||d}q_W|d}q+Wd|S)Nrrzrz
zz7%s
)r!range)r@listformatZcolsrrowscolirrr multicolumns"zHTMLDoc.multicolumncCsd|S)Nz%sr)r@r/rrrgreysz HTMLDoc.greycGs3x,|D]$}||krd|||fSqW|S)Nz%sr)r@r)Zdictsdictrrrnamelinks  zHTMLDoc.namelinkcCsm|jtjj|j}}t||r`t|||kr`d|j|t||fSt||S)Nz%s)r&rrr~r'rer>r*)r@rr(r)rrrr classlink#s $zHTMLDoc.classlinkcCsd|j|jfS)Nz%s)r&)r@rrrr modulelink+szHTMLDoc.modulelinkcCso|\}}}}|r%|j|S|r>d||f}n d|}|r[d|}n|}d||fS)Nz %s.%s.htmlz%s.htmlz"%s (package)z%s)r)r@Z modpkginfor)rrrshadowedurlr/rrr modpkglink/s   zHTMLDoc.modpkglinkcCsd||fS)Nz%sr)r@r rrrrfilelink>szHTMLDoc.filelinkcCs|p |j}g}d}tjd}x|j||} | sFP| j\} } |j|||| | j\} } }}}}| r|| jdd}|jd||fn|rdt|}|jd||| fn|r7dt|}|jd||| fn|r|| | dd krw|jd |j ||q|jd |nU|| | dd kr|j|j ||||n|j|j ||| }q-W|j|||dd j |S) NrzD\b((http|ftp)://\S+[\w/]|RFC[- ]?(\d+)|PEP[- ]?(\d+)|(self\.)?(\w+))"z"z%sz'http://www.rfc-editor.org/rfc/rfc%d.txtz(http://www.python.org/dev/peps/pep-%04d/r(zself.zself.%sr) rrcompilesearchspanr groupsr0intr r")r@r/rfuncsclassesrHrjherepatternmatchstartendrfschemeZrfcZpepZselfdotr)r rrrmarkupBs<   " zHTMLDoc.markupc Csd}x|D]}t|tfkr|\}}|d}||j||}|r||fkrg}x'|D]} |j|j| |qyW|ddj|d}|d}q t|tgkr |d|j|||}q Wd|S) Nrz"

rz, )z
z
%s
z
%s
)rr r r" formattree) r@treer(parentrentrycbasesparentsrKrrrr!ms       zHTMLDoc.formattreec#s|j}y |j}Wntk r0d}YnX|jd}g}xPtt|dD]8}|jddj|d|d||fq]Wdj||d-d} d| } y7tj |} t j j | } j | | } Wntk rd} YnXg}t|drt|j}|ddd.krx|d/ddkrx|dd0j}|jd j|t|d r|jjt|j|r| d d j|} j|}|dk rdt}nd}j| ddd| |}tj|tj}gi}}xtj|tjD]n\}}|dk stj|p||krft|||rf|j||fd|||<||%sz)%sz (built-in)r_ $z Revision: z version %srVz (%s)z, z-
Module Referencerz#ffffffz#7799eezindex
rsz.html#z#-z %sz

%s

r\rzPackage Contentsz#aa55cccsj|dS)Nr)r )t)r@rrsz#HTMLDoc.docmodule..ModulescSsg|]\}}|qSrr)rrIrJrrrrs z%HTMLDoc.docmodule..ZClassesz#ee77aarZ Functionsz#eeaa77ZDataz#55aa55z
rRZAuthorrUZCreditsrvz $Revision: rvrv)6r&__all__rr rr!r r"rrurllibparsequoterrrestrr_rrrVrlocalsrrBr+r, getmodulergrCr'rrr~r>r-r:r8r.rrrpkgutil iter_modulesr\sortrrrr! getclasstreerrRrU)#r@rr)modignoredrfpartsZlinksrZ linkednameheadrr rrversionrrrrZcdictrIrJrKr(rrZfdictdatar#modpkgsimporterispkgr classlistr)r@rrs    -   ,   " ! " " $!"   !& &    zHTMLDoc.docmodulecsj}|p|}j}g} | jGfddd} | ttj} t| dkrjdx+| D]#} dj| j qWdfdd} fd d }fd d }fd dt D}ix|D]w\}}}}d|d||<}yt |}Wnt k rYnXy||.HorizontalRulecSs d|_dS)Nr)needone)r@rrrrosz1HTMLDoc.docclass..HorizontalRule.__init__cs |jrdd|_dS)Nz
r)rB)r@)pushrrmaybes  z.HTMLDoc.docclass..HorizontalRule.maybeN)r&r'r]rorDr)rCrrHorizontalRules  rErz&
Method resolution order:
z
%s
z
cst||\}}|rj|x|D]\}}}}yt|}Wn+tk rj||Yn&Xj||dq6W|S)Nr)rQrDr> Exception_docdescriptorr)msgattrsrMokr)rkhomeclsrJ)rrhrmdictr8rrCr@rrspills   zHTMLDoc.docclass..spillcsit||\}}|rej|x3|D]+\}}}}j||q6W|S)N)rQrDrG)rHrIrMrJr)rkrKrJ)rLr8rCr@rrspilldescriptors)s  z*HTMLDoc.docclass..spilldescriptorsc s t||\}}|r j|x|D]\}}}}jt||}t|stj|rt|dd} nd} | dkrd|nBjt|j } d| } d|| fdq6W|S)NrWz
%s
z
%sz
%s%s
r) rQrDrr>callablerrirrr) rHrIrMrJr)rkrKrJrKr#)rrrLrMr8rrCr@rr spilldata2s"    z#HTMLDoc.docclass..spilldatacs@g|]6\}}}}t|dr||||fqS)r;)rg)rr)rkrlrJ)rrrrGs z$HTMLDoc.docclass..rs-rcs|dkS)Nrr)r*) thisclassrrr+`sz"HTMLDoc.docclass..z defined herezinherited from %sz:
rIcSs|dS)Nrr)r*rrrr+msz Methods %scSs|ddkS)Nrmethodr)r*rrrr+qszClass methods %scSs|ddkS)Nrz class methodr)r*rrrr+sszStatic methods %scSs|ddkS)Nrz static methodr)r*rrrr+uszData descriptors %scSs|ddkS)Nrzdata descriptorr)r*rrrr+wszData and other attributes %scSs|ddkS)Nrr=r)r*rrrr+ysrz*class %sz/%s = class %sz(%s)z, z%s
 
z#000000z#ffc8d8r1)r&rCr rrgetmror!rDr r'rhr>rFrpopleftrQbuiltinsrr6r"rrrr)r@rr)r8rrr9realnamer&rrEmrorKrNrOrQrIrIrkrKrJanchor inheritedtagrr'r#r) rrrLrMr8rrCr@rSrrs         ' '    !              $zHTMLDoc.docclasscCs|jd|j|S)N=)rr)r@rrrr formatvalueszHTMLDoc.formatvaluecCsT|j}|p|}|r$|jp'dd|} d} d} t|r|jj} |r| |k rd|j| |} nD|jdk rd|j|jj|} nd|j| |} ||krd| |f} ne|r0||jkr0|j||kr0d|jd||f}d } n|}d | ||f} d}tj|rytj|}Wnt t fk rd}YnX|rt |}|d krd |} |d d}|sd }| |j || o|j d| }| rd|S|jt||j|||}|o?d|}d||fSdS)NrrRrz from z method of %s instancez unbound %s methodz$%sz%srz)%s = %szz$%s lambda z(...)z'%sz
%s
z
%s
z
%s
%s
rv)r&rAr=rr __dict__rr- signature ValueErrorrr1rrrrr)r@rr)r8rrrHrGrXrZnoteskipdocsimclassrZreallinkargspecr`declr#rrrrsZ            zHTMLDoc.docroutinecCsrg}|j}|r#|d||jdk r[|jt||j}|d||ddj|S)Nz!
%s
z
%s
z
r)r rWrrrr")r@r)rJr8rjrCr#rrrrGs  zHTMLDoc._docdescriptorcCs|j|||S)N)rG)r@rr)r8rGrrrrszHTMLDoc.docpropertycGs'|rd|pd}||j|S)Nz%s = r)r)r@rr)r8r9ZlhsrrrrszHTMLDoc.docothercCs|j|||S)N)rG)r@rr)r8rGrrrrszHTMLDoc.docdatacCsg}|dkri}xhtj|gD]T\}}}tdd|DrVq+|j|d|||kfd||sz HTMLDoc.index..rrz#ffffffz#ee77aa)r4r5anyr r6rrr)r@rr r>r?r)r@rrrrindexs " z HTMLDoc.index)r&r'r]r_repr_instancerrrrrrrrrr r r rrrr!rrr^rrGrrrrkrrrrrs8              +y ; rc@sFeZdZddZddZddZeZddZd S) TextReprcCs:tj|d|_|_d|_d|_|_dS)Nrrr)rrorrrrr)r@rrrros  zTextRepr.__init__cCsxtt|dr\ddjt|jj}t||r\t||||Sttt||j S)Nr&rra) rerr"r&r r>r5r7rr)r@rPrrrrrrs "zTextRepr.repr1cCs^t||j}t|}d|krZdt|ddkrZd|d||dS|S)Nruz\\rrr)r5rrr0)r@rPrrrrrrr s  $zTextRepr.repr_stringc Cs=y ttt||jSWnd|jjSYnXdS)Nz <%s instance>)r5r7rrrr&)r@rPrrrrrs zTextRepr.repr_instanceN)r&r'r]rorrrrrrrrrms    rmc@seZdZeZejZddZdddZddZdd d d Z ddd d Z ddddZ ddZ dddddZ ddZdddddZdddddZdddddddZdS)TextDoccCsdjdd|DS)Nrcss|]}|d|VqdS)Nr)rrhrrrri$szTextDoc.bold..)r")r@r/rrrbold"sz TextDoc.boldz csS|s dSfdd|jdD}|rF|dj|d.rrrvrv)r rr")r@r/rqr$r)rqrindent&s "zTextDoc.indentcCs.|j|j}|j|d|dS)Nrz )rrrrp)r@rrZclean_contentsrrrr-szTextDoc.sectionNrc sd}x|D]}t|tfkr|\}}||t|}|r||fkrfdd|D} |ddj| }|d}q t|tgkr ||j|||d}q W|S)Nrc3s|]}t|VqdS)N)r*)rr%)r(rrri<sz%TextDoc.formattree..z(%s)z, rz )rr*r"r!) r@r"r(r#rqrr$r%r&r'r)r(rr!4s    zTextDoc.formattreec Cs|j}tt|\}}|jd||o:d|}t|dd}|j|}|dk r||jd|d}|r||jd|}g} xotj|tjD]X\} } |dk stj | p||krt | ||r| j | | fqWg} xxtj|tj D]a\} } |dk sttj | sttj | |kr8t | ||r8| j | | fq8Wg} xEtj|tD]1\} } t | ||r| j | | fqWg}t}t|drxWtj|jD]C\}}}|j||rR|j |dq|j |qW|j||jd d j|}g}xRtj|tjD];\} } | jj|d r| |kr|j | qW|r|j||jd d j|}| rd d| D}|jtj|d|g}x0| D](\} } |j |j| | |qWW||jdd j|}| rg}x0| D](\} } |j |j| | |qW||jdd j|}| rdg}x6| D].\} } |j |j| | |ddqW||jdd j|}t|drt|j}|ddd"kr|d#ddkr|dd$j}||jd|}t|dr||jdt|j }t|dr6||jdt|j!}t|drd||jdt|j"}ytj#|}Wnt$k rd }YnX||jd!|}|S)%NNAMEz - 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 DESCRIPTIONr\z (package)zPACKAGE CONTENTSrrZ SUBMODULEScSsg|]\}}|qSrr)rrIrJrrrrs z%TextDoc.docmodule..rCLASSES FUNCTIONSr3FZDATAr_r(r)z Revision: VERSIONrVZDATErRZAUTHORrUZCREDITSz (built-in)FILEz $Revision: rvrv)%r&r%rrr>rrrBr,r3rgr r-r:r.setrer4r5r\addr6r"r+rcr!r7rrr1r_rrVrRrUrr)r@rr)r8ZsynopdescrrfrrrIrJrr=r>Z modpkgs_namesr?r(r@Z submodulesrArr<rxrrrrDs    " " $ "   ""    &,  zTextDoc.docmodulecs-j}|p|}j}jdd}||krRdj|}nj|d|}|rt||} |ddj| }t} | r| dgpg} | jtt j } t | dkr#d x"| D]} d || qWd Gfd d d }|fdd}fdd}fdd}fddt D}x0|r| r| j n|ddt|fdd\}}tjkr#|}qn+kr8d}ndtj}|j|d||dd}|d||dd}|d||d d}|d!||d"d}|d#||d$d}|}qWdj| } | s |dS|dj| jd%dS)&NcSs t||S)N)r*)r%rrrrmakenamesz"TextDoc.docclass..makenamezclass z = class z(%s)z, rrzMethod resolution order:z rcs.eZdZddZfddZdS)z(TextDoc.docclass..HorizontalRulecSs d|_dS)Nr)rB)r@rrrrosz1TextDoc.docclass..HorizontalRule.__init__cs$|jrddd|_dS)NrRrvr)rB)r@)rCrrrDs z.TextDoc.docclass..HorizontalRule.maybeN)r&r'r]rorDr)rCrrrEs  rEcst||\}}|rj|xw|D]o\}}}}yt|}Wn+tk rj||Yq6Xj||q6W|S)N)rQrDr>rFrGr)rHrIrMrJr)rkrKrJ)rLr8rrCr@rrrNs    zTextDoc.docclass..spillcsit||\}}|rej|x3|D]+\}}}}j||q6W|S)N)rQrDrG)rHrIrMrJr)rkrKrJ)rLr8rCr@rrrOs  z*TextDoc.docclass..spilldescriptorsc st||\}}|rj|x|D]\}}}}t|sctj|rrt|}nd}yt|} Wntk r|j|} YnXj | |ddd|dq6W|S)Nr3rvr#r) rQrDrPrrirr>rr_r) rHrIrMrJr)rkrKrJr#r;)rLr8rrCr@rrrQs   ! z#TextDoc.docclass..spilldatacs@g|]6\}}}}t|dr||||fqS)r;)rg)rr)rkrlrJ)rrrrs z$TextDoc.docclass..rcs|dkS)Nrr)r*)rSrrr+sz"TextDoc.docclass..z defined herezinherited from %sz Methods %s: cSs|ddkS)NrrTr)r*rrrr+szClass methods %s: cSs|ddkS)Nrz class methodr)r*rrrr+szStatic methods %s: cSs|ddkS)Nrz static methodr)r*rrrr+szData descriptors %s: cSs|ddkS)Nrzdata descriptorr)r*rrrr+szData and other attributes %s: cSs|ddkS)Nrr=r)r*rrrr+sz | )r&rCr'rpmapr"rr rrrUr!rhrVrQrWrr*r6rrr)r@rr)r8r9rXr&r|rr'r#rrYrKrErNrOrQrIr[r\r)rLr8rrCr@rSrrsl            !           zTextDoc.docclasscCsd|j|S)Nr])r)r@rrrrr^&szTextDoc.formatvaluec Cs|j}|p|}d}d}t|r|jj}|ra||k rdt||}n>|jdk rdt|jj|}ndt||}||kr|j|} nE|r||jkr|j||krd}|j|d|} d} tj|rytj |} Wnt t fk rJd} YnX| rt | } |dkr|j|d } | dd } | sd } | | |} |r| d St |pd} | d | o|j| jd SdS) Nrrz from z method of %s instancez unbound %s methodrz = zz lambda z(...)rrv)r&rAr=rr*rpr_rr-r`rarr1rrrr)r@rr)r8rGrXrbrcrdrrer`rfr#rrrr*sJ         zTextDoc.docroutinecCstg}|j}|r2||j||dt|pAd}|rg||j||ddj|S)Nrr)r rprrrr")r@r)rJr8rjrCr#rrrrG\s   zTextDoc._docdescriptorcCs|j|||S)N)rG)r@rr)r8rGrrrriszTextDoc.docpropertycCs|j|||S)N)rG)r@rr)r8rGrrrrmszTextDoc.docdatac Cs|j|}|r_|r%|dp(d|}|t|} | dkr_|d| d}|rx|j|dp{d|}|dk r|d|jt|7}|S)Nz = rrz...r)rr!rprrr1) r@rr)r8r#r3r#rryZchoprrrrqs # zTextDoc.docother)r&r'r]rmrlrrprrrr!rrr^rrGrrrrrrrrns     e} 2 rnc@seZdZddZdS) _PlainTextDoccCs|S)Nr)r@r/rrrrpsz_PlainTextDoc.boldN)r&r'r]rprrrrr~}s r~cCstat|dS)N)getpagerpager)r/rrrrs rc CsttjdstSttjds,tStjj sLtjj rPtSdtjkrtjdkrxddStjj ddkrd dSd dStjj ddkrtStjdkrd dSttd rtj d dkrddSddl }|j \}}tj |z:ttd rgtj d|dkrgddStSWdtj|XdS)NisattyPAGERwin32cSstt|tjdS)Nr) tempfilepagerplainr r)r/rrrr+szgetpager..ZTERMdumbemacscSstt|tjdS)Nr) pipepagerrr r)r/rrrr+scSst|tjdS)Nr)rr r)r/rrrr+scSstt|dS)Nzmore <)rr)r/rrrr+ssystemz(less) 2>/dev/nullrcSs t|dS)NZless)r)r/rrrr+sz more "%s"cSs t|dS)NZmore)r)r/rrrr+s)rr)rr)rerstdin plainpagerstdoutrr rplatformr~rtempfilemkstempclosettypagerunlink)rfdrrrrrs4     $   ( rcCstjdd|S)Nz.r)rr)r/rrrrsrc Csddl}|j|ddd|j}yLtj|jdd-}y|j|Wntk rmYnXWdQRXWntk rYnXx(y|j PWqtk rYqXqWdS)NrshellTrerrorsbackslashreplace) subprocessPopenPIPEio TextIOWrapperrwriteKeyboardInterruptrwait)r/cmdrprocpiperrrrs      rcCsvddl}|j}t|ddd}|j|WdQRXztj|d|dWdtj|XdS)Nrwrrz "r)rmktemprrr rr)r/rrrrxrrrrs  rcCs4ttjddpd}|j|dj|S)Nencodingzutf-8r)r>rrencodedecode)r/rrrr_escape_stdoutsrc Cs5tt|jd}yGddl}tjj}|j|}|j|dd}Wn0t t t j fk rd}dd}YnXz|yt tjjdd}Wntk rd}YnX|dkrd}|d}}tjjdj|d|dx||drtjjd tjj|} | dkrrtjjd Pn5| dkrtjjd ||d|d}q| dkr|||}|dkrd}tjjddj||||d||}qWWd|r0|j||j|XdS)NrrcSstjjdS)Nr)rrrrrrrr+szttypager..cSs!tjjddddS)Nrrv)rrrwrrrrr+sLINESrz -- more --qQz  bB)rr)rr)rrr)rrr ttyrrfilenoZ tcgetattrZ setcbreakrrrUnsupportedOperationrr rr~rarrr"flushZ tcsetattrZ TCSAFLUSH) r/r$rroldZgetcharhrZincr%rrrrsL     '       /rcCs tjjtt|dS)N)rrrrr)r/rrrrsrcCs$tj|rQ|jtjkr,d|jSt|drFd|jSd|jStj|rkd|jStj|rd|jj |jj|jfStj |rd|jj |jj|jfStj |rd|jStj |rd |jStj |rd |jSt|jS) Nzbuilt-in module r\zpackage zmodule zbuilt-in function zgetset descriptor %s.%s.%szmember descriptor %s.%s.%szclass z function zmethod )rr+r&rrrer:r __objclass__r'rr,r8r9r)thingrrrdescribes.         rc Csdd|jdD}d\}}xW|t|krtdj|d|d|}|r}||d}}q+Pq+W|r|}nt}xD||dD]2}yt||}Wqtk rdSYqXqW|S)NcSsg|]}|r|qSrr)rrrrrr#s zlocate..rrr)Nr)r r!rr"rWr>r)rrr:rnZ nextmodulerrrrrlocate!s  &   rcCsyt|trDt||}|dkr:td|||fSt|dd}|t|trn|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&)rr1rrr>)rrrr)rrrresolve:s   rz Python Library Documentation: %scCs'|dkrt}t||\}}t|}tj|}|rxd|krx|d|d|jd7}n#|r||k r|d|j7}tj|ptj|ptj |ptj |ptj |pt |t s t|}|d7}||d|j||S)Nrz in z in module z objectz )r/rrrr3rfindr&r+r,r-rrrrrr)rrrZrendererrr)r{rrrr render_docHs$  $  rcCsyE|dkr(tt|||n|jt|||tWn5ttfk r|}zt|WYdd}~XnXdS)N)rrr plaintextrrprint)rrroutputrJrrrr#as   r#cCsy~t||\}}tjt|tj||}t|dddd}|j|WdQRXtd|dWn5tt fk r}zt|WYdd}~XnXdS)Nz.htmlrrzutf-8Zwrote) rhtmlrrrrrrrr)rrrr)rrxrJrrrwritedocls$rrcCsI|dkri}x0tj|g|D]\}}}t|q(WdS)N)r4 walk_packagesr)rpkgpathdoner?r(r@rrr writedocsws  %rc@seZdZddddddddddd d5d d6d d7dd8dd9dd:dddd;dddddd<dddd=dd>dd?d!d@d#d$d%dAd'dBd)dd*dd+dCd,dDd.dEddFd/dGddHd2dIi!Zd3dJd<dKd$dLdQdMdRdNd_dOd`dPiZdCdcd@dddedfdgdhdidjdkdldmdndod3dpdqdrdsdtdudvdwdxdwdydzd{dziZxaejD]S\ZZxDeD]<Z ej e eZ ee kre d|eZ e ee >r|^~rr<=>===!=<>ZUNARYAUGMENTEDASSIGNMENT+=-=*=/=%=&=|=^=<<=>>=**=//=ZBITWISEZCOMPLEXjJzOPERATORS FORMATTINGZPOWER,zTUPLES LISTS FUNCTIONSrz ATTRIBUTES FLOAT MODULES OBJECTSz...ELLIPSIS:zSLICINGS DICTIONARYLITERALS@z def classruraZ PRIVATENAMESr`zPRIVATENAMES SPECIALMETHODS`Z BACKQUOTESrzTUPLES FUNCTIONS CALLSr [zLISTS SUBSCRIPTS SLICINGS]rTYPEStypesRSTRINGS UNICODE NUMBERS SEQUENCES MAPPINGS FUNCTIONS CLASSES MODULES FILES inspectstrings4str UNICODE SEQUENCES STRINGMETHODS FORMATTING TYPESZ STRINGMETHODSstring-methodsSTRINGS FORMATTINGZ FORMATTING formatstringsUNICODE:encodings unicode SEQUENCES STRINGMETHODS FORMATTING TYPESZNUMBERSnumbersINTEGER FLOAT COMPLEX TYPESZINTEGERintegers int rangeFLOATfloating float math imaginary complex cmathZ SEQUENCEStypesseq$STRINGMETHODS FORMATTING range LISTSZMAPPINGSZ DICTIONARIEStypesfunctions def TYPESZMETHODS typesmethodsclass def CLASSES TYPESZ CODEOBJECTSbltin-code-objectscompile FUNCTIONS TYPESZ TYPEOBJECTSbltin-type-objects types TYPESZ FRAMEOBJECTSZ TRACEBACKSNONEbltin-null-objectbltin-ellipsis-objectSLICINGSZSPECIALATTRIBUTES specialattrsrt!class SPECIALMETHODS PRIVATENAMES typesmodulesZPACKAGES EXPRESSIONSoperator-summarylambda or and not in is BOOLEAN COMPARISON BITWISE SHIFTING BINARY FORMATTING POWER UNARY ATTRIBUTES SUBSCRIPTS SLICINGS CALLS TUPLES LISTS DICTIONARIESZ PRECEDENCEZOBJECTSobjectsZSPECIALMETHODS specialnamesbBASICMETHODS ATTRIBUTEMETHODS CALLABLEMETHODS SEQUENCEMETHODS MAPPINGMETHODS NUMBERMETHODS CLASSES customizationhash repr str SPECIALMETHODSZATTRIBUTEMETHODSattribute-accessATTRIBUTES SPECIALMETHODSZCALLABLEMETHODScallable-typesCALLS SPECIALMETHODSsequence-types(SEQUENCES SEQUENCEMETHODS SPECIALMETHODSZMAPPINGMETHODSMAPPINGS SPECIALMETHODS NUMBERMETHODS numeric-types*NUMBERS AUGMENTEDASSIGNMENT SPECIALMETHODSZ EXECUTION execmodel%NAMESPACES DYNAMICFEATURES EXCEPTIONSZ NAMESPACESnaming3global nonlocal ASSIGNMENT DELETION DYNAMICFEATURESZDYNAMICFEATURESdynamic-featuresZSCOPINGZFRAMESrtry except finally raiseZ CONVERSIONS conversionsZ IDENTIFIERS identifierskeywords SPECIALIDENTIFIERSZSPECIALIDENTIFIERS id-classesatom-identifiersZLITERALS atom-literals=STRINGS NUMBERS TUPLELITERALS LISTLITERALS DICTIONARYLITERALSZTUPLESZ TUPLELITERALS exprlistsTUPLES LITERALSZLISTStypesseq-mutable LISTLITERALSlistsLISTS LITERALS typesmappingDICTIONARYLITERALSrDICTIONARIES LITERALSZ ATTRIBUTESattribute-references(getattr hasattr setattr ATTRIBUTEMETHODSZ SUBSCRIPTS subscriptionsslicingsZCALLScallspowerunaryZBINARYbinaryZSHIFTINGshiftingbitwise comparisonsEXPRESSIONS BASICMETHODSbooleansEXPRESSIONS TRUTHVALUEZ ASSERTIONZ ASSIGNMENT assignment augassignZDELETIONZ RETURNINGZ IMPORTINGZ CONDITIONALZLOOPINGcompoundfor while break continuetruth if while and or not BASICMETHODSZ DEBUGGINGdebuggerpdbZCONTEXTMANAGERScontext-managersNcCs||_||_dS)N)_input_output)r@inputrrrrro*s zHelper.__init__cCs|jptjS)N)rrr)r@rrrr+.szHelper.cCs|jptjS)N)rrr)r@rrrr+/scCs?tjdddkr%|dSd|jj|jjfS)Nrr1?rz<%s.%s instance>)rstackrr'r])r@rrr__repr__1s  zHelper.__repr__cCsG||jk r|j|n$|j|j|jjddS)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. )_GoInteractiverintrointeractrr)r@requestrrr__call__9s    zHelper.__call__cCs|jjdxy|jd}|s,PWnttfk rHPYnXt|ddddj}|jd krzP|dkr|jq|j |qWdS) Nrzhelp> rrrrquitr)rr) rrgetlinerEOFErrorr0rrrr)r@rrrrrFs  zHelper.interactcCsJ|jtjkrt|S|jj||jj|jjSdS)N)rrrrrrrw)r@promptrrrrUs   zHelper.getlinecCst|tdkro|j}|dkr=|jq|dkrV|jq|dkro|jq|dkr|jq|dddkr|j|jdq||jkr|j|q|dkrt t |d q||j kr|j |q||j kr7|j |q|rVt |d d |jqt td d |jn/t|tr|nt |d d |j|jjddS)Nrkeywordssymbolstopicsrzmodules rrrrz Help on %s:rr)rrr)rr listkeywords listsymbols listtopics listmodulesr r showsymbolr#evalr showtopicrrr1rrrr)r@rrrrr^s6       z Helper.helpcCs2|jjdttjddgddS)Na Welcome to Python %s's help utility! If this is your first time using Python, you should definitely check out the tutorial on the Internet at http://docs.python.org/%s/tutorial/. Enter the name of any module, keyword, or topic to get help on writing Python programs and using Python modules. To quit this help utility and return to the interpreter, just type "quit". To get a list of available modules, keywords, symbols, or topics, type "modules", "keywords", "symbols", or "topics". Each module also comes with a one-line summary of what it does; to list the modules whose name or summary contain a given string such as "spam", type "modules spam". r1r)rrrrr<)r@rrrrss z Helper.intrortPc Cstt|}||}t||d|}xt|D]}xt|D]t}|||}|t|krT|jj||||dkrT|jjdd|dt||qTW|jjdqAWdS)Nrrr)rsortedr!rrr) r@itemscolumnsrZcolwrrowrrrrrrs .z Helper.listcCs*|jjd|j|jjdS)NzN Here is a list of the Python keywords. Enter any keyword to get more help. )rrrrrF)r@rrrrs zHelper.listkeywordscCs*|jjd|j|jjdS)Nzx Here is a list of the punctuation symbols which Python assigns special meaning to. Enter any symbol to get more help. )rrrrrF)r@rrrrs zHelper.listsymbolscCs*|jjd|j|jjdS)NzN Here is a list of available topics. Enter any topic name to get more help. )rrrrrF)r@rrrrs zHelper.listtopicsc Csyddl}Wn&tk r8|jjddSYnX|jj||jj|}|s~|jjdt|dSt|tdkr|j ||S|\}}y|jj|}Wn0t k r|jjdt|dSYnXt |j d|r'|pdd|}|rddl }ddj|jd} |j| d } |jjd dj| dS) Nrzt Sorry, topic and keyword documentation is not available because the module "pydoc_data.topics" could not be found. zno documentation found for %s rrrzRelated help topics: z, Hz %s )pydoc_data.topicsrrrrr~rrrrKeyErrorrrtextwrapr"r wrap) r@topic more_xrefs pydoc_datatargetlabelxrefsr#rr/Z wrapped_textrrrrs4   !    zHelper.showtopicc Csyddl}Wntk r(dSYnX|jj||jj|}|s\tdt|tr{|j||S|\}}|jj|}|r|pdd|}||fS)Nrt Sorry, topic and keyword documentation is not available because the module "pydoc_data.topics" could not be found. rzcould not find topicr)rr) rrrr~rrarr1 _gettopic)r@rrrrrrr#rrrrs   !  zHelper._gettopiccCs9|j|}|jd\}}}|j||dS)Nr)r partitionr)r@symbolrrrarrrrrs zHelper.showsymbolcs|r,|jjdj|t|np|jjdi}|ddfdd}tjd||j|j|jjddS) 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... cSsS|r0|dddkr0|ddd}|jddkrOd||.callbackcsd|ddS)Nr)r()rrronerrorsz#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". )rrrapropos ModuleScannerrunrrF)r@rIrrr)rrrs    zHelper.listmodules)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rru)rr)rr)rr)rru)rr)rr)rr)rr)rrrrrrrr)rrRrrrrrrrrrrrrrrr r r r )rrrr r r r )rRr) rrrrrrrrrrrr)rrrrrr)rr)r$r%)r&r')r(r))r*r)r&r,)r-r.)r/r0)r2r3)r4r5)r6r7)r8r9)r:r;)r<r=)r>r?)rAr)rBrC)rDr)r$rE)rFr)rHrI)rJr#)rKrL)rMrN)rOrP)rQrR)rSrT)rSrU)rWrX)rYrZ)r[r\)r]r)rr^)r_r)r`ra)rbr)rcr)rdre)rfrg)rhri)rjrk)rlrm)rrn)rorp)rqr)rrr)rsrG)rtrG)rurG)rvrG)rwrG)rxrG)ryrz)r{r|)r}r )r~rV)rr)rr)rr)rr) r&r'r]rZ_symbols_inverserrrZsymbols_rr~rrorrrrrrrrrrrrrrrrrrrrrrrr~s4                rc@s%eZdZdddddZdS)rNcCs|r|j}d|_i}xtjD]}|dkr+d||<|dkrf|d|dq+t|jpxd}|jdd}|d|}|jj|dkr+|d||q+Wxtj d|D]\} }} |jrP|dkr|d|dqytj | |} Wnt k rCwYnX| j } t | d ry| j|} Wn%tk r|r||wYnXttj| pd}t | d r| j|}qNd}nrytjj| }Wn%tk r|r||wYnX|jr6|jjdnd}t|d d}|d|}|jj|dkr||||qW|r|dS) NF__main__rrrrz - r get_source get_filenamerX)rrrrrrWr rr4r _get_specrr{rerrFrzrStringIOrrrrrrr>)r@rrIZ completerrseenr(r)r{r?r@rr{sourcerrrrrrs`     "         "zModuleScanner.run)r&r'r]rrrrrrs rc CsVdd}dd}tj+tjdtj||d|WdQRXdS)NcSsE|dddkr*|ddd}t||o=d|dS)Nrz .__init__z (package)z- ii)r)rr(r{rrrrCszapropos..callbackcSsdS)Nr)r(rrrrGszapropos..onerrorignorer)warningscatch_warningsfilterwarningsrr)rIrrrrrrAs     rcsddlddlddlddlGdddjjGfdddjjGfdddj}|||}|jx%|j r|j rt j dqW|S) Nrc@s(eZdZddZddZdS)z!_start_server..DocHandlercSsx|jjdrd}nd}|jd|jdd||j|jj|j|j|jddS)Nz.cssztext/cssz text/htmlz Content-Typez%s; charset=UTF-8zutf-8) rrdZ send_responseZ send_headerZ end_headersZwfiler urlhandlerr)r@ content_typerrrdo_GETs   z(_start_server..DocHandler.do_GETcWsdS)Nr)r@rrrr log_messagesz-_start_server..DocHandler.log_messageN)r&r'r]rrrrrr DocHandlers  rcs:eZdZddZfddZddZdS)z _start_server..DocServercSsMd|_|j|f|_||_|jj||j|jd|_dS)N localhostF)hostaddressrrKrohandlerr)r@portrrrrros   z)_start_server..DocServer.__init__cs[xJ|jsLj|jjgggd\}}}|r|jqW|jdS)Nr)rselectsocketrZhandle_requestZ server_close)r@Zrdwrex)rrrserve_until_quits  -z1_start_server..DocServer.serve_until_quitcSs*|jj||jr&|j|dS)N)rKserver_activater)r@rrrrs z0_start_server..DocServer.server_activateN)r&r'r]rorrr)rrr DocServers  rcsUeZdZfddZfddZddZddZd S) z#_start_server..ServerThreadcs>||_t||_jj|d|_d|_dS)NF)rrrThreadroservingerror)r@rr) threadingrrros   z,_start_server..ServerThread.__init__csyejj__jj_t|j_|j |j }||_ |j Wn.t k r}z||_WYdd}~XnXdS)N)server HTTPServerrKrrZMessageZ MessageClass staticmethodrrready docserverrrFr)r@Zdocsvre)rremailhttprrrs  z'_start_server..ServerThread.runcSs>d|_|j|_|j|_d|j|jf|_dS)NTz http://%s:%d/)rrZ server_portrr )r@rrrrrs   z)_start_server..ServerThread.readycSs"d|j_d|_d|_dS)NTF)rrrr )r@rrrstops  z(_start_server..ServerThread.stopN)r&r'r]rorrrr)rrrrrrr ServerThreads  rg{Gz?) Z http.serverZ email.messagerrrZBaseHTTPRequestHandlerrrrrrtimesleep)rrrthreadr)rrrrrrr _start_serverOs8    "+" rz text/htmlc sGfdddt}|fddfddfddfd d fd d fd dfddfddfdd f dd}|jdr|dd}|dkr{tjjtjjt}tjj||}t|}dj|j SWdQRXn|dkr||St d||fdS)Ncs.eZdZfddZddZdS)z_url_handler.._HTMLDoccs'd}d|}d|||fS)Nzpydoc_data/_pydoc.cssz1a  Pydoc: %s %s%s
%s
r)r@rrcss_pathZcss_link) html_navbarrrrsz#_url_handler.._HTMLDoc.pagecSsd||fS)Nz%sr)r@r rrrrrsz'_url_handler.._HTMLDoc.filelinkN)r&r'r]rrr)rrr_HTMLDocs  rcsUjdtjtjdtjf}d|jtjddfS)Nz %s [%s, %s]raZ
Python %s
%s
ZterseT)rrZpython_versionZ python_buildZpython_compiler)r<)rrrr s z!_url_handler..html_navbarcsdd}jddd}ddtjD}j||}|djd dd |g}i}x*tjD]}|jj||q{W|jd d d j|fS)NcSsd||fS)Nz%sr)r)rrr bltinlink sz3_url_handler..html_index..bltinlinkz7Index of Modulesz#ffffffz#7799eecSs"g|]}|dkr|qS)rr)rr)rrrr$ s z4_url_handler..html_index..z

zBuilt-in Modulesz#ee77aaz|

pydoc by Ka-Ping Yee<ping@lfw.org>zIndex of Modulesr) rrrrrrr rkr")rrnamesrrr)rrr html_index s   z _url_handler..html_indexc sgfdd}tj7tjddd}tj||d|WdQRXdd}g}jd d d }x+D]#\}}|j|||qW|jd |d d dj|}d|fS)NcsK|dddkr*|ddd}j||o@d|fdS)Nrz .__init__z (package)z- ii)r )rr(r{) search_resultrrr9 sz3_url_handler..html_search..callbackrcSsdS)Nr)r(rrrr@ sz2_url_handler..html_search..onerrorrcSsd||fS)Nz%sr)r)rrrrE sz4_url_handler..html_search..bltinlinkz5Search Resultsz#ffffffz#7799eezkey = %sz#ee77aaz
zSearch Results) rrrrrrr rr") rIrrrrjrr)r{r)r)rr html_search4 s         z!_url_handler..html_searchc stjj|}tj|}j|j}WdQRXd|}jddd}|jd|dd|}d||fS)Nz

%s
z3File Listingz#ffffffz#7799eezFile: %sz#ee77aaz getfile %s) r.r/unquoterrrrrr)rfpr$Zbodyrr)rrr html_getfileR s   z"_url_handler..html_getfilecsndd}jddd}ttjj}j||}|jddd|}d|fS)NcSsd||fS)Nz%sr)r)rrrrb sz4_url_handler..html_topics..bltinlinkz,INDEXz#ffffffz#7799eeZTopicsz#ee77aa)rrrrrFrr)rrrr)rrr html_topics_ s   z!_url_handler..html_topicscsnjddd}ttjj}dd}j||}|jddd|}d|fS)Nz,INDEXz#ffffffz#7799eecSsd||fS)Nz%sr)r)rrrrv sz6_url_handler..html_keywords..bltinlinkZKeywordsz#ee77aa)rrrrrFrr)rrrr)rrr html_keywordso s   z#_url_handler..html_keywordscstj}t||}|j|\}}||jkrHd}nd}jd|dd}dj|}j|dd|}|rt|j }dd }j ||}j d dd|}d ||fd j |||ffS) NZKEYWORDZTOPICz)%sz#ffffffz#7799eez
%s
z#ee77aacSsd||fS)Nz%sr)r)rrrr sz7_url_handler..html_topicpage..bltinlinkzRelated help topics: z%s %sr) rrrrrrrrrr rrr")rbufZhtmlhelprrrrr)rrrhtml_topicpage~ s&      z$_url_handler..html_topicpagecs^t|dd}|dkr6|dkr6tdt|}j||}||fS)Nrrrzcould not find object)rrarr)r r;rcontent)rrr html_getobj s   z!_url_handler..html_getobjcspjddd}djfddtt||D}|j|dd|}d||fS) Nz,Errorz#ffffffz#7799eez
c3s|]}j|VqdS)N)r)rry)rrrri sz3_url_handler..html_error..z#bb0000z Error - %s)rr"rrr)r rrr)rrr html_error s  z _url_handler..html_errorcs |}|jdr%|dd }y|dkrF\}}ny|dkrd\}}n[|dkr\}}n=d|kr|jd\}}}|dkr|\}}q|d kr|\}}q|d kr4y|\}}Wqtk r0|\}}YqXq|d kr|dkr^\}}qy|\}}Wqtk r|\}}YqXqtd n|\}}Wn:tk r}z||\}}WYdd}~XnXj||S)Nz.htmlrrkrrr]z search?keyz getfile?keyz topic?keyzget?keyz bad pydoc url)rrk)rrk)rdrrarFr)r Z complete_urlrroprar) rrrrrrrrrrr get_html_page sB           (z#_url_handler..get_html_pagerrztext/cssrz text/htmlz"unknown content type %r for url %s) rrcr rdirnamerealpathrXr"r readlinesr)r rrrZ path_hererrr) rrrrrrrrrrr _url_handlers,    **   r open_browserTcCs$ddl}tt|}|jr5t|jdS|jr d}|rZ|j|jzytd|jt|x^|jrtd}|j }|dkrPq}|dkr|j|jq}t|q}WWnt t fk rtYnXWd|jr|j tdXdS)Nrz"Server commands: [b]rowser, [q]uitzServer ready atzserver> rrzServer stopped) webbrowserrrrrrrr rrrrr)rrrZ serverthreadZserver_help_msgrrrrbrowse s2            rcCs%t|to$|jtjdkS)Nr)rr1rr sep)rPrrrispath srcCsddl}Gdddt}dtjkr|tjjtjd}|tjkritjj|tjjddy|jtjddd\}}d}d}d}d}xp|D]h\} } | d krd }d }| d krt | dS| d krd }| }| d krd }qW|r[|dkrGd}t |d|dS|sg|x|D]} t | rtjj |  rt d| Pyyt | rtjj| rt| } |r t | rtjj| rt| qt| n tj| Wqntk rL} zt | WYdd} ~ XqnXqnWWnc|j|fk rtjjtjjtjdd} t djd| dtjYnXdS)Nrc@seZdZdS)zcli..BadUsageN)r&r'r]rrrrBadUsage s r rrrzbk:p:wFz-bTz-kz-pz-wrzfile %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} -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. The -p option can be used with the -b option to explicitly specify the server port. {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)getoptrFrrr rargvremoveinsertrrrexistsrrprr rrrrrrrrr)r r Z scriptdirZoptsrwritingZ start_serverrroptvalargrJrrrrcli sd %           %)rr)Vr-rRrVrUrWZimportlib._bootstraprZimportlib._bootstrap_externalZimportlib.machineryimportlib.utilrrr r4rrrrrZ urllib.parser.r collectionsrreprlibr tracebackrrrr%r*r.r0r5r IGNORECASEr6r7r<rArErQrgrhrrrzrrFrrrrrrrmrnr~rrrrrrrrrrr/rrrrr#rrrrrrrrrrrr&rrrr%s                           ' 0>*- d  !    ,        =  %  V