U
    ËZjÝ  ã                   @   s^   d dl Z d dlmZ ejr,d dlmZmZ nd dl	mZmZ e
ƒ Zdd„ Zdd„ Zdd	„ ZdS )
é    N)Úutils)ÚmaxÚminc                  O   s   t tf| ž|ŽS ©N)Únew_min_maxÚ_builtin_min©ÚargsÚkwargs© r   ú^/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/future/builtins/new_min_max.pyÚnewmin   s    r   c                  O   s   t tf| ž|ŽS r   )r   Ú_builtin_maxr   r   r   r   Únewmax   s    r   c                 O   s6  |  ¡ D ]"\}}|tddgƒkrtd|ƒ‚qt|ƒdkr<t‚t|ƒdkr\| dt¡tk	r\t‚t|ƒdkrút|d ƒ}zt|ƒ}W nB tk
rÂ   | dt¡tk	r®| d¡ Y S t	d 
| j¡ƒ‚Y nX t |g|¡}| d¡dk	rò| || d¡d�S | |ƒS t|ƒdk�r2| d¡dk	�r*| || d¡d�S | |ƒS dS )	zï
    To support the argument "default" introduced in python 3.4 for min and max
    :param _builtin_func: builtin min or builtin max
    :param args:
    :param kwargs:
    :return: returns the min or max based on the arguments passed
    ÚkeyÚdefaultzIllegal argument %sr   é   z{}() arg is an empty sequenceN)r   )ÚitemsÚsetÚ	TypeErrorÚlenÚgetÚ	_SENTINELÚiterÚnextÚStopIterationÚ
ValueErrorÚformatÚ__name__Ú	itertoolsÚchain)Z_builtin_funcr	   r
   r   Ú_ÚiteratorÚfirstr   r   r   r      s.    	r   )r   Úfuturer   ÚPY2Ú__builtin__r   r   r   r   ÚbuiltinsÚobjectr   r   r   r   r   r   r   r   Ú<module>   s   