+
    …rœi˜`  ã                   ó,  € R 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 ^RIHt ^RIHtHt ]]]P4                  ],          3,          t]! R]R7      t ]P:                  ]P<                  3 U u. uF"  p V '       g   K  V ]P:                  8w  g   K   V NK$  	  up t / t  R	 R
 lt!R7R R llt"R7R R llt#R R lt$R R lt%]! R4      R8R l4       t&R8R R llt'R R lt(R8R R llt)R R lt*R R lt+R R  lt,]! R!4      R" R# l4       t-R7R$ R% llt.]! R&4      R7R' R( ll4       t/R7R) R* llt0 ! R+ R,]14      t2 ! R- R.]14      t3]! R/R07       ! R1 R2]],          4      4       t4 ! R3 R4]54      t6 ! R5 R6]54      t7R# u up i )9zC
This module provides utility methods for dealing with path-specs.
N)Ú
CollectionÚIterableÚIteratorÚSequence)Ú	dataclass)ÚAnyÚCallableÚGenericÚOptionalÚTypeVarÚUnion)ÚPattern)ÚAnyStrÚ
deprecatedÚTStrPath)Úboundc                óD   € V ^8„  d   QhR\         P                  R\        /# )é   ÚpathÚreturn)ÚpathlibÚPathÚstr)Úformats   "Ú//usr/lib/python3/dist-packages/pathspec/util.pyÚ__annotate__r   9   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"   9   s+   € ô �‹I€Ø‡K�K‡M‚MØ
Œb�f‰fÕ€(à€r   c                óä   € V ^8„  d   QhR\         \        \        \        3,          ,          R\        R\
        \        ,          R\        \
        \        ,          \
        \        ,          3,          /# )r   ÚpatternsÚfileÚis_reversedr   )r   ÚtupleÚintr   r   r
   Úbool)r   s   "r   r   r   J   sT   € ÷ ) ñ ) Ü”Eœ#œw˜,Õ'Õ(ð) ä
ð) ô ”t�nð) ô Œ8”D�>œ8¤C�=Ð(Õ)ñ	) 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_filer3   J   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3,          /# )r   r$   ÚfilesÚall_matchesr   ÚMatchDetail)r   r   r   r
   r)   Údict)r   s   "r   r   r   v   sG   € ÷ +ñ +Ü”GÕð+ä”�ð+ô ”t�nð+ô 
Œ#ˆ}Ð
Õñ	+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   Úlistr-   Úmatchr$   Úappendr7   )	r$   r5   r6   Ú	all_filesÚreturn_filesr0   Úresult_filesÚresult_filer%   s	   &&&      r   Údetailed_match_filesrB   v   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\        \        \        \        3,          ,          /# )r   r$   r   )r   r   r;   r'   r(   )r   s   "r   r   r   ¤   s/   € ÷ ñ Ü”GÕðä	Œ%””W�Õ
Õñ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`).
)Ú	enumerater-   )r$   Ú__indexÚ__pats   &  r   Ú_filter_check_patternsrH   ¤   s<   € ô " (Ô+ô	á+�n€gØ
‡]�]ô €7ÓÙ+ò	ð ùó 	s   �1¦1c                ó0   € V ^8„  d   QhR\         R\        /# )r   Úvaluer   )r   r)   )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)rJ   s   &r   Ú_is_iterablerM   ¸   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©ÚrootrO   rP   s   &&&r   Ú	iter_treerT   Ã   s   € ô 	˜¸lÔKÐKr   c          	      óž   € V ^8„  d   QhR\         R\        \        \        .R3,          ,          R\        \        ,          R\
        R,          /# )r   rS   rO   NrP   r   Ú	TreeEntry)ÚStrPathr
   r   ÚOSErrorr)   r   )r   s   "r   r   r   Î   sO   € ÷ [ñ [Üð[ä”Hœg˜Y¨˜_Õ-Õ.ð[ô œ�~ð[ô ˆkÕñ	[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   ÚabspathrR   s   &&&r   Úiter_tree_entriesra   Î   sX   é € ð0 Ò¤¨(×!3Ò!3Ü�I˜h™\Ð):Ð;Ó<Ð<àÒØ€,ä#¤B§G¡G§O¡O°DÓ$9¸2¸rÀ8ÓZ×ZÔZùó   ‚AA%ÁA#ÁA%c                ó¬   € V ^8„  d   QhR\         R\         R\        \         \         3,          R\        \        .R3,          R\        R\
        R,          /# )	r   Ú	root_fullÚdir_relÚmemorO   NrP   r   rV   ©r   r8   r   rX   r)   r   )r   s   "r   r   r   ï   sd   € ÷ Lñ LÜðLä
ðLô ŒC”ˆH…~ðLô ”W�I˜t�OÕ$ð	Lô
 ðLô ˆkÕñ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ÚstatrX   Ú
is_symlinkr   rV   r_   Úis_file)rd   re   rf   rO   rP   Údir_fullÚdir_realÚ	scan_iterÚnode_entÚnode_relÚ
node_lstatÚeÚ	node_stats   &&&&&        r   r_   r_   ï   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3,          ,          R\        \        ,          R\
        \        ,          /# )r   rS   rO   NrP   r   )rW   r
   r   rX   r)   r   r   )r   s   "r   r   r   >  sN   € ÷ Yñ YÜðYä”Hœg˜Y¨˜_Õ-Õ.ðYô œ�~ðYô Œc…]ñ	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*.
NrZ   r[   Tr\   )r]   r^   Ú_iter_tree_files_nextr   r   r`   rR   s   &&&r   rQ   rQ   >  sX   é € ð2 Ò¤¨(×!3Ò!3Ü�I˜h™\Ð):Ð;Ó<Ð<àÒØ€,ä!¤"§'¡'§/¡/°$Ó"7¸¸RÀÓX×XÔXùrb   c                ó´   € V ^8„  d   QhR\         R\         R\        \         \         3,          R\        \        .R3,          R\        R\
        \         ,          /# )r   rd   re   rf   rO   NrP   r   rg   )r   s   "r   r   r   `  s[   € ÷ ;ñ ;Üð;ä
ð;ô ŒC”ˆH…~ð;ô ”W�I˜t�OÕ$ð	;ô
 ð;ô Œc…]ñ;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`).
ri   rm   N)r   r   ro   rp   rq   rr   rs   r   r�   rv   ru   )
rd   re   rf   rO   rP   rw   rx   ry   rz   r{   s
   &&&&&     r   r�   r�   `  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                óT   € V ^8„  d   QhR\         R\        \        .\        3,          /# )r   rs   r   ©r   r   r   r   )r   s   "r   r   r   ž  s&   € ÷ 	#ñ 	#œð 	#¤¬6¨(´GÐ*;Õ!<ñ 	#r   c                ó   € \         V ,          # )zõ
Lookups 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`.
)Ú_registered_patterns)rs   s   &r   Úlookup_patternrˆ   ž  s   € ô 	˜TÕ"Ð"r   c                óR   € V ^8„  d   QhR\         \        ,          R\        R\        /# )r   r$   r%   r   )r   r   r   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%   Úmatchedr0   s   &&  r   r.   r.   ª  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$   r5   r   )r   r   r   Úset)r   s   "r   r   r   Â  s3   € ÷ ñ Ü”GÕðä”�ðô 	Œ…Xñ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`).
)r-   r�   r.   Úadd)r$   r5   rG   Úuse_patternsr?   r%   s   &&    r   Úmatch_filesr‘   ¾  sV   € ñ. %-ÓJ¡H˜5·±—�¡H€ÐJä“€Û€TÜ�×#Ô#Ø×Ñ�DÖñ ð 	Ðùò Ks
   …A™Ac                óh   € V ^8„  d   QhR\         R\        \        \        ,          ,          R\        /# )r   r%   Ú
separatorsr   )rW   r
   r   r   )r   s   "r   r   r   ß  s/   € ÷ %ñ %Üð%ä”j¤•oÕ&ð%ô 	ñ%r   c                ó  € Vf   \         p\        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\
        \        \        \        ,          3,          /# )r   r5   r“   r   )r   rW   r
   r   r   r8   r;   )r   s   "r   r   r     sB   € ÷ ñ Ü”Õðä”j¤•oÕ&ðô 
Œ#Œt”G�}Ð
Õñ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=   )r5   r“   Ú
norm_filesr   rœ   s   &&   r   Únormalize_filesr¡     sF   € ð4 €Û€TÜ˜TÔ9€)ØÔØÕ×Ñ Ö%à ˜6€:Óñ ð 	Ðr   c                óz   € V ^8„  d   QhR\         R\        \        .\        3,          R\        \
        ,          RR/# )r   rs   Úpattern_factoryÚoverrider   N)r   r   r   r   r
   r)   )r   s   "r   r   r   ,  s@   € ÷ .ñ .Ü
ð.äœF˜8¤WÐ,Õ-ð.ô ”D�>ð.ð 
ñ	.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   r^   r]   r‡   ÚAlreadyRegisteredError)rs   r£   r¤   s   &&&r   Úregister_patternr§   ,  sq   € ô& 	�4œ×ÒÜ�E˜$™Ð!2Ð3Ó4Ð4ä�×!Ò!ÜÐ$ _Ñ$7Ð7HÐIÓJÐJàÔ Ô ¯Ü˜tÔ%9¸$Õ%?Ó@Ð@à-Ô�dÓr   c                   ó–   a a€ ] tR tRt oRtV3R lV 3R llt]V3R lR l4       t]V3R lR l4       t]V3R	 lR
 l4       t	Rt
VtV ;t# )r¦   iK  zy
The :exc:`AlreadyRegisteredError` exception is raised when a pattern factory
is registered under a name already in use.
c                óB   <€ V ^8„  d   QhRS[ RS[S[.S[3,          RR/# )r   rs   r£   r   Nr…   )r   Ú__classdict__s   "€r   r   Ú#AlreadyRegisteredError.__annotate__Q  s5   ø€ ÷ *ñ *áð*ñ ™V˜H¡gÐ-Õ.ð*ð ñ	*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__)Úselfrs   r£   Ú	__class__s   &&&€r   r¯   ÚAlreadyRegisteredError.__init__Q  s   ø€ ô �'Ñ�4Ö)r   c                ó    <€ V ^8„  d   QhRS[ /# ©r   r   ©r   )r   rª   s   "€r   r   r«   a  ó   ø€ ÷ ñ ‘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=Ú.)rs   r£   ©r°   s   &r   ÚmessageÚAlreadyRegisteredError.message`  s(   € ð ‡i�i�]Ð=Ø
×ÑÑ˜Qð ðr   c                ó    <€ V ^8„  d   QhRS[ /# r´   rµ   )r   rª   s   "€r   r   r«   k  s   ø€ ÷ ñ ‘3ñ r   c                ó(   € V P                   ^ ,          # )z>
*name* (:class:`str`) is the name of the registered pattern.
©Úargsrº   s   &r   rs   ÚAlreadyRegisteredError.namej  s   € ð
 
�‰�1�Ðr   c                ó8   <€ V ^8„  d   QhRS[ S[.S[3,          /# r´   )r   r   r   )r   rª   s   "€r   r   r«   r  s    ø€ ÷ ñ ™h© x±Ð'8Õ9ñ r   c                ó(   € V P                   ^,          # )z[
*pattern_factory* (:class:`~collections.abc.Callable`) is the registered
pattern factory.
r¿   rº   s   &r   r£   Ú&AlreadyRegisteredError.pattern_factoryq  ó   € ð 
�‰�1�Ðr   © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r¯   Úpropertyr»   rs   r£   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r±   rª   s   @@r   r¦   r¦   K  sU   ù‡ € ñ÷
*ó *ð ÷ó ðð ÷ó ðð ÷ó ÷ð r   r¦   c                   ó²   a a€ ] tR tRt oRtV3R lV 3R llt]V3R lR l4       t]V3R lR l4       t]V3R	 lR
 l4       t	]V3R lR l4       t
RtVtV ;t# )rq   iz  zK
The :exc:`RecursionError` exception is raised when recursion is detected.
c                ó0   <€ V ^8„  d   QhRS[ RS[ RS[ RR/# )r   rj   rk   rl   r   Nrµ   )r   rª   s   "€r   r   ÚRecursionError.__annotate__  s3   ø€ ÷ 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°   rj   rk   rl   r±   s   &&&&€r   r¯   ÚRecursionError.__init__  s   ø€ ô  �'Ñ�9¨+Ö6r   c                ó    <€ V ^8„  d   QhRS[ /# 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   rk   ÚRecursionError.first_path‘  rÅ   r   c                ó    <€ V ^8„  d   QhRS[ /# 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¹   ri   rº   s   &r   r»   ÚRecursionError.message™  s:   € ð �—‘Ñ!Ð!5°d·o±oÑ5Hð IØ×ÑÑ" !ð%ðr   c                ó    <€ V ^8„  d   QhRS[ /# 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   rj   ÚRecursionError.real_path£  rÅ   r   c                ó    <€ V ^8„  d   QhRS[ /# 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   rl   ÚRecursionError.second_path«  rÅ   r   rÆ   )rÇ   rÈ   rÉ   rÊ   rË   r¯   rÌ   rk   r»   rj   rl   rÍ   rÎ   rÏ   rÐ   s   @@r   rq   rq   z  si   ù‡ € ñ÷7ó 7ð$ ÷ó ðð ÷ó ðð ÷ó ðð ÷ó ÷ð r   rq   T)Úfrozenc                   ó:   a € ] tR tRt o RtRt   V 3R ltRtV tR# )ÚCheckResulti´  zb
The :class:`CheckResult` class contains information about the file and which
pattern matched it.
c                ó^   <€ V ^8„  d   Qh/ S[ ;R&   S[S[,          ;R&   S[S[,          ;R&   # )r   r%   r-   r/   )r   r
   r)   r(   )r   rª   s   "€r   r   ÚCheckResult.__annotate__´  s3   ø‡ ‚ ñ �ñ ñ& ‘4�.Ññ' ñ2 	‘�Ñò3 r   rÆ   N)r%   r-   r/   )	rÇ   rÈ   rÉ   rÊ   rË   Ú	__slots__Ú__annotate_func__rÍ   rÎ   ©rª   s   @r   rä   rä   ´  s'   ø‡ € ñð€ðð
ð÷5 ƒ r   rä   c                   ó:   a € ] tR tRt o RtRtV 3R lR ltRtV tR# )r7   iÔ  z<
The :class:`.MatchDetail` class contains information about
c                ó4   <€ V ^8„  d   QhRS[ S[,          RR/# )r   r$   r   N)r   r   )r   rª   s   "€r   r   ÚMatchDetail.__annotate__Ü  s    ø€ ÷ ñ ™h¡wÕ/ð °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é   s   @r   r7   r7   Ô  s   ø‡ € ñð
 €÷ö r   r7   c                   óŽ   a € ] tR tRt o RtRtV 3R lR ltRV 3R lR lltRV 3R lR	 lltV 3R
 lR lt	RV 3R lR llt
RtV tR# )rV   iì  zN
The :class:`TreeEntry` class contains information about a file-system entry.
c          
      ó^   <€ V ^8„  d   QhRS[ RS[ RS[P                  RS[P                  RR/# )r   rs   r   Úlstatrt   r   N)r   r   Ústat_result)r   rª   s   "€r   r   ÚTreeEntry.__annotate__ô  sE   ø€ ÷ &ñ &áð&ñ 	ð&ñ 
�‰ð	&ñ
 	�‰ð&ð ñ&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©Ú_lstatrs   r   Ú_stat)r°   rs   r   rò   rt   s   &&&&&r   r¯   ÚTreeEntry.__init__ô  s2   € ð( !&„+ðð „)ðð „)ðð  $„*ñr   Nc                ó6   <€ V ^8„  d   QhRS[ S[,          RS[/# ©r   rP   r   ©r
   r)   )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÷   rt   ÚS_ISDIRÚst_mode©r°   rP   r~   s   && r   r   ÚTreeEntry.is_dir  ó5   € ð ÒØ€<ç(ˆd�jŠj¨d¯k©k€)Ü	�Š�i×'Ñ'Ó	(Ð(r   c                ó6   <€ V ^8„  d   QhRS[ S[,          RS[/# 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÷   rt   ÚS_ISREGrÿ   r   s   && r   rv   ÚTreeEntry.is_file,  r  r   c                ó    <€ V ^8„  d   QhRS[ /# r´   )r)   )r   rª   s   "€r   r   rô   <  s   ø€ ÷ +ñ +™ñ +r   c                óV   € \         P                  ! V P                  P                  4      # )z?
Returns whether the entry is a symbolic link (:class:`bool`).
)rt   ÚS_ISLNKr÷   rÿ   rº   s   &r   ru   ÚTreeEntry.is_symlink<  s   € ô 
�Š�d—k‘k×)Ñ)Ó	*Ð*r   c                óJ   <€ V ^8„  d   QhRS[ S[,          RS[P                  /# rû   )r
   r)   r   ró   )r   rª   s   "€r   r   rô   B  s#   ø€ ÷ 5ñ 5™h¡t�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°   rP   s   &&r   rt   ÚTreeEntry.statB  s$   € ð ÒØ€<ç#ˆ�‰Ð4¨¯©Ð4r   )r÷   rø   rs   r   rö   ©N)rÇ   rÈ   rÉ   rÊ   rË   rç   r¯   r   rv   ru   rt   rÍ   rÎ   ré   s   @r   rV   rV   ì  sI   ø‡ € ñð
 1€÷&ð &÷P)ò )÷ )ò )÷ +ð +÷5÷ 5ð 5r   rV   r  r+   )8rË   r   Úos.pathr   rš   rt   Úcollections.abcr   r   r   r   Údataclassesr   Útypingr   r   r	   r
   r   r   r0   r   Ú_typingr   r   r   ÚPathLikerW   r   r    Úaltsepr—   r‡   r"   r3   rB   rH   rM   rT   ra   r_   rQ   r�   rˆ   r.   r‘   r�   r¡   r§   Ú	Exceptionr¦   rq   rä   Úobjectr7   rV   )Ú__seps   0r   Ú<module>r     sÄ  ðñó 
Û Û Û Û ÷ó õ
÷÷ õ
÷ð ��R—[‘[ Õ%Ð%Õ
&€á�: WÔ-€ðð �v‰v�r—y‘yÑ!óá!€UÜ	ô à�y—}‘}Ñ$÷ €Ù!ñÐ ð
ð Ð ðõ÷") ÷X+õ\õ(Lñ ØJóóLóðL÷[õBL÷^YõD;õ|	#õñ( ðóôó	ð÷:%ñP ðóöó	ð÷B.ô>,˜Yô ,ô^7�Yô 7ñt �$Ôô�'˜(Õ#ó ó ðô>�&ô ô0c5�ö c5ùòMs   Â
FÂFÂ*F