o ½w[eã@stdZddlZddlmZddlmZgd¢ZGdd„deƒZGdd „d eƒZ d d „Z Gd d „d ƒZ Gdd„dƒZ dS)zRImplements (a subset of) Sun XDR -- eXternal Data Representation. See: RFC 1014 éN)ÚBytesIO©Úwraps)ÚErrorÚPackerÚUnpackerÚConversionErrorc@s(eZdZdZdd„Zdd„Zdd„ZdS) rzºException class for this module. Use: except xdrlib.Error as var: # var has the Error instance for the exception Public ivars: msg -- contains the message cCó ||_dS©N)Úmsg)Úselfr ©r ú/usr/lib/python3.10/xdrlib.pyÚ__init__ó zError.__init__cCó t|jƒSr )Úreprr ©r r r rÚ__repr__rzError.__repr__cCrr )Ústrr rr r rÚ__str__rz Error.__str__N)Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrr r r rrs   rc@s eZdZdS)rN)rrrr r r rr srcstˆƒ‡fdd„ƒ}|S)z5 Wrap any raised struct.errors in a ConversionError. c s8zˆ||ƒWStjy}zt|jdƒd‚d}~ww©Nr)ÚstructÚerrorrÚargs)r ÚvalueÚe©Úfunctionr rÚresult&s  €ÿz&raise_conversion_error..resultr)r"r#r r!rÚraise_conversion_error#sr$c@s¨eZdZdZdd„Zdd„Zdd„ZeZedd „ƒZ ed d „ƒZ e Z d d „Z dd„Z e Zedd„ƒZedd„ƒZdd„ZeZdd„ZeZeZdd„Zdd„Zdd„ZdS)rz0Pack various data representations into a buffer.cCs | ¡dSr ©Úresetrr r rr2ó zPacker.__init__cCs tƒ|_dSr )rÚ _Packer__bufrr r rr&5r'z Packer.resetcCs |j ¡Sr )r(Úgetvaluerr r rÚ get_buffer8rzPacker.get_buffercCó|j t d|¡¡dS)Nú>L©r(ÚwriterÚpack©r Úxr r rÚ pack_uint=ózPacker.pack_uintcCr+)Nú>lr-r0r r rÚpack_intAr3zPacker.pack_intcCs$|r |j d¡dS|j d¡dS)Nss)r(r.r0r r rÚ pack_boolGszPacker.pack_boolc CsŠz | |d?d@¡Wnttjfy"}zt|jdƒd‚d}~wwz | |d@¡WdSttjfyD}zt|jdƒd‚d}~ww)Né lÿÿr)r2Ú TypeErrorrrrr)r r1r r r rÚ pack_uhyperKs€ÿ€ÿzPacker.pack_uhypercCr+)Nú>fr-r0r r rÚ pack_floatWr3zPacker.pack_floatcCr+)Nú>dr-r0r r rÚ pack_double[r3zPacker.pack_doublecCsP|dkrtdƒ‚|d|…}|ddd}||t|ƒd}|j |¡dS)Nrú fstring size must be nonnegativeééó)Ú ValueErrorÚlenr(r.)r ÚnÚsÚdatar r rÚ pack_fstring_s  zPacker.pack_fstringcCs"t|ƒ}| |¡| ||¡dSr )rCr2rG)r rErDr r rÚ pack_stringis zPacker.pack_stringcCs*|D] }| d¡||ƒq| d¡dS)Nér)r2)r ÚlistÚ pack_itemÚitemr r rÚ pack_listqs  zPacker.pack_listcCs*t|ƒ|kr tdƒ‚|D]}||ƒq dS)Nzwrong array size)rCrB)r rDrJrKrLr r rÚ pack_farrayws  ÿzPacker.pack_farraycCs$t|ƒ}| |¡| |||¡dSr )rCr2rN)r rJrKrDr r rÚ pack_array}s zPacker.pack_arrayN)rrrrrr&r*Úget_bufr$r2r5Ú pack_enumr6r9Ú pack_hyperr;r=rGÚ pack_fopaquerHÚ pack_opaqueÚ pack_bytesrMrNrOr r r rr/s4      rc@s°eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z e Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„ZeZdd„ZeZeZd d!„Zd"d#„Zd$d%„Zd&S)'rz;Unpacks various data representations from the given buffer.cCs| |¡dSr r%©r rFr r rr‡szUnpacker.__init__cCs||_d|_dSr)Ú_Unpacker__bufÚ_Unpacker__posrVr r rr&Šs zUnpacker.resetcCó|jSr ©rXrr r rÚ get_positionŽózUnpacker.get_positioncCr r rZ)r Úpositionr r rÚ set_position‘rzUnpacker.set_positioncCrYr )rWrr r rr*”r\zUnpacker.get_buffercCs|jt|jƒkr tdƒ‚dS)Nzunextracted data remains)rXrCrWrrr r rÚdone—sÿz Unpacker.donecCóB|j}|d|_}|j||…}t|ƒdkrt‚t d|¡dS)Nr@r,r©rXrWrCÚEOFErrorrÚunpack©r ÚiÚjrFr r rÚ unpack_uint›ó  zUnpacker.unpack_uintcCr`)Nr@r4rrardr r rÚ unpack_int£rhzUnpacker.unpack_intcCs t| ¡ƒSr )Úboolrirr r rÚ unpack_bool­r'zUnpacker.unpack_boolcCs | ¡}| ¡}t|ƒd>|BS)Nr7)rgÚint)r ÚhiÚlor r rÚ unpack_uhyper°szUnpacker.unpack_uhypercCs| ¡}|dkr |d}|S)Nll)ror0r r rÚ unpack_hyperµszUnpacker.unpack_hypercCr`)Nr@r:rrardr r rÚ unpack_float»rhzUnpacker.unpack_floatcCr`)Nér<rrardr r rÚ unpack_doubleÃrhzUnpacker.unpack_doublecCsT|dkrtdƒ‚|j}||ddd}|t|jƒkrt‚||_|j|||…S)Nrr>r?r@)rBrXrCrWrb)r rDrerfr r rÚunpack_fstringËszUnpacker.unpack_fstringcCs| ¡}| |¡Sr )rgrt)r rDr r rÚ unpack_string×s zUnpacker.unpack_stringcCsBg} | ¡}|dkr |S|dkrtd|fƒ‚|ƒ}| |¡q)NrIrz0 or 1 expected, got %r)rgrÚappend)r Ú unpack_itemrJr1rLr r rÚ unpack_listÞsü úzUnpacker.unpack_listcCs"g}t|ƒD]}| |ƒ¡q|Sr )Úrangerv)r rDrwrJrer r rÚ unpack_farrayés zUnpacker.unpack_farraycCs| ¡}| ||¡Sr )rgrz)r rwrDr r rÚ unpack_arrayïs zUnpacker.unpack_arrayN)rrrrrr&r[r^r*r_rgriÚ unpack_enumrkrorprqrsrtÚunpack_fopaqueruÚ unpack_opaqueÚ unpack_bytesrxrzr{r r r rr„s0  r) rrÚiorÚ functoolsrÚ__all__Ú Exceptionrrr$rrr r r rÚs   U