U
    ·ÜŸj…  ã                   @   sš   d Z ddlZddlZddlmZ ddgiZddd	d
ddgZdedœdd„Zddedœdd„Z	ddefdd	„Z
defdd
„Zdefdd„Zdefdd„ZdS )z#
Thin wrappers around `itertools`.
é    Né   )Útqdmzgithub.com/Z	casperdclÚchainÚproductÚpermutationsÚcombinationsÚcombinations_with_replacementÚbatched)ÚtotalÚ
tqdm_classc              	   O   sN   | dkr4zt tt|ƒƒ} W n ttfk
r2   Y nX |tj|Ž fd| i|—ŽS )z Equivalent of `itertools.chain`.Nr
   )ÚsumÚmapÚlenÚ	TypeErrorÚAttributeErrorÚ	itertoolsr   )r
   r   Ú	iterablesÚkwargs© r   ú:/tmp/pip-unpacked-wheel-ktn_y856/tqdm/contrib/itertools.pyr      s    é   )Úrepeatr
   r   c              	   o   sl   |dkrBzt tt|ƒƒ}W n ttfk
r2   Y nX t |¡|  }|tj|d| iŽfd|i|—ŽE dH  dS )z"Equivalent of `itertools.product`.Nr   r
   )	Úlistr   r   r   r   ÚmathÚprodr   r   )r   r
   r   r   r   Zlensr   r   r   r      s    c              	   K   st   |dkrXzt | ƒ}W n ttfk
r,   Y n,X |dkr:|n|}||krLd}nt ||¡}|t | |¡fd|i|—ŽS )z'Equivalent of `itertools.permutations`.Nr   r
   )r   r   r   r   Úpermr   r   ©ÚiterableÚrr
   r   r   Únr   r   r   r   $   s    c              	   K   sd   |dkrHzt | ƒ}W n ttfk
r,   Y nX ||kr<d}nt ||¡}|t | |¡fd|i|—ŽS )z'Equivalent of `itertools.combinations`.Nr   r
   )r   r   r   r   Úcombr   r   r   r   r   r   r   4   s    c              	   K   s�   |dkrtzt | ƒ}W n ttfk
r,   Y nHX d}t|| d |d dƒD ]}||9 }qJtd|d ƒD ]}|| }qf|t | |¡fd|i|—ŽS )z8Equivalent of `itertools.combinations_with_replacement`.Nr   éÿÿÿÿr
   )r   r   r   Úranger   r   )r   r   r
   r   r   r   Úir   r   r   r   C   s    

c              	   K   sd   |dkr.zt | ƒ}W n ttfk
r,   Y nX |t | |¡f||dk	rV|| d | nddœ|—ŽS )z"Equivalent of `itertools.batched`.Nr   )Z
unit_scaler
   )r   r   r   r   r	   )r   r   r
   r   r   r   r   r   r	   S   s    ÿþ)Ú__doc__r   r   Úautor   Z	tqdm_autoÚ
__author__Ú__all__r   r   r   r   r   r	   r   r   r   r   Ú<module>   s"   
     ÿ
