o
    tBh	                     @   s   d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ 	ddej	dej
eejf dejej fdd	Zdd
edejfddZdej	fddZdd Zdd Zdd Zdd ZdS )    N)etree)XMLParseError)XSDnode	attr_namereturnc                 C   s$   |  |}|d urt|| j|S d S N)getas_qnamensmap)r   r   target_namespacevalue r   a/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/zeep/utils.py
qname_attr   s   
r   r   c                 C   s   |   } d| v r3| d\}}|dkrd}n||}|s%td|| f |s-ttdS t||S |r;t|| S |drHt|d | S t| S )z"Convert the given value to a QName:xmlz$http://www.w3.org/XML/1998/namespacez No namespace defined for %r (%r)anyTypeN)stripsplitr	   r   r   QNamer   )r   r   r   prefixlocal	namespacer   r   r   r
      s    


r
   c                 C   s&   g }|D ]}| | j||d q|S )N)
namespaces)extendfindall)r   namenamespace_setsresultr   r   r   r   findall_multiple_ns4   s   r    c                  C   s   ddl m}  | S )Nr   __version__)zeepr"   r!   r   r   r   get_version;   s   r$   c              	      s   dd | D  t | }tdd  D }d}t|D ]*zt  fddt|D dkr1W  |S W n ty=   Y  |S w  d	  }q|S )
zyReturn the best base class for multiple objects.

    Implementation is quick and dirty, might be done better.. ;-)

    c                 S   s"   g | ]}t |jd d d qS )N)inspectgetmro	__class__).0objr   r   r   
<listcomp>G   s   " z"get_base_class.<locals>.<listcomp>c                 s   s    | ]}t |V  qd S r   )len)r)   mror   r   r   	<genexpr>I   s    z!get_base_class.<locals>.<genexpr>Nc                    s   h | ]} |  qS r   r   )r)   jbasesir   r   	<setcomp>N   s    z!get_base_class.<locals>.<setcomp>   r   )r,   maxrange
IndexError)objectsnum_objectsmax_mro
base_classr   r0   r   get_base_classA   s     r<   c                 C   s   t | }|jS r   )r   r   r   )enveloperoot_tagr   r   r   detect_soap_envV   s   
r?   c                 C   s   t | \}}| S )z:Parse a HTTP content-type header and return the media-type)cgiparse_headerlower)r   
main_value
parametersr   r   r   get_media_type[   s   rE   r   )r@   r&   typinglxmlr   zeep.exceptionsr   zeep.nsr   _ElementUnionstrr   Optionalr   r
   r    r$   r<   r?   rE   r   r   r   r   <module>   s(    

