+
    ÂHàjÏc  ã                  óŠ  a€ 0 t $ R t^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H
t
HtHtHt ^ RIHt ^ RIHtHtHtHtHtHtHt ^RIHt ^RIHtHt ]]]P<                  ],          3,          t]! R]R	7      t  ]! R
]RR7      t! ]! R]R	7      t" ]PF                  ]PH                  3 U u. uF)  p V '       g   K  V ]PF                  8w  g   K   ]! ]V 4      NK+  	  up t% / t&R]'R&    R R lt(R=R R llt)R=R R llt*R R lt+R R lt,]! R4      R>R l4       t-R>R R llt.R R lt/R>R  R! llt0R" R# lt1R$ R% lt2R& R' lt3]! R(4      R) R* l4       t4R=R+ R, llt5]! R-4      R=R. R/ ll4       t6R=R0 R1 llt7 ! R2 R3]84      t9 ! R4 R5]84      t:]! RR67       ! R7 R8]]",          4      4       t; ! R9 R:]<4      t= ! R; R<]<4      t>R# u up i )?zC
This module provides utility methods for dealing with path-specs.
)ÚannotationsN)Ú
CollectionÚIterableÚIteratorÚSequence)Ú	dataclass)ÚAnyÚCallableÚGenericÚOptionalÚTypeVarÚUnionÚcast)ÚPattern)ÚAnyStrÚ
deprecatedÚTPattern)ÚboundÚTPattern_coT)r   Ú	covariantÚTStrPathz1dict[str, Callable[[Union[str, bytes]], Pattern]]Ú_registered_patternsc               ó    € V ^8„  d   QhRRRR/# )é   Úpathzpathlib.PathÚreturnÚstr© )Úformats   "Ú�/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/50f6b671e3f94b538e344231dfcb664f/venv/lib/python3.14/site-packages/pathspec/util.pyÚ__annotate__r    G   s   € ÷ ñ ˜ð ¨#ñ ó    c                óv   € \        V 4      pV P                  4       '       d   V\        P                  ,          pV# )a.  
Appends the path separator to the path if the path is a directory. This can be
used to aid in distinguishing between directories and files on the file-system
by relying on the presence of a trailing path separator.

*path* (:class:`pathlib.Path`) is the path to use.

Returns the path (:class:`str`).
)r   Úis_dirÚosÚsep)r   Ústr_paths   & r   Úappend_dir_sepr'   G   s+   € ô �‹I€Ø‡K�K‡M‚MØ
Œb�f‰fÕ€(à€r!   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   ÚpatternszIterable[tuple[int, Pattern]]Úfiler   Úis_reversedúOptional[bool]r   z$tuple[Optional[bool], Optional[int]]r   )r   s   "r   r    r    X   s0   € ÷ ) ñ ) Ø(ð) à
ð) ð ð) ð *ñ	) r!   c                ó  € V'       dA   V  F8  w  r4VP                   f   K  VP                  V4      f   K*  VP                   V3u # 	  R# RpRpV  F8  w  r4VP                   f   K  VP                  V4      f   K*  VP                   pTpK:  	  WV3# )a¤  
Check the file against the patterns.

*patterns* (:class:`~collections.abc.Iterable`) yields each indexed pattern
(:class:`tuple`) which contains the pattern index (:class:`int`) and actua
pattern (:class:`.Pattern`).

*file* (:class:`str`) is the normalized file path to be matched against
*patterns*.

*is_reversed* (:class:`bool` or :data:`None`) is whether the order of the
patterns has been reversed. Default is :data:`None` for :data:`False`.
Reversing the order of the patterns is an optimization.

Returns a :class:`tuple` containing whether to include *file* (:class:`bool`
or :data:`None`), and the index of the last matched pattern (:class:`int` or
:data:`None`).
N©NN©ÚincludeÚ
match_file)r)   r*   r+   ÚindexÚpatternÚout_includeÚ	out_indexs   &&&    r   Úcheck_match_filer6   X   s‘   € ÷. ó !�n€eØ‡o�oÔ! g×&8Ñ&8¸Ó&>Ô&JØ�?‰?˜EÐ!Ò!ñ !ð 
Ðð !%€+Ø!€)Û �n€eØ‡o�oÔ! g×&8Ñ&8¸Ó&>Ô&JØ—/‘/€KØ‚Iñ !ð
 
Ð	Ðr!   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   r)   úIterable[Pattern]ÚfilesúIterable[str]Úall_matchesr,   r   zdict[str, MatchDetail]r   )r   s   "r   r    r    „   s0   € ÷ ,ñ ,Øð,àð,ð ð,ð ñ	,r!   c                ó   € \        V\        4      '       d   TM
\        V4      p/ pV  F¢  pVP                  f   K  VP	                  V4      pVP                  '       db   V FY  pWt9   dC   V'       d$   WG,          P
                  P                  V4       K4  WTV,          P
                  ^ &   KK  \        V.4      WG&   K[  	  K—  V F  pWH K  	  K¤  	  V# )a•  
Matches the files to the patterns, and returns which patterns matched the
files.

*patterns* (:class:`~collections.abc.Iterable` of :class:`.Pattern`) contains
the patterns to use.

*files* (:class:`~collections.abc.Iterable` of :class:`str`) contains the
normalized file paths to be matched against *patterns*.

*all_matches* (:class:`bool` or :data:`None`) is whether to return all matches
patterns (:data:`True`), or only the last matched pattern (:data:`False`).
Default is :data:`None` for :data:`False`.

Returns the matched files (:class:`dict`) which maps each matched file
(:class:`str`) to the patterns that matched in order (:class:`.MatchDetail`).
)Ú
isinstancer   Úlistr0   Úmatchr)   ÚappendÚMatchDetail)	r)   r9   r;   Ú	all_filesÚreturn_filesr3   Úresult_filesÚresult_filer*   s	   &&&      r   Údetailed_match_filesrF   „   s±   € ô, ! ¬
×3Ò3‰U¼¸e»€Ø(*€Û€WØ‡_�_Ô Ø—-‘- 	Ó*€<Ø‡o‡o€oã#ˆØÔ#ç	ØÕ ×)Ñ)×0Ñ0°Ö9à/6�KÕ ×)Ñ)¨!Ó,ä"-¨w¨iÓ"8€lÓó $ó ˆØ	Ò	ó ñ# ð( 	Ðr!   c               ó    € V ^8„  d   QhRRRR/# )r   r)   r8   r   zlist[tuple[int, Pattern]]r   )r   s   "r   r    r    ³   s   € ÷ ñ Øðàñr!   c                ón   € \        V 4       UUu. uF  w  rVP                  f   K  W3NK  	  upp# u uppi )a  
Filters out null-patterns.

*patterns* (:class:`~collections.abc.Iterable` of :class:`.Pattern`) contains
the patterns.

Returns a :class:`list` containing each indexed pattern (:class:`tuple`) which
contains the pattern index (:class:`int`) and the actual pattern
(:class:`.Pattern`).
)Ú	enumerater0   )r)   Ú__indexÚ__pats   &  r   Ú_filter_check_patternsrL   ³   s<   € ô " (Ô+ô	á+�n€gØ
‡]�]ô €7ÓÙ+ò	ð ùó 	s   �1¦1c               ó    € V ^8„  d   QhRRRR/# )r   Úvaluer   r   Úboolr   )r   s   "r   r    r    Ç   s   € ÷ Lñ L˜ð L ñ Lr!   c                óh   € \        V \        4      ;'       d    \        V \        \        34      '       * # )z•
Check whether the value is an iterable (excludes strings).

*value* is the value to check,

Returns whether *value* is an iterable (:class:`bool`).
)r=   r   r   Úbytes)rN   s   &r   Ú_is_iterablerR   Ç   s'   € ô 	�5œ(Ó#×KÐK¬J°u¼sÄE¸lÓ,KÔ(KÐKr!   zGpathspec.util.iter_tree() is deprecated. Use iter_tree_files() instead.c                ó   € \        WVR7      # )zd
.. version-deprecated:: 0.10.0
        This is an alias for the :func:`.iter_tree_files` function.
)Úon_errorÚfollow_links)Úiter_tree_files©ÚrootrT   rU   s   &&&r   Ú	iter_treerY   Ò   s   € ô 	˜¸lÔKÐKr!   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   rX   ÚStrPathrT   ú#Optional[Callable[[OSError], None]]rU   r,   r   úIterator['TreeEntry']r   )r   s   "r   r    r    Ý   s6   € ÷ [ñ [Øð[à.ð[ð ð[ð ñ	[r!   c              #  óÎ   "  € Ve"   \        V4      '       g   \        RV: R24      hVf   Rp\        \        P                  P                  V 4      R/ W4       Rj  x€L
  R#  L5i)a  
Walks the specified directory for all files and directories.

*root* (:class:`str` or :class:`os.PathLike`) is the root directory to search.

*on_error* (:class:`~collections.abc.Callable` or :data:`None`) optionally is
the error handler for file-system exceptions. It will be called with the
exception (:exc:`OSError`). Reraise the exception to abort the walk. Default
is :data:`None` to ignore file-system exceptions.

*follow_links* (:class:`bool` or :data:`None`) optionally is whether to walk
symbolic links that resolve to directories. Default is :data:`None` for
:data:`True`.

Raises :exc:`.RecursionError` if recursion is detected.

Returns an :class:`~collections.abc.Iterator` yielding each file or directory
entry (:class:`.TreeEntry`) relative to *root*.
Nú	on_error:ú is not callable.TÚ )ÚcallableÚ	TypeErrorÚ_iter_tree_entries_nextr$   r   ÚabspathrW   s   &&&r   Úiter_tree_entriesrf   Ý   sX   é € ð0 Ò¤¨(×!3Ò!3Ü�I˜h™\Ð):Ð;Ó<Ð<àÒØ€,ä#¤B§G¡G§O¡O°DÓ$9¸2¸rÀ8ÓZ×ZÔZùó   ‚AA%ÁA#ÁA%c               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r   Ú	root_fullr   Údir_relÚmemoúdict[str, str]rT   r\   rU   rO   r   r]   r   )r   s   "r   r    r    þ   sL   € ÷ Lñ LØðLà
ðLð ðLð /ð	Lð
 ðLð ñLr!   c           
   #  óØ  "  € \         P                  P                  W4      p\         P                  P                  V4      pWb9  d   WV&   M\	        WbV,          VR7      h\         P
                  ! V4      ;_uu_ 4       pV Fø  p\         P                  P                  WP                  4      p	 VP                  RR7      p
TP                  4       '       d    TP                  4       pMT
pTP                  TR7      '       d1   \        TP                  YšT4      x € \        Y	Y#T4       Rj  x€L
  K±  TP                  4       '       g   TP                  4       '       g   Kß  \        TP                  YšT4      x € Kú  	  RRR4       W& R#   \         d   pTe	   T! T4        Rp?EK&  Rp?ii ; i  \         d   pTe	   T! T4        Rp?EKL  Rp?ii ; i L©  + '       g   i     Lb; i5i)ad  
Scan the directory for all descendant files.

*root_full* (:class:`str`) the absolute path to the root directory.

*dir_rel* (:class:`str`) the path to the directory to scan relative to
*root_full*.

*memo* (:class:`dict`) keeps track of ancestor directories encountered. Maps
each ancestor real path (:class:`str`) to relative path (:class:`str`).

*on_error* (:class:`~collections.abc.Callable` or :data:`None`) optionally is
the error handler for file-system exceptions.

*follow_links* (:class:`bool`) is whether to walk symbolic links that resolve
to directories.

Yields each entry (:class:`.TreeEntry`).
©Ú	real_pathÚ
first_pathÚsecond_pathF©Úfollow_symlinksN)r$   r   ÚjoinÚrealpathÚRecursionErrorÚscandirÚnameÚstatÚOSErrorÚ
is_symlinkr#   Ú	TreeEntryrd   Úis_file)ri   rj   rk   rT   rU   Údir_fullÚdir_realÚ	scan_iterÚnode_entÚnode_relÚ
node_lstatÚeÚ	node_stats   &&&&&        r   rd   rd   þ   sƒ  é € ô4 �G‰G�L‰L˜Ó,€Ü�G‰G×Ñ˜XÓ&€ð ÔØ€x‚.ä ¸8µnÐRYÔZÐZä‡j‚j�×Ô˜iã€hÜ�g‰g�l‰l˜7§M¡MÓ2€8ðØ—‘¨u�Ó5€Jð ×Ñ×ÒðØ—‘“�Yð €Ià‡o�o l€o×3Ò3ô �H—M‘M 8¸Ó
CÒCä& y¸DÈLÓY×YÒYà×Ñ×Ò˜h×1Ñ1×3Ô3ä
�H—M‘M 8¸Ó
CÔCñ? ÷ ðP 
‚^øôA ô ØÒÙˆa„[Þûðûô ô ØÒÙˆq„kÞûðúñ Z÷; ×üs�   ‚A<G*Á>/GÂ.F	Ã GÃF/Ã'GÄ)GÄ+G
Ä,GÅGÅ GÅ=G*Æ	F,	ÆF'	Æ GÆ'F,	Æ,GÆ/G	Æ:G	ÇGÇG	ÇGÇG'	Ç"G*c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   rX   r[   rT   r\   rU   r,   r   úIterator[str]r   )r   s   "r   r    r    M  s6   € ÷ Yñ YØðYà.ðYð ðYð ñ	Yr!   c              #  óÎ   "  € Ve"   \        V4      '       g   \        RV: R24      hVf   Rp\        \        P                  P                  V 4      R/ W4       Rj  x€L
  R#  L5i)aí  
Walks the specified directory for all files.

*root* (:class:`str` or :class:`os.PathLike`) is the root directory to search
for files.

*on_error* (:class:`~collections.abc.Callable` or :data:`None`) optionally is
the error handler for file-system exceptions. It will be called with the
exception (:exc:`OSError`). Reraise the exception to abort the walk. Default
is :data:`None` to ignore file-system exceptions.

*follow_links* (:class:`bool` or :data:`None`) optionally is whether to walk
symbolic links that resolve to directories. Default is :data:`None` for
:data:`True`.

Raises :exc:`.RecursionError` if recursion is detected.

Returns an :class:`~collections.abc.Iterator` yielding the path to each file
(:class:`str`) relative to *root*.
Nr_   r`   Tra   )rb   rc   Ú_iter_tree_files_nextr$   r   re   rW   s   &&&r   rV   rV   M  sX   é € ð2 Ò¤¨(×!3Ò!3Ü�I˜h™\Ð):Ð;Ó<Ð<àÒØ€,ä!¤"§'¡'§/¡/°$Ó"7¸¸RÀÓX×XÔXùrg   c               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r   ri   r   rj   rk   rl   rT   r\   rU   rO   r   r‡   r   )r   s   "r   r    r    o  sD   € ÷ ;ñ ;Øð;à
ð;ð ð;ð /ð	;ð
 ð;ð ñ;r!   c           
   #  óŠ  "  € \         P                  P                  W4      p\         P                  P                  V4      pWb9  d   WV&   M\	        WbV,          VR7      h\         P
                  ! V4      ;_uu_ 4       pV F�  p\         P                  P                  WP                  4      p	VP                  VR7      '       d   \        W	W#V4       Rj  x€L
  K[  VP                  4       '       d   V	x € Kw  V'       d   K�  VP                  4       '       g   K™  V	x € KŸ  	  RRR4       W& R#  LX  + '       g   i     L; i5i)aa  
Scan the directory for all descendant files.

*root_full* (:class:`str`) the absolute path to the root directory.

*dir_rel* (:class:`str`) the path to the directory to scan relative to
*root_full*.

*memo* (:class:`dict`) keeps track of ancestor directories encountered. Maps
each ancestor real path (:class:`str`) to relative path (:class:`str`).

*on_error* (:class:`~collections.abc.Callable` or :data:`None`) optionally is
the error handler for file-system exceptions.

*follow_links* (:class:`bool`) is whether to walk symbolic links that resolve
to directories.

Yields each file path (:class:`str`).
rn   rr   N)r$   r   rt   ru   rv   rw   rx   r#   r‰   r}   r{   )
ri   rj   rk   rT   rU   r~   r   r€   r�   r‚   s
   &&&&&     r   r‰   r‰   o  sê   é € ô4 �G‰G�L‰L˜Ó,€Ü�G‰G×Ñ˜XÓ&€ð ÔØ€x‚.ä ¸8µnÐRYÔZÐZä‡j‚j�×Ô˜iã€hÜ�g‰g�l‰l˜7§M¡MÓ2€8à‡o�o l€o×3Ò3ô % Y¸$È,ÓW×WÒWà×Ñ×Òà
„Nç‰L˜X×0Ñ0×2Ô2à
„Nñ ÷ ð. 
‚^ñ X÷ ×üsC   ‚A<EÁ>AD0ÃD.
ÃD0Ã2D0ÄD0ÄD0Ä"EÄ.D0Ä0E 	Ä;Ec               ó    € V ^8„  d   QhRRRR/# )r   rx   r   r   zCallable[[AnyStr], Pattern]r   )r   s   "r   r    r    ­  s   € ÷ 	#ñ 	#˜ð 	#Ð!<ñ 	#r!   c                ó   € \         V ,          # )zö
Looks up a registered pattern factory by name.

*name* (:class:`str`) is the name of the pattern factory.

Returns the registered pattern factory (:class:`~collections.abc.Callable`).
If no pattern factory is registered, raises :exc:`KeyError`.
)r   )rx   s   &r   Úlookup_patternrŽ   ­  s   € ô 	˜TÕ"Ð"r!   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r)   r8   r*   r   r   rO   r   )r   s   "r   r    r    ¹  s"   € ÷ ñ Ð*ð °#ð ¸$ñ r!   c                ó~   € RpV  F4  pVP                   f   K  VP                  V4      f   K(  VP                   pK6  	  V# )a  
Matches the file to the patterns.

*patterns* (:class:`~collections.abc.Iterable` of :class:`.Pattern`) contains
the patterns to use.

*file* (:class:`str`) is the normalized file path to be matched against
*patterns*.

Returns :data:`True` if *file* matched; otherwise, :data:`False`.
Fr/   )r)   r*   Úmatchedr3   s   &&  r   r1   r1   ¹  s=   € ð €Û€WØ‡_�_Ô  W×%7Ñ%7¸Ó%=Ô%IØ�_‰_‚7ñ ð 	€r!   z[pathspec.util.match_files() is deprecated. Use match_file() with a loop for better results.c               ó$   € V ^8„  d   QhRRRRRR/# )r   r)   r8   r9   r:   r   zset[str]r   )r   s   "r   r    r    Ñ  s&   € ÷ ñ Øðàðð ñr!   c                ó¾   € V  Uu. uF  q"P                   f   K  VNK  	  pp\        4       pV F'  p\        W54      '       g   K  VP                  V4       K)  	  V# u upi )aÜ  
.. version-deprecated:: 0.10.0
        This function is no longer used. Use the :func:`.match_file` function with a
        loop for better results.

Matches the files to the patterns.

*patterns* (:class:`~collections.abc.Iterable` of :class:`.Pattern`) contains
the patterns to use.

*files* (:class:`~collections.abc.Iterable` of :class:`str`) contains the
normalized file paths to be matched against *patterns*.

Returns the matched files (:class:`set` of :class:`str`).
)r0   Úsetr1   Úadd)r)   r9   rK   Úuse_patternsrC   r*   s   &&    r   Úmatch_filesr—   Í  sV   € ñ. %-ÓJ¡H˜5·±—�¡H€ÐJä“€Û€TÜ�×#Ô#Ø×Ñ�DÖñ ð 	Ðùò Ks
   …A™Ac               ó$   € V ^8„  d   QhRRRRRR/# )r   r*   r[   Ú
separatorsúOptional[Collection[str]]r   r   r   )r   s   "r   r    r    î  s&   € ÷ 'ñ 'Øð'à&ð'ð 	ñ'r!   c                ó2  € Vf   \         pVf   Q V4       h\        P                  ! V 4      pV F#  pVP                  V\        P
                  4      pK%  	  VP                  R4      '       d   VR,          pV# VP                  R4      '       d
   VR,          pV# )aw  
Normalizes the file path to use the POSIX path separator (i.e., ``"/"``), and
make the paths relative (remove leading ``"/"``).

*file* (:class:`str` or :class:`os.PathLike`) is the file path.

*separators* (:class:`~collections.abc.Collection` of :class:`str`; or
:data:`None`) optionally contains the path separators to normalize. This does
not need to include the POSIX path separator (``"/"``), but including it will
not affect the results. Default is ``None`` for :data:`.NORMALIZE_PATH_SEPS`.
To prevent normalization, pass an empty container (e.g., an empty tuple
``()``).

Returns the normalized file path (:class:`str`).
Ú/:é   NNz./:r   NN)ÚNORMALIZE_PATH_SEPSr$   ÚfspathÚreplaceÚ	posixpathr%   Ú
startswith)r*   r™   Ú	norm_filer%   s   &&  r   Únormalize_filer¤   î  s•   € ð( ÒÜ"€*àÒÐ* 
Ó*Ðô —)’)˜D“/€ã€SØ×Ñ ¤Y§]¡]Ó3‚)ñ ð ×Ñ˜×Òà˜�m€)ð 	Ðð	 ×Ñ˜4× Ò à˜�m€)àÐr!   zcpathspec.util.normalize_files() is deprecated. Use normalize_file() with a loop for better results.c               ó$   € V ^8„  d   QhRRRRRR/# )r   r9   zIterable[StrPath]r™   rš   r   zdict[str, list[StrPath]]r   )r   s   "r   r    r      s&   € ÷ ñ Øðà&ðð ñr!   c                ó|   € / pV  F3  p\        W1R7      pWB9   d   W$,          P                  V4       K.  V.W$&   K5  	  V# )a²  
.. version-deprecated:: 0.10.0
        This function is no longer used. Use the :func:`.normalize_file` function
        with a loop for better results.

Normalizes the file paths to use the POSIX path separator.

*files* (:class:`~collections.abc.Iterable` of :class:`str` or
:class:`os.PathLike`) contains the file paths to be normalized.

*separators* (:class:`~collections.abc.Collection` of :class:`str`; or
:data:`None`) optionally contains the path separators to normalize. See
:func:`.normalize_file` for more information.

Returns a :class:`dict` mapping each normalized file path (:class:`str`) to
the original file paths (:class:`list` of :class:`str` or
:class:`os.PathLike`).
)r™   )r¤   r@   )r9   r™   Ú
norm_filesr   r£   s   &&   r   Únormalize_filesr¨     sF   € ð4 )+€Û€TÜ˜TÔ9€)ØÔØÕ×Ñ Ö%à ˜6€:Óñ ð 	Ðr!   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   rx   r   Úpattern_factoryz<Union[Callable[[Union[str, bytes]], Pattern], type[Pattern]]Úoverrider,   r   ÚNoner   )r   s   "r   r    r    =  s0   € ÷ .ñ .Ø
ð.àNð.ð ð.ð 
ñ	.r!   c                óú   € \        V \        4      '       g   \        RV : R24      h\        V4      '       g   \        RV: R24      hV \        9   d    V'       g   \        V \        V ,          4      hV\        V &   R# )a;  
Registers the specified pattern factory.

*name* (:class:`str`) is the name to register the pattern factory under.

*pattern_factory* (:class:`~collections.abc.Callable`) is used to compile
patterns. It must accept an uncompiled pattern (:class:`str`) and return the
compiled pattern (:class:`.Pattern`).

*override* (:class:`bool` or :data:`None`) optionally is whether to allow
overriding an already registered pattern under the same name (:data:`True`),
instead of raising an :exc:`.AlreadyRegisteredError` (:data:`False`). Default
is :data:`None` for :data:`False`.
zname=z is not a string.zpattern_factory=r`   N)r=   r   rc   rb   r   ÚAlreadyRegisteredError)rx   rª   r«   s   &&&r   Úregister_patternr¯   =  sq   € ô& 	�4œ×ÒÜ�U�T‘IÐ.Ð/Ó0Ð0ä�×!Ò!ÜÐ%�_Ñ(Ð(9Ð:Ó;Ð;àÔ Ô ¯Ü˜tÔ%9¸$Õ%?Ó@Ð@à-Ô�dÓr!   c                  ót   a € ] tR tRtRtR V 3R llt]R R l4       t]R R l4       t]R	 R
 l4       t	Rt
V ;t# )r®   i\  zy
The :exc:`AlreadyRegisteredError` exception is raised when a pattern factory
is registered under a name already in use.
c               ó$   € V ^8„  d   QhRRRRRR/# )r   rx   r   rª   ú&Callable[[Union[str, bytes]], Pattern]r   r¬   r   )r   s   "r   r    Ú#AlreadyRegisteredError.__annotate__b  s(   € ÷ *ñ *àð*ð :ð*ð ñ	*r!   c                ó&   <€ \         SV `  W4       R# )zÒ
Initializes the :exc:`AlreadyRegisteredError` instance.

*name* (:class:`str`) is the name of the registered pattern.

*pattern_factory* (:class:`~collections.abc.Callable`) is the registered
pattern factory.
N©ÚsuperÚ__init__)Úselfrx   rª   Ú	__class__s   &&&€r   r·   ÚAlreadyRegisteredError.__init__b  s   ø€ ô �'Ñ�4Ö)r!   c               ó   € V ^8„  d   QhRR/# ©r   r   r   r   )r   s   "r   r    r³   r  ó   € ÷ ñ �cñ r!   c                ó>   € V P                   : RV P                  : R2# )ú0
*message* (:class:`str`) is the error message.
z+ is already registered for pattern factory=Ú.)rx   rª   ©r¸   s   &r   ÚmessageÚAlreadyRegisteredError.messageq  s(   € ð ‡i�i�]Ð=Ø
×ÑÑ˜Qð ðr!   c               ó   € V ^8„  d   QhRR/# r¼   r   )r   s   "r   r    r³   |  s   € ÷ ñ �3ñ r!   c                ó(   € V P                   ^ ,          # )z>
*name* (:class:`str`) is the name of the registered pattern.
©ÚargsrÁ   s   &r   rx   ÚAlreadyRegisteredError.name{  s   € ð
 
�‰�1�Ðr!   c               ó   € V ^8„  d   QhRR/# )r   r   r²   r   )r   s   "r   r    r³   ƒ  s   € ÷ ñ ÐDñ r!   c                ó(   € V P                   ^,          # )z[
*pattern_factory* (:class:`~collections.abc.Callable`) is the registered
pattern factory.
rÆ   rÁ   s   &r   rª   Ú&AlreadyRegisteredError.pattern_factory‚  ó   € ð 
�‰�1�Ðr!   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r·   ÚpropertyrÂ   rx   rª   Ú__static_attributes__Ú__classcell__©r¹   s   @r   r®   r®   \  sN   ø† ñ÷
*ð *ð ôó ðð ôó ðð ôó ör!   r®   c                  óŠ   a € ] tR tRtRtR V 3R llt]R R l4       t]R R l4       t]R	 R
 l4       t	]R R l4       t
RtV ;t# )rv   i‹  zK
The :exc:`RecursionError` exception is raised when recursion is detected.
c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   ro   r   rp   rq   r   r¬   r   )r   s   "r   r    ÚRecursionError.__annotate__�  s2   € ÷ 7ñ 7àð7ð ð7ð ð	7ð
 ñ7r!   c                ó(   <€ \         SV `  WV4       R# )a  
Initializes the :exc:`RecursionError` instance.

*real_path* (:class:`str`) is the real path that recursion was encountered
on.

*first_path* (:class:`str`) is the first path encountered for *real_path*.

*second_path* (:class:`str`) is the second path encountered for *real_path*.
Nrµ   )r¸   ro   rp   rq   r¹   s   &&&&€r   r·   ÚRecursionError.__init__�  s   ø€ ô  �'Ñ�9¨+Ö6r!   c               ó   € V ^8„  d   QhRR/# r¼   r   )r   s   "r   r    rØ   £  s   € ÷ ñ ˜ñ r!   c                ó(   € V P                   ^,          # )zr
*first_path* (:class:`str`) is the first path encountered for
:attr:`self.real_path <RecursionError.real_path>`.
rÆ   rÁ   s   &r   rp   ÚRecursionError.first_path¢  rÌ   r!   c               ó   € V ^8„  d   QhRR/# r¼   r   )r   s   "r   r    rØ   «  r½   r!   c                ó\   € RV P                   : RV P                  : RV P                  : R2# )r¿   z
Real path z was encountered at z
 and then rÀ   rn   rÁ   s   &r   rÂ   ÚRecursionError.messageª  s:   € ð �—‘Ñ!Ð!5°d·o±oÑ5Hð IØ×ÑÑ" !ð%ðr!   c               ó   € V ^8„  d   QhRR/# r¼   r   )r   s   "r   r    rØ   µ  s   € ÷ ñ ˜ñ r!   c                ó(   € V P                   ^ ,          # )zP
*real_path* (:class:`str`) is the real path that recursion was
encountered on.
rÆ   rÁ   s   &r   ro   ÚRecursionError.real_path´  rÌ   r!   c               ó   € V ^8„  d   QhRR/# r¼   r   )r   s   "r   r    rØ   ½  s   € ÷ ñ ˜#ñ r!   c                ó(   € V P                   ^,          # )zt
*second_path* (:class:`str`) is the second path encountered for
:attr:`self.real_path <RecursionError.real_path>`.
rÆ   rÁ   s   &r   rq   ÚRecursionError.second_path¼  rÌ   r!   r   )rÍ   rÎ   rÏ   rÐ   rÑ   r·   rÒ   rp   rÂ   ro   rq   rÓ   rÔ   rÕ   s   @r   rv   rv   ‹  sb   ø† ñ÷7ð 7ð$ ôó ðð ôó ðð ôó ðð ôó ör!   rv   )Úfrozenc                  óB   € ] tR tRt$ RtRtR]R&    R]R&    R]R&   R	tR
# )ÚCheckResultiÅ  zb
The :class:`CheckResult` class contains information about the file and which
pattern matched it.
r*   r0   r2   r   r,   zOptional[int]r   N)r*   r0   r2   )rÍ   rÎ   rÏ   rÐ   rÑ   Ú	__slots__Ú__annotations__rÓ   r   r!   r   ré   ré   Å  s4   ‡ ñð€ð ƒðð Óðð
 	Óór!   ré   c                  ó*   € ] tR tRtRtRtR R ltRtR# )rA   iå  z<
The :class:`.MatchDetail` class contains information about
c               ó    € V ^8„  d   QhRRRR/# )r   r)   zSequence[Pattern]r   r¬   r   )r   s   "r   r    ÚMatchDetail.__annotate__í  s   € ÷ ñ Ð/ð °Dñ r!   c                ó   € Wn         R# )zÆ
Initialize the :class:`.MatchDetail` instance.

*patterns* (:class:`~collections.abc.Sequence` of :class:`.Pattern`)
contains the patterns that matched the file in the order they were encountered.
N©r)   )r¸   r)   s   &&r   r·   ÚMatchDetail.__init__í  s   € ð „-ñr!   rð   N)rÍ   rÎ   rÏ   rÐ   rÑ   rê   r·   rÓ   r   r!   r   rA   rA   å  s   † ñð
 €÷ñ r!   rA   c                  óf   € ] tR tRtRtRtR R ltRR R lltRR R	 lltR
 R lt	RR R llt
RtR# )r|   iý  zN
The :class:`TreeEntry` class contains information about a file-system entry.
c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r   rx   r   r   Úlstatúos.stat_resultry   r   r¬   r   )r   s   "r   r    ÚTreeEntry.__annotate__  s<   € ÷ &ñ &àð&ð 	ð&ð 
ð	&ð
 	ð&ð ñ&r!   c                ó<   € W0n          Wn         W n         W@n        R# )a?  
Initialize the :class:`TreeEntry` instance.

*name* (:class:`str`) is the base name of the entry.

*path* (:class:`str`) is the relative path of the entry.

*lstat* (:class:`os.stat_result`) is the stat result of the direct entry.

*stat* (:class:`os.stat_result`) is the stat result of the entry,
potentially linked.
N©Ú_lstatrx   r   Ú_stat)r¸   rx   r   rô   ry   s   &&&&&r   r·   ÚTreeEntry.__init__  s2   € ð( !&„+ðð „)ðð „)ðð  $„*ñr!   Nc               ó    € V ^8„  d   QhRRRR/# ©r   rU   r,   r   rO   r   )r   s   "r   r    rö   -  s   € ÷ )ñ ) ð )¸$ñ )r!   c                óŽ   € Vf   RpV'       d   V P                   MV P                  p\        P                  ! VP                  4      # )a0  
Get whether the entry is a directory.

*follow_links* (:class:`bool` or :data:`None`) is whether to follow symbolic
links. If this is :data:`True`, a symlink to a directory will result in
:data:`True`. Default is :data:`None` for :data:`True`.

Returns whether the entry is a directory (:class:`bool`).
T)rú   rù   ry   ÚS_ISDIRÚst_mode©r¸   rU   r…   s   && r   r#   ÚTreeEntry.is_dir-  ó5   € ð ÒØ€<ç(ˆd�jŠj¨d¯k©k€)Ü	�Š�i×'Ñ'Ó	(Ð(r!   c               ó    € V ^8„  d   QhRRRR/# rý   r   )r   s   "r   r    rö   =  s   € ÷ )ñ ) ð )¸4ñ )r!   c                óŽ   € Vf   RpV'       d   V P                   MV P                  p\        P                  ! VP                  4      # )a9  
Get whether the entry is a regular file.

*follow_links* (:class:`bool` or :data:`None`) is whether to follow symbolic
links. If this is :data:`True`, a symlink to a regular file will result in
:data:`True`. Default is :data:`None` for :data:`True`.

Returns whether the entry is a regular file (:class:`bool`).
T)rú   rù   ry   ÚS_ISREGr   r  s   && r   r}   ÚTreeEntry.is_file=  r  r!   c               ó   € V ^8„  d   QhRR/# )r   r   rO   r   )r   s   "r   r    rö   M  s   € ÷ +ñ +˜ñ +r!   c                óV   € \         P                  ! V P                  P                  4      # )z?
Returns whether the entry is a symbolic link (:class:`bool`).
)ry   ÚS_ISLNKrù   r   rÁ   s   &r   r{   ÚTreeEntry.is_symlinkM  s   € ô 
�Š�d—k‘k×)Ñ)Ó	*Ð*r!   c               ó    € V ^8„  d   QhRRRR/# )r   rU   r,   r   rõ   r   )r   s   "r   r    rö   S  s   € ÷ 5ñ 5˜nð 5¸ñ 5r!   c                óN   € Vf   RpV'       d   V P                   # V P                  # )a-  
Get the cached stat result for the entry.

*follow_links* (:class:`bool` or :data:`None`) is whether to follow symbolic
links. If this is :data:`True`, the stat result of the linked file will be
returned. Default is :data:`None` for :data:`True`.

Returns that stat result (:class:`os.stat_result`).
T)rú   rù   )r¸   rU   s   &&r   ry   ÚTreeEntry.statS  s$   € ð ÒØ€<ç#ˆ�‰Ð4¨¯©Ð4r!   )rù   rú   rx   r   rø   ©N)rÍ   rÎ   rÏ   rÐ   rÑ   rê   r·   r#   r}   r{   ry   rÓ   r   r!   r   r|   r|   ý  s-   † ñð
 1€õ&÷P)÷ )õ +÷5ó 5r!   r|   r  r.   )?Ú__conditional_annotations__rÑ   Ú
__future__r   r$   Úos.pathÚpathlibr¡   ry   Úcollections.abcr   r   r   r   Údataclassesr   Útypingr   r	   r
   r   r   r   r   r3   r   Ú_typingr   r   r   ÚPathLiker[   r   r   r   r%   Úaltseprž   r   rë   r'   r6   rF   rL   rR   rY   rf   rd   rV   r‰   rŽ   r1   r—   r¤   r¨   r¯   Ú	Exceptionr®   rv   ré   ÚobjectrA   r|   )Ú__sepr  s   0@r   Ú<module>r     s  øðôõ #ã 	Û Û Û Û ÷ó õ
÷÷ ñ õ
÷ð ��R—[‘[ Õ%Ð%Õ
&€á�: WÔ-€ðñ
 �m¨7¸dÔC€ðñ
 �: WÔ-€ðð �v‰v�r—y‘yÑ!óá!€UÜ	ô à�y—}‘}Ñ$ô �€cˆ5ÖÙ!ñÐ ð
ð KMÐ ÐGÓ Lðõ÷") ÷X,õ^õ(Lñ ØJóóLóðL÷[õBL÷^YõD;õ|	#õñ( ðóôó	ð÷:'ñT ðóöó	ð÷B.ô>,˜Yô ,ô^7�Yô 7ñt �$Ôô�'˜(Õ#ó ó ðô>�&ô ô0c5�ö c5ùòSs   Â+
G Â:G ÃG 