B bC @sfddlZddlZddlZddlmZddlmZddlZddlZ ddl m Z ddl Z ddl mZy ddlZWnek rdZYnXddZdejdd Zd Zd Zd Zd ZdZdZdZd ZdZdZd ZdZdZ dZ!Gddde"Z#Gddde#Z$Gddde#Z%Gddde#Z&e'Z(Z)edddZ*e*+dd krFd!d"Z,n"e*+d#d kr`d$d"Z,nd%d"Z,[*d&d'Z-Gd(d)d)Z.d*d+Z/d,d-Z0Gd.d/d/Z1d0d1Z2e.e1fZ3Gd2d3d3Z4Gd4d5d5Z5Gd6d7d7Z6Gd8d9d9Z7Gd:d;d;Z8GddZdCdDZ?dEdFZ@d[dHdIZAGdJdKdKerTejBneCZDGdLdMdMZEGdNdOdOZFGdPdQdQeFZGGdRdSdSZHeHZIeJdTkrbeHdUZKyeLeKjMNWn.e#k rZOzeLdVeOWddZO[OXYnXe9eKZPePQePRd dWePSdd yxePD]ZTeLeTqWWn.e#k r`ZOzeLdVeOWddZO[OXYnXdS)\N)datetime)Decimal)expat)BytesIOcCs$|dd}|dd}|ddS)N&z&z>)replace)sr 0/opt/alt/python37/lib/python3.7/xmlrpc/client.pyescapes  r z%d.%diiiDii ipiԁiCiBiiic@seZdZddZdS)ErrorcCst|S)N)repr)selfr r r __str__sz Error.__str__N)__name__ __module__ __qualname__rr r r r rsrc@seZdZddZddZdS) ProtocolErrorcCs&t|||_||_||_||_dS)N)r__init__urlerrcodeerrmsgheaders)rrrrrr r r rs  zProtocolError.__init__cCsd|jj|j|j|jfS)Nz<%s for %s: %s %s>) __class__rrrr)rr r r __repr__szProtocolError.__repr__N)rrrrrr r r r rsrc@s eZdZdS) ResponseErrorN)rrrr r r r rsrc@seZdZddZddZdS)FaultcKst|||_||_dS)N)rr faultCode faultString)rr r!Zextrar r r rs zFault.__init__cCsd|jj|j|jfS)Nz <%s %s: %r>)rrr r!)rr r r rszFault.__repr__N)rrrrrr r r r rsrz%YZ0001cCs |dS)Nz%Y%m%dT%H:%M:%S)strftime)valuer r r _iso8601_format sr%z%4YcCs |dS)Nz%4Y%m%dT%H:%M:%S)r#)r$r r r r%scCs|ddS)Nz%Y%m%dT%H:%M:%S)r#zfill)r$r r r r%scCsLt|trt|St|ttjfs<|dkr2t}t|}d|ddS)Nrz%04d%02d%02dT%02d:%02d:%02d) isinstancerr%tupletimeZ struct_timeZ localtime)r$r r r _strftimes  r,c@sneZdZdddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZdS)DateTimercCs t|tr||_n t||_dS)N)r)strr$r,)rr$r r r r)s zDateTime.__init__cCst|tr|j}|j}nzt|tr2|j}t|}n`t|trH|j}|}nJt|drd|}|}n.t|drv|jj p|t |}t d|jj |f||fS)N timetuplerzCan't compare %s and %s) r)r-r$rr%r.hasattrr/rrtype TypeError)rotherr oZotyper r r make_comparable/s$       zDateTime.make_comparablecCs||\}}||kS)N)r5)rr3r r4r r r __lt__DszDateTime.__lt__cCs||\}}||kS)N)r5)rr3r r4r r r __le__HszDateTime.__le__cCs||\}}||kS)N)r5)rr3r r4r r r __gt__LszDateTime.__gt__cCs||\}}||kS)N)r5)rr3r r4r r r __ge__PszDateTime.__ge__cCs||\}}||kS)N)r5)rr3r r4r r r __eq__TszDateTime.__eq__cCst|jdS)Nz%Y%m%dT%H:%M:%S)r+strptimer$)rr r r r/XszDateTime.timetuplecCs|jS)N)r$)rr r r r`szDateTime.__str__cCsd|jj|jt|fS)Nz<%s %r at %#x>)rrr$id)rr r r rcszDateTime.__repr__cCst||_dS)N)r.stripr$)rdatar r r decodefszDateTime.decodecCs$|d||j|ddS)Nzz )writer$)routr r r encodeis  zDateTime.encodeN)r)rrrrr5r6r7r8r9r:r/rrr?rBr r r r r-#s r-cCst}|||S)N)r-r?)r>r$r r r _datetimens rCcCs t|dS)Nz%Y%m%dT%H:%M:%S)rr;)r>r r r _datetime_typetsrDc@s6eZdZd ddZddZddZdd Zd d ZdS) BinaryNcCs>|dkrd}n&t|ttfs,td|jjt|}||_dS)Nz#expected bytes or bytearray, not %s)r)bytes bytearrayr2rrr>)rr>r r r rs zBinary.__init__cCs t|jdS)Nzlatin-1)r.r>)rr r r rszBinary.__str__cCst|tr|j}|j|kS)N)r)rEr>)rr3r r r r:s z Binary.__eq__cCst||_dS)N)base64 decodebytesr>)rr>r r r r?sz Binary.decodecCs4|dt|j}||d|ddS)Nz asciiz )r@rI encodebytesr>r?)rrAencodedr r r rBs  z Binary.encode)N)rrrrrr:r?rBr r r r rE}s  rEcCst}|||S)N)rEr?)r>r$r r r _binarys rNc@s$eZdZddZddZddZdS) ExpatParsercCsDtdd|_}||_|j|_|j|_|j|_ d}| |ddS)N) rZ ParserCreate_parser_targetstartZStartElementHandlerendZEndElementHandlerr>ZCharacterDataHandlerxml)rtargetparserencodingr r r rszExpatParser.__init__cCs|j|ddS)Nr)rPParse)rr>r r r feedszExpatParser.feedcCs8y |j}Wntk rYnX|`|`|dddS)NrFT)rPAttributeErrorrQrX)rrVr r r closes  zExpatParser.closeN)rrrrrYr[r r r r rOs rOc@seZdZdddZiZddZddZd d Zeeed<d d Z e ee <d dZ e ee <e Z ddZeee<efddZeee<ddZeee<eee<ddZeee<eee<efddZeee<ddZeee<ddZeee<eee<eed<dS) MarshallerNFcCsi|_d|_||_||_dS)N)memor>rW allow_none)rrWr^r r r rszMarshaller.__init__cCsg}|j}|j}t|tr@|d||j|jd||dn8|dx&|D]}|d||||dqNW|dd|}|S) Nz )r r!z z z z z )append_Marshaller__dumpr)rr r!join)rvaluesrAr@dumpvresultr r r dumpss"      zMarshaller.dumpscCsy|jt|}Wnjtk r|t|ds)r^r2)rr$r@r r r dump_nilszMarshaller.dump_nilcCs$|d||rdpd|ddS)Nz10z r )rr$r@r r r dump_boolszMarshaller.dump_boolcCs<|tks|tkrtd|d|tt||ddS)Nzint exceeds XML-RPC limitsz z )MAXINTMININT OverflowErrorr.int)rr$r@r r r dump_longs zMarshaller.dump_longcCs |d|t||ddS)Nzz )r)rr$r@r r r dump_double%s zMarshaller.dump_doublecCs |d||||ddS)Nzz r )rr$r@r r r r dump_unicode+s zMarshaller.dump_unicodecCs,|dt|}||d|ddS)Nz rKz )rIrLr?)rr$r@rMr r r dump_bytes1s zMarshaller.dump_bytescCs^t|}||jkrtdd|j|<|j}|dx|D]}|||q8W|d|j|=dS)Nz"cannot marshal recursive sequencesz z )r<r]r2ra)rr$r@irdrer r r dump_array9s   zMarshaller.dump_arraycCst|}||jkrtdd|j|<|j}|dxP|D]D\}}|dt|ts^td|d||||||dq z zdictionary key must be stringz%s z z )r<r]r2raitemsr)r.)rr$r@r r{rdkrer r r dump_structGs     zMarshaller.dump_structcCs |d|t||ddS)Nzz )r,)rr$r@r r r dump_datetimeYs zMarshaller.dump_datetimecCs2|jtkr ||_|||`n||j|dS)N)rWRAPPERSr@rBrrh)rr$r@r r r dump_instance_s   zMarshaller.dump_instanceri)NF) rrrrrjrgraror1rrboolrwrvZdump_intrxfloatr ryr.rzrGrHr|r*listrdictrrrr-rEr r r r r\s:      r\c@sjeZdZdDddZddZddZdd Zd d Zd d ZddZ ddZ iZ ddZ e e d<ddZ e e d<ddZee d<ee d<ee d<ee d<ee d<ee d<d d!Zee d"<ee d#<d$d%Zee d&<d'd(Zee d)<ee d*<d+d,Zee d-<d.d/Zee d0<d1d2Zee d3<d4d5Zee d6<d7d8Zee d9<d:d;Zee d<<d=d>Zee d?<d@dAZee dB<dCS)E UnmarshallerFcCsHd|_g|_g|_g|_d|_d|_d|_|jj|_|p:||_||_ dS)NFzutf-8) _type_stack_marks_data_value _methodname _encodingr` _use_datetime _use_bytes)r use_datetimeuse_builtin_typesr r r rs  zUnmarshaller.__init__cCs:|jdks|jrt|jdkr0tf|jdt|jS)Nfaultr)rrrrrr*)rr r r r[s  zUnmarshaller.closecCs|jS)N)r)rr r r getmethodnameszUnmarshaller.getmethodnamecCs ||_dS)N)r)rrWZ standaloner r r rTszUnmarshaller.xmlcCshd|kr|dd}|dks&|dkr8|jt|jg|_|jrZ||jkrZtd||dk|_dS)N:arraystructzunknown tag %rr$) splitrr`lenrrrrjr)rtagZattrsr r r rRs zUnmarshaller.startcCs|j|dS)N)rr`)rtextr r r r>szUnmarshaller.datac Cspy|j|}WnNtk r\d|kr*dSy|j|dd}Wntk rVdSXYnX||d|jS)Nrrr_)rjrkrrbr)rrrnr r r rSs zUnmarshaller.endc Cshy|j|}WnNtk r\d|kr*dSy|j|dd}Wntk rVdSXYnX|||S)Nrr)rjrkr)rrr>rnr r r end_dispatchs zUnmarshaller.end_dispatchcCs|dd|_dS)Nr)r`r)rr>r r r end_nils zUnmarshaller.end_nilZnilcCs:|dkr|dn|dkr(|dntdd|_dS)NrqFrpTzbad boolean valuer)r`r2r)rr>r r r end_booleans   zUnmarshaller.end_booleanbooleancCs|t|d|_dS)Nr)r`rvr)rr>r r r end_intszUnmarshaller.end_intZi1Zi2Zi4Zi8rvZ bigintegercCs|t|d|_dS)Nr)r`rr)rr>r r r end_doubleszUnmarshaller.end_doubleZdoublercCs|t|d|_dS)Nr)r`rr)rr>r r r end_bigdecimalszUnmarshaller.end_bigdecimalZ bigdecimalcCs&|jr||j}||d|_dS)Nr)rr?r`r)rr>r r r end_strings  zUnmarshaller.end_stringstringnamecCs.|j}|j|dg|j|d<d|_dS)Nr)rpoprr)rr>markr r r end_arrays zUnmarshaller.end_arrayrcCsd|j}i}|j|d}x,tdt|dD]}||d|||<q.W|g|j|d<d|_dS)Nrrr")rrrrangerr)rr>rrr}r{r r r end_structs zUnmarshaller.end_structrcCs6t}||d|jr"|j}||d|_dS)NrKr)rEr?rBrr>r`r)rr>r$r r r end_base64 s  zUnmarshaller.end_base64rIcCs,t}|||jrt|}||dS)N)r-r?rrDr`)rr>r$r r r end_dateTimes  zUnmarshaller.end_dateTimezdateTime.iso8601cCs|jr||dS)N)rr)rr>r r r end_valueszUnmarshaller.end_valuer$cCs d|_dS)Nparams)r)rr>r r r end_params#szUnmarshaller.end_paramsrcCs d|_dS)Nr)r)rr>r r r end_fault'szUnmarshaller.end_faultrcCs"|jr||j}||_d|_dS)N methodName)rr?rr)rr>r r r end_methodName+s zUnmarshaller.end_methodNamerN)FF)rrrrr[rrTrRr>rSrrjrrrrrrrrrrrrrrr r r r rssX   rc@s$eZdZddZddZddZdS)_MultiCallMethodcCs||_||_dS)N)_MultiCallMethod__call_list_MultiCallMethod__name)rZ call_listrr r r r8sz_MultiCallMethod.__init__cCst|jd|j|fS)Nz%s.%s)rrr)rrr r r __getattr__;sz_MultiCallMethod.__getattr__cGs|j|j|fdS)N)rr`r)rargsr r r __call__=sz_MultiCallMethod.__call__N)rrrrrrr r r r r5src@seZdZddZddZdS)MultiCallIteratorcCs ||_dS)N)results)rrr r r rDszMultiCallIterator.__init__cCsR|j|}t|tikr.t|d|dn t|tgkrF|dStddS)Nr r!rz#unexpected type in multicall result)rr1r ValueError)rr{itemr r r __getitem__Gs  zMultiCallIterator.__getitem__N)rrrrrr r r r r@src@s0eZdZddZddZeZddZddZd S) MultiCallcCs||_g|_dS)N)_MultiCall__server_MultiCall__call_list)rserverr r r raszMultiCall.__init__cCsd|jjt|fS)Nz <%s at %#x>)rrr<)rr r r reszMultiCall.__repr__cCs t|j|S)N)rr)rrr r r rjszMultiCall.__getattr__cCs:g}x"|jD]\}}|||dq Wt|jj|S)N)rr)rr`rrsystemZ multicall)rZmarshalled_listrrr r r rmszMultiCall.__call__N)rrrrrrrrr r r r rPs rFcCsrtrHtrH|rt}tj}n|r&t}t}nt}t}tdd||t}t|}n"t||d}trbt|}nt |}||fS)NTF)rr) FastParserFastUnmarshallerrDrIrJrNrCrrrO)rrZ mkdatetimeZmkbytesrUrVr r r getparsers    rcCst|trd}n|rt|tr|s&d}tr4t|}n t||}||}|dkr^dt|}nd}|rx|d|d|df}n|r|d|d f}n|Sd |S) Nr"zutf-8z$ z z z z z z r_)r)rr*FastMarshallerr\rgr.rb)r methodnameZmethodresponserWr^mr>Z xmlheaderr r r rgs2    rgcCs2t||d\}}|||||fS)N)rr)rrYr[r)r>rrpur r r loadss  rc Cs<tstt}tjd|dd}||WdQRX|S)Nwbr")modefileobjZ compresslevel)gzipNotImplementedErrorrGzipFiler@getvalue)r>rngzfr r r gzip_encodes r@c Cststtjdt|dH}y$|dkr0|}n||d}Wntk r\tdYnXWdQRX|dkrt||krtd|S)Nrb)rrrr"z invalid dataz#max gzipped payload length exceeded)rrrrreadOSErrorrr)r>Z max_decoderZdecodedr r r gzip_decodes rc@seZdZddZddZdS)GzipDecodedResponsecCs.tstt||_tjj|d|jddS)Nr)rr)rrrriorr)rresponser r r r=szGzipDecodedResponse.__init__cCs"ztj|Wd|jXdS)N)rrr[r)rr r r r[EszGzipDecodedResponse.closeN)rrrrr[r r r r r9src@s$eZdZddZddZddZdS)_MethodcCs||_||_dS)N) _Method__send _Method__name)rsendrr r r rRsz_Method.__init__cCst|jd|j|fS)Nz%s.%s)rrr)rrr r r rUsz_Method.__getattr__cGs||j|S)N)rr)rrr r r rWsz_Method.__call__N)rrrrrrr r r r rOsrc@szeZdZdeZdZdZdddZdddZdd d Z d d Z d dZ ddZ ddZ ddZddZddZddZdS) TransportzPython-xmlrpc/%sTNFcCs||_||_d|_g|_dS)N)NN)r_use_builtin_types _connection_extra_headers)rrrr r r rnszTransport.__init__c Cs~xxdD]p}y|||||Stjjk r8|r4Yqtk rt}z |sb|jtjtjtjfkrdWdd}~XYqXqWdS)N)rr") single_requesthttpclientZRemoteDisconnectedrerrnoZ ECONNRESETZ ECONNABORTEDZEPIPE)rhosthandler request_bodyverboser{er r r request~s  zTransport.requestcCsy6|||||}|}|jdkr4||_||SWn2tk rLYntk rh|YnX|ddr~| t |||j|j t | dS)Nzcontent-lengthr_) send_requestZ getresponsestatusrparse_responser Exceptionr[ getheaderrrreasonrZ getheaders)rrrrrZ http_connZrespr r r rs"  zTransport.single_requestcCst|j|jdS)N)rr)rrr)rr r r rszTransport.getparsercCsri}t|tr|\}}tj|\}}|rdtj|}t|d}d | }dd|fg}ng}|||fS)Nzutf-8r_Z AuthorizationzBasic ) r)r*urllibparseZ splituserZunquote_to_bytesrIrLr?rbr)rrx509ZauthZ extra_headersr r r get_host_infos  zTransport.get_host_infocCsL|jr||jdkr|jdS||\}|_}|tj|f|_|jdS)Nrr")rrrrrZHTTPConnection)rrchostrr r r make_connections  zTransport.make_connectioncCs |j\}}|rd|_|dS)N)NN)rr[)rr connectionr r r r[s zTransport.closecCs||}|jdd}|r&|d|jrLtrL|jd|dd|dn |d||d|d|jf|||| |||S)Nr"ZPOSTT)Zskip_accept_encoding)zAccept-Encodingr)z Content-Typeztext/xmlz User-Agent) rrZset_debuglevelaccept_gzip_encodingrZ putrequestr` user_agent send_headers send_content)rrrrdebugrrr r r rs        zTransport.send_requestcCs"x|D]\}}|||qWdS)N) putheader)rrrkeyvalr r r r szTransport.send_headerscCsR|jdk r0|jt|kr0tr0|ddt|}|dtt|||dS)NzContent-EncodingrzContent-Length)encode_thresholdrrrrr.Z endheaders)rrrr r r rs  zTransport.send_contentcCst|dr*|dddkr$t|}q.|}n|}|\}}x2|d}|sLP|jr`tdt|||qr r r r%s"    zTransport.parse_response)FF)F)F)rrr __version__rrrrrrrrrr[rrrrr r r r r`s  ! rcs,eZdZdddfdd ZddZZS) SafeTransportFN)contextcstj||d||_dS)N)rr)superrr )rrrr )rr r rFszSafeTransport.__init__cCst|jr||jdkr|jdSttjds2td||\}|_}|tjj|dfd|ji|p`if|_|jdS)Nrr"HTTPSConnectionz1your version of http.client doesn't support HTTPSr ) rr0rrrrrr r )rrrrr r r rMs   zSafeTransport.make_connection)FF)rrrrr __classcell__r r )rr r Csr c@sXeZdZdddddZddZdd Zd d ZeZd d ZddZ ddZ ddZ dS) ServerProxyNF)r c Cstj|\} }| dkr tdtj|\|_|_|js@d|_|dkrz| dkr^t} d|i} nt} i} | f||d| }||_ |pd|_ ||_ ||_ dS)N)rhttpszunsupported XML-RPC protocolz/RPC2rr )rrzutf-8) rrZ splittyperZ splithost_ServerProxy__host_ServerProxy__handlerr r_ServerProxy__transport_ServerProxy__encoding_ServerProxy__verbose_ServerProxy__allow_none) rZuri transportrWrr^rrr r1rZ extra_kwargsr r r rs&  zServerProxy.__init__cCs|jdS)N)rr[)rr r r Z__closeszServerProxy.__closecCsPt|||j|jd|jd}|jj|j|j||jd}t |dkrL|d}|S)N)rWr^xmlcharrefreplace)rr"r) rgrrrBrrrrrr)rrrrrr r r Z __requests   zServerProxy.__requestcCsd|jj|j|jfS)Nz <%s for %s%s>)rrrr)rr r r rszServerProxy.__repr__cCs t|j|S)N)r_ServerProxy__request)rrr r r rszServerProxy.__getattr__cCs.|dkr|jS|dkr|jStd|fdS)Nr[rzAttribute %r not found)_ServerProxy__closerrZ)rattrr r r rs zServerProxy.__call__cCs|S)Nr )rr r r __enter__szServerProxy.__enter__cGs |dS)N)r)rrr r r __exit__szServerProxy.__exit__)NNFFFF) rrrrrrrrrrrrr r r r rls r__main__zhttp://localhost:8000ZERROR )FF)NNNF)FF)r)UrIsysr+rdecimalrZ http.clientrZ urllib.parserZ xml.parsersrrrrr ImportErrorr version_infor rsrtZ PARSE_ERRORZ SERVER_ERRORZAPPLICATION_ERRORZ SYSTEM_ERRORZTRANSPORT_ERRORZNOT_WELLFORMED_ERRORZUNSUPPORTED_ENCODINGZINVALID_ENCODING_CHARZINVALID_XMLRPCZMETHOD_NOT_FOUNDZINVALID_METHOD_PARAMSZINTERNAL_ERRORrrrrrrrZBooleanZ_day0r#r%r,r-rCrDrErNrrOr\rrrrrrrrrgrrrrobjectrrrr rZServerrrrZ currentTimeZgetCurrentTimereZmultiZgetDatapowaddrr r r r s           K #!(C '  ' J  d)i