
    h)                        S SK r S SKrS SKr\R                  S 5       r\ R
                  " S5      R                  S5      u  rr\	" \
" \5      \
" \5      * 5      r\R                  SSS.5      \R                  SSS.5      S	.r\R                  " 5       S
 5       r\R                  " SS9S 5       r\R                  " 5       S 5       r " S S5      r " S S5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rg)    Nc                 *    U R                  S5      S:H  $ )NAa)normcase)flavours    R/home/james-whalen/.local/lib/python3.13/site-packages/cloudpathlib/legacy/glob.py_is_case_sensitiver   
   s    D!T))    _
/)r   r   \)r   r   )r   r   c                 <   U S   nU(       d
  [        5       $ US:X  aO  SnU[        U 5      :  a&  X   S:X  a  US-  nU[        U 5      :  a
  X   S:X  a  M  XS  nSU;   a  [        nO0[        nO)U SS  nUS:X  a  [        nOSU;   a  [        S5      e[        nU" X5X5      $ )Nr   z**   ..z:Invalid pattern: '**' can only be an entire path component)_TerminatingSelectorlen _DoubleRecursiveWildcardSelector_RecursiveWildcardSelector_ParentSelector
ValueError_WildcardSelector)pattern_partsr   case_sensitivepatchild_parts_idxchild_partsclss          r   _make_selectorr      s    

C#%%
d{M 22}7UY]7]q O M 22}7UY]7]#$45;2C,C#AB'$;!CS[YZZ#Cs99r	      )maxsizec                     U(       a  [         R                  O[         R                  n[         R                  " [        R
                  " U 5      U5      R                  $ N)reNOFLAG
IGNORECASEcompilefnmatch	translatematch)r   r   flagss      r   _compile_patternr+   7   s5    'BIIR]]E::g'',e4:::r	   c                 r   S/nU R                  SS9 HC  nUS:X  a  SnO&US:X  a  SnO[        R                  " U5      [           nUR	                  U5        ME     UR	                  S5        [
        R                  nU(       d  U[
        R                  -  n[
        R                  " S	R                  U5      US
9$ )aY  Compile the given pattern lines to an `re.Pattern` object.

    The *pattern_lines* argument is a glob-style pattern (e.g. '*/*.py') with
    its path separators and newlines swapped (e.g. '*
*.py`). By using
    newlines to separate path components, and not setting `re.DOTALL`, we
    ensure that the `*` wildcard cannot match path separators.

    The returned `re.Pattern` object may have its `match()` method called to
    match a complete pattern, or `search()` to match from the right. The
    argument supplied to these methods must also have its path separators and
    newlines swapped.
    ^T)keependsz*
z.+\n*z.+z\Z )r*   )

splitlinesr'   r(   _FNMATCH_SLICEappendr#   	MULTILINEr%   r&   join)pattern_linesr   partspartr*   s        r   _compile_pattern_linesr9   =   s      EE(($(75=DS[D $$T*>:DT 8 
LLLLE::bggenE22r	   c                   $    \ rS rSrSrS rS rSrg)	_Selectord   zUA selector matches a specific glob pattern part against the children
of a given path.c                 |    Xl         U(       a  [        XU5      U l        SU l        g [	        5       U l        SU l        g )NTF)r   r   	successordironlyr   )selfr   r   r   s       r   __init___Selector.__init__h   s1    &+K.QDNDL13DN DLr	   c                     [        U5      nUR                  nUR                  5       (       d  [        / 5      $ U R	                  X5      $ )zmIterate over all child paths of `parent_path` matched by this
selector.  This can contain parent_path itself.)type_scandiris_diriter_select_from)r@   parent_pathpath_clsscandirs       r   select_from_Selector.select_fromq   sB     $##!!##8O  66r	   )r   r?   r>   N)__name__
__module____qualname____firstlineno____doc__rA   rL   __static_attributes__ r	   r   r;   r;   d   s    !7r	   r;   c                       \ rS rSrS rSrg)r   {   c              #      #    Uv   g 7fr"   rT   )r@   rI   rK   s      r   rH   !_TerminatingSelector._select_from}   s     s   rT   N)rN   rO   rP   rQ   rH   rS   rT   r	   r   r   r   {   s    r	   r   c                        \ rS rSrS rS rSrg)r      c                 0    [         R                  XX45        g r"   r;   rA   )r@   namer   r   r   s        r   rA   _ParentSelector.__init__       4gFr	   c              #   z   #    UR                  S5      nU R                  R                  X25       H  nUv   M	     g 7f)Nr   )_make_child_relpathr>   rH   )r@   rI   rK   pathps        r   rH   _ParentSelector._select_from   s3     ..t4,,T;AG <s   9;rT   NrN   rO   rP   rQ   rA   rH   rS   rT   r	   r   r   r      s    Gr	   r   c                        \ rS rSrS rS rSrg)r      c                 l    [         R                  XX45        Uc  [        U5      n[        X5      U l        g r"   )r;   rA   r   r+   r)   r@   r   r   r   r   s        r   rA   _WildcardSelector.__init__   s.    4gF!/8N%c:
r	   c              #     #     U" U5       n[        U5      nS S S 5        W H  nU R                  (       a   UR                  5       (       d  M,   UR                  nU R                  U5      (       d  MQ  UR                  U5      nU R                  R                  Xr5       H  nUv   M	     M     g ! , (       d  f       N= f! [         a     M  f = f! [         a     g f = f7fr"   )	listr?   rF   OSErrorr]   r)   ra   r>   rH   )	r@   rI   rK   
scandir_itentriesentryr]   rb   rc   s	            r   rH   _WildcardSelector._select_from   s     	  %z* &
 !<<!$||~~$  . zz::d##&::4@D!^^88G H ! &% # ! !  		sf   C!C B/C C!C #C!3<C!/
B=9C  
C
C!CC!
CC!CC!)r)   Nre   rT   r	   r   r   r      s    ; r	   r   c                   &    \ rS rSrS rS rS rSrg)r      c                 0    [         R                  XX45        g r"   r\   ri   s        r   rA   #_RecursiveWildcardSelector.__init__   r_   r	   c              #      #    Uv   UR                  5        H"  u  p#nU H  nUR                  U5      v   M     M$     g 7fr"   )walkra   )r@   rI   dirpathdirnamesr
   dirnames         r   _iterate_directories/_RecursiveWildcardSelector._iterate_directories   s>     $/$4$4$6 Gq#11':: $ %7s   <>c              #      #    U R                   R                  nU R                  U5       H  nU" XB5       H  nUv   M	     M     g 7fr"   )r>   rH   r{   )r@   rI   rK   successor_selectstarting_pointrc   s         r   rH   '_RecursiveWildcardSelector._select_from   s?     >>66"77DN%n> ? Es   AArT   N)rN   rO   rP   rQ   rA   r{   rH   rS   rT   r	   r   r   r      s    G;r	   r   c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )r      z
Like _RecursiveWildcardSelector, but also de-duplicates results from
successive selectors. This is necessary if the pattern contains
multiple non-adjacent '**' segments.
c              #      >#    [        5       n [        TU ]	  X5       H  nXC;  d  M
  Uv   UR                  U5        M!     UR	                  5         g ! UR	                  5         f = f7fr"   )setsuperrH   addclear)r@   rI   rK   yieldedrc   	__class__s        r   rH   -_DoubleRecursiveWildcardSelector._select_from   sQ     %	W)+?#GKKN @
 MMOGMMOs!   A'A A A'A$$A'rT   )rN   rO   rP   rQ   rR   rH   rS   __classcell__)r   s   @r   r   r      s     r	   r   )r'   	functoolsr#   cacher   r(   split_FNMATCH_PREFIX_FNMATCH_SUFFIXslicer   r2   str	maketrans_SWAP_SEP_AND_NEWLINE	lru_cacher   r+   r9   r;   r   r   r   r   r   rT   r	   r   <module>r      s+     	 * * $+#4#4S#9#?#?#D  s?+c/.B-BC	T-	.
--t40
1  : :0 S!; ";
 #3 #3L7 7. i  	  @ $'A r	   