U
    H4f'                     @   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
   2/tmp/pip-unpacked-wheel-04z2hmy8/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Z_unique_count)r   r
   r
   r   r      s    zUniqueNameGenerator.__init__c                 C   s@   || j kr.| j |  d7  < d|| j | f S d| j |< |S d 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   sZ   | d k	st td| dkr| nd}|d k	rFt||D ]\}}|V  q4n|D ]
}|V  qJd S )Nr   Z	unboundedi)AssertionErrorrangezip)Z
max_occursitems	generatoriZ
sub_kwargsr
   r
   r   max_occurs_iter   s    
r   c                 C   sj   | sdS |r2| j r2|| j }|rXd|| jf S n&| j tjkrXtj| j  }d|| jf S | j rd| 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)	namespaceZget_shorthand_for_ns	localnamer   ZNAMESPACE_TO_PREFIXtext)qnameZschemar	   r
   r
   r   create_prefixed_name(   s    
r!   )N)Zzeepr   r   r   r   r!   r
   r
   r
   r   <module>   s   
