a
    ñ»jë  ã                   @   sJ   d dl Zd dlZdd„ Zejdd„ ƒZejejjdœdd„ƒZ	d	d
„ Z
dS )é    Nc                    s   t  ˆ ¡‡ fdd„ƒ}|S )z¥
    Wrap func so it's not called if its first param is None

    >>> print_text = pass_none(print)
    >>> print_text('text')
    text
    >>> print_text(None)
    c                    s"   | d urˆ | g|¢R i |¤ŽS d S )N© )ÚparamÚargsÚkwargs©Úfuncr   úFE:\soccer\ml_env\Lib\site-packages\setuptools/_distutils/_functools.pyÚwrapper   s    zpass_none.<locals>.wrapper)Ú	functoolsÚwraps)r   r	   r   r   r   Ú	pass_none   s    
r   c                 C   s   || Ž S )zSplat args to func.r   ©r   r   r   r   r   Ú_splat_inner   s    r   )r   c                 C   s   |f i | ¤ŽS )zSplat kargs to func as kwargs.r   r   r   r   r   Ú_   s    r   c                 C   s   t  | ¡t jt| d�ƒS )a½  
    Wrap func to expect its parameters to be passed positionally in a tuple.

    Has a similar effect to that of ``itertools.starmap`` over
    simple ``map``.

    >>> import itertools, operator
    >>> pairs = [(-1, 1), (0, 2)]
    >>> _ = tuple(itertools.starmap(print, pairs))
    -1 1
    0 2
    >>> _ = tuple(map(splat(print), pairs))
    -1 1
    0 2

    The approach generalizes to other iterators that don't have a "star"
    equivalent, such as a "starfilter".

    >>> list(filter(splat(operator.add), pairs))
    [(0, 2)]

    Splat also accepts a mapping argument.

    >>> def is_nice(msg, code):
    ...     return "smile" in msg or code == 0
    >>> msgs = [
    ...     dict(msg='smile!', code=20),
    ...     dict(msg='error :(', code=1),
    ...     dict(msg='unknown', code=0),
    ... ]
    >>> for msg in filter(splat(is_nice), msgs):
    ...     print(msg)
    {'msg': 'smile!', 'code': 20}
    {'msg': 'unknown', 'code': 0}
    r   )r
   r   Úpartialr   r   r   r   r   Úsplat%   s    $r   )Úcollections.abcÚcollectionsr
   r   Úsingledispatchr   ÚregisterÚabcÚMappingr   r   r   r   r   r   Ú<module>   s   
