a 8dg @sdddlZddlZddlZddlmZddlmZddlZddlZ ddl m Z ddl Z ddl mZz ddlZWneydZYn0ddZdejdd Zd Zd Zd Zd ZdZdZdZd ZdZdZd ZdZdZ dZ!Gddde"Z#Gddde#Z$Gddde#Z%Gddde#Z&e'Z(Z)edddZ*e*+dd krDd!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[dHdIZAGdJdKdKerRejBneCZDGdLdMdMZEGdNdOdOZFGdPdQdQeFZGGdRdSdSZHeHZIeJdTkr`eHdUZKzeLeKjMNWn0e#yZOzeLdVeOWYdZO[On dZO[O00e9eKZPePQePRd dWePSdd zePD]ZTeLeTqWn0e#y^ZOzeLdVeOWYdZO[On dZO[O00dS)\N)datetime)Decimal)expat)BytesIOcCs$|dd}|dd}|ddS)N&z&z>)replace)sr )/usr/local/lib/python3.9/xmlrpc/client.pyescapes  r z%d.%diiiDii ipiԁiCiBiiic@seZdZejZdS)ErrorN)__name__ __module__ __qualname__object__str__r r r r rsrc@seZdZddZddZdS) ProtocolErrorcCs&t|||_||_||_||_dSN)r__init__urlerrcodeerrmsgheaders)selfrrrrr r r rs  zProtocolError.__init__cCsd|jj|j|j|jfS)Nz<%s for %s: %s %s>) __class__rrrrrr r r __repr__szProtocolError.__repr__Nrrrrrr r r r rsrc@s eZdZdS) ResponseErrorN)rrrr r r r r!sr!c@seZdZddZddZdS)FaultcKst|||_||_dSr)rr faultCode faultString)rr#r$extrar r r rs zFault.__init__cCsd|jj|j|jfS)Nz <%s %s: %r>)rrr#r$rr r r rszFault.__repr__Nr r r r r r"sr"z%YZ0001cCs |dSN%Y%m%dT%H:%M:%Sstrftimevaluer r r _iso8601_format sr-z%4YcCs |dS)Nz%4Y%m%dT%H:%M:%Sr)r+r r r r-scCs|ddS)Nr()r*zfillr+r r r r-scCsLt|trt|St|ttjfs<|dkr2t}t|}d|ddS)Nrz%04d%02d%02dT%02d:%02d:%02d) isinstancerr-tupletime struct_time localtimer+r r r _strftimes  r6c@sneZdZdddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZdS)DateTimercCs t|tr||_n t||_dSr)r1strr,r6)rr,r r r r(s zDateTime.__init__cCstt|tr|j}|j}nTt|tr2|j}t|}n:t|trH|j}|}n$t|drd|}|}n|}t}||fS)N timetuple) r1r7r,rr-r8hasattrr9NotImplementedrotherr or r r make_comparable.s      zDateTime.make_comparablecCs"||\}}|turtS||kSrr?r;r<r r r __lt__@szDateTime.__lt__cCs"||\}}|turtS||kSrr@r<r r r __le__FszDateTime.__le__cCs"||\}}|turtS||kSrr@r<r r r __gt__LszDateTime.__gt__cCs"||\}}|turtS||kSrr@r<r r r __ge__RszDateTime.__ge__cCs"||\}}|turtS||kSrr@r<r r r __eq__XszDateTime.__eq__cCst|jdSr')r3strptimer,rr r r r9^szDateTime.timetuplecCs|jSrr+rr r r rfszDateTime.__str__cCsd|jj|jt|fS)Nz<%s %r at %#x>)rrr,idrr r r riszDateTime.__repr__cCst||_dSr)r8stripr,rdatar r r decodelszDateTime.decodecCs$|d||j|ddSNzz )writer,)routr r r encodeos  zDateTime.encodeN)r)rrrrr?rArBrCrDrEr9rrrKrOr r r r r7"s r7cCst}|||Sr)r7rKrJr,r r r _datetimets rQcCs t|dSr')rrF)rJr r r _datetime_typezsrRc@s6eZdZd ddZddZddZdd Zd d ZdS) BinaryNcCs>|durd}n&t|ttfs,td|jjt|}||_dS)Nz#expected bytes or bytearray, not %s)r1bytes bytearray TypeErrorrrrJrIr r r rszBinary.__init__cCs t|jdS)Nzlatin-1)r8rJrr r r rszBinary.__str__cCst|tr|j}|j|kSr)r1rSrJ)rr=r r r rEs z Binary.__eq__cCst||_dSr)base64 decodebytesrJrIr r r rKsz Binary.decodecCs4|dt|j}||d|ddSNz asciiz )rMrX encodebytesrJrK)rrNencodedr r r rOs  z Binary.encode)N)rrrrrrErKrOr r r r rSs  rScCst}|||Sr)rSrKrPr r r _binarys r^c@s$eZdZddZddZddZdS) ExpatParsercCsDtdd|_}||_|j|_|j|_|j|_ d}| |ddSr) rZ ParserCreate_parser_targetstartZStartElementHandlerendZEndElementHandlerrJZCharacterDataHandlerxml)rtargetparserencodingr r r rszExpatParser.__init__cCs|j|ddS)NF)r`ParserIr r r feedszExpatParser.feedcCs6z |j}WntyYn0|`|`|dddS)NrTT)r`AttributeErrorrarh)rrfr r r closes   zExpatParser.closeN)rrrrrirkr r r r r_s r_c@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|_||_||_dSr)memorJrg allow_none)rrgrnr r r rszMarshaller.__init__cCsg}|j}|j}t|tr@|d||j|jd||dn4|d|D]}|d||||dqL|dd|}|S) Nz )r#r$z z z z z )append_Marshaller__dumpr1r"r#r$join)rvaluesrNrMdumpvresultr r r dumpss&     zMarshaller.dumpscCsz|jt|}Wndtyvt|ds:tdt|t|jD]"}||jvrDtdt|qD|jd}Yn0||||dS)N__dict__zcannot marshal %s objects_arbitrary_instance)dispatchtypeKeyErrorr:rW__mro__keys)rr,rMftype_r r r Z__dumps  zMarshaller.__dumpcCs|jstd|ddS)Nz0cannot marshal None unless allow_none is enabledz)rnrWrr,rMr r r dump_nilszMarshaller.dump_nilcCs$|d||rdpd|ddS)Nz10z r rr r r dump_boolszMarshaller.dump_boolcCs<|tks|tkrtd|d|tt||ddS)Nzint exceeds XML-RPC limitsz z )MAXINTMININT OverflowErrorr8intrr r r dump_long s zMarshaller.dump_longcCs |d|t||ddS)Nzz )reprrr r r dump_double+s zMarshaller.dump_doublecCs |d||||ddS)Nzz r )rr,rMr r r r dump_unicode1s zMarshaller.dump_unicodecCs,|dt|}||d|ddSrZ)rXr\rK)rr,rMr]r r r dump_bytes7s zMarshaller.dump_bytescCsZt|}||jvrtdd|j|<|j}|d|D]}|||q6|d|j|=dS)Nz"cannot marshal recursive sequencesz z )rGrmrWrq)rr,rMirtrur r r dump_array?s   zMarshaller.dump_arraycCst|}||jvrtdd|j|<|j}|d|D]D\}}|dt|ts\td|d||||||dq:|d|j|=dS)Nz%cannot marshal recursive dictionariesz z zdictionary key must be stringz%s z z )rGrmrWrqitemsr1r8)rr,rMr rrtkrur r r dump_structMs     zMarshaller.dump_structcCs |d|t||ddSrL)r6rr r r dump_datetime_s zMarshaller.dump_datetimecCs2|jtvr ||_|||`n||j|dSr)rWRAPPERSrMrOrrxrr r r dump_instancees   zMarshaller.dump_instancery)NF) rrrrrzrwrqrr{rboolrrZdump_intrfloatr rr8rrUrVrr2listrdictrrrr7rSr r r r rls:      rlc@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)NFutf-8) _type_stack_marks_data_value _methodname _encodingrp _use_datetime _use_bytes)r use_datetimeuse_builtin_typesr r r rs  zUnmarshaller.__init__cCs>|jdus|jrt|jdkr4tfi|jdt|jS)Nfaultr)rrr!r"rr2rr r r rks  zUnmarshaller.closecCs|jSr)rrr r r getmethodnameszUnmarshaller.getmethodnamecCs ||_dSr)r)rrgZ standaloner r r rdszUnmarshaller.xmlcCshd|vr|dd}|dks&|dkr8|jt|jg|_|jrZ||jvrZtd||dk|_dS)N:arraystructzunknown tag %rr,) splitrrplenrrrrzr!)rtagattrsr r r rbs zUnmarshaller.startcCs|j|dSr)rrp)rtextr r r rJszUnmarshaller.datac Csrz|j|}WnPty^d|vr*YdSz|j|dd}WntyXYYdS0Yn0||d|jS)Nrrro)rzr|rrrr)rrrr r r rcs  zUnmarshaller.endc Csjz|j|}WnPty^d|vr*YdSz|j|dd}WntyXYYdS0Yn0|||S)Nrr)rzr|r)rrrJrr r r end_dispatchs  zUnmarshaller.end_dispatchcCs|dd|_dSNr)rprrIr r r end_nils zUnmarshaller.end_nilnilcCs:|dkr|dn|dkr(|dntdd|_dS)NrFrTzbad boolean valuer)rprWrrIr r r end_booleans   zUnmarshaller.end_booleanbooleancCs|t|d|_dSr)rprrrIr r r end_intszUnmarshaller.end_intZi1Zi2Zi4Zi8rZ bigintegercCs|t|d|_dSr)rprrrIr r r end_doubleszUnmarshaller.end_doubleZdoublercCs|t|d|_dSr)rprrrIr r r end_bigdecimalszUnmarshaller.end_bigdecimalZ bigdecimalcCs&|jr||j}||d|_dSr)rrKrprrIr r r end_strings  zUnmarshaller.end_stringstringnamecCs.|j}|j|dg|j|d<d|_dSr)rpoprr)rrJmarkr r r end_arrays zUnmarshaller.end_arrayrcCs`|j}i}|j|d}tdt|dD]}||d|||<q,|g|j|d<d|_dS)Nrrr&)rrrrangerr)rrJrrrrr r r end_structs zUnmarshaller.end_structrcCs6t}||d|jr"|j}||d|_dS)Nr[r)rSrKrOrrJrprrrJr,r r r end_base64s  zUnmarshaller.end_base64rXcCs,t}|||jrt|}||dSr)r7rKrrRrprr r r end_dateTimes  zUnmarshaller.end_dateTimezdateTime.iso8601cCs|jr||dSr)rrrIr r r end_value"szUnmarshaller.end_valuer,cCs d|_dS)NparamsrrIr r r end_params)szUnmarshaller.end_paramsrcCs d|_dS)NrrrIr r r end_fault-szUnmarshaller.end_faultrcCs"|jr||j}||_d|_dS)N methodName)rrKrrrIr r r end_methodName1s zUnmarshaller.end_methodNamerN)FF)rrrrrkrrdrbrJrcrrzrrrrrrrrrrrrrrr r r r rysX   rc@s$eZdZddZddZddZdS)_MultiCallMethodcCs||_||_dSr)_MultiCallMethod__call_list_MultiCallMethod__name)rZ call_listrr r r r>sz_MultiCallMethod.__init__cCst|jd|j|fSNz%s.%s)rrrrrr r r __getattr__Asz_MultiCallMethod.__getattr__cGs|j|j|fdSr)rrprrargsr r r __call__Csz_MultiCallMethod.__call__Nrrrrrrr r r r r;src@seZdZddZddZdS)MultiCallIteratorcCs ||_dSr)results)rrr r r rJszMultiCallIterator.__init__cCsR|j|}t|tikr.t|d|dn t|tgkrF|dStddS)Nr#r$rz#unexpected type in multicall result)rr{r" ValueError)rritemr r r __getitem__Ms  zMultiCallIterator.__getitem__N)rrrrrr r r r rFsrc@s,eZdZddZddZddZddZd S) MultiCallcCs||_g|_dSr)_MultiCall__server_MultiCall__call_list)rserverr r r rgszMultiCall.__init__cCsd|jjt|fS)Nz <%s at %#x>)rrrGrr r r rkszMultiCall.__repr__cCs t|j|Sr)rrrr r r rnszMultiCall.__getattr__cCs6g}|jD]\}}|||dq t|jj|S)N)rr)rrprrsystemZ multicall)rZmarshalled_listrrr r r rqszMultiCall.__call__N)rrrrrrrr r r r rVsrFcCsrtrHtrH|rt}tj}n|r&t}t}nt}t}tdd||t}t|}n"t||d}trbt|}nt |}||fS)NTFrr) FastParserFastUnmarshallerrRrXrYr^rQr"rr_)rrZ mkdatetimeZmkbytesrerfr 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&rz$ z z z z z z ro)r1r"r2FastMarshallerrlrwr8rr)r methodnameZmethodresponsergrnmrJZ xmlheaderr r r rws6    rwcCs2t||d\}}|||||fSNr)rrirkr)rJrrpur r r loadss  rcCsPtstt}tjd|dd}||Wdn1s>0Y|S)Nwbr&)modefileobj compresslevel)gzipNotImplementedErrorrGzipFilerMgetvalue)rJrgzfr r r gzip_encode s (r@c Cststtjdt|dP}z$|dkr0|}n||d}WntyZtdYn0Wdn1sp0Y|dkrt||krtd|S)Nrbrrrr&z invalid dataz#max gzipped payload length exceeded)rrrrreadOSErrorrr)rJZ max_decoderZdecodedr r r gzip_decode#s  ,rc@seZdZddZddZdS)GzipDecodedResponsecCs.tstt||_tjj|d|jddS)Nrr)rrrriorr)rresponser r r rAszGzipDecodedResponse.__init__cCs,ztj|W|jn |j0dSr)rrrkrrr r r rkIszGzipDecodedResponse.closeN)rrrrrkr r r r r=src@s$eZdZddZddZddZdS)_MethodcCs||_||_dSr _Method__send _Method__name)rsendrr r r rVsz_Method.__init__cCst|jd|j|fSr)rrrrr r r rYsz_Method.__getattr__cGs||j|Srrrr r r r[sz_Method.__call__Nrr r r r rSsrc@seZdZdeZdZdZdddddZdd d Zdd d Z d dZ ddZ ddZ ddZ ddZddZddZddZdS) TransportzPython-xmlrpc/%sTNFr )rcCs&||_||_d|_t||_g|_dSN)NN)r_use_builtin_types _connectionr_headers_extra_headers)rrrrr r r rrs  zTransport.__init__c CsdD]v}z|||||WStjjy:|r6Yqtyx}z(|sb|jtjtjtjfvrdWYd}~qd}~00qdS)N)rr&) single_requesthttpclientZRemoteDisconnectedrerrnoZ ECONNRESETZ ECONNABORTEDEPIPE)rhosthandler request_bodyverboserer r r requestszTransport.requestcCsz8|||||}|}|jdkr6||_||WSWn.tyLYntyf|Yn0|ddr|| t |||j|j t | dS)Nzcontent-lengthro) send_requestZ getresponsestatusrparse_responser" Exceptionrk getheaderrrreasonrZ getheaders)rrrrrZ http_connZrespr r r r s$     zTransport.single_requestcCst|j|jdSr)rrrrr r r rszTransport.getparsercCsri}t|tr|\}}tj|\}}|rdtj|}t|d}d | }dd|fg}ng}|||fS)NrroZ AuthorizationzBasic ) r1r2urllibparse _splituserunquote_to_bytesrXr\rKrrr)rrx509ZauthZ extra_headersr r r get_host_infos   zTransport.get_host_infocCsL|jr||jdkr|jdS||\}|_}|tj|f|_|jdS)Nrr&)rr"r r r ZHTTPConnectionrrZchostr!r r r make_connections  zTransport.make_connectioncCs |j\}}|rd|_|dSr)rrk)rr connectionr r r rks zTransport.closecCs||}|j|j}|r$|d|jrJtrJ|jd|dd|dn |d||d|d|jf| ||| |||S)Nr&ZPOSTT)Zskip_accept_encoding)zAccept-Encodingr)z Content-Typeztext/xmlz User-Agent) r$r r Zset_debuglevelaccept_gzip_encodingrZ putrequestrp user_agent send_headers send_content)rrrrdebugr%rr r r rs         zTransport.send_requestcCs|D]\}}|||qdSr) putheader)rr%rkeyvalr r r r(s zTransport.send_headerscCsR|jdur0|jt|kr0tr0|ddt|}|dtt|||dS)NContent-EncodingrzContent-Length)encode_thresholdrrr+rr8Z endheaders)rr%rr r r r)s   zTransport.send_contentcCst|dr*|dddkr$t|}q.|}n|}|\}}|d}|sJqj|jr^tdt|||q:||urz| | | S)Nrr.rorizbody:) r:rrrrrprintrrirk)rrstreamrrrJr r r r+s      zTransport.parse_response)FF)F)F)rrr __version__r'r&r/rrr rr"r$rkrr(r)rr r r r rds   ! rcs.eZdZd dddfdd ZddZZS) SafeTransportFr Nrcontextcstj|||d||_dS)Nrrr)superrr5)rrrrr5rr r rLs zSafeTransport.__init__cCst|jr||jdkr|jdSttjds2td||\}|_}|tjj|dfd|ji|p`if|_|jdS)Nrr&HTTPSConnectionz1your version of http.client doesn't support HTTPSr5) rr:r r rr"r r9r5r#r r r r$Us    zSafeTransport.make_connection)FF)rrrrr$ __classcell__r r r8r r3Is r3c@sVeZdZddddddZddZd d Zd d Zd dZddZddZ ddZ dS) ServerProxyNFr r4c Cstj|} | jdvrtd| j|_tjddg| dd|_|jsPd|_|dur| jdkrpt } d| i} nt } i} | f|||d| }||_ |pd |_ ||_ ||_dS) N)r httpszunsupported XML-RPC protocolrorz/RPC2r<r5r6r)rrurlsplitschemernetloc_ServerProxy__host urlunsplit_ServerProxy__handlerr3r_ServerProxy__transport_ServerProxy__encoding_ServerProxy__verbose_ServerProxy__allow_none) rZuri transportrgrrnrrrr5rrZ extra_kwargsr r r rs.     zServerProxy.__init__cCs|jdSr)rCrkrr r r Z__closeszServerProxy.__closecCsPt|||j|jd|jd}|jj|j|j||jd}t |dkrL|d}|S)N)rgrnxmlcharrefreplace)rr&r) rwrDrFrOrCrr@rBrEr)rrrrrr r r Z __requests  zServerProxy.__requestcCsd|jj|j|jfS)Nz <%s for %s%s>)rrr@rBrr r r rszServerProxy.__repr__cCs t|j|Sr)r_ServerProxy__requestrr r r rszServerProxy.__getattr__cCs.|dkr|jS|dkr|jStd|fdS)NrkrGzAttribute %r not found)_ServerProxy__closerCrj)rattrr r r rs zServerProxy.__call__cCs|Srr rr r r __enter__szServerProxy.__enter__cGs |dSr)rJrr r r __exit__szServerProxy.__exit__)NNFFFF) rrrrrJrIrrrrLrMr r r r r;ts  r;__main__zhttp://localhost:8000ERROR )FF)NNNF)FF)r)UrXsysr3rdecimalrZ http.clientr  urllib.parserZ xml.parsersrrrrr ImportErrorr version_infor2rrZ PARSE_ERRORZ SERVER_ERRORZAPPLICATION_ERRORZ SYSTEM_ERRORZTRANSPORT_ERRORZNOT_WELLFORMED_ERRORZUNSUPPORTED_ENCODINGZINVALID_ENCODING_CHARZINVALID_XMLRPCZMETHOD_NOT_FOUNDZINVALID_METHOD_PARAMSZINTERNAL_ERRORrrrr!r"rrZBooleanZ_day0r*r-r6r7rQrRrSr^rr_rlrrrrrrrrrwrrrrrrrrr3r;ZServerrrr0Z currentTimeZgetCurrentTimeruZmultiZgetDatapowaddrr r r r s            R #!(C %  ' K  f+i