nfc@sdZddlZddlZddlZddlZddlTddlZddlZddlZyddl Z Wne k rdZ nXye Wne k rdZ nXyddlZWne k rdZnXyejjdkZWne k r dZnXejdjdZejdZe rCd Zn d Zd ZdSZdUZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'de(fdYZ)de)fdYZ*de)fdYZ+de)fd YZ,dd!l-m.Z.e.ej/Z0erBe1Z2Z3e4e0d"es5e>e3fZ>ny"ddl?Z?e?j@ZAe?jBZCWn!eDe fk rzdZAZCnXyddl?Z?e?jEZFWneDe fk rdZFnXy,dd/lGmHZHeIeHd0se nWne k rdZJnXd1dYd2YZJd3dZd4YZKd5d[d6YZEd7d\d8YZBd9d]d:YZLd;d^d<YZMd=d_d>YZNdd?ZOddddd@ZPddAZQdBZRdCdDZSdEe re jTneUfdFYZVdGd`dHYZWdIdadJYZXdKeXfdLYZYdMdbdNYZZeZZ[edOkreZdPZ\e\GHye\j]j^GHWne)k rZ_dQGe_GHnXeNe\Z`e`j]j^e`j]j^yxe`D] ZaeaGHqWWqe)k rZ_dQGe_GHqXndS(cs~ An XML-RPC client interface for Python. The marshalling and response parser code can also be used to implement XML-RPC servers. Exported exceptions: Error Base class for client errors ProtocolError Indicates an HTTP protocol error ResponseError Indicates a broken response package Fault Indicates an XML-RPC fault package Exported classes: ServerProxy Represents a logical connection to an XML-RPC server MultiCall Executor of boxcared xmlrpc requests Boolean boolean wrapper to generate a "boolean" XML-RPC value DateTime dateTime wrapper for an ISO 8601 string or time tuple or localtime integer value to generate a "dateTime.iso8601" XML-RPC value Binary binary data wrapper SlowParser Slow but safe standard parser (based on xmllib) Marshaller Generate an XML-RPC params chunk from a Python data structure Unmarshaller Unmarshal an XML-RPC response from incoming XML event message Transport Handles an HTTP transaction to an XML-RPC server SafeTransport Handles an HTTPS transaction to an XML-RPC server Exported constants: True False Exported functions: boolean Convert any Python value to an XML-RPC boolean getparser Create instance of the fastest available parser & attach to an unmarshalling object dumps Convert an argument tuple or a Fault instance to an XML-RPC request (or response, if the methodresponse option is used). loads Convert an XML-RPC packet to unmarshalled data plus a method name (None if not present). iN(t*tboolis[-]cCs.tr*|r*||r*t||}n|S(N(tunicode(tdatatencodingtis8bit((s!/usr/lib64/python2.7/xmlrpclib.pyt_decodescCs4||dd}||dd}||ddS(Nt&s&ts>((tstreplace((s!/usr/lib64/python2.7/xmlrpclib.pytescapescCs*y|jdSWntk r%|SXdS(Ntascii(tencodet UnicodeError(tstring((s!/usr/lib64/python2.7/xmlrpclib.pyt _stringifys cCs|S(N((R((s!/usr/lib64/python2.7/xmlrpclib.pyRss1.0.1liiiDii ipiԁiCiBiiitErrorcBseZdZdZRS(sBase class for client errors.cCs t|S(N(trepr(tself((s!/usr/lib64/python2.7/xmlrpclib.pyt__str__s(t__name__t __module__t__doc__R(((s!/usr/lib64/python2.7/xmlrpclib.pyRst ProtocolErrorcBs eZdZdZdZRS(s!Indicates an HTTP protocol error.cCs5tj|||_||_||_||_dS(N(Rt__init__turlterrcodeterrmsgtheaders(RRRRR((s!/usr/lib64/python2.7/xmlrpclib.pyRs     cCsd|j|j|jfS(Ns(RRR(R((s!/usr/lib64/python2.7/xmlrpclib.pyt__repr__s(RRRRR(((s!/usr/lib64/python2.7/xmlrpclib.pyRs t ResponseErrorcBseZdZRS(s$Indicates a broken response package.(RRR(((s!/usr/lib64/python2.7/xmlrpclib.pyR stFaultcBs eZdZdZdZRS(s#Indicates an XML-RPC fault package.cKs#tj|||_||_dS(N(RRt faultCodet faultString(RR"R#textra((s!/usr/lib64/python2.7/xmlrpclib.pyRs  cCsd|jt|jfS(Ns(R"RR#(R((s!/usr/lib64/python2.7/xmlrpclib.pyRs(RRRRR(((s!/usr/lib64/python2.7/xmlrpclib.pyR!s (tmodulestTruetFalsetBooleancBsGeZdZddZdZdZdZdZdZRS(saBoolean-value wrapper. Use True or False to generate a "boolean" XML-RPC value. icCstj||_dS(N(toperatorttruthtvalue(RR+((s!/usr/lib64/python2.7/xmlrpclib.pyR3scCs|jd|jdS(Ns%%d (twriteR+(Rtout((s!/usr/lib64/python2.7/xmlrpclib.pyR6scCs+t|tr|j}nt|j|S(N(t isinstanceR(R+tcmp(Rtother((s!/usr/lib64/python2.7/xmlrpclib.pyt__cmp__9s cCs)|jrdt|Sdt|SdS(Nss(R+tid(R((s!/usr/lib64/python2.7/xmlrpclib.pyR>s cCs|jS(N(R+(R((s!/usr/lib64/python2.7/xmlrpclib.pyt__int__DscCs|jS(N(R+(R((s!/usr/lib64/python2.7/xmlrpclib.pyt __nonzero__Gs( RRRRRR1RR3R4(((s!/usr/lib64/python2.7/xmlrpclib.pyR(-s     cCs|tj|S(s.Convert any Python value to XML-RPC 'boolean'.(R)R*(R+t _truefalse((s!/usr/lib64/python2.7/xmlrpclib.pytbooleanXscCstrGt|tjrGd|j|j|j|j|j|jfSnt|tt j fs|dkrzt j }nt j |}nd|d S(Ns%04d%02d%02dT%02d:%02d:%02dii( tdatetimeR.tyeartmonthtdaythourtminutetsecondt TupleTypettimet struct_timet localtime(R+((s!/usr/lib64/python2.7/xmlrpclib.pyt _strftimeks tDateTimecBseZdZddZdZdZdZdZdZdZ d Z d Z d Z d Z d ZdZdZRS(sDateTime wrapper for an ISO 8601 string or time tuple or localtime integer value to generate 'dateTime.iso8601' XML-RPC value. icCs.t|tr||_nt||_dS(N(R.t StringTypeR+RB(RR+((s!/usr/lib64/python2.7/xmlrpclib.pyRs cCst|tr$|j}|j}ntrWt|tjrW|j}|jd}nt|ttfr~|j}|}nmt|dr|j}|j}nCt|dr|j j pt |}t d|j j |f||fS(Ns%Y%m%dT%H:%M:%St timetuplet __class__sCan't compare %s and %s( R.RCR+R7tstrftimetstrRthasattrRERFRttypet TypeError(RR0R tototype((s!/usr/lib64/python2.7/xmlrpclib.pytmake_comparables$        cCs|j|\}}||kS(N(RN(RR0R RL((s!/usr/lib64/python2.7/xmlrpclib.pyt__lt__scCs|j|\}}||kS(N(RN(RR0R RL((s!/usr/lib64/python2.7/xmlrpclib.pyt__le__scCs|j|\}}||kS(N(RN(RR0R RL((s!/usr/lib64/python2.7/xmlrpclib.pyt__gt__scCs|j|\}}||kS(N(RN(RR0R RL((s!/usr/lib64/python2.7/xmlrpclib.pyt__ge__scCs|j|\}}||kS(N(RN(RR0R RL((s!/usr/lib64/python2.7/xmlrpclib.pyt__eq__scCs|j|\}}||kS(N(RN(RR0R RL((s!/usr/lib64/python2.7/xmlrpclib.pyt__ne__scCstj|jdS(Ns%Y%m%dT%H:%M:%S(R?tstrptimeR+(R((s!/usr/lib64/python2.7/xmlrpclib.pyREscCs"|j|\}}t||S(N(RNR/(RR0R RL((s!/usr/lib64/python2.7/xmlrpclib.pyR1scCs|jS(N(R+(R((s!/usr/lib64/python2.7/xmlrpclib.pyRscCsdt|jt|fS(Ns(RR+R2(R((s!/usr/lib64/python2.7/xmlrpclib.pyRscCs"t|}tj||_dS(N(RHRtstripR+(RR((s!/usr/lib64/python2.7/xmlrpclib.pytdecodes cCs.|jd|j|j|jddS(Nss (R,R+(RR-((s!/usr/lib64/python2.7/xmlrpclib.pyRs (RRRRRNRORPRQRRRSRTRER1RRRWR(((s!/usr/lib64/python2.7/xmlrpclib.pyRCys            cCst}|j||S(N(RCRW(RR+((s!/usr/lib64/python2.7/xmlrpclib.pyt _datetimes  cCs)tj|d}tjt|d S(Ns%Y%m%dT%H:%M:%Si(R?RUR7ttuple(Rtt((s!/usr/lib64/python2.7/xmlrpclib.pyt_datetime_typestBinarycBs>eZdZddZdZdZdZdZRS(sWrapper for binary data.cCs ||_dS(N(R(RR((s!/usr/lib64/python2.7/xmlrpclib.pyRscCs |jp dS(Nt(R(R((s!/usr/lib64/python2.7/xmlrpclib.pyRscCs+t|tr|j}nt|j|S(N(R.R\RR/(RR0((s!/usr/lib64/python2.7/xmlrpclib.pyR1s cCstj||_dS(N(tbase64t decodestringR(RR((s!/usr/lib64/python2.7/xmlrpclib.pyRWscCs:|jdtjtj|j||jddS(Ns s (R,R^RtStringIOR(RR-((s!/usr/lib64/python2.7/xmlrpclib.pyRs N( RRRtNoneRRR1RWR(((s!/usr/lib64/python2.7/xmlrpclib.pyR\s     cCst}|j||S(N(R\RW(RR+((s!/usr/lib64/python2.7/xmlrpclib.pyt_binarys  (texpatt ParserCreatet ExpatParsercBs#eZdZdZdZRS(cCsrtjdd|_}||_|j|_|j|_|j |_ d}|j s^d}n|j |ddS(Nsutf-8( RcRdRat_parsert_targettstarttStartElementHandlertendtEndElementHandlerRtCharacterDataHandlertreturns_unicodetxml(RttargettparserR((s!/usr/lib64/python2.7/xmlrpclib.pyR"s      cCs|jj|ddS(Ni(RftParse(RR((s!/usr/lib64/python2.7/xmlrpclib.pytfeed-scCs#|jjdd|`|`dS(NR]i(RfRqRg(R((s!/usr/lib64/python2.7/xmlrpclib.pytclose0s(RRRRrRs(((s!/usr/lib64/python2.7/xmlrpclib.pyRe s t SlowParsercBseZdZdZRS(s/Default XML parser (based on xmllib.XMLParser).cCsddl}|jtjkr0|jft_n|j|_|j|_|j|_ |j|_ |j |_ y|jj |ddWn!tk r|jj |nXdS(Nit accept_utf8i(txmllibt XMLParserRtt __bases__Rnt handle_xmlRhtunknown_starttagRt handle_datat handle_cdataRjtunknown_endtagRRK(RRoRv((s!/usr/lib64/python2.7/xmlrpclib.pyR7s       (RRRR(((s!/usr/lib64/python2.7/xmlrpclib.pyRt4st MarshallercBs7eZdZdddZiZdZdZdZeee R"R#s s s s s R](tappendt_Marshaller__dumpR.R!R"R#Rtjoin(RtvaluesR-R,tdumptvtresult((s!/usr/lib64/python2.7/xmlrpclib.pytdumpsds"          cCsy|jt|}Wntk ry |jWntdt|nXxBt|jD]1}||jjkr_tdt|q_q_W|jt}nX||||dS(Nscannot marshal %s objects(tdispatchRJtKeyErrort__dict__RKt__mro__tkeyst InstanceType(RR+R,tfttype_((s!/usr/lib64/python2.7/xmlrpclib.pyt__dumps  cCs#|jstdn|ddS(Ns0cannot marshal None unless allow_none is enableds(RRK(RR+R,((s!/usr/lib64/python2.7/xmlrpclib.pytdump_nils  cCsL|tks|tkr$tdn|d|t||ddS(Nsint exceeds XML-RPC limitss s (tMAXINTtMININTt OverflowErrorRH(RR+R,((s!/usr/lib64/python2.7/xmlrpclib.pytdump_ints   cCs.|d||rdpd|ddS(Nst1t0s ((RR+R,((s!/usr/lib64/python2.7/xmlrpclib.pyt dump_bools cCsR|tks|tkr$tdn|d|tt||ddS(Nslong int exceeds XML-RPC limitss s (RRRRHtint(RR+R,((s!/usr/lib64/python2.7/xmlrpclib.pyt dump_longs   cCs(|d|t||ddS(Nss (R(RR+R,((s!/usr/lib64/python2.7/xmlrpclib.pyt dump_doubles cCs(|d||||ddS(Nss ((RR+R,R ((s!/usr/lib64/python2.7/xmlrpclib.pyt dump_strings cCs:|j|j}|d||||ddS(Nss (RR(RR+R,R ((s!/usr/lib64/python2.7/xmlrpclib.pyt dump_unicodes cCs}t|}||jkr'tdnd|j|<|j}|dx|D]}|||qNW|d|j|=dS(Ns"cannot marshal recursive sequencess s (R2RRKRaR(RR+R,tiRR((s!/usr/lib64/python2.7/xmlrpclib.pyt dump_arrays       cCst|}||jkr'tdnd|j|<|j}|dx|jD]\}}|dt|tk rtrt|t kr|j |j }qtdn|d||||||dqTW|d|j|=dS(Ns%cannot marshal recursive dictionariess s sdictionary key must be strings%s s s ( R2RRKRaRtitemsRJRDRt UnicodeTypeRR(RR+R,R RRtkR((s!/usr/lib64/python2.7/xmlrpclib.pyt dump_structs"         cCs(|d|t||ddS(Nss (RB(RR+R,((s!/usr/lib64/python2.7/xmlrpclib.pyt dump_datetimes cCsE|jtkr.||_|j||`n|j|j|dS(N(RFtWRAPPERSR,RRR(RR+R,((s!/usr/lib64/python2.7/xmlrpclib.pyt dump_instances    N("RRRRaRRRRRtNoneTypeRtIntTypet_bool_is_builtinRRRtLongTypeRt FloatTypeR RRDRRRRR>tListTypeRtDictTypeR7RRR(((s!/usr/lib64/python2.7/xmlrpclib.pyR~Os>                      t UnmarshallercBszeZdZddZdZdZdZdZdZe j dZ d Z iZ d Zee d |jrt||j}n|jt|d|_dS(Ni(RRRRR(RR((s!/usr/lib64/python2.7/xmlrpclib.pyt end_stringfs RtnamecCs3|jj}|j|g|j|)d|_dS(Ni(RtpopRR(RRtmark((s!/usr/lib64/python2.7/xmlrpclib.pyt end_arraynsRcCs~|jj}i}|j|}x<tdt|dD]"}||d|t|| a object used to boxcar method calls server should be a ServerProxy object. Methods can be added to the MultiCall using normal method call syntax e.g.: multicall = MultiCall(server_proxy) multicall.add(2,3) multicall.get_address("Guido") To execute the multicall, call the MultiCall object e.g.: add_result, address = multicall() cCs||_g|_dS(N(t_MultiCall__servert_MultiCall__call_list(Rtserver((s!/usr/lib64/python2.7/xmlrpclib.pyRs cCsdt|S(Ns(R2(R((s!/usr/lib64/python2.7/xmlrpclib.pyRscCst|j|S(N(RR(RR((s!/usr/lib64/python2.7/xmlrpclib.pyRscCsTg}x2|jD]'\}}|ji|d6|d6qWt|jjj|S(NRR(RRRRtsystemt multicall(Rtmarshalled_listRR((s!/usr/lib64/python2.7/xmlrpclib.pyRs(RRRRRRRR(((s!/usr/lib64/python2.7/xmlrpclib.pyRs    cCs|rt rtdntratra|r4t}nt}tttt|t }t|}nEt d|}trt|}n!t rt |}n t |}||fS(sgetparser() -> parser, unmarshaller Create an instance of the fastest available parser, and attach it to an unmarshalling object. Return both objects. s$the datetime module is not availableR( R7Rt FastParsertFastUnmarshallerR[RXR&R'RbR!RReRt(Rt mkdatetimeRoRp((s!/usr/lib64/python2.7/xmlrpclib.pyt getparsers     cCst|trd}n|r0t|tr0n|s?d}ntrTt|}nt||}|j|}|dkrdt|}nd}|rt|ts|j|}n|d|d|df}n|r|d|d f}n|St j |d S( sdata [,options] -> marshalled data Convert an argument tuple or a Fault instance to an XML-RPC request (or response, if the methodresponse option is used). In addition to the data object, the following options can be given as keyword arguments: methodname: the method name for a methodCall packet methodresponse: true to create a methodResponse packet. If this option is used with a tuple, the tuple must be a singleton (i.e. it can contain only one element). encoding: the packet encoding (default is UTF-8) All 8-bit strings in the data structure are assumed to use the packet encoding. Unicode strings are automatically converted, where necessary. isutf-8s$ s s s s s s R]( R.R!R>tFastMarshallerR~RRHRDRRR(Rt methodnametmethodresponseRRtmRt xmlheader((s!/usr/lib64/python2.7/xmlrpclib.pyRs8     cCsBtd|\}}|j||j|j|jfS(sdata -> unmarshalled data, method name Convert an XML-RPC packet to unmarshalled data plus a method name (None if not present). If the XML-RPC packet represents a fault condition, this function raises a Fault exception. R(RRrRsR(RRtptu((s!/usr/lib64/python2.7/xmlrpclib.pytloadsfs   cCsjtstntj}tjddd|dd}|j||j|j}|j|S(shdata -> gzip encoded data Encode data using the gzip content encoding as described in RFC 1952 tmodetwbtfileobjt compressleveli(tgziptNotImplementedErrorR`tGzipFileR,Rstgetvalue(RRtgzftencoded((s!/usr/lib64/python2.7/xmlrpclib.pyt gzip_encode|s      i@cCststntj|}tjddd|}y2|dkrT|j}n|j|d}Wntk rtdnX|j|j|dkrt||krtdn|S(srgzip encoded data -> unencoded data Decode data using the gzip content encoding as described in RFC 1952 RtrbRiis invalid datas#max gzipped payload length exceeded( RRR`RtreadtIOErrorRRsR(Rt max_decodeRRtdecoded((s!/usr/lib64/python2.7/xmlrpclib.pyt gzip_decodes     tGzipDecodedResponsecBs eZdZdZdZRS(sha file-like object to decode a response encoded with the gzip method, as described in RFC 1952. cCsJtstntj|j|_tjj|ddd|jdS(NRRR(RRR`RtstringioRR(Rtresponse((s!/usr/lib64/python2.7/xmlrpclib.pyRs cCs!tjj||jjdS(N(RRRsR (R((s!/usr/lib64/python2.7/xmlrpclib.pyRss(RRRRRs(((s!/usr/lib64/python2.7/xmlrpclib.pyR s t_MethodcBs#eZdZdZdZRS(cCs||_||_dS(N(t _Method__sendt _Method__name(RtsendR((s!/usr/lib64/python2.7/xmlrpclib.pyRs cCst|jd|j|fS(Ns%s.%s(RRR(RR((s!/usr/lib64/python2.7/xmlrpclib.pyRscGs|j|j|S(N(RR(RR((s!/usr/lib64/python2.7/xmlrpclib.pyRs(RRRRR(((s!/usr/lib64/python2.7/xmlrpclib.pyRs  t TransportcBseZdZdeZeZdZddZ ddZ ddZ dZ dZ dZd Zd Zd Zd Zd ZdZRS(s1Handles an HTTP transaction to an XML-RPC server.s'xmlrpclib.py/%s (by www.pythonware.com)icCs||_d|_g|_dS(N(NN(RRat _connectiont_extra_headers(RR((s!/usr/lib64/python2.7/xmlrpclib.pyRs  cCsxdD]}y|j||||SWqtjk rl}|sc|jtjtjtjfkrqqtjk r|rqqXqWdS(Nii(ii( tsingle_requesttsocketterrorterrnot ECONNRESETt ECONNABORTEDtEPIPEthttplibt BadStatusLine(Rthostthandlert request_bodytverboseRte((s!/usr/lib64/python2.7/xmlrpclib.pytrequests ' cCs|j|}|r%|jdny{|j||||j|||j||j|||jdt}|jdkr||_ |j |SWn1t k rnt k r|j nX|jddr|jnt|||j|j|jdS(Nit bufferingiscontent-lengthi(tmake_connectiontset_debuglevelt send_requestt send_hosttsend_user_agentt send_contentt getresponseR&tstatusR"tparse_responseR!t ExceptionRst getheaderRRtreasontmsg(RRR R!R"thR((s!/usr/lib64/python2.7/xmlrpclib.pyR s.       cCstd|jS(NR(RR(R((s!/usr/lib64/python2.7/xmlrpclib.pyR1scCsi}t|tr$|\}}nddl}|j|\}}|rddl}|j|j|}tjtj |d}dd|fg}nd}|||fS(NiR]t AuthorizationsBasic ( R.R>turllibt splituserR^t encodestringtunquoteRRtsplitRa(RRtx509R5tauthR^t extra_headers((s!/usr/lib64/python2.7/xmlrpclib.pyt get_host_info?s  cCse|jr'||jdkr'|jdS|j|\}|_}|tj|f|_|jdS(Nii(RR=RRtHTTPConnection(RRtchostR:((s!/usr/lib64/python2.7/xmlrpclib.pyR&Zs  cCs.|jdr*|jdjd|_ndS(Ni(NN(RRsRa(R((s!/usr/lib64/python2.7/xmlrpclib.pyRsjs cCsL|jr8tr8|jd|dt|jddn|jd|dS(NtPOSTtskip_accept_encodingsAccept-EncodingR(taccept_gzip_encodingRt putrequestR&t putheader(Rt connectionR R!((s!/usr/lib64/python2.7/xmlrpclib.pyR(vscCs[|j}|rWt|tr-|j}nx'|D]\}}|j||q4WndS(N(RR.RRRD(RRERR<tkeyR+((s!/usr/lib64/python2.7/xmlrpclib.pyR)s  cCs|jd|jdS(Ns User-Agent(RDt user_agent(RRE((s!/usr/lib64/python2.7/xmlrpclib.pyR*scCs|jdd|jdk rY|jt|krYtrY|jddt|}n|jdtt||j|dS(Ns Content-Typestext/xmlsContent-EncodingRsContent-Length(RDtencode_thresholdRaRRRRHt endheaders(RRER!((s!/usr/lib64/python2.7/xmlrpclib.pyR+scCst|dr?|jdddkr6t|}qE|}n|}|j\}}xD|jd}|ssPn|jrdGt|GHn|j|qZ||k r|jn|j|jS(NR0sContent-EncodingR]Risbody:( RIR0R RRR"RRrRs(RRtstreamRRR((s!/usr/lib64/python2.7/xmlrpclib.pyR.s"     N(RRRt __version__RGR&RBRaRHRR$RRR=R&RsR(R)R*R+R.(((s!/usr/lib64/python2.7/xmlrpclib.pyRs     '     t SafeTransportcBs&eZdZdddZdZRS(s2Handles an HTTPS transaction to an XML-RPC server.icCs tj|d|||_dS(NR(RRtcontext(RRRM((s!/usr/lib64/python2.7/xmlrpclib.pyRsc Cs|jr'||jdkr'|jdSy tj}Wntk rStdnQX|j|\}|_}|||dd|j|pif|_|jdSdS(Niis-your version of httplib doesn't support HTTPSRM( RRtHTTPSConnectiontAttributeErrorRR=RRaRM(RRtHTTPSR?R:((s!/usr/lib64/python2.7/xmlrpclib.pyR&s    *N(RRRRaRR&(((s!/usr/lib64/python2.7/xmlrpclib.pyRLst ServerProxycBs\eZdZdddddddZdZdZdZeZdZ dZ RS( suri [,options] -> a logical connection to an XML-RPC server uri is the connection point on the server, given as scheme://host/target. The standard implementation always supports the "http" scheme. If SSL socket support is available (Python 2.0), it also supports "https". If the target part and the slash preceding it are both omitted, "/RPC2" is assumed. The following options can be given as keyword arguments: transport: a transport factory encoding: the request encoding (default is UTF-8) All 8-bit strings passed to the server proxy are assumed to use the given encoding. ic Cst|tr!|jd}nddl}|j|\} }| d krZtdn|j|\|_|_|jsd|_n|dkr| dkrt d|d|}qt d|}n||_ ||_ ||_||_dS( Ns ISO-8859-1ithttpthttpssunsupported XML-RPC protocols/RPC2RRM(RRRS(R.RRR5t splittypeRt splithostt_ServerProxy__hostt_ServerProxy__handlerRaRLRt_ServerProxy__transportt_ServerProxy__encodingt_ServerProxy__verboset_ServerProxy__allow_none( Rturit transportRR"RRRMR5RJ((s!/usr/lib64/python2.7/xmlrpclib.pyRs"          cCs|jjdS(N(RXRs(R((s!/usr/lib64/python2.7/xmlrpclib.pyt__close*scCskt||d|jd|j}|jj|j|j|d|j}t|dkrg|d}n|S(NRRR"ii( RRYR[RXR$RVRWRZR(RRRR$R((s!/usr/lib64/python2.7/xmlrpclib.pyt __request-s    cCsd|j|jfS(Ns(RVRW(R((s!/usr/lib64/python2.7/xmlrpclib.pyR?scCst|j|S(N(Rt_ServerProxy__request(RR((s!/usr/lib64/python2.7/xmlrpclib.pyRGscCs=|dkr|jS|dkr&|jStd|fdS(s|A workaround to get special attributes on the ServerProxy without interfering with the magic __getattr__ RsR]sAttribute %r not foundN(t_ServerProxy__closeRXRO(Rtattr((s!/usr/lib64/python2.7/xmlrpclib.pyRNs   N( RRRRaRRaR`RRRR(((s!/usr/lib64/python2.7/xmlrpclib.pyRQs     t__main__shttp://time.xmlrpc.com/RPC2tERRORllll((((((((((((((bRtreRR?R)ttypesRRRRt ImportErrorRaRt NameErrorR7R'RFRRtcompiletsearchRR R RRKRRt PARSE_ERRORt SERVER_ERRORtAPPLICATION_ERRORt SYSTEM_ERRORtTRANSPORT_ERRORtNOT_WELLFORMED_ERRORtUNSUPPORTED_ENCODINGtINVALID_ENCODING_CHARtINVALID_XMLRPCtMETHOD_NOT_FOUNDtINVALID_METHOD_PARAMStINTERNAL_ERRORR/RRR R!tsysR%Rtmod_dictRR6R(R&RBRCRXR[R^t cStringIOR`R\RbRt _xmlrpclibtParserRRRROR~Rt xml.parsersRcRIReRtRRRRRRRR RtobjectR RRRLRQtServerRt currentTimetgetCurrentTimeRtmultiR(((s!/usr/lib64/python2.7/xmlrpclib.pyts0                     T               - &  N   %*a