zfc@sdZddlZddlZddlZddlZddlTddlZddlZddlZyddl Z Wne k rdZ nXye Wne k rdZ nXyddlZWne k rdZnXyejjdkZWne k r dZnXejdjdZejdZe rCd Zn d Zd ZdXZdZZdZdZdZdZdZ 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 rdZJnXd1d^d2YZJd3d_d4YZKd5d`d6YZEd7dad8YZBd9dbd:YZLd;dcd<YZMd=ddd>YZNdd?ZOddddd@ZPddAZQdBZRdCdDZSdEe re jTneUfdFYZVdGdedHYZWdIdfdJYZXdKeXfdLYZYdMdgdNYZZeZZ[edOkreZdPZ\e\GHeNe\Z]e]j^dQdRe]j_dSde]j_dTdUyxe]D] Z`e`GHqWWqe)k rZadVGeaGHqXndS(hs~ 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|trx|j}|}nmt|dr|j}|j}nCt|dr|jj pt |}t d|jj |f||fS(Ns%Y%m%dT%H:%M:%St timetuplet __class__sCan't compare %s and %s( R.RCR+R7tstrftimet basestringthasattrRERFRttypet 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(tstrRtstripR+(RR((s!/usr/lib64/python2.7/xmlrpclib.pytdecodes cCs.|jd|j|j|jddS(Nss (R,R+(RR-((s!/usr/lib64/python2.7/xmlrpclib.pyRs (RRRRRNRORPRQRRRSRTRER1RRRXR(((s!/usr/lib64/python2.7/xmlrpclib.pyRCys            cCst}|j||S(N(RCRX(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.pyRXscCs:|jdtjtj|j||jddS(Ns s (R,R_RtStringIOR(RR-((s!/usr/lib64/python2.7/xmlrpclib.pyRs N( RRRtNoneRRR1RXR(((s!/usr/lib64/python2.7/xmlrpclib.pyR]s     cCst}|j||S(N(R]RX(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( RdReRbt_parsert_targettstarttStartElementHandlertendtEndElementHandlerRtCharacterDataHandlertreturns_unicodetxml(RttargettparserR((s!/usr/lib64/python2.7/xmlrpclib.pyR"s      cCs|jj|ddS(Ni(RgtParse(RR((s!/usr/lib64/python2.7/xmlrpclib.pytfeed-scCsAy |j}Wntk r nX|`|`|jdddS(NR^i(RgtAttributeErrorRhRr(RRq((s!/usr/lib64/python2.7/xmlrpclib.pytclose0s    (RRRRsRu(((s!/usr/lib64/python2.7/xmlrpclib.pyRf 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 XMLParserRvt __bases__Rot handle_xmlRitunknown_starttagRt handle_datat handle_cdataRktunknown_endtagRRK(RRpRx((s!/usr/lib64/python2.7/xmlrpclib.pyR<s       (RRRR(((s!/usr/lib64/python2.7/xmlrpclib.pyRv9st 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.pytdumpsis"          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 OverflowErrorRV(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 (RRRRVtint(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 cCs7|d|||j|jd|ddS(Nstxmlcharrefreplaces (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 (R2RRKRbR(RR+R,tiRR((s!/usr/lib64/python2.7/xmlrpclib.pyt dump_arrays       cCs t|}||jkr'tdnd|j|<|j}|dx|jD]\}}|dt|tkr||}n?trt|t kr||j |j d}n td|d|||||dqTW|d|j|=dS( Ns%cannot marshal recursive dictionariess s Rsdictionary key must be strings%s s s ( R2RRKRbRtitemsRJRDRt 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("RRRRbRRRRRtNoneTypeRtIntTypet_bool_is_builtinRRRtLongTypeRt FloatTypeR RRDRRRRR>tListTypeRtDictTypeR7RRR(((s!/usr/lib64/python2.7/xmlrpclib.pyRTs>                      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_stringns RtnamecCs3|jj}|j|g|j|)d|_dS(Ni(RtpopRR(RRtmark((s!/usr/lib64/python2.7/xmlrpclib.pyt end_arrayvsRcCs~|jj}i}|j|}x<tdt|dD]"}||d|t|| an 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\RYR&R'RcR!RRfRv(Rt mkdatetimeRpRq((s!/usr/lib64/python2.7/xmlrpclib.pyt getparsers     cCs t|trd}n|r0t|tr0n|s?d}ntrTt|}nt||}|j|}|dkrdt|}nd}|rt|ts|j|d}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 Rs s s s s R^( R.R!R>tFastMarshallerRRRVRDRRR(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(RRsRuR(RRtptu((s!/usr/lib64/python2.7/xmlrpclib.pytloadsns   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(tgziptNotImplementedErrorRatGzipFileR,Rutgetvalue(RRtgzftencoded((s!/usr/lib64/python2.7/xmlrpclib.pyt gzip_encodes      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( RRRaRtreadtIOErrorRRuR(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(NRR R(RRRaR tstringioRR(Rtresponse((s!/usr/lib64/python2.7/xmlrpclib.pyRs cCs)ztjj|Wd|jjXdS(N(RRRuR(R((s!/usr/lib64/python2.7/xmlrpclib.pyRus(RRRRRu(((s!/usr/lib64/python2.7/xmlrpclib.pyRs 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(RRbt _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 ExceptionRut getheaderR Rtreasontmsg(RR"R#R$R%thR((s!/usr/lib64/python2.7/xmlrpclib.pyRs.       cCstd|jS(NR(RR(R((s!/usr/lib64/python2.7/xmlrpclib.pyR;scCsi}t|tr$|\}}nddl}|j|\}}|rddl}|j|j|}tjtj |d}dd|fg}nd}|||fS(NiR^t AuthorizationsBasic ( R.R>turllibt splituserR_t encodestringtunquoteRRtsplitRb(RR"tx509R8tauthR_t extra_headers((s!/usr/lib64/python2.7/xmlrpclib.pyt get_host_infoIs  cCse|jr'||jdkr'|jdS|j|\}|_}|tj|f|_|jdS(Nii(RR@RR tHTTPConnection(RR"tchostR=((s!/usr/lib64/python2.7/xmlrpclib.pyR)ds  cCs/|j\}}|r+d|_|jndS(N(NN(RRbRu(RR"t connection((s!/usr/lib64/python2.7/xmlrpclib.pyRuts cCsL|jr8tr8|jd|dt|jddn|jd|dS(NtPOSTtskip_accept_encodingsAccept-EncodingR(taccept_gzip_encodingRt putrequestR&t putheader(RRCR#R$((s!/usr/lib64/python2.7/xmlrpclib.pyR+scCs[|j}|rWt|tr-|j}nx'|D]\}}|j||q4WndS(N(RR.RRRH(RRCR"R?tkeyR+((s!/usr/lib64/python2.7/xmlrpclib.pyR,s  cCs|jd|jdS(Ns User-Agent(RHt user_agent(RRC((s!/usr/lib64/python2.7/xmlrpclib.pyR-scCs|jdd|jdk rY|jt|krYtrY|jddt|}n|jdtt||j|dS(Ns Content-Typestext/xmlsContent-EncodingRsContent-Length(RHtencode_thresholdRbRRRRVt endheaders(RRCR$((s!/usr/lib64/python2.7/xmlrpclib.pyR.scCst|dr?|jdddkr6t|}qE|}n|}|j\}}xE|jd}|ssPn|jrdGt|GHn|j|qZW||k r|jn|j|jS(NR3sContent-EncodingR^Risbody:( RIR3RRR R%RRsRu(RRtstreamRRR((s!/usr/lib64/python2.7/xmlrpclib.pyR1s"     N(RRRt __version__RJR&RFRbRKRR'RRR@R)RuR+R,R-R.R1(((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(RRRP((s!/usr/lib64/python2.7/xmlrpclib.pyRscCs|jr'||jdkr'|jdSy tj}Wntk rStdnQX|j|\}|_}|||dd|j|pif|_|jdSdS(Niis-your version of httplib doesn't support HTTPSRP( RR tHTTPSConnectionRtRR@RRbRP(RR"tHTTPSRBR=((s!/usr/lib64/python2.7/xmlrpclib.pyR)s    *N(RRRRbRR)(((s!/usr/lib64/python2.7/xmlrpclib.pyROst 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 Cstr't|tr'|jd}nddl}|j|\} }| d kr`tdn|j|\|_|_|jsd|_n|dkr| dkrt d|d|}qt d|}n||_ ||_ ||_||_dS( Ns ISO-8859-1ithttpthttpssunsupported XML-RPC protocols/RPC2RRP(RTRU(RR.RR8t splittypeR t splithostt_ServerProxy__hostt_ServerProxy__handlerRbRORt_ServerProxy__transportt_ServerProxy__encodingt_ServerProxy__verboset_ServerProxy__allow_none( Rturit transportRR%RRRPR8RJ((s!/usr/lib64/python2.7/xmlrpclib.pyRs"          cCs|jjdS(N(RZRu(R((s!/usr/lib64/python2.7/xmlrpclib.pyt__close5scCskt||d|jd|j}|jj|j|j|d|j}t|dkrg|d}n|S(NRRR%ii( RR[R]RZR'RXRYR\R(RRRR'R((s!/usr/lib64/python2.7/xmlrpclib.pyt __request8s    cCsd|j|jfS(Ns(RXRY(R((s!/usr/lib64/python2.7/xmlrpclib.pyRJscCst|j|S(N(Rt_ServerProxy__request(RR((s!/usr/lib64/python2.7/xmlrpclib.pyRRscCs=|dkr|jS|dkr&|jStd|fdS(s|A workaround to get special attributes on the ServerProxy without interfering with the magic __getattr__ RuR_sAttribute %r not foundN(t_ServerProxy__closeRZRt(Rtattr((s!/usr/lib64/python2.7/xmlrpclib.pyRYs   N( RRRRbRRcRbRRRR(((s!/usr/lib64/python2.7/xmlrpclib.pyRSs     t__main__shttp://localhost:8000ii iii tERRORllll((((((((((((((bRtreRR?R)ttypesRRR Rt ImportErrorRbRt NameErrorR7R'RFRRtcompiletsearchRR R RRNRRt PARSE_ERRORt SERVER_ERRORtAPPLICATION_ERRORt SYSTEM_ERRORtTRANSPORT_ERRORtNOT_WELLFORMED_ERRORtUNSUPPORTED_ENCODINGtINVALID_ENCODING_CHARtINVALID_XMLRPCtMETHOD_NOT_FOUNDtINVALID_METHOD_PARAMStINTERNAL_ERRORR2RRR R!tsysR%Rtmod_dictRR6R(R&RBRCRYR\R_t cStringIORaR]RcRt _xmlrpclibtParserRRRRtRRt xml.parsersRdRIRfRvRRRRRRRRRtobjectRRRRORStServerRtmultitpowtaddRR(((s!/usr/lib64/python2.7/xmlrpclib.pyts0                     T               - &  N   %*a