
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,aï  ã                   @   sj   d Z ddlZddlZddlZddlZddddgZdd„ Zejdd	d
�dd„ ƒZdd„ Z	dd„ Z
dd„ ZdS )a£  Filename matching with shell patterns.

fnmatch(FILENAME, PATTERN) matches according to the local convention.
fnmatchcase(FILENAME, PATTERN) always takes case in account.

The functions operate by translating the pattern into a regular
expression.  They cache the compiled regular expressions for speed.

The function translate(PATTERN) returns a regular expression
corresponding to PATTERN.  (It does not compile it.)
é    NÚfilterÚfnmatchÚfnmatchcaseÚ	translatec                 C   s"   t j | ¡} t j |¡}t| |ƒS )a½  Test whether FILENAME matches PATTERN.

    Patterns are Unix shell style:

    *       matches everything
    ?       matches any single character
    [seq]   matches any character in seq
    [!seq]  matches any char not in seq

    An initial period in FILENAME is not special.
    Both FILENAME and PATTERN are first case-normalized
    if the operating system requires it.
    If you don't want this, use fnmatchcase(FILENAME, PATTERN).
    )ÚosÚpathÚnormcaser   )ÚnameÚpat© r   ú,/opt/alt/python38/lib64/python3.8/fnmatch.pyr      s    é   T)ÚmaxsizeÚtypedc                 C   s<   t | tƒr(t| dƒ}t|ƒ}t|dƒ}nt| ƒ}t |¡jS )Nz
ISO-8859-1)Ú
isinstanceÚbytesÚstrr   ÚreÚcompileÚmatch)r
   Zpat_strZres_strÚresr   r   r   Ú_compile_pattern&   s    

r   c                 C   sh   g }t j |¡}t|ƒ}t jtkr@| D ]}||ƒr&| |¡ q&n$| D ]}|t j |¡ƒrD| |¡ qD|S )zJConstruct a list from those elements of the iterable NAMES that match PAT.)r   r   r   r   Ú	posixpathÚappend)Únamesr
   Úresultr   r	   r   r   r   r   0   s    
c                 C   s   t |ƒ}|| ƒdk	S )z�Test whether FILENAME matches PATTERN, including case.

    This is a version of fnmatch() which doesn't case-normalize
    its arguments.
    N)r   )r	   r
   r   r   r   r   r   @   s    c           	      C   sæ  dt | ƒ }}d}||k �rÞ| | }|d }|dkr>|d }q|dkrP|d }q|dk�rÎ|}||k rz| | d	krz|d }||k r–| | d
kr–|d }||k r´| | d
kr´|d }q–||krÈ|d }�qÜ| ||… }d|krê| dd¡}nŠg }| | d	k�r|d n|d }|  d||¡}|dk �r(�qN| | ||… ¡ |d }|d }�q| | ||… ¡ d dd„ |D ƒ¡}t dd|¡}|d }|d d	k�rªd|dd…  }n|d dk�rÀd| }d||f }q|t |¡ }qd| S )zfTranslate a shell PATTERN to a regular expression.

    There is no way to quote meta-characters.
    r   Ú é   Ú*z.*ú?Ú.ú[ú!ú]z\[z--ú\ú\\é   ú-é   c                 s   s"   | ]}|  d d¡  dd¡V  qdS )r$   r%   r'   z\-N)Úreplace)Ú.0Úsr   r   r   Ú	<genexpr>t   s   ÿztranslate.<locals>.<genexpr>z([&~|])z\\\1ú^N)r-   r!   z%s[%s]z	(?s:%s)\Z)Úlenr)   Úfindr   Újoinr   ÚsubÚescape)	r
   ÚiÚnr   ÚcÚjZstuffZchunksÚkr   r   r   r   J   sV    






ÿ)Ú__doc__r   r   r   Ú	functoolsÚ__all__r   Ú	lru_cacher   r   r   r   r   r   r   r   Ú<module>   s   
	
