³ò
—ã=Pc           @   sè   d  Z  d d k l Z d d k Td d k l Z l Z l Z e e ƒ Z	 d „  Z
 d „  Z d „  Z d „  Z d	 d d
 „  ƒ  YZ d d d „  ƒ  YZ d d d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d d d „  ƒ  YZ d S(   s™   
The I{sudsobject} module provides a collection of suds objects
that are primarily used for the highly dynamic interactions with
wsdl/xsd defined types.
iÿÿÿÿ(   t	   getLogger(   t   *(   t   classobjt   functiont   instancemethodc         c   s   x |  D] } | Vq Wd S(   sø   
    Extract the I{items} from a suds object much like the
    items() method works on I{dict}.
    @param sobject: A suds object
    @type sobject: L{Object}
    @return: A list of items contained in I{sobject}.
    @rtype: [(key, value),...]
    N(    (   t   sobjectt   item(    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyt   items   s    	 c         C   s   t  t |  ƒ ƒ S(   sØ   
    Convert a sudsobject into a dictionary.
    @param sobject: A suds object
    @type sobject: L{Object}
    @return: A python dictionary containing the
        items contained in I{sobject}.
    @rtype: dict
    (   t   dictR   (   R   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyt   asdict+   s    	c         C   s9   x2 |  D]* } t  | | d | d ƒ | i | _ q W| S(   s³   
    Merge all attributes and metadata from I{a} to I{b}.
    @param a: A I{source} object
    @type a: L{Object}
    @param b: A I{destination} object
    @type b: L{Object}
    i    i   (   t   setattrt   __metadata__(   t   at   bR   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyt   merge6   s
     c         C   s¤   d } x— |  i  D]Œ } t |  | ƒ } | d j o q n t | t ƒ o | t | ƒ 7} q n t | d ƒ o" t | ƒ o | d 7} q q n | d 7} q W| S(   sý   
    Get the I{virtual footprint} of the object.
    This is really a count of the attributes in the branch with a significant value.
    @param sobject: A suds object.
    @type sobject: L{Object}
    @return: The branch footprint.
    @rtype: int
    i    t   __len__i   N(   t   __keylist__t   getattrt   Nonet
   isinstancet   Objectt	   footprintt   hasattrt   len(   R   t   nR   t   v(    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyR   C   s    	
   t   Factoryc           B   sV   e  Z h  Z e h  d  „ ƒ Z e d h  d „ ƒ Z e d „  ƒ Z e d d „ ƒ Z RS(   c         C   s   t  | t ƒ p | f } n | i d ƒ } d i | t | ƒ f ƒ } |  i i | ƒ } | d  j o# t | | | ƒ } | |  i | <n | S(   Ns   utf-8t   .(	   R   t   tuplet   encodet   joint   strt   cachet   getR   R   (   t   clst   namet   basesR   t   keyt   subclass(    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyR&   ^   s    c         C   sh   | d  j	 o |  i | t ƒ } | ƒ  } n
 t ƒ  } x, | i ƒ  D] } t | | d | d ƒ qB W| S(   Ni    i   (   R   R&   R   R   R
   (   R"   t	   classnameR   R&   t   instR   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyt   objectj   s    	 c         C   s   t  ƒ  S(   N(   t   Metadata(   R"   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyt   metadatau   s    c         C   s   |  i  | t ƒ } | | ƒ S(   N(   R&   t   Property(   R"   R#   t   valueR&   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyt   propertyy   s    N(	   t   __name__t
   __module__R    t   classmethodR&   R   R)   R+   R.   (    (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyR   Z   s   
R   c           B   sk   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z RS(   c         C   s%   g  |  _  t ƒ  |  _ t ƒ  |  _ d  S(   N(   R   t   Printert   __printer__R*   R   (   t   self(    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyt   __init__   s    	c         C   s\   | i  d ƒ o | i d ƒ } | o$ | |  i j o |  i i | ƒ n | |  i | <d  S(   Nt   __(   t
   startswitht   endswithR   t   appendt   __dict__(   R4   R#   R-   t   builtin(    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyt   __setattr__†   s
    c         C   su   yH |  i  | =| i d ƒ o | i d ƒ } | p |  i i | ƒ n Wn& |  i i } t d | | f ‚ n Xd  S(   NR6   s   %s has no attribute '%s'(   R:   R7   R8   R   t   removet	   __class__R/   t   AttributeError(   R4   R#   R;   R"   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyt   __delattr__   s    
c         C   s4   t  | t ƒ o |  i t | ƒ } n t |  | ƒ S(   N(   R   t   intR   R   (   R4   R#   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyt   __getitem__—   s    c         C   s   t  |  | | ƒ d  S(   N(   R
   (   R4   R#   R-   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyt   __setitem__œ   s    c         C   s
   t  |  ƒ S(   N(   t   Iter(   R4   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyt   __iter__Ÿ   s    c         C   s   t  |  i ƒ S(   N(   R   R   (   R4   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyR   ¢   s    c         C   s   | |  i  j S(   N(   R   (   R4   R#   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyt   __contains__¥   s    c         C   s
   t  |  ƒ S(   N(   R   (   R4   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyt   __repr__¨   s    c         C   s   t  |  ƒ i d ƒ S(   Ns   utf-8(   t   unicodeR   (   R4   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyt   __str__«   s    c         C   s   |  i  i |  ƒ S(   N(   R3   t   tostr(   R4   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyt   __unicode__®   s    (   R/   R0   R5   R<   R@   RB   RC   RE   R   RF   RG   RI   RK   (    (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyR      s   			
							RD   c           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s(   | |  _  |  i | ƒ |  _ d |  _ d  S(   Ni    (   R   t   _Iter__keylistt   keylistt   index(   R4   R   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyR5   ´   s    	c         C   sŒ   |  i  } t |  i  ƒ } xd |  i | j  oS | |  i } |  i d 7_ t |  i | ƒ o  t |  i | ƒ } | | f Sq q Wt ƒ  ‚ d  S(   Ni   (   RM   R   RN   R   R   R   t   StopIteration(   R4   RM   t   nkeyst   kR   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyt   next¹   s    	 c         C   sw   | i  } y\ t | ƒ } | i i } t | ƒ } | i | ƒ p  t i d | | ƒ t ƒ  ‚ n | SWn | Sn Xd  S(   Ns+   %s must be superset of %s, ordering ignored(   R   t   setR   t   orderingt
   issupersett   logt   debugt   KeyError(   R4   R   RM   t   keysetRT   t   ordered(    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyt	   __keylistÄ   s    	c         C   s   |  S(   N(    (   R4   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyRE   Ô   s    (   R/   R0   R5   RR   RL   RE   (    (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyRD   ²   s   			R*   c           B   s   e  Z d  „  Z RS(   c         C   s   g  |  _  t ƒ  |  _ d  S(   N(   R   R2   R3   (   R4   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyR5   Ù   s    	(   R/   R0   R5   (    (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyR*   Ø   s   R,   c           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s   t  i |  ƒ | |  _ d  S(   N(   R   R5   R-   (   R4   R-   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyR5   à   s    c         c   s/   x( |  D]  } | d d j o	 | Vq q Wd  S(   Ni    R-   (    (   R4   R   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyR   ä   s     c         C   s   |  i  S(   N(   R-   (   R4   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyR!   é   s    c         C   s   | |  _  |  S(   N(   R-   (   R4   R-   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyRS   ì   s    	(   R/   R0   R5   R   R!   RS   (    (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyR,   Þ   s   			R2   c           B   sk   e  Z d  Z e d „  ƒ Z d d „ Z d e d „ Z e d „ Z e d „ Z	 d „  Z
 d	 „  Z d
 „  Z RS(   s.    
    Pretty printing of a Object object.
    c         C   s   d | d d f S(   Ns   %*si   t    (    (   R"   R   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyt   indentö   s    iþÿÿÿc         C   s   g  } |  i  | | | ƒ S(   s'    get s string representation of object (   t   process(   R4   R)   R]   t   history(    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyRJ   ù   s    i    c         C   s#  | d j o d Sn t | t ƒ o9 t | ƒ d j o d Sq^ |  i | | | d | ƒ Sn t | t ƒ o9 t | ƒ d j o d Sq§ |  i | | | d | ƒ Sn t | t t f ƒ o6 t | ƒ d j o d Sqó |  i	 | | | d ƒ Sn t | t
 ƒ o d t | ƒ Sn d t | ƒ S(   s?    print object using the specified indent (n) and newline (nl). R   i    s   <empty>i   s   "%s"s   %sN(   R   R   R   R   t   print_objectR   t   print_dictionaryt   listR   t   print_collectiont
   basestringRJ   (   R4   R)   t   hR   t   nl(    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyR^   þ   s"    c         C   s  g  } | i  } | | j oH | i d ƒ | i | i ƒ | i d ƒ | i d ƒ d i | ƒ Sn | i | ƒ | o' | i d ƒ | i |  i | ƒ ƒ n | t j o. | i d ƒ | i | i ƒ | i d ƒ n | i d ƒ xÞ | D]Ö } |  i | | ƒ o qî n |  i | | ƒ } | i d ƒ | i |  i | d ƒ ƒ t | d t	 t
 f ƒ o" | i | d ƒ | i d	 ƒ n | i | d ƒ | i d
 ƒ | i |  i | d | | t ƒ ƒ qî W| i d ƒ | i |  i | ƒ ƒ | i d ƒ | i ƒ  d i | ƒ S(   s@    print complex using the specified indent (n) and newline (nl). t   (t   )s   ...t    s   
t   {i   i    s   []s    = t   }(   R>   R9   R/   R   R]   R   t   excludet   unwrapR   Rb   R   R^   t   Truet   pop(   R4   t   dRe   R   Rf   t   sR"   R   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyR`     sF    	 '
c         C   sq  | | j o d Sn | i  | ƒ g  } | o' | i  d ƒ | i  |  i | ƒ ƒ n | i  d ƒ xÄ | i ƒ  D]¶ } | i  d ƒ | i  |  i | d ƒ ƒ t | d t t f ƒ o( | i  t | d ƒ ƒ | i  d ƒ n | i  t | d ƒ ƒ | i  d ƒ | i  |  i | d | | t ƒ ƒ qp W| i  d ƒ | i  |  i | ƒ ƒ | i  d ƒ | i	 ƒ  d	 i
 | ƒ S(
   s@    print complex using the specified indent (n) and newline (nl). s   {}...s   
Rj   i   i    s   []s    = Rk   Ri   (   R9   R]   R   R   Rb   R   RJ   R^   Rn   Ro   R   (   R4   Rp   Re   R   Rf   Rq   R   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyRa   ;  s.      '
c         C   s    | | j o d Sn | i  | ƒ g  } x^ | D]V } | i  d ƒ | i  |  i | ƒ ƒ | i  |  i | | | d ƒ ƒ | i  d ƒ q/ W| i ƒ  d i | ƒ S(   sC    print collection using the specified indent (n) and newline (nl). s   []...s   
i   t   ,Ri   (   R9   R]   R^   Ro   R   (   R4   t   cRe   R   Rq   R   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyRc   T  s       
c         C   s‹   d „  } yt | i  } t | d d ƒ } | d j o | Sn t | d h  ƒ } | i | d | ƒ } | d | | d ƒ f SWn n X| S(   s7    translate (unwrap) using an optional wrapper function c         S   s   |  S(    (    (   t   x(    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyt   <lambda>c  s    t	   __print__t   wrappersi    i   N(   R   R   R   R!   (   R4   Rp   R   t   noptt   mdt   pmdRw   t   fn(    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyRm   a  s    		c         C   sb   yT | i  } t | d d ƒ } | d j o t Sn t | d g  ƒ } | d | j SWn n Xt S(   s#    check metadata for excluded items Rv   t   excludesi    N(   R   R   R   t   False(   R4   Rp   R   Ry   Rz   R|   (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyRl   p  s    	(   R/   R0   t   __doc__R1   R]   RJ   R}   R^   R`   Ra   Rc   Rm   Rl   (    (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pyR2   ñ   s   &		N(    (    (    (    (   R~   t   loggingR    t   sudst   newR   R   R   R/   RV   R   R	   R   R   R   R   RD   R*   R,   R2   (    (    (    s'   suds-0.3.7-py2.6.egg/suds/sudsobject.pys   <module>   s   
				%3&