U
    ­‚f4  ã                   @  s²   d dl mZ d dlZd dlZd dlmZmZ edddœdd„ƒZed	d
dœdd„ƒZedddœdd„ƒZdd„ ZG dd„ dƒZG dd„ deƒZ	G dd
„ d
eƒZ
G dd„ de
ƒZdS )é    )ÚannotationsN)ÚAnyÚoverloadÚNoneÚNull)ÚparamÚreturnc                 C  s   d S ©N© ©r   r
   r
   ú1/tmp/pip-unpacked-wheel-qyyspjli/path/matchers.pyÚload   s    r   ÚstrÚPatternc                 C  s   d S r	   r
   r   r
   r
   r   r      s    r   c                 C  s   d S r	   r
   r   r
   r
   r   r      s    c                 C  s$   t | tƒrt| ƒS | dk	r| S tƒ S )zR
    If the supplied parameter is a string, assume it's a simple
    pattern.
    N)Ú
isinstancer   r   r   r   r
   r
   r   r      s    ÿ
ÿûc                   @  s   e Zd ZdS )ÚBaseN)Ú__name__Ú
__module__Ú__qualname__r
   r
   r
   r   r   "   s   r   c                   @  s   e Zd Zdd„ ZdS )r   c                 C  s   dS )NTr
   )ÚselfÚpathr
   r
   r   Ú__call__'   s    zNull.__call__N)r   r   r   r   r
   r
   r
   r   r   &   s   c                   @  s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )r   c                 C  s
   || _ d S r	   )Úpattern)r   r   r
   r
   r   Ú__init__,   s    zPattern.__init__c                 C  s0   z| j W S  tk
r   Y nX || jƒ| _ | j S r	   )Z_patternÚAttributeErrorr   )r   Únormcaser
   r
   r   Úget_pattern/   s    zPattern.get_patternc                 C  s,   t | d|jjƒ}|  |¡}t ||jƒ|¡S )Nr   )ÚgetattrÚmoduler   r   ÚfnmatchÚfnmatchcaseÚname)r   r   r   r   r
   r
   r   r   7   s    
zPattern.__call__N)r   r   r   r   r   r   r
   r
   r
   r   r   +   s   c                   @  s   e Zd ZdZeejƒZdS )ÚCaseInsensitivea–  
    A Pattern with a ``'normcase'`` property, suitable for passing to
    :meth:`iterdir`, :meth:`dirs`, :meth:`files`, :meth:`walk`,
    :meth:`walkdirs`, or :meth:`walkfiles` to match case-insensitive.

    For example, to get all files ending in .py, .Py, .pY, or .PY in the
    current directory::

        from path import Path, matchers
        Path('.').files(matchers.CaseInsensitive('*.py'))
    N)r   r   r   Ú__doc__ÚstaticmethodÚntpathr   r
   r
   r
   r   r"   =   s   r"   )Ú
__future__r   r   r%   Útypingr   r   r   r   r   r   r"   r
   r
   r
   r   Ú<module>   s   