o
    g                     @   s>   d dl mZ G dd dZG dd dZdddZd	d
 ZdS )    )nsc                   @   s   e Zd ZdddZdd ZdS )NamePrefixGenerator_value_c                 C   s   d| _ || _d S )N   )_num_prefix)selfprefix r
   G/home/ubuntu/webapp/venv/lib/python3.10/site-packages/zeep/xsd/utils.py__init__   s   
zNamePrefixGenerator.__init__c                 C   s"   d| j | jf }|  jd7  _|S )Nz%s%dr   )r   r   )r   retvalr
   r
   r   get_name	   s   zNamePrefixGenerator.get_nameN)r   )__name__
__module____qualname__r   r   r
   r
   r
   r   r      s    
r   c                   @   s   e Zd Zdd Zdd ZdS )UniqueNameGeneratorc                 C   s
   i | _ d S N_unique_count)r   r
   r
   r   r      s   
zUniqueNameGenerator.__init__c                 C   s<   || j v r| j |  d7  < d|| j | f S d| j |< |S )Nr   z%s__%dr   r   )r   namer
   r
   r   create_name   s
   

zUniqueNameGenerator.create_nameN)r   r   r   r   r   r
   r
   r
   r   r      s    r   Nc                 c   sX    | d usJ t d| dkr| nd}|d ur%t||D ]\}}|V  qd S |E d H  d S )Nr   	unboundedi)rangezip)
max_occursitems	generatori
sub_kwargsr
   r
   r   max_occurs_iter   s   r    c                 C   sj   | sdS |r| j r|| j }|rd|| jf S n| j tjv r,tj| j  }d|| jf S | j r2| jS | jS )zConvert a QName to a xsd:name ('ns1:myType').

    :type qname: lxml.etree.QName
    :type schema: zeep.xsd.schema.Schema
    :rtype: str

    Nz%s:%s)	namespaceget_shorthand_for_ns	localnamer   NAMESPACE_TO_PREFIXtext)qnameschemar	   r
   r
   r   create_prefixed_name'   s   
r(   r   )zeepr   r   r   r    r(   r
   r
   r
   r   <module>   s
    
