�
��c@sRdZddkZddddgZhZd�Zd�Zd �Zd
�ZdS(s�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.)
i�Ntfiltertfnmatchtfnmatchcaset translatecCs=ddk}|ii|�}|ii|�}t||�S(s�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).
i�N(tostpathtnormcaseR(tnametpatR((s/sys/lib/python/fnmatch.pyRscCs�ddk}ddk}g}|ii|�}|tjo#t|�}ti|�t|<nt|i}|i|jo3xk|D]$}||�o|i |�q�q�Wn<x8|D]0}||ii|��o|i |�q�q�W|S(s2Return the subset of the list NAMES that match PATi�N(
Rt posixpathRRt_cacheRtretcompiletmatchtappend(tnamesRRR tresulttresR
R((s/sys/lib/python/fnmatch.pyR(s"
cCsG|tjo#t|�}ti|�t|<nt|i|�dj S(s�Test whether FILENAME matches PATTERN, including case.
This is a version of fnmatch() which doesn't case-normalize
its arguments.
N(R
RRRR
tNone(RRR((s/sys/lib/python/fnmatch.pyR<s
cCs�dt|�}}d}x�||jo�||}|d}|djo|d}q|djo|d}q|djo"|}||jo||d jo|d}n||jo||d
jo|d}nx-||jo||d
jo|d}q�W||jo|d}q�|||!idd
�}|d}|dd jod|d}n |ddjod|}nd||f}q|ti|�}qW|dS(sfTranslate a shell PATTERN to a regular expression.
There is no way to quote meta-characters.
itit*s.*t?t.t[t!t]s\[s\s\\t^s%s[%s]t$(tlentreplaceRtescape(RtitnRtctjtstuff((s/sys/lib/python/fnmatch.pyRHs8
!
(t__doc__Rt__all__R
RRRR(((s/sys/lib/python/fnmatch.pys<module>s
|