ó
`œWKc           @   sò   d  Z  d d l m Z d d l Td d l m 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 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   classobjc         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(    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/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   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyt   asdict+   s    	c         C   s9   x2 |  D]* } t  | | d | d ƒ | j | _ 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   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyt   merge6   s    c         C   sœ   d } x� |  j  D]„ } t |  | ƒ } | d k r7 q n  t | t ƒ r\ | t | ƒ 7} q n  t | d ƒ rŠ t | ƒ r | 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(    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyR   C   s    	  t   Factoryc           B   sV   e  Z i  Z e i  d  „ ƒ Z e d i  d „ ƒ Z e d „  ƒ Z e d d „ ƒ Z RS(   c         C   s‰   t  | t ƒ s | f } n  | j d ƒ } d j | t | ƒ f ƒ } |  j j | ƒ } | d  k r… t | | | ƒ } | |  j | <n  | S(   Ns   utf-8t   .(	   R   t   tuplet   encodet   joint   strt   cachet   getR   R   (   t   clst   namet   basesR   t   keyt   subclass(    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyR$   ^   s    c         C   sf   | d  k	 r* |  j | t ƒ } | ƒ  } n	 t ƒ  } x, | j ƒ  D] } t | | d | d ƒ q@ W| S(   Ni    i   (   R   R$   R   R   R   (   R    t	   classnameR   R$   t   instR
   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyt   objectj   s    	c         C   s   t  ƒ  S(   N(   t   Metadata(   R    (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyt   metadatau   s    c         C   s   |  j  | t ƒ } | | ƒ S(   N(   R$   t   Property(   R    R!   t   valueR$   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyt   propertyy   s    N(	   t   __name__t
   __module__R   t   classmethodR$   R   R'   R)   R,   (    (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/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(    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyt   __init__�   s    	c         C   sX   | j  d ƒ o | j d ƒ } | rG | |  j k rG |  j j | ƒ n  | |  j | <d  S(   Nt   __(   t
   startswitht   endswithR   t   appendt   __dict__(   R2   R!   R+   t   builtin(    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyt   __setattr__†   s
    c         C   sr   yE |  j  | =| j d ƒ o( | j d ƒ } | sD |  j j | ƒ n  Wn& |  j j } t d | | f ‚ n Xd  S(   NR4   s   %s has no attribute '%s'(   R8   R5   R6   R   t   removet	   __class__R-   t   AttributeError(   R2   R!   R9   R    (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyt   __delattr__�   s    
c         C   s2   t  | t ƒ r% |  j t | ƒ } n  t |  | ƒ S(   N(   R   t   intR   R   (   R2   R!   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyt   __getitem__—   s    c         C   s   t  |  | | ƒ d  S(   N(   R   (   R2   R!   R+   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyt   __setitem__œ   s    c         C   s
   t  |  ƒ S(   N(   t   Iter(   R2   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyt   __iter__Ÿ   s    c         C   s   t  |  j ƒ S(   N(   R   R   (   R2   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyR   ¢   s    c         C   s   | |  j  k S(   N(   R   (   R2   R!   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyt   __contains__¥   s    c         C   s
   t  |  ƒ S(   N(   R   (   R2   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyt   __repr__¨   s    c         C   s   t  |  ƒ j d ƒ S(   Ns   utf-8(   t   unicodeR   (   R2   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyt   __str__«   s    c         C   s   |  j  j |  ƒ S(   N(   R1   t   tostr(   R2   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyt   __unicode__®   s    (   R-   R.   R3   R:   R>   R@   RA   RC   R   RD   RE   RG   RI   (    (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyR      s   			
							RB   c           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s(   | |  _  |  j | ƒ |  _ d |  _ d  S(   Ni    (   R   t   _Iter__keylistt   keylistt   index(   R2   R   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyR3   ´   s    	c         C   s…   |  j  } t |  j  ƒ } x] |  j | k  rw | |  j } |  j d 7_ t |  j | ƒ r t |  j | ƒ } | | f Sq Wt ƒ  ‚ d  S(   Ni   (   RK   R   RL   R   R   R   t   StopIteration(   R2   RK   t   nkeyst   kR   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyt   next¹   s    	c         C   sr   | j  } yZ t | ƒ } | j j } t | ƒ } | j | ƒ s^ t j d | | ƒ t ƒ  ‚ n  | SWn | SXd  S(   Ns+   %s must be superset of %s, ordering ignored(   R   t   setR	   t   orderingt
   issupersett   logt   debugt   KeyError(   R2   R   RK   t   keysetRR   t   ordered(    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyt	   __keylistÄ   s    	c         C   s   |  S(   N(    (   R2   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyRC   Ô   s    (   R-   R.   R3   RP   RJ   RC   (    (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyRB   ²   s   			R(   c           B   s   e  Z d  „  Z RS(   c         C   s   g  |  _  t ƒ  |  _ d  S(   N(   R   R0   R1   (   R2   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyR3   Ù   s    	(   R-   R.   R3   (    (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyR(   Ø   s   t   Facadec           B   s   e  Z d  „  Z RS(   c         C   s#   t  j |  ƒ |  j } | | _ d  S(   N(   R   R3   R	   t   facade(   R2   R!   t   md(    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyR3   ß   s    	(   R-   R.   R3   (    (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyRZ   Þ   s   R*   c           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s   t  j |  ƒ | |  _ d  S(   N(   R   R3   R+   (   R2   R+   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyR3   ç   s    c         c   s-   x& |  D] } | d d k r | Vq q Wd  S(   Ni    R+   (    (   R2   R   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyR   ë   s    c         C   s   |  j  S(   N(   R+   (   R2   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyR   ð   s    c         C   s   | |  _  |  S(   N(   R+   (   R2   R+   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyRQ   ó   s    	(   R-   R.   R3   R   R   RQ   (    (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyR*   å   s   			R0   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   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyt   indentý   s    iþÿÿÿc         C   s   g  } |  j  | | | ƒ S(   s'    get s string representation of object (   t   process(   R2   R'   R^   t   history(    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyRH      s    i    c         C   s  | d k r d St | t ƒ rR t | ƒ d k r5 d S|  j | | | d | ƒ Sn  t | t ƒ r” t | ƒ d k rw d S|  j | | | d | ƒ Sn  t | t t f ƒ rÙ t | ƒ d k r¿ d S|  j	 | | | d ƒ Sn  t | t
 ƒ rö d t | ƒ Sd 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
   basestringRH   (   R2   R'   t   hR   t   nl(    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyR_     s"    c   	      C   s-  g  } | j  } | j } | | k rh | j d ƒ | j | j ƒ | j d ƒ | j d ƒ d j | ƒ S| j | ƒ | r¡ | j d ƒ | j |  j | ƒ ƒ n  | t k rü | j d ƒ t | t ƒ rÜ | j | j	 ƒ n | j | j ƒ | j d ƒ n  | j d ƒ xÚ | D]Ò } |  j
 | | ƒ r.qn  |  j | | ƒ } | j d ƒ | j |  j | d ƒ ƒ t | d t t f ƒ r¡| j | d ƒ | j d	 ƒ n | j | d ƒ | j d
 ƒ | j |  j | d | | t ƒ ƒ qW| j d ƒ | j |  j | ƒ ƒ | j d ƒ | j ƒ  d j | ƒ S(   s@    print complex using the specified indent (n) and newline (nl). t   (t   )s   ...t    s   
t   {i   i    s   []s    = t   }(   R<   R	   R7   R-   R   R^   R   R   RZ   R[   t   excludet   unwrapRc   R   R_   t   Truet   pop(	   R2   t   dRf   R   Rg   t   sR    R\   R   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyRa     sJ    		'
c         C   sh  | | k r d S| j  | ƒ g  } | rO | j  d ƒ | j  |  j | ƒ ƒ n  | j  d ƒ xÂ | j ƒ  D]´ } | j  d ƒ | j  |  j | d ƒ ƒ t | d t t f ƒ rÖ | j  t | d ƒ ƒ | j  d ƒ n | j  t | d ƒ ƒ | j  d ƒ | j  |  j | d | | t ƒ ƒ qi W| j  d ƒ | j  |  j | ƒ ƒ | j  d ƒ | j	 ƒ  d	 j
 | ƒ S(
   s@    print complex using the specified indent (n) and newline (nl). s   {}...s   
Rk   i   i    s   []s    = Rl   Rj   (   R7   R^   R   R   Rc   R   RH   R_   Ro   Rp   R   (   R2   Rq   Rf   R   Rg   Rr   R   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyRb   F  s,     '
c         C   s›   | | k r d S| j  | ƒ g  } x^ | D]V } | j  d ƒ | j  |  j | ƒ ƒ | j  |  j | | | d ƒ ƒ | j  d ƒ q* W| j ƒ  d j | ƒ S(   sC    print collection using the specified indent (n) and newline (nl). s   []...s   
i   t   ,Rj   (   R7   R^   R_   Rp   R   (   R2   t   cRf   R   Rr   R   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyRd   _  s      
c         C   s†   d „  } yo | j  } t | d d ƒ } | d k r7 | St | d i  ƒ } | j | d | ƒ } | d | | d ƒ f SWn n X| S(   s7    translate (unwrap) using an optional wrapper function c         S   s   |  S(   N(    (   t   x(    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyt   <lambda>n  s    t	   __print__t   wrappersi    i   N(   R	   R   R   R   (   R2   Rq   R   t   noptR\   t   pmdRx   t   fn(    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyRn   l  s    		c         C   s]   yO | j  } t | d d ƒ } | d k r. t St | d g  ƒ } | d | k SWn n Xt S(   s#    check metadata for excluded items Rw   t   excludesi    N(   R	   R   R   t   False(   R2   Rq   R   R\   Rz   R|   (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyRm   {  s    	(   R-   R.   t   __doc__R/   R^   RH   R}   R_   Ra   Rb   Rd   Rn   Rm   (    (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyR0   ø   s   *		N(    (    (    (    (   R~   t   loggingR    t   sudst   newR   R-   RT   R   R   R   R   R   R   RB   R(   RZ   R*   R0   (    (    (    sI   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/suds/sudsobject.pyt   <module>   s   
				%3&