ó DÑÕfc@sÙdZddlZddlZddlZddlZddlmZmZmZmZd„Z dej fd„ƒYZ ddd„ƒYZ d efd „ƒYZ d ee fd „ƒYZd ee fd„ƒYZdS(sKSelf documenting XML-RPC Server. This module can be used to create XML-RPC servers that serve pydoc-style documentation in response to HTTP GET requests. This documentation is dynamically generated based on the functions and methods registered with the server. This module is built upon the pydoc and SimpleXMLRPCServer modules. iÿÿÿÿN(tSimpleXMLRPCServertSimpleXMLRPCRequestHandlertCGIXMLRPCRequestHandlertresolve_dotted_attributecCs^|jddƒ}|jddƒ}|jddƒ}|jddƒ}|jd d ƒ}|S( Nt&s&ts>t"s"s's'(treplace(ts((s'/usr/lib64/python2.7/DocXMLRPCServer.pyt_html_escape_quotes t ServerHTMLDoccBsDeZdZdiiid„Zdiiidd„Zd„ZRS(s7Class used to generate pydoc HTML document for a servercCsÐ|p |j}g}d}tjdƒ}x|j||ƒ} | sIPn| jƒ\} } |j|||| !ƒƒ| jƒ\} } }}}}| rË|| ƒjddƒ}|jd||fƒnØ|rdt|ƒ}|jd||| ƒfƒn¢|r7dt|ƒ}|jd||| ƒfƒnl|| | d!d krp|j|j ||||ƒƒn3|rŠ|jd |ƒn|j|j ||ƒƒ| }q-|j|||ƒƒd j |ƒS( sƒMark up some plain text, given a context of symbols to look for. Each context dictionary maps object names to anchor names.isM\b((http|ftp)://\S+[\w/]|RFC[- ]?(\d+)|PEP[- ]?(\d+)|(self\.)?((?:\w|\.)+))\bRs"s%ss'http://www.rfc-editor.org/rfc/rfc%d.txts(http://www.python.org/dev/peps/pep-%04d/it(sself.%st( tescapetretcompiletsearchtspantappendtgroupsRtinttnamelinktjoin(tselfttextRtfuncstclassestmethodstresultstheretpatterntmatchtstarttendtalltschemetrfctpeptselfdottnameturl((s'/usr/lib64/python2.7/DocXMLRPCServer.pytmarkup$s8  " c CsŒ|r|jpdd|}d} d|j|ƒ|j|ƒf} tj|ƒrštj|jƒ\} } } }tj| d| | |d|jƒ}nTtj|ƒrètj|ƒ\} } } }tj| | | |d|jƒ}nd}t |t ƒr |dp |}|dpd}nt j |ƒ}| || oL|j d| ƒ}|j||j|||ƒ}|o{d |}d ||fS( s;Produce HTML documentation for a function or method object.R t-s$%sit formatvalues(...)is'%ss
%s
s
%s
%s
(t__name__Rtinspecttismethodt getargspectim_funct formatargspecR,t isfunctiont isinstancettupletpydoctgetdoctgreyR*t preformat(RtobjectR(tmodRRRtcltanchortnotettitletargstvarargstvarkwtdefaultstargspect docstringtdecltdoc((s'/usr/lib64/python2.7/DocXMLRPCServer.pyt docroutineMs6c Csi}x6|jƒD](\}}d|||<||||%ss#ffffffs#7799ees %ss

%s

RtMethodss#eeaa77( titemsRtheadingR*R9tsortedRRHt bigsectionR6R( Rt server_nametpackage_documentationRtfdicttkeytvaluetheadtresultRGtcontentst method_items((s'/usr/lib64/python2.7/DocXMLRPCServer.pyt docserverws" # N(R-t __module__t__doc__tNoneR*RHRW(((s'/usr/lib64/python2.7/DocXMLRPCServer.pyR !s ))tXMLRPCDocGeneratorcBs;eZdZd„Zd„Zd„Zd„Zd„ZRS(s…Generates documentation for an XML-RPC server. This class is designed as mix-in and should not be constructed directly. cCsd|_d|_d|_dS(NsXML-RPC Server DocumentationsGThis server exports the following methods through the XML-RPC protocol.(RNtserver_documentationt server_title(R((s'/usr/lib64/python2.7/DocXMLRPCServer.pyt__init__—s  cCs ||_dS(s8Set the HTML title of the generated server documentationN(R](RR]((s'/usr/lib64/python2.7/DocXMLRPCServer.pytset_server_titleŸscCs ||_dS(s7Set the name of the generated HTML server documentationN(RN(RRN((s'/usr/lib64/python2.7/DocXMLRPCServer.pytset_server_name¤scCs ||_dS(s3Set the documentation string for the entire server.N(R\(RR\((s'/usr/lib64/python2.7/DocXMLRPCServer.pytset_server_documentation©scCs{i}x/|jƒD]!}||jkr8|j|}nò|jdk rddg}t|jdƒr~|jj|ƒ|d html documentation for the server Generates HTML documentation for the server using introspection for installed functions and instances that do not implement the _dispatch method. Alternatively, instances can choose to implement the _get_method_argstring(method_name) method to provide the argument string used in the documentation and the _methodHelp(method_name) method to provide the help text used in the documentation.t_get_method_argstringit _methodHelpit _dispatchsACould not find method in self.functions and no instance installedN(NN(tsystem_listMethodsRtinstanceRZthasattrRbRcR5RtAttributeErrortAssertionErrorR RWRNR\R R]tpage(RRt method_nametmethodt method_infot documentert documentationR?((s'/usr/lib64/python2.7/DocXMLRPCServer.pytgenerate_html_documentation®s<           (R-RXRYR^R_R`RaRp(((s'/usr/lib64/python2.7/DocXMLRPCServer.pyR[s     tDocXMLRPCRequestHandlercBseZdZd„ZRS(sèXML-RPC and documentation request handler class. Handles all HTTP POST requests and attempts to decode them as XML-RPC requests. Handles all HTTP GET requests and interprets them as requests for documentation. cCs€|jƒs|jƒdS|jjƒ}|jdƒ|jddƒ|jdtt|ƒƒƒ|jƒ|j j |ƒdS(s}Handles the HTTP GET request. Interpret all HTTP GET requests as requests for server documentation. NiÈs Content-types text/htmlsContent-length( tis_rpc_path_validt report_404tserverRpt send_responset send_headertstrtlent end_headerstwfiletwrite(Rtresponse((s'/usr/lib64/python2.7/DocXMLRPCServer.pytdo_GETìs    (R-RXRYR}(((s'/usr/lib64/python2.7/DocXMLRPCServer.pyRqâstDocXMLRPCServercBs&eZdZededed„ZRS(sŽXML-RPC and HTML documentation server. Adds the ability to serve server documentation to the capabilities of SimpleXMLRPCServer. icCs0tj|||||||ƒtj|ƒdS(N(RR^R[(RtaddrtrequestHandlert logRequestst allow_nonetencodingtbind_and_activate((s'/usr/lib64/python2.7/DocXMLRPCServer.pyR^s N(R-RXRYRqtFalseRZtTrueR^(((s'/usr/lib64/python2.7/DocXMLRPCServer.pyR~þs tDocCGIXMLRPCRequestHandlercBs eZdZd„Zd„ZRS(sJHandler for XML-RPC data and documentation requests passed through CGIcCs5|jƒ}dGHdt|ƒGHHtjj|ƒdS(s}Handles the HTTP GET request. Interpret all HTTP GET requests as requests for server documentation. sContent-Type: text/htmlsContent-Length: %dN(RpRxtsyststdoutR{(RR|((s'/usr/lib64/python2.7/DocXMLRPCServer.pyt handle_gets  cCstj|ƒtj|ƒdS(N(RR^R[(R((s'/usr/lib64/python2.7/DocXMLRPCServer.pyR^ s (R-RXRYRŠR^(((s'/usr/lib64/python2.7/DocXMLRPCServer.pyR‡ s ((RYR6R.RRˆRRRRR tHTMLDocR R[RqR~R‡(((s'/usr/lib64/python2.7/DocXMLRPCServer.pyt s    " oR