o ?Og@stdZddlZddlmZddlmZgdZGdddeZGdd d eZ d d Z Gd d d Z GdddZ dS)zRImplements (a subset of) Sun XDR -- eXternal Data Representation. See: RFC 1014 N)BytesIOwraps)ErrorPackerUnpackerConversionErrorc@s(eZdZdZddZddZddZdS) rzException 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 ||_dSN)msg)selfr r -/opt/alt/python310/lib64/python3.10/xdrlib.py__init__ zError.__init__cC t|jSr )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 srcstfdd}|S)z5 Wrap any raised struct.errors in a ConversionError. c s8z||WStjy}zt|jddd}~wwNr)structerrorrargs)r valueefunctionr rresult&s  z&raise_conversion_error..resultr)r"r#r r!rraise_conversion_error#sr$c@seZdZdZddZddZddZeZedd Z ed d Z e Z d d Z ddZ e ZeddZeddZddZeZddZeZeZddZddZddZdS)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 |jSr )r(getvaluerr r r get_buffer8rzPacker.get_buffercC|jtd|dS)N>Lr(writerZpackr xr r r pack_uint=zPacker.pack_uintcCr+)N>lr-r/r r rpack_intAr2zPacker.pack_intcCs$|r |jddS|jddS)Nss)r(r.r/r r r pack_boolGszPacker.pack_boolc Csz ||d?d@Wnttjfy"}zt|jddd}~wwz ||d@WdSttjfyD}zt|jddd}~ww)N lr)r1 TypeErrorrrrr)r r0r r r r pack_uhyperKszPacker.pack_uhypercCr+)N>fr-r/r r r pack_floatWr2zPacker.pack_floatcCr+)N>dr-r/r r r pack_double[r2zPacker.pack_doublecCsP|dkrtd|d|}|ddd}||t|d}|j|dS)Nr fstring size must be nonnegative) ValueErrorlenr(r.)r nsdatar r r pack_fstring_s  zPacker.pack_fstringcCs"t|}|||||dSr )rBr1rF)r rDrCr r r pack_stringis zPacker.pack_stringcCs*|D] }|d||q|ddS)Nr)r1)r list pack_itemitemr r r pack_listqs  zPacker.pack_listcCs*t||kr td|D]}||q dS)Nzwrong array size)rBrA)r rCrIrJrKr r r pack_farrayws  zPacker.pack_farraycCs$t|}||||||dSr )rBr1rM)r rIrJrCr r r pack_array}s zPacker.pack_arrayN)rrrrrr&r*Zget_bufr$r1r4Z pack_enumr5r8Z pack_hyperr:r<rFZ pack_fopaquerGZ pack_opaqueZ pack_bytesrLrMrNr r r rr/s4      rc@seZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ e Z ddZ ddZddZddZddZddZeZddZeZeZd d!Zd"d#Zd$d%Zd&S)'rz;Unpacks various data representations from the given buffer.cCs||dSr r%r rEr r rrszUnpacker.__init__cCs||_d|_dSr)_Unpacker__buf_Unpacker__posrOr r rr&s zUnpacker.resetcC|jSr rQrr r r get_positionzUnpacker.get_positioncCr r rS)r Zpositionr r r set_positionrzUnpacker.set_positioncCrRr )rPrr r rr*rUzUnpacker.get_buffercCs|jt|jkr tddS)Nzunextracted data remains)rQrBrPrrr r rdonesz Unpacker.donecCB|j}|d|_}|j||}t|dkrttd|dS)Nr?r,rrQrPrBEOFErrorrZunpackr ijrEr r r unpack_uint  zUnpacker.unpack_uintcCrX)Nr?r3rrYr[r r r unpack_intr_zUnpacker.unpack_intcCs t|Sr )boolr`rr r r unpack_boolr'zUnpacker.unpack_boolcCs |}|}t|d>|BS)Nr6)r^int)r hilor r r unpack_uhyperszUnpacker.unpack_uhypercCs|}|dkr |d}|S)Nll)rfr/r r r unpack_hyperszUnpacker.unpack_hypercCrX)Nr?r9rrYr[r r r unpack_floatr_zUnpacker.unpack_floatcCrX)Nr;rrYr[r r r unpack_doubler_zUnpacker.unpack_doublecCsT|dkrtd|j}||ddd}|t|jkrt||_|j|||S)Nrr=r>r?)rArQrBrPrZ)r rCr\r]r r runpack_fstringszUnpacker.unpack_fstringcCs|}||Sr )r^rk)r rCr r r unpack_strings zUnpacker.unpack_stringcCsBg} |}|dkr |S|dkrtd|f|}||q)NrHrz0 or 1 expected, got %r)r^rappend)r unpack_itemrIr0rKr r r unpack_lists zUnpacker.unpack_listcCs"g}t|D]}||q|Sr )rangerm)r rCrnrIr\r r r unpack_farrays zUnpacker.unpack_farraycCs|}|||Sr )r^rq)r rnrCr r r unpack_arrays zUnpacker.unpack_arrayN)rrrrrr&rTrVr*rWr^r`Z unpack_enumrbrfrgrhrjrkZunpack_fopaquerlZ unpack_opaqueZ unpack_bytesrorqrrr r r rrs0  r) rrior functoolsr__all__ Exceptionrrr$rrr r r rs   U