3
‡ŒðiÝ  ã               @   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	   ú=/tmp/pip-build-6m2fasei/future/future/builtins/new_min_max.pyÚnewmin   s    r   c              O   s   t tf| ž|ŽS )N)r   Ú_builtin_max)r   r   r	   r	   r
   Únewmax   s    r   c             O   s6  x.|j ƒ D ]"\}}|tddgƒkr
td|ƒ‚q
W t|ƒdkr@t‚t|ƒdkr`|jdtƒtk	r`t‚t|ƒdkrút|d ƒ}yt|ƒ}W n> tk
rÂ   |jdtƒtk	r®|jdƒS t	dj
| jƒƒ‚Y nX tj|g|ƒ}|jdƒdk	rò| ||jdƒd�S | |ƒS t|ƒdk�r2|jdƒdk	�r*| ||j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   