o ?Og @sh ddlZddlZddlZddlmZddlmZddlZddlZ ddl m Z ddl Z ddl mZzddlZWn eyBdZYnwddZdejdd Zd Zd Zd Zd ZdZdZdZd ZdZdZd ZdZdZ dZ!Gddde"Z#Gddde#Z$Gddde#Z%Gddde#Z&e'Z(Z)edddZ*dd Z+e+d!rd"d#Z,n e+d$rd%d#Z,nd&d#Z,[*[+d'd(Z-Gd)d*d*Z.d+d,Z/d-d.Z0Gd/d0d0Z1d1d2Z2e.e1fZ3Gd3d4d4Z4Gd5d6d6Z5Gd7d8d8Z6Gd9d:d:Z7Gd;d<d<Z8Gd=d>d>Z9dZ:Z;ZdYdDdEZ?dFdGZ@d[dIdJZAGdKdLdLer)ejBneCZDGdMdNdNZEGdOdPdPZFGdQdRdReFZGGdSdTdTZHeHZIeJdUkreHdVZKz eLeKjMNWne#yuZOz eLdWeOWYdZO[OndZO[Owwe9eKZPePQePRd dXePSdd zePD]ZTeLeTqWdSe#yZOz eLdWeOWYdZO[OdSdZO[OwwdS)\N)datetime)Decimal)expat)BytesIOcCs$|dd}|dd}|ddS)N&z&z>)replace)sr 4/opt/alt/python310/lib64/python3.10/xmlrpc/client.pyescapes   r z%d.%diiiDii ipiԁiCiBiiic@seZdZ ejZdS)ErrorN)__name__ __module__ __qualname__object__str__r r r r rs rc@eZdZ ddZddZdS) 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__Nrrrrr r r r r rs rc@seZdZ dS) ResponseErrorN)rrrr r r r r"sr"c@r)FaultcKst|||_||_dSr)rr faultCode faultString)rr$r%Zextrar r r r  zFault.__init__cCd|jj|j|jfS)Nz <%s %s: %r>)rrr$r%rr r r r szFault.__repr__Nr!r r r r r#s r#cCs&zt|dkWStyYdSw)NZ0001F)_day0strftime ValueError)Zfmtr r r _try s  r,z%YcC |dSN%Y%m%dT%H:%M:%Sr*valuer r r _iso8601_format r3z%4YcCr-)Nz%4Y%m%dT%H:%M:%Sr0r1r r r r3r4cCs|ddS)Nr/)r*zfillr1r r r r3cCsLt|tr t|St|ttjfs|dkrt}t|}d|ddS)Nrz%04d%02d%02dT%02d:%02d:%02d) isinstancerr3tupletime struct_time localtimer1r r r _strftimes  r>c@speZdZ dddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZdS)DateTimercCs"t|tr ||_dSt||_dSr)r9strr2r>)rr2r r r r.s  zDateTime.__init__cCst|tr|j}|j}||fSt|tr|j}t|}||fSt|tr-|j}|}||fSt|dr>|}|}||fS|}t}||fS)N timetuple) r9r?r2rr3r@hasattrrANotImplementedrotherr or r r make_comparable4s&    zDateTime.make_comparablecCs"||\}}|tur tS||kSrrGrCrDr r r __lt__FzDateTime.__lt__cCs"||\}}|tur tS||kSrrHrDr r r __le__LrJzDateTime.__le__cCs"||\}}|tur tS||kSrrHrDr r r __gt__RrJzDateTime.__gt__cCs"||\}}|tur tS||kSrrHrDr r r __ge__XrJzDateTime.__ge__cCs"||\}}|tur tS||kSrrHrDr r r __eq__^rJzDateTime.__eq__cCst|jdSr.)r;strptimer2rr r r rAdzDateTime.timetuplecC|jSrr1rr r r rlzDateTime.__str__cCsd|jj|jt|fS)Nz<%s %r at %#x>)rrr2idrr r r r oszDateTime.__repr__cCst||_dSr)r@stripr2rdatar r r decoderzDateTime.decodecCs$|d||j|ddSNzz )writer2)routr r r encodeus  zDateTime.encodeN)r)rrrrrGrIrKrLrMrNrArr rWr\r r r r r?(s  r?cCt}|||Sr)r?rWrVr2r r r _datetimez r_cCs t|dSr.)rrO)rVr r r _datetime_type rac@s8eZdZ d ddZddZddZdd Zd d ZdS) BinaryNcCs>|durd}nt|ttfstd|jjt|}||_dS)Nz#expected bytes or bytearray, not %s)r9bytes bytearray TypeErrorrrrVrUr r r rs zBinary.__init__cCs t|jdS)Nzlatin-1)r@rVrr r r rrbzBinary.__str__cCst|tr|j}|j|kSr)r9rcrV)rrEr r r rNr&z Binary.__eq__cCst||_dSr)base64 decodebytesrVrUr r r rWr7z Binary.decodecCs4|dt|j}||d|ddSNz asciiz )rZrh encodebytesrVrW)rr[encodedr r r r\s  z Binary.encoder)rrrrrrNrWr\r r r r rcs  rccCr]r)rcrWr^r r r _binaryr`rnc@$eZdZddZddZddZdS) ExpatParsercCsDtdd|_}||_|j|_|j|_|j|_ d}| |ddSr) rZ ParserCreate_parser_targetstartZStartElementHandlerendZEndElementHandlerrVZCharacterDataHandlerxml)rtargetparserencodingr r r rszExpatParser.__init__cCs|j|ddSNF)rqParserUr r r feedrXzExpatParser.feedcCs8z|j}Wn tyYdSw|`|`|dddS)NrdT)rqAttributeErrorrrrz)rrwr r r closes  zExpatParser.closeN)rrrrr{r}r r r r rps rpc@seZdZ dddZiZddZddZd 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)memorVrx allow_none)rrxrr r r rs zMarshaller.__init__cCsg}|j}|j}t|tr |d||j|jd||dn|d|D]}|d||||dq&|dd|}|S) Nz )r$r%z z z z z )append_Marshaller__dumpr9r#r$r%join)rvaluesr[rZdumpvresultr r r dumpss&     zMarshaller.dumpscCsz |jt|}Wn2ty;t|dstdt|t|jD]}||jvr3tdt|q"|jd}Ynw||||dS)N__dict__zcannot marshal %s objects_arbitrary_instance)dispatchtypeKeyErrorrBrg__mro__keys)rr2rZfZtype_r r r Z__dumps   zMarshaller.__dumpcCs|jstd|ddS)Nz0cannot marshal None unless allow_none is enabledz)rrgrr2rZr r r dump_nils zMarshaller.dump_nilcCs$|d||r dp d|ddS)Nz10z r rr r r dump_bool s zMarshaller.dump_boolcCs<|tks|tkr td|d|tt||ddS)Nzint exceeds XML-RPC limitsz z )MAXINTMININT OverflowErrorr@intrr r r dump_long&s  zMarshaller.dump_longcC |d|t||ddS)Nzz )reprrr r r dump_double1  zMarshaller.dump_doublecCs |d||||ddS)Nzz r )rr2rZr r r r dump_unicode7rzMarshaller.dump_unicodecCs,|dt|}||d|ddSrj)rhrlrW)rr2rZrmr r r dump_bytes=s  zMarshaller.dump_bytescCsZt|}||jvr tdd|j|<|j}|d|D]}|||q|d|j|=dS)Nz"cannot marshal recursive sequencesz z )rSrrgr)rr2rZirrr r r dump_arrayEs    zMarshaller.dump_arraycCst|}||jvr tdd|j|<|j}|d|D]"\}}|dt|ts.td|d||||||dq|d|j|=dS)Nz%cannot marshal recursive dictionariesz z zdictionary key must be stringz%s z z )rSrrgritemsr9r@)rr2rZr rrkrr r r dump_structSs      zMarshaller.dump_structcCrrY)r>rr r r dump_datetimeerzMarshaller.dump_datetimecCs4|jtvr||_|||`dS||j|dSr)rWRAPPERSrZr\rrrr r r dump_instanceks  zMarshaller.dump_instancerry) rrrrrrrrrrboolrrZdump_intrfloatr rr@rrerfrr:listrdictrrrr?rcr r r r r~s>       r~c@sleZdZ dDddZddZddZdd 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 _encodingr _use_datetime _use_bytes)r use_datetimeuse_builtin_typesr r r rs   zUnmarshaller.__init__cCs>|jdus|jr t|jdkrtdi|jdt|jS)Nfaultrr )rrr"r#rr:rr r r r}s   zUnmarshaller.closecCrQr)rrr r r getmethodnamerRzUnmarshaller.getmethodnamecC ||_dSr)r)rrxZ standaloner r r rur4zUnmarshaller.xmlcCshd|vr |dd}|dks|dkr|jt|jg|_|jr-||jvr-td||dk|_dS)N:arraystructzunknown tag %rr2) splitrrlenrrrrr")rtagZattrsr r r rss zUnmarshaller.startcCs|j|dSr)rr)rtextr r r rVr7zUnmarshaller.datac Csrz|j|}Wn(ty/d|vrYdSz |j|dd}Wn ty,YYdSwYnw||d|jS)Nrrr)rrrrr)rrrr r r rts  zUnmarshaller.endc Csjz|j|}Wn(ty/d|vrYdSz |j|dd}Wn ty,YYdSwYnw|||S)Nrr)rrr)rrrVrr r r end_dispatchs   zUnmarshaller.end_dispatchcCs|dd|_dSNr)rrrUr r r end_nils  zUnmarshaller.end_nilZnilcCs:|dkr |dn|dkr|dntdd|_dS)NrFrTzbad boolean valuer)rrgrrUr r r end_booleans    zUnmarshaller.end_booleanbooleancC|t|d|_dSr)rrrrUr r r end_int zUnmarshaller.end_intZi1Zi2Zi4Zi8rZ bigintegercCrr)rrrrUr r r end_doublerzUnmarshaller.end_doubleZdoublercCrr)rrrrUr r r end_bigdecimalrzUnmarshaller.end_bigdecimalZ bigdecimalcCs&|jr ||j}||d|_dSr)rrWrrrUr r r end_strings   zUnmarshaller.end_stringstringnamecCs.|j}|j|dg|j|d<d|_dSr)rpoprr)rrVmarkr r r end_arrays  zUnmarshaller.end_arrayrcCs`|j}i}|j|d}tdt|dD] }||d|||<q|g|j|d<d|_dS)Nrrr()rrrrangerr)rrVrrrrr r r end_struct s  zUnmarshaller.end_structrcCs6t}||d|jr|j}||d|_dS)Nrkr)rcrWr\rrVrrrrVr2r r r end_base64s   zUnmarshaller.end_base64rhcCs,t}|||jrt|}||dSr)r?rWrrarrr r r end_dateTime s  zUnmarshaller.end_dateTimezdateTime.iso8601cCs|jr ||dSdSr)rrrUr r r end_value(szUnmarshaller.end_valuer2cC d|_dS)NparamsrrUr r r end_params/r4zUnmarshaller.end_paramsrcCr)NrrrUr r r end_fault3r4zUnmarshaller.end_faultrcCs"|jr ||j}||_d|_dS)N methodName)rrWrrrUr r r end_methodName7s  zUnmarshaller.end_methodNamerNFF)rrrrr}rrursrVrtrrrrrrrrrrrrrrrrr r r r rs\     rc@ro)_MultiCallMethodcC||_||_dSr)_MultiCallMethod__call_list_MultiCallMethod__name)rZ call_listrr r r rD z_MultiCallMethod.__init__cCt|jd|j|fSNz%s.%s)rrrrrr r r __getattr__Gz_MultiCallMethod.__getattr__cGs|j|j|fdSr)rrrrargsr r r __call__Irz_MultiCallMethod.__call__Nrrrrrrr r r r rA rc@r)MultiCallIteratorcCrr)results)rrr r r rPr4zMultiCallIterator.__init__cCsL|j|}t|tikrt|d|dt|tgkr"|dStd)Nr$r%rz#unexpected type in multicall result)rrr#r+)rritemr r r __getitem__Ss zMultiCallIterator.__getitem__N)rrrrrr r r r rLs rc@s.eZdZ ddZddZddZddZd S) MultiCallcCs||_g|_dSr)_MultiCall__server_MultiCall__call_list)rserverr r r rmrzMultiCall.__init__cCsd|jjt|fS)Nz <%s at %#x>)rrrSrr r r r qszMultiCall.__repr__cC t|j|Sr)rrrr r r rtrbzMultiCall.__getattr__cCs6g}|jD] \}}|||dqt|jj|S)N)rr)rrrrsystemZ multicall)rZmarshalled_listrrr r r rwszMultiCall.__call__N)rrrrr rrr r r r r\s  rFcCs tr(tr(|r t}tj}n |rt}t}nt}t}tdd||t}t|}||fSt||d}tr8t|}||fSt |}||fS)NTFrr) FastParserFastUnmarshallerrarhrirnr_r#rrp)rrZ mkdatetimeZmkbytesrvrwr r r getparsers& rcCs t|tr d}n|rt|tr|sd}trt|}nt||}||}|dkr0dt|}nd}|r=|d|d|df}n |rF|d|d f}n|Sd |S) Nr(rz$ z z z z z z r)r9r#r:FastMarshallerr~rr@r)r methodnameZmethodresponserxrmrVZ xmlheaderr r r rs8     rcCs4 t||d\}}|||||fSNr)rr{r}r)rVrrpur r r loadss  rcCsX tstt}tjd|dd}||Wd|S1s#wY|S)Nwbr()modefileobjZ compresslevel)gzipNotImplementedErrorrGzipFilerZgetvalue)rVrgzfr r r gzip_encodes  r@c Cs tsttjdt|d&}z|dkr|}n||d}Wn ty,tdwWdn1s7wY|dkrJt||krJtd|S)Nrbr r rr(z invalid dataz#max gzipped payload length exceeded)r r r rreadOSErrorr+r)rVZ max_decoderZdecodedr r r gzip_decode)s"  rc@r)GzipDecodedResponsecCs.tstt||_tjj|d|jddS)Nrr)r r rrior r)rresponser r r rGszGzipDecodedResponse.__init__cCs*ztj|W|jdS|jwr)r r r}rrr r r r}OszGzipDecodedResponse.closeN)rrrrr}r r r r rCs rc@ro)_MethodcCrr _Method__send _Method__name)rsendrr r r r\rz_Method.__init__cCrr)rrrrr r r r_rz_Method.__getattr__cGs||j|Srrrr r r rarPz_Method.__call__Nrr r r r rYrrc@seZdZ deZdZdZdddddZdd 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 rxs   zTransport.__init__c Cs~dD]:}z |||||WStjjy|rYqty<}z|s1|jtjtjtjfvr2WYd}~qd}~wwdS)N)rr() single_requesthttpclientZRemoteDisconnectedrerrnoZ ECONNRESETZ ECONNABORTEDZEPIPE)rhosthandler request_bodyverboserer r r requests  zTransport.requestcCsz|||||}|}|jdkr||_||WSWnty$ty/|w|ddr:| t |||j|j t | )Nzcontent-lengthr) send_requestZ getresponseZstatusr,parse_responser# Exceptionr} getheaderrrreasonrZ getheaders)rr)r*r+r,Z http_connZrespr r r r%s(      zTransport.single_requestcCst|j|jdSr)rrr!rr r r rszTransport.getparsercCsri}t|tr |\}}tj|\}}|r2tj|}t|d}d | }dd|fg}ng}|||fS)NrrZ AuthorizationzBasic ) r9r:urllibparseZ _splituserZunquote_to_bytesrhrlrWrr)rr)x509ZauthZ extra_headersr r r get_host_infos    zTransport.get_host_infocCsL|jr||jdkr|jdS||\}|_}|tj|f|_|jdS)Nrr()r"r8r$r&r'ZHTTPConnectionrr)Zchostr7r r r make_connections   zTransport.make_connectioncCs$|j\}}|rd|_|dSdSr )r"r})rr) connectionr r r r}s  zTransport.closecCs||}|j|j}|r|d|jr%tr%|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_encodingr Z putrequestr user_agent send_headers send_content)rr)r*r+debugr;rr r r r0s         zTransport.send_requestcCs|D] \}}|||qdSr) putheader)rr;rkeyvalr r r r>s zTransport.send_headerscCsR|jdur|jt|krtr|ddt|}|dtt|||dS)NContent-Encodingr zContent-Length)encode_thresholdrr rArr@Z endheaders)rr;r+r r r r? s  zTransport.send_contentcCst|dr|dddkrt|}n|}n|}|\}} |d}|s&n|jr0tdt|||q||ur>| | | S)Nr3rDrr r(izbody:) rBr3rrrr,printrr{r})rrstreamrrrVr r r r11s$     zTransport.parse_responser)F)rrr __version__r=r<rErr.r%rr8r:r}r0r>r?r1r r r r rjs$  ! rcs0eZdZ d dddfdd ZddZZS) SafeTransportFr Nrcontextcstj|||d||_dS)Nrrr)superrrK)rrrrrKrr r rRs  zSafeTransport.__init__cCst|jr||jdkr|jdSttjdstd||\}|_}|tjj|dfd|ji|p0if|_|jdS)Nrr(HTTPSConnectionz1your version of http.client doesn't support HTTPSrK) r"rBr&r'r r8r$rOrKr9r r r r:[s    zSafeTransport.make_connectionr)rrrrr: __classcell__r r rNr rIOs  rIc@s\eZdZ  ddddddZddZd d Zd d Zd dZddZddZ ddZ dS) ServerProxyNFr rJc Cstj|} | jdvrtd| j|_tjddg| dd|_|js(d|_|durG| jdkr8t } d| i} nt } i} | d |||d| }||_ |pMd |_ ||_ ||_dS) N)r&httpszunsupported XML-RPC protocolrrz/RPC2rRrKrLrr )r5r6ZurlsplitZschemerZnetloc_ServerProxy__hostZ urlunsplit_ServerProxy__handlerrIr_ServerProxy__transport_ServerProxy__encoding_ServerProxy__verbose_ServerProxy__allow_none) rZuri transportrxr,rrrrrKrr*Z extra_kwargsr r r rs.      zServerProxy.__init__cCs|jdSr)rUr}rr r r Z__closerPzServerProxy.__closecCsPt|||j|jd|jd}|jj|j|j||jd}t |dkr&|d}|S)N)rxrxmlcharrefreplace)r,r(r) rrVrXr\rUr.rSrTrWr)rrrr.rr r r Z __requests   zServerProxy.__requestcCr')Nz <%s for %s%s>)rrrSrTrr r r r szServerProxy.__repr__cCrr)r_ServerProxy__requestrr r r rs zServerProxy.__getattr__cCs, |dkr|jS|dkr|jStd|f)Nr}rYzAttribute %r not found)_ServerProxy__closerUr|)rattrr r r rs zServerProxy.__call__cCs|Srr rr r r __enter__szServerProxy.__enter__cGs |dSr)r\rr r r __exit__rbzServerProxy.__exit__)NNFFFF) rrrrr\r[r rrr^r_r r r r rQzs  rQ__main__zhttp://localhost:8000ZERROR r)NNNF)r)Urhsysr;rdecimalrZ http.clientr&Z urllib.parser5Z xml.parsersrr(rrr  ImportErrorr version_inforHrrZ PARSE_ERRORZ SERVER_ERRORZAPPLICATION_ERRORZ SYSTEM_ERRORZTRANSPORT_ERRORZNOT_WELLFORMED_ERRORZUNSUPPORTED_ENCODINGZINVALID_ENCODING_CHARZINVALID_XMLRPCZMETHOD_NOT_FOUNDZINVALID_METHOD_PARAMSZINTERNAL_ERRORr2rrr"r#rrZBooleanr)r,r3r>r?r_rarcrnrrpr~rrrrrrrrrrrrr rrrrrIrQZServerrrrFZ currentTimeZgetCurrentTimerZmultiZgetDatapowaddrr r r r sX*           R #!(C  % ' K f+i