ó
è¾bc           @   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(   Ns      s       (   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   s    (   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)   R.   R/   R0   (    (    s   /usr/lib/python2.7/xdrlib.pyt   pack_farrayz   s    c         C   s0   t  | ƒ } |  j | ƒ |  j | | | ƒ d  S(   N(   R(   R    R2   (   R   R.   R/   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_fopaqueR-   t   pack_opaquet
   pack_bytesR1   R2   R3   (    (    (    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(   R@   R   RA   (   R   RD   RE   R+   (    (    s   /usr/lib/python2.7/xdrlib.pyt
   unpack_intª   s    		c         C   s   t  |  j ƒ  ƒ S(   N(   t   boolRG   (   R   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_bool´   s    c         C   s*   |  j  ƒ  } |  j  ƒ  } t | ƒ d >| BS(   Ni    (   RF   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            (   RM   (   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(   R@   R   RA   (   R   RD   RE   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(   R@   R   RA   (   R   RD   RE   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:   R@   (   R   R)   RD   RE   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_fstringÒ   s    			c         C   s   |  j  ƒ  } |  j | ƒ S(   N(   RF   RQ   (   R   R)   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_stringÞ   s    c         C   sb   g  } xU |  j  ƒ  } | d k r% Pn  | d k rD t d | f ‚ n  | ƒ  } | j | ƒ q	 W| S(   Ni    i   s   0 or 1 expected, got %r(   RF   R   t   append(   R   t   unpack_itemR.   R   R0   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_listå   s     	c         C   s1   g  } x$ t  | ƒ D] } | j | ƒ  ƒ q W| S(   N(   t   rangeRS   (   R   R)   RT   R.   RD   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_farrayð   s    c         C   s   |  j  ƒ  } |  j | | ƒ S(   N(   RF   RW   (   R   RT   R)   (    (    s   /usr/lib/python2.7/xdrlib.pyt   unpack_arrayö   s    (   R   R   R   R   R   R<   R>   R   R?   RF   RG   t   unpack_enumRI   RM   RN   RO   RP   RQ   t   unpack_fopaqueRR   t   unpack_opaquet   unpack_bytesRU   RW   RX   (    (    (    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