+
    Brh                        R t ^ RIt^ RIt^ RIt^ RIt^ RIt. ROtR t]P                  ! RRR7      R 4       t	R t
R tR	 tR
 t]P                  ! R4      P                  t]P                  ! RR7      ! ]P"                  4      tR tR tR# )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.)
Nc                    \         P                  P                  V 4      p \         P                  P                  V4      p\        W4      # )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normcasefnmatchcase)namepats   &&$/usr/local/lib/python3.14/fnmatch.pyfnmatchr
      s7     77D!D
''

3
Ct!!    i   T)maxsizetypedc                     \        V \        4      '       d%   \        V R 4      p\        V4      p\        VR 4      pM\        V 4      p\        P
                  ! V4      P                  # )z
ISO-8859-1)
isinstancebytesstr	translaterecompilematch)r   pat_strres_strress   &   r	   _compile_patternr   *   sN    #uc<(G$G\*n::c?   r   c                t   . p\         P                  P                  V4      p\        V4      p\         P                  \        J d-   V  F$  pV! V4      '       g   K  VP                  V4       K&  	  V# V  FA  pV! \         P                  P                  V4      4      '       g   K0  VP                  V4       KC  	  V# )zJConstruct a list from those elements of the iterable NAMES that match PAT.)r   r   r   r   	posixpathappend)namesr   resultr   r   s   &&   r	   filterr   5   s    F
''

3
CS!E	ww)DT{{d#  M DRWW%%d+,,d#  Mr   c                R   \         P                  P                  V4      p\        V4      p\         P                  \        J d    \        \        P                  ! W 4      4      # . pV  F=  pV! \         P                  P                  V4      4      e   K,  VP                  V4       K?  	  V# )zQConstruct a list from those elements of the iterable NAMES that do not match PAT.)	r   r   r   r   r   list	itertoolsfilterfalser   )r   r   r   r   r   s   &&   r	   r#   r#   F   s~    
''

3
CS!E	ww)I))%788F!!$'(0MM$  Mr   c                ,    \        V4      pV! V 4      RJ# )zTest whether FILENAME matches PATTERN, including case.

This is a version of fnmatch() which doesn't case-normalize
its arguments.
N)r   )r   r   r   s   && r	   r   r   U   s     S!E;d""r   c                6    \        V RR4      w  r\        W4      # )z^Translate a shell PATTERN to a regular expression.

There is no way to quote meta-characters.
*.)
_translate_join_translated_parts)r   partsstar_indicess   &  r	   r   r   _   s      %S#s3E!%66r   z([&~|])i   )r   c                    . pVP                   p. p^ \        V 4      rvWg8  Ed   W,          pV^,           pVR8X  dE   VP                  \        V4      4       V! V4       Wg8  d   W,          R8X  d   V^,          pK  Ka  Kc  VR8X  d   V! V4       Kt  VR8X  Ed4   Tp	W8  d   W	,          R8X  d
   V	^,           p	W8  d   W	,          R8X  d
   V	^,           p	W8  d   W	,          R8w  d   V	^,           p	K  W8  d   V! R4       K  WV	 p
RV
9  d   V
P                  RR	4      p
EM-. pW,          R8X  d
   V^,           MV^,           p V P                  RW4      pV^ 8  d   M'VP                  WV 4       V^,           pV^,           pKB  WV	 pV'       d   VP                  V4       MVR;;,          R,          uu&   \	        \        V4      ^,
          ^ R4       F^  pW^,
          ,          R,          W,          ^ ,          8  g   K-  W^,
          ,          R
R W,          R,          ,           W^,
          &   W K`  	  RP                  R V 4       4      p
V	^,           pV
'       g   V! R4       EKL  V
R8X  d   V! R4       EK^  \        RV
4      p
V
^ ,          R8X  d   RV
R,          ,           p
MV
^ ,          R9   d
   RV
,           p
V! RV
 R24       EK  V! \        V4      4       EK  Wg8X  g   Q hW53# )    r&   ?[!]z\[-\\\N:   NNc              3   f   "   T F'  pVP                  R R4      P                  RR4      x  K)  	  R# 5i)r3   r4   r2   z\-N)replace).0ss   & r	   	<genexpr>_translate.<locals>.<genexpr>   s2      %6.4 &'YYtU%;%C%CC%O%O.4s   /1z(?!)r'   z\\\1^)r<   r/   )r   lenr7   findrangejoin_re_setops_sub
_re_escape)r   starquestion_markr   addr+   incjstuffchunkskchunks   &&&           r	   r(   r(   m   s   
C
**CLc#hq
%FaC8C)I%CFcMQ *%#X#XAu3aCu3aC%CFcMaCvE
ae#!MM$6EF"v}!!A#AHHS!/q5!cAh/aCaC!HEe,r
c)
"3v;q=!R8!A#;r?VYq\9*01+cr*:VYr]*JFQ3K &	 9  HH %6.4%6 6EaCKc\H +7E:EQx3 #eBiqZ/ $u!E7!%
16M6r   c                 \   V'       g   R RP                  V 4       R2# \        V4      p\        V4      pV RV pVP                  VP                  reV^,           pV F&  pV! R4       V! WV 4       V! R4       V^,           pK(  	  V! R4       V! WR 4       RP                  V4      pR V R2# )z(?s: z)\zNz(?>.*?)z.*)rA   iternextr   extend)	r*   r+   iter_star_indicesrJ   bufferr   rT   rG   r   s	   &&       r	   r)   r)      s    rwwu~&c**\*A2AYF]]FMMF	AA 	xuqzsE  4L
59
''&/C3%sr   )r   r#   r
   r   r   )__doc__	functoolsr"   r   r   r   __all__r
   	lru_cacher   r   r#   r   r   r   subrB   escaperC   r(   r)    r   r	   <module>r^      s   
   	  	
J"( U$/! 0!"#7 J'++  -bii8
JZr   