
    i)                        d dl Z d dlZd dlZej                  d        Z e j
                  d      j                  d      \  ZZ e	 e
e       e
e             Zej                  ddd      ej                  ddd      d	Z ej                         d
        Z ej                  d      d        Z ej                         d        Z G d d      Z G d d      Z G d de      Z G d de      Z G d de      Z G d de      Zy)    Nc                 *    | j                  d      dk(  S )NAa)normcase)flavours    i/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/cloudpathlib/legacy/glob.py_is_case_sensitiver   
   s    D!T))    _
/)r   r   \)r   r   )r   r   c                 &   | d   }|s
t               S |dk(  rKd}|t        |       k  r$| |   dk(  r|dz  }|t        |       k  r	| |   dk(  r| |d  }d|v rt        }n-t        }n&| dd  }|dk(  rt        }nd|v rt        d      t        } |||||      S )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]#O$45;2C,C#AB'$;!CS[YZZ#CsK.99r	      )maxsizec                     |rt         j                  nt         j                  }t        j                  t	        j
                  |       |      j                  S N)reNOFLAG
IGNORECASEcompilefnmatch	translatematch)r   r   flagss      r   _compile_patternr+   7   s5    'BIIR]]E::g'',e4:::r	   c                 h   dg}| j                  d      D ]?  }|dk(  rd}n$|dk(  rd}nt        j                  |      t           }|j	                  |       A |j	                  d       t
        j                  }|s|t
        j                  z  }t        j                  d	j                  |      |
      S )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 
LLLLE::bggenE22r	   c                       e Zd ZdZd Zd Zy)	_SelectorzYA selector matches a specific glob pattern part against the children
    of a given path.c                 v    || _         |rt        |||      | _        d| _        y t	               | _        d| _        y )NTF)r   r   	successordironlyr   )selfr   r   r   s       r   __init__z_Selector.__init__h   s5    &+K.QDNDL13DN DLr	   c                     t        |      }|j                  }|j                         st        g       S | j	                  ||      S )zuIterate 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_fromz_Selector.select_fromq   sA     $##!!#8O  g66r	   N)__name__
__module____qualname____doc__r@   rJ    r	   r   r;   r;   d   s    !7r	   r;   c                       e Zd Zd Zy)r   c              #      K   | y wr"   rO   )r?   rG   rI   s      r   rF   z!_TerminatingSelector._select_from}   s     s   N)rK   rL   rM   rF   rO   r	   r   r   r   {   s    r	   r   c                       e Zd Zd Zd Zy)r   c                 4    t         j                  | |||       y r"   r;   r@   )r?   namer   r   r   s        r   r@   z_ParentSelector.__init__       4g~Fr	   c              #   x   K   |j                  d      }| j                  j                  ||      D ]  }|  y w)Nr   )_make_child_relpathr=   rF   )r?   rG   rI   pathps        r   rF   z_ParentSelector._select_from   s;     ..t4,,T7; 	AG	s   8:NrK   rL   rM   r@   rF   rO   r	   r   r   r      s    Gr	   r   c                       e Zd Zd Zd Zy)r   c                 p    t         j                  | |||       |t        |      }t        ||      | _        y r"   )r;   r@   r   r+   r)   r?   r   r   r   r   s        r   r@   z_WildcardSelector.__init__   s4    4g~F!/8N%c>:
r	   c              #     K   	  ||      5 }t        |      }d d d        D ]u  }| j                  r	 |j                         s!	 |j                  }| j                  |      s@|j                  |      }| j                  j                  ||      D ]  }|  w y # 1 sw Y   xY w# t        $ r Y w xY w# t        $ r Y y w xY wwr"   )	listr>   rD   OSErrorrU   r)   rX   r=   rF   )	r?   rG   rI   
scandir_itentriesentryrU   rY   rZ   s	            r   rF   z_WildcardSelector._select_from   s     	  % +z*+
 !  <<!$||~$  . zz::d#&::4@D!^^88wG    + + # ! !  		sf   CB6 BB6 CB'C"9CB$ B6 '	B30C2B33C6	C?CCCNr[   rO   r	   r   r   r      s    ; r	   r   c                       e Zd Zd Zd Zd Zy)r   c                 4    t         j                  | |||       y r"   rT   r^   s        r   r@   z#_RecursiveWildcardSelector.__init__   rV   r	   c              #   z   K   | |j                         D ]   \  }}}|D ]  }|j                  |        " y wr"   )walkrX   )r?   rG   dirpathdirnamesr
   dirnames         r   _iterate_directoriesz/_RecursiveWildcardSelector._iterate_directories   sK     $/$4$4$6 	; GXq# ;11'::;	;s   9;c              #      K   | j                   j                  }| j                  |      D ]  } |||      D ]  }|   y wr"   )r=   rF   rl   )r?   rG   rI   successor_selectstarting_pointrZ   s         r   rF   z'_RecursiveWildcardSelector._select_from   sK     >>66"77D 	N%ng> 	s   A AN)rK   rL   rM   r@   rl   rF   rO   r	   r   r   r      s    G;r	   r   c                   "     e Zd ZdZ fdZ xZS )r   z
    Like _RecursiveWildcardSelector, but also de-duplicates results from
    successive selectors. This is necessary if the pattern contains
    multiple non-adjacent '**' segments.
    c              #      K   t               }	 t        | 	  ||      D ]  }||vs| |j                  |        	 |j	                          y # |j	                          w xY wwr"   )setsuperrF   addclear)r?   rG   rI   yieldedrZ   	__class__s        r   rF   z-_DoubleRecursiveWildcardSelector._select_from   sZ     %	W)+w? #G#GKKN#
 MMOGMMOs    A%A A A%A""A%)rK   rL   rM   rN   rF   __classcell__)rw   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   rO   r	   r   <module>r      s3     	 * * $57#4#4S#9#?#?#D  s?+c/.B-BC	T-	.
--t40
1  : :0 S!; ";
 #3 #3L7 7. i  	  @ $'A r	   