U
    H4f                     @   sF   d Z ddlZddlmZ ddlmZ eddddgZG d	d
 d
ZdS )z:
    zeep.wsdl.messages.base
    ~~~~~~~~~~~~~~~~~~~~~~~

    N)
namedtuple)xsdSerializedMessagepathheaderscontentc                   @   sL   e Zd ZdZejrdZdZdd Zdd Z	dd Z
dd
dZedd ZdS )ConcreteMessagezBRepresents the wsdl:binding -> wsdl:operation -> input/output nodeNc                 C   s,   |st |st || _i | _|| _|| _d S N)AssertionErrorwsdl	namespace	operationname)selfr   r   r    r   ;/tmp/pip-unpacked-wheel-04z2hmy8/zeep/wsdl/messages/base.py__init__   s    zConcreteMessage.__init__c                 O   s
   t  d S r	   NotImplementedError)r   argskwargsr   r   r   	serialize   s    zConcreteMessage.serializec                 C   s
   t  d S r	   r   )r   noder   r   r   deserialize!   s    zConcreteMessage.deserializeFc                 C   s   | j s
d S |rt| j jtjrpz:t| j jjdkrV| j jjd d jj| jj	ddW S W n t
k
rn   Y d S X | j jj| jj	ddS | j jj| jj	ddg}t| dd r|d| jj| jj	dd  ddd	 |D S )
N   r   F)Zschema
standaloneheaderz_soapheaders={%s}z, c                 s   s   | ]}|r|V  qd S r	   r   ).0partr   r   r   	<genexpr>=   s      z,ConcreteMessage.signature.<locals>.<genexpr>)body
isinstancetyper   ZComplexTypelenelements	signaturer   typesAttributeErrorgetattrappendr   join)r   Z	as_outputpartsr   r   r   r%   $   s*     zConcreteMessage.signaturec                 C   s
   t  d S r	   r   )clsr   Z
xmlelementZabstract_messager   r   r   r   parse?   s    zConcreteMessage.parse)F)__name__
__module____qualname____doc__typingTYPE_CHECKINGr    r   r   r   r   r%   classmethodr-   r   r   r   r   r      s   	
r   )r1   r2   collectionsr   Zzeepr   r   r   r   r   r   r   <module>   s
   