
    Rh6                         d Z ddlZddlmZ ddlmZ ddlZ ej                  ed       g dZ	 G d d	e
      Z G d
 de      Zd Z G d d      Z G d d      Zy)zRImplements (a subset of) Sun XDR -- eXternal Data Representation.

See: RFC 1014

    N)BytesIOwraps)      )remove)ErrorPackerUnpackerConversionErrorc                   "    e Zd ZdZd Zd Zd Zy)r	   zException class for this module. Use:

    except xdrlib.Error as var:
        # var has the Error instance for the exception

    Public ivars:
        msg -- contains the message

    c                     || _         y N)msg)selfr   s     /usr/lib/python3.12/xdrlib.py__init__zError.__init__   s	        c                 ,    t        | j                        S r   )reprr   r   s    r   __repr__zError.__repr__   s    DHH~r   c                 ,    t        | j                        S r   )strr   r   s    r   __str__zError.__str__   s    488}r   N)__name__
__module____qualname____doc__r   r   r    r   r   r	   r	      s    r   r	   c                       e Zd Zy)r   N)r   r   r   r    r   r   r   r   #   s    r   r   c                 .     t                fd       }|S )z5 Wrap any raised struct.errors in a ConversionError. c                     	  | |      S # t         j                  $ r}t        |j                  d         d d }~ww xY wNr   )structerrorr   args)r   valueefunctions      r   resultz&raise_conversion_error.<locals>.result)   s>    	7D%((|| 	7!!&&),$6	7s    =8=r   )r*   r+   s   ` r   raise_conversion_errorr,   &   s"     8_7 7
 Mr   c                       e Zd ZdZd Zd Zd ZeZed        Z	ed        Z
e
Zd Zd ZeZed	        Zed
        Zd ZeZd ZeZeZd Zd Zd Zy)r
   z0Pack various data representations into a buffer.c                 $    | j                          y r   resetr   s    r   r   zPacker.__init__5   s    

r   c                 "    t               | _        y r   )r   _Packer__bufr   s    r   r0   zPacker.reset8   s    Y
r   c                 6    | j                   j                         S r   )r2   getvaluer   s    r   
get_bufferzPacker.get_buffer;   s    zz""$$r   c                 b    | j                   j                  t        j                  d|             y )N>Lr2   writer%   packr   xs     r   	pack_uintzPacker.pack_uint@       

T1-.r   c                 b    | j                   j                  t        j                  d|             y )N>lr8   r;   s     r   pack_intzPacker.pack_intD   r>   r   c                 v    |r| j                   j                  d       y | j                   j                  d       y )Ns      s       )r2   r9   r;   s     r   	pack_boolzPacker.pack_boolJ   s(    djj{+jj{+r   c                 F   	 | j                  |dz	  dz         	 | j                  |dz         y # t        t        j                  f$ r}t	        |j
                  d         d d }~ww xY w# t        t        j                  f$ r}t	        |j
                  d         d d }~ww xY w)N    l    r   )r=   	TypeErrorr%   r&   r   r'   )r   r<   r)   s      r   pack_uhyperzPacker.pack_uhyperN   s    	7NN1b5:-.	7NN1z>* 6<<( 	7!!&&),$6	7 6<<( 	7!!&&),$6	7s,   / A) A&A!!A&)B BB c                 b    | j                   j                  t        j                  d|             y )N>fr8   r;   s     r   
pack_floatzPacker.pack_floatZ   r>   r   c                 b    | j                   j                  t        j                  d|             y )N>dr8   r;   s     r   pack_doublezPacker.pack_double^   r>   r   c                     |dk  rt        d      |d | }|dz   dz  dz  }||t        |      z
  dz  z   }| j                  j                  |       y )Nr    fstring size must be nonnegativer          )
ValueErrorlenr2   r9   )r   nsdatas       r   pack_fstringzPacker.pack_fstringb   sZ    q5?@@!ucAXqLq3t9}--

r   c                 `    t        |      }| j                  |       | j                  ||       y r   )rS   r=   rW   )r   rU   rT   s      r   pack_stringzPacker.pack_stringl   s'    Fq!Qr   c                 f    |D ]  }| j                  d        ||        | j                  d       y )N   r   )r=   )r   list	pack_itemitems       r   	pack_listzPacker.pack_listt   s2     	DNN1dO	 	qr   c                 T    t        |      |k7  rt        d      |D ]
  } ||        y )Nzwrong array size)rS   rR   )r   rT   r\   r]   r^   s        r   pack_farrayzPacker.pack_farrayz   s/    t9>/00 	DdO	r   c                 b    t        |      }| j                  |       | j                  |||       y r   )rS   r=   ra   )r   r\   r]   rT   s       r   
pack_arrayzPacker.pack_array   s)    IqD),r   N)r   r   r   r   r   r0   r5   get_bufr,   r=   rA   	pack_enumrC   rG   
pack_hyperrJ   rM   rW   pack_fopaquerY   pack_opaque
pack_bytesr_   ra   rc   r    r   r   r
   r
   2   s    :% G/ / / / I,7 J/ / / /  L 
 KJ-r   r
   c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 ZeZd
 Zd Zd Zd Zd Zd ZeZd ZeZeZd Zd Zd Zy)r   z;Unpacks various data representations from the given buffer.c                 &    | j                  |       y r   r/   r   rV   s     r   r   zUnpacker.__init__   s    

4r   c                      || _         d| _        y r$   )_Unpacker__buf_Unpacker__posrl   s     r   r0   zUnpacker.reset   s    

r   c                     | j                   S r   ro   r   s    r   get_positionzUnpacker.get_position       zzr   c                     || _         y r   rq   )r   positions     r   set_positionzUnpacker.set_position   s	    
r   c                     | j                   S r   )rn   r   s    r   r5   zUnpacker.get_buffer   rs   r   c                 ^    | j                   t        | j                        k  rt        d      y )Nzunextracted data remains)ro   rS   rn   r	   r   s    r   donezUnpacker.done   s'    ::DJJ'233 (r   c                     | j                   }|dz   x| _         }| j                  || }t        |      dk  rt        t	        j
                  d|      d   S )NrP   r7   r   ro   rn   rS   EOFErrorr%   unpackr   ijrV   s       r   unpack_uintzUnpacker.unpack_uint   P    JJ1
Qzz!At9q=N}}T4(++r   c                     | j                   }|dz   x| _         }| j                  || }t        |      dk  rt        t	        j
                  d|      d   S )NrP   r@   r   r{   r~   s       r   
unpack_intzUnpacker.unpack_int   r   r   c                 4    t        | j                               S r   )boolr   r   s    r   unpack_boolzUnpacker.unpack_bool   s    DOO%&&r   c                 d    | j                         }| j                         }t        |      dz  |z  S )NrE   )r   int)r   hilos      r   unpack_uhyperzUnpacker.unpack_uhyper   s1    2w{Rr   c                 :    | j                         }|dk\  r|dz
  }|S )Nl            l            )r   r;   s     r   unpack_hyperzUnpacker.unpack_hyper   s)     ""''Ar   c                     | j                   }|dz   x| _         }| j                  || }t        |      dk  rt        t	        j
                  d|      d   S )NrP   rI   r   r{   r~   s       r   unpack_floatzUnpacker.unpack_float   r   r   c                     | j                   }|dz   x| _         }| j                  || }t        |      dk  rt        t	        j
                  d|      d   S )N   rL   r   r{   r~   s       r   unpack_doublezUnpacker.unpack_double   r   r   c                     |dk  rt        d      | j                  }||dz   dz  dz  z   }|t        | j                        kD  rt        || _        | j                  |||z    S )Nr   rO   r   rP   )rR   ro   rS   rn   r|   )r   rT   r   r   s       r   unpack_fstringzUnpacker.unpack_fstring   sd    q5?@@JJ1q
Ns4::N
zz!AaC  r   c                 D    | j                         }| j                  |      S r   )r   r   )r   rT   s     r   unpack_stringzUnpacker.unpack_string   s!    ""1%%r   c                     g }| j                         x}dk7  rA|dk7  rt        d|       |       }|j                  |       | j                         x}dk7  rA|S )Nr   r[   z0 or 1 expected, got )r   r   append)r   unpack_itemr\   r<   r^   s        r   unpack_listzUnpacker.unpack_list   sd    $$&&q1,Av%1&FGG=DKK	 $$&&q1,
 r   c                 V    g }t        |      D ]  }|j                   |               |S r   )ranger   )r   rT   r   r\   r   s        r   unpack_farrayzUnpacker.unpack_farray   s-    q 	'AKK&	'r   c                 F    | j                         }| j                  ||      S r   )r   r   )r   r   rT   s      r   unpack_arrayzUnpacker.unpack_array   s#    !!![11r   N)r   r   r   r   r   r0   rr   rv   r5   ry   r   r   unpack_enumr   r   r   r   r   r   unpack_fopaquer   unpack_opaqueunpack_bytesr   r   r   r    r   r   r   r      sy    E4,, K' 
,,! $N& "M L2r   r   )r   r%   ior   	functoolsr   warnings_deprecatedr   __all__	Exceptionr	   r   r,   r
   r   r    r   r   <module>r      se          Xg .
<I $	e 		Q- Q-jk2 k2r   