
    Vi                    Z   S r SSKJr  SSKrSSKrSSKJr  SSKJr  SSKJr  SSK	J
r
JrJr  S	r\R                  =rr\R                   =rr\R$                  =rr\R(                  =r=rr\R.                  =r=rr\R4                  =rr\R8                  =rr\R<                  =rr\R@                  =r!r \RD                  =r#r"\RH                  =r%r$\RL                  =r'r&\RP                  =r)r(\RT                  =r+r*\RX                  =r-r,\R\                  =r/r.\R`                  =r1r0\Rd                  =r3r2\Rh                  r4\Rj                  r5\Rl                  r6\Rn                  r8\Rr                  r:\Rv                  r<\Rz                  r=\\-  \-  \-  \-  \-  \-  \ -  \-  \"-  \$-  \&-  \(-  \*-  \,-  \.-  \0-  \4-  \5-  \6-  r> " S
 S\R~                  5      r? " S S\R                  5      r@ " S S\?\R                  5      rA " S S\?\R                  5      rB " S S\@\A5      rC " S S\@\B5      rDg)z.Pathlib implementation that uses our own glob.    )annotationsN   )glob)_wcparse)util)IterableAnySequence)*CASE
IGNORECASERAWCHARSDOTGLOBDOTMATCHEXTGLOBEXTMATCHNEGATEMINUSNEGATEBRACEREALPATHFOLLOW	MATCHBASE	NEGATEALLNODIRNOUNIQUENODOTDIR
SCANDOTDIRCIRDEGNBMPLSXOAQZSDPathPurePathWindowsPath	PosixPathPurePosixPathPureWindowsPathc                      \ rS rSrSrSrSS jrSS jrSS jrS\	R                  SS	.         SS
 jjrS\	R                  SS	.         SS jjrSrg)r0   I   z<Special pure pathlike object that uses our own glob methods. c                    U [         L a   [        R                  S:X  a  [        O[        n [
        R                  (       d  U R                  U5      $ [        R                  U 5      $ )New.nt)
r0   osnamer4   r3   r   PY312_from_partsobject__new__)clsargss     b/home/james-whalen/.local/share/pipx/venvs/semgrep/lib/python3.13/site-packages/wcmatch/pathlib.pyr@   PurePath.__new__N   sA     (?%'WW_/-Czz??4((>>#&&    c                h   U[         -  [        -  nU[        -  (       a#  U[        R                  S:X  a  [
        O[        -  n[        U [        5      (       a$  U[        -  (       a  [        S5      eU[
        -  nU$ [        U [        5      (       a"  U[
        -  (       a  [        S5      eU[        -  nU$ )z1Translate flags for the current `pathlib` object.r:   zEWindows pathlike objects cannot be forced to behave like a Posix pathzEPosix pathlike objects cannot be forced to behave like a Windows path)	FLAG_MASK	_PATHNAMEr   r;   r<   	_FORCEWIN
_FORCEUNIX
isinstancer4   
ValueErrorr3   )selfflagss     rC   _translate_flagsPurePath._translate_flagsX   s     "i/8"''T/YzAEdO,,z! !hiiYE
 	 m,,y  !hiiZErE   c                   Sn[        U 5      n[        U [        5      (       a]  U(       aV  U R                  5       (       aA  [        R
                  (       a  U R                  R                  OU R                  R                  nX!-   $ )zhTranslate the object to a path string and ensure trailing slash for non-pure paths that are directories. )	strrK   r/   is_dirr   PY313parsersep_flavour)rM   rW   r<   s      rC   _translate_pathPurePath._translate_pathh   sR     4ydD!!dt{{}}%)ZZ$++//T]]5F5FCzrE   r   NrN   limitexcludec               0    U R                  X[        -  X4S9$ )aS  
Match patterns using `globmatch`, but also using the same right to left logic that the default `pathlib` uses.

This uses the same right to left logic that the default `pathlib` object uses.
Folders and files are essentially matched from right to left.

`GLOBSTAR` is enabled by default in order match the default behavior of `pathlib`.

r[   )	globmatch_RTLrM   patternsrN   r\   r]   s        rC   matchPurePath.matchr   s    $ ~~hdl%~YYrE   c               l    [         R                  " U R                  5       UU R                  U5      UUS9$ )z
Match patterns using `globmatch`, but without the right to left logic that the default `pathlib` uses.

`GLOBSTAR` is enabled by default in order match the default behavior of `pathlib`.

r[   )r   r_   rY   rO   ra   s        rC   r_   PurePath.globmatch   s8     ~~  "''.
 	
rE   )rB   rS   returnz
'PurePath')rN   intrg   rh   )rg   rS   )
rb   str | Sequence[str]rN   rh   r\   rh   r]   str | Sequence[str] | Nonerg   bool)__name__
__module____qualname____firstlineno____doc__	__slots__r@   rO   rY   r   PATTERN_LIMITrc   r_   __static_attributes__r7   rE   rC   r0   r0   I   s    FI'  ++.2Z%Z 	Z
 Z ,Z 
Z0 ++.2
%
 	

 
 ,
 

 
rE   r0   c                      \ rS rSrSrSrS
S jrS\R                  SS.         SS jjr	S\R                  SS.         SS	 jjr
Srg)r/      zWSpecial pathlike object (which accesses the filesystem) that uses our own glob methods.r7   c                v   [         R                  S:H  nU [        L a  U(       a  [        O[        n [
        R                  (       d  [
        R                  (       a  U R                  U5      nOU R                  USS9nUR                  R                  (       d$  [        SR                  U R                  5      5      e[
        R                  (       d  UR                  5         U$ U [        L a  U(       a  U [        La+  U(       a$  [        SR                  U R                  5      5      e[        R!                  U 5      $ )r9   r:   F)initz&Cannot instantiate {!r} on your system)r;   r<   r/   r1   r2   r   r=   PY310r>   rX   is_supportedNotImplementedErrorformatrl   _initr?   r@   )rA   rB   kwargswin_hostrM   s        rC   r@   Path.__new__   s     77d?$;!)+yCzzzzt,t%8==--)*R*Y*YZ]ZfZf*ghh::

Kk!(c6LQY)*R*Y*YZ]ZfZf*ghh>>#&&rE   r   Nr[   c             #  "  #    U R                  5       (       av  U[        -  nU R                  U[        -  5      U(       a  [        [        -  O[        -  n[
        R                  " X[        U 5      X4S9 H  nU R                  U5      v   M     gg7f)zn
Search the file system.

`GLOBSTAR` is enabled by default in order match the default behavior of `pathlib`.

)rN   root_dirr\   r]   N)	rT   r   rO   _NOABSOLUTE_PATHLIBr   iglobrS   joinpath)rM   rb   rN   r\   r]   
scandotdirfilenames          rC   r   	Path.glob   sy      ;;==+J))#,6(Z'HFE !JJxs4yX]ommH-- p s   BBc             #  N   #    U R                  X[        -  X4S9 Sh  vN   g N7f)z
Recursive glob.

This uses the same recursive logic that the default `pathlib` object uses.
Folders and files are essentially matched from right to left.

`GLOBSTAR` is enabled by default in order match the default behavior of `pathlib`.

r[   N)r   _EXTMATCHBASEra   s        rC   rglob
Path.rglob   s"     $ 99X]-B%9aaas   %#%)rB   rS   r}   r	   rg   z'Path')
rb   ri   rN   rh   r\   rh   r]   rj   rg   zIterable['Path'])rl   rm   rn   ro   rp   rq   r@   r   rr   r   r   rs   r7   rE   rC   r/   r/      s    aI'2 ++.2.%. 	.
 . ,. 
.6 ++.2b%b 	b
 b ,b 
b brE   r/   c                      \ rS rSrSrSrSrg)r3      zPure Posix path.r7   Nrl   rm   rn   ro   rp   rq   rs   r7   rE   rC   r3   r3      s
    IrE   r3   c                      \ rS rSrSrSrSrg)r4      zPure Windows path.r7   Nr   r7   rE   rC   r4   r4      s
    IrE   r4   c                      \ rS rSrSrSrSrg)r2      zPosix path.r7   Nr   r7   rE   rC   r2   r2      s
    IrE   r2   c                      \ rS rSrSrSrSrg)r1      zWindows path.r7   Nr   r7   rE   rC   r1   r1      s
    IrE   r1   )Erp   
__future__r   pathlibr;   rR   r   r   r   typingr   r	   r
   __all__r   r   r   r   r   r   r   r    r   r   r!   r   GLOBSTARr"   r   r#   r   r$   r   r%   r   r&   r   r'   SPLITr(   r   r)   r   r*   r   r+   r   r,   r   r-   r   r.   r   r`   r   PATHNAMErH   FORCEWINrI   	FORCEUNIXrJ   r   rG   r0   r/   r3   r4   r2   r1   r7   rE   rC   <module>r      s   4 "  	    * * 99 D  J}} H & &Gh & &Gh}} H[[ FJJ E"" "K}} H[[ FJJ E IJJ E I}} H}} H// !Z &&}}""		
== 	  	
    

 	 
 

  

    !" #$ 	%	& ' 
0R
w R
jCb7<< CbLHg33 h 7 7 m $ rE   