ó
â·sWc           @   sË   d  Z  d d l Z y d d l m Z Wn! e k
 rI d d l m Z n Xd d l m Z d d d d g Z d e	 f d	 „  ƒ  YZ
 d e
 f d
 „  ƒ  YZ d „  Z d d d „  ƒ  YZ d d d „  ƒ  YZ d S(   sR   Implements (a subset of) Sun XDR -- eXternal Data Representation.

See: RFC 1014

iÿÿÿÿN(   t   StringIO(   t   wrapst   Errort   Packert   Unpackert   ConversionErrorc           B   s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   s¸   Exception class for this module. Use:

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

    Public ivars:
        msg -- contains the message

    c         C   s   | |  _  d  S(   N(   t   msg(   t   selfR   (    (    s   /usr/lib/python2.7/xdrlib.pyt   __init__   s    c         C   s   t  |  j ƒ S(   N(   t   reprR   (   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   __repr__   s    c         C   s   t  |  j ƒ S(   N(   t   strR   (   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   __str__   s    (   t   __name__t
   __module__t   __doc__R   R
   R   (    (    (    s   /usr/lib/python2.7/xdrlib.pyR      s   			c           B   s   e  Z RS(    (   R   R   (    (    (    s   /usr/lib/python2.7/xdrlib.pyR   #   s   c            s   t  ˆ  ƒ ‡  f d †  ƒ } | S(   s5    Wrap any raised struct.errors in a ConversionError. c            sA   y ˆ  |  | ƒ SWn) t  j k
 r< } t | j d ƒ ‚ n Xd  S(   Ni    (   t   structt   errorR   t   args(   R   t   valuet   e(   t   function(    s   /usr/lib/python2.7/xdrlib.pyt   result)   s    (   R   (   R   R   (    (   R   s   /usr/lib/python2.7/xdrlib.pyt   raise_conversion_error&   s    c           B   sÈ   e  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 RS(   s0   Pack various data representations into a buffer.c         C   s   |  j  ƒ  d  S(   N(   t   reset(   R   (    (    s   /usr/lib/python2.7/xdrlib.pyR   5   s    c         C   s   t  ƒ  |  _ d  S(   N(   t	   _StringIOt   _Packer__buf(   R   (    (    s   /usr/lib/python2.7/xdrlib.pyR   8   s    c         C   s   |  j  j ƒ  S(   N(   R   t   getvalue(   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt
   get_buffer;   s    c         C   s    |  j  j t j d | ƒ ƒ d  S(   Ns   >L(   R   t   writeR   t   pack(   R   t   x(    (    s   /usr/lib/python2.7/xdrlib.pyt	   pack_uint@   s    c         C   s    |  j  j t j d | ƒ ƒ d  S(   Ns   >l(   R   R   R   R   (   R   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   pack_intD   s    c         C   s-   | r |  j  j d ƒ n |  j  j d ƒ d  S(   Nt      t       (   R   R   (   R   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt	   pack_boolJ   s     c         C   s–   y |  j  | d ?d @ƒ Wn/ t t j f k
 rJ } t | j d ƒ ‚ n Xy |  j  | d @ƒ Wn/ t t j f k
 r‘ } t | j d ƒ ‚ n Xd  S(   Ni    l   ÿÿ i    (   R    t	   TypeErrorR   R   R   R   (   R   R   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   pack_uhyperN   s    c         C   s    |  j  j t j d | ƒ ƒ d  S(   Ns   >f(   R   R   R   R   (   R   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt
   pack_floatZ   s    c         C   s    |  j  j t j d | ƒ ƒ d  S(   Ns   >d(   R   R   R   R   (   R   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   pack_double^   s    c         C   s`   | d k  r t  d ‚ n  | |  } | d d d } | | t | ƒ d } |  j j | ƒ d  S(   Ni    s    fstring size must be nonnegativei   i   t    (   t
   ValueErrort   lenR   R   (   R   t   nt   st   data(    (    s   /usr/lib/python2.7/xdrlib.pyt   pack_fstringb   s    
c         C   s-   t  | ƒ } |  j | ƒ |  j | | ƒ d  S(   N(   R+   R    R/   (   R   R-   R,   (    (    s   /usr/lib/python2.7/xdrlib.pyt   pack_stringl   s    c         C   s9   x% | D] } |  j  d ƒ | | ƒ q W|  j  d ƒ d  S(   Ni   i    (   R    (   R   t   listt	   pack_itemt   item(    (    s   /usr/lib/python2.7/xdrlib.pyt	   pack_listt   s    c         C   s=   t  | ƒ | k r t d ‚ n  x | D] } | | ƒ q% Wd  S(   Ns   wrong array size(   R+   R*   (   R   R,   R1   R2   R3   (    (    s   /usr/lib/python2.7/xdrlib.pyt   pack_farrayz   s    c         C   s0   t  | ƒ } |  j | ƒ |  j | | | ƒ d  S(   N(   R+   R    R5   (   R   R1   R2   R,   (    (    s   /usr/lib/python2.7/xdrlib.pyt
   pack_array€   s    (   R   R   R   R   R   R   t   get_bufR   R    R!   t	   pack_enumR$   R&   t
   pack_hyperR'   R(   R/   t   pack_fopaqueR0   t   pack_opaquet
   pack_bytesR4   R5   R6   (    (    (    s   /usr/lib/python2.7/xdrlib.pyR   2   s*   					
				c           B   sÈ   e  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 RS(   s;   Unpacks various data representations from the given buffer.c         C   s   |  j  | ƒ d  S(   N(   R   (   R   R.   (    (    s   /usr/lib/python2.7/xdrlib.pyR   Š   s    c         C   s   | |  _  d |  _ d  S(   Ni    (   t   _Unpacker__buft   _Unpacker__pos(   R   R.   (    (    s   /usr/lib/python2.7/xdrlib.pyR      s    	c         C   s   |  j  S(   N(   R>   (   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   get_position‘   s    c         C   s   | |  _  d  S(   N(   R>   (   R   t   position(    (    s   /usr/lib/python2.7/xdrlib.pyt   set_position”   s    c         C   s   |  j  S(   N(   R=   (   R   (    (    s   /usr/lib/python2.7/xdrlib.pyR   —   s    c         C   s+   |  j  t |  j ƒ k  r' t d ƒ ‚ n  d  S(   Ns   unextracted data remains(   R>   R+   R=   R   (   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   doneš   s    c         C   s‚   |  j  } | d |  _  } |  j | | !} t | ƒ d k  rE t ‚ n  t j d | ƒ d } y t | ƒ SWn t k
 r} | SXd  S(   Ni   s   >Li    (   R>   R=   R+   t   EOFErrorR   t   unpackt   intt   OverflowError(   R   t   it   jR.   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_uintž   s    		c         C   sY   |  j  } | d |  _  } |  j | | !} t | ƒ d k  rE t ‚ n  t j d | ƒ d S(   Ni   s   >li    (   R>   R=   R+   RC   R   RD   (   R   RG   RH   R.   (    (    s   /usr/lib/python2.7/xdrlib.pyt
   unpack_intª   s    		c         C   s   t  |  j ƒ  ƒ S(   N(   t   boolRJ   (   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_bool´   s    c         C   s*   |  j  ƒ  } |  j  ƒ  } t | ƒ d >| BS(   Ni    (   RI   t   long(   R   t   hit   lo(    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_uhyper·   s    c         C   s)   |  j  ƒ  } | d k r% | d } n  | S(   Nl            l            (   RP   (   R   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_hyper¼   s    c         C   sY   |  j  } | d |  _  } |  j | | !} t | ƒ d k  rE t ‚ n  t j d | ƒ d S(   Ni   s   >fi    (   R>   R=   R+   RC   R   RD   (   R   RG   RH   R.   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_floatÂ   s    		c         C   sY   |  j  } | d |  _  } |  j | | !} t | ƒ d k  rE t ‚ n  t j d | ƒ d S(   Ni   s   >di    (   R>   R=   R+   RC   R   RD   (   R   RG   RH   R.   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_doubleÊ   s    		c         C   sp   | d k  r t  d ‚ n  |  j } | | d d d } | t |  j ƒ k rU t ‚ n  | |  _ |  j | | | !S(   Ni    s    fstring size must be nonnegativei   i   (   R*   R>   R+   R=   RC   (   R   R,   RG   RH   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_fstringÒ   s    			c         C   s   |  j  ƒ  } |  j | ƒ S(   N(   RI   RT   (   R   R,   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_stringÞ   s    c         C   sa   g  } xT |  j  ƒ  } | d k r% Pn  | d k rD t d | f ‚ n  | ƒ  } | j | ƒ q	 | S(   Ni    i   s   0 or 1 expected, got %r(   RI   R   t   append(   R   t   unpack_itemR1   R   R3   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_listå   s     	c         C   s1   g  } x$ t  | ƒ D] } | j | ƒ  ƒ q W| S(   N(   t   rangeRV   (   R   R,   RW   R1   RG   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_farrayð   s    c         C   s   |  j  ƒ  } |  j | | ƒ S(   N(   RI   RZ   (   R   RW   R,   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_arrayö   s    (   R   R   R   R   R   R?   RA   R   RB   RI   RJ   t   unpack_enumRL   RP   RQ   RR   RS   RT   t   unpack_fopaqueRU   t   unpack_opaquet   unpack_bytesRX   RZ   R[   (    (    (    s   /usr/lib/python2.7/xdrlib.pyR   ‡   s.   														
			(    (    (   R   R   t	   cStringIOR    R   t   ImportErrort	   functoolsR   t   __all__t	   ExceptionR   R   R   R   R   (    (    (    s   /usr/lib/python2.7/xdrlib.pyt   <module>   s   	U