o
    g
                     @   sl   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ e 	e
ZddgZG dd deZG d	d dZdS )
    N)etree)
exceptions)NotSet)Element	AttributeAttributeGroupc                       sP   e Zd Zd fdd	Zdd ZdddZd	d
 Z fddZ fddZ  Z	S )r   NFc                    s"   t  j|||d || _d | _d S )N)nametype_default)super__init__required
array_type)selfr   r	   r   r
   	__class__ T/home/ubuntu/webapp/venv/lib/python3.10/site-packages/zeep/xsd/elements/attribute.pyr      s   
zAttribute.__init__c              	   C   s2   z| j |W S  ttfy   td Y d S w )Nz&Error during xml -> python translation)typepythonvalue	TypeError
ValueErrorlogger	exception)r   valuer   r   r   parse   s   
zAttribute.parsec                 C   s@   |d t fv r| jsd S | || | j|}|| j| d S N)r   r   validater   xmlvaluesetqname)r   parentr   render_pathr   r   r   render   s
   zAttribute.renderc              
   C   sN   z| j j|| jd W d S  tjy& } ztjd| j|jf |dd }~ww )N)r   z!The attribute %s is not valid: %s)path)r   r   r   r   ValidationErrorr    message)r   r   r"   excr   r   r   r   $   s   zAttribute.validatec                    s(   | dd }t j|i |}||_|S )Nr   )popr   cloner   )r   argskwargsr   newr   r   r   r)   -   s   zAttribute.clonec                    s,   t   }| j | _| jr| j |_|S r   )r   resolver   r   )r   retvalr   r   r   r-   3   s
   
zAttribute.resolve)NFNr   )
__name__
__module____qualname__r   r   r#   r   r)   r-   __classcell__r   r   r   r   r      s    
		c                   @   s2   e Zd Zdd Zedd Zdd Zdd	d
ZdS )r   c                 C   s:   t |tjst|}|j| _|| _d | _|| _d| _d S NT)	
isinstancer   QName	localnamer   r    r   _attributes	is_global)r   r   
attributesr   r   r   r   <   s   

zAttributeGroup.__init__c                 C   s6   g }| j D ]}t|tr||j q|| q|S r   )r7   r4   r   extendr9   append)r   resultattrr   r   r   r9   F   s   

zAttributeGroup.attributesc                 C   sN   g }| j D ]}| }|d usJ t|tr|| q|| q|| _ | S r   )r7   r-   r4   listr:   r;   )r   resolved	attributer   r   r   r   r-   P   s   

zAttributeGroup.resolveNTc                    s   d  fdd| jD S )Nz, c                 3   s    | ]}|  V  qd S r   )	signature).0r=   schemar   r   	<genexpr>]   s    z+AttributeGroup.signature.<locals>.<genexpr>)joinr7   )r   rD   
standaloner   rC   r   rA   \   s   zAttributeGroup.signaturer3   )r/   r0   r1   r   propertyr9   r-   rA   r   r   r   r   r   ;   s    

	)logginglxmlr   zeepr   zeep.xsd.constr   zeep.xsd.elements.elementr   	getLoggerr/   r   __all__r   r   r   r   r   r   <module>   s    
-