ó
    ßÅŸg˜X  ã                   óÄ  • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJ	r
Jr  SSKJr  SSKJr  SSKJrJrJrJ	r	JrJrJrJrJrJrJrJrJrJrJr  SSKJr  \R@                  S	:¼  a  \\!\\!   4   r"O\\!\4   r"\" S
\"S9r# \RH                  \RJ                  4 V s/ sH   n U (       d  M  U \RH                  :w  d  M  U PM"     sn r& 0 r' S\RP                  S\!4S jr)S\\\*\4      S\!S\\\+   \\*   4   4S jr, S8S\\   S\\!   S\\+   S\\!S4   4S jjr-S\\   S\\\*\4      4S jr.S\S\+4S jr/  S9S\"S\\\0/S4      S\\+   S\S   4S jjr1S\!S\!S \\!\!4   S\\0/S4   S\+S\S   4S! jr2  S9S\"S\\\0/S4      S\\+   S\\!   4S" jjr3S9S# jr4S$\!S\\/\4   4S% jr5S\\   S\!S\+4S& jr6S\\   S\\!   S\\!   4S' jr7 S8S\"S(\\	\!      S\!4S) jjr8 S8S\\"   S(\\	\!      S\\!\\"   4   4S* jjr9 S8S$\!S+\\/\4   S,\\+   SS4S- jjr: " S. S/\;5      r< " S0 S1\;5      r=\" S2S39 " S4 S5\\#   5      5       r> " S6 S\?5      r@ " S7 S\?5      rAgs  sn f ):zC
This module provides utility methods for dealing with path-specs.
é    N)Ú
CollectionÚIterable)Ú	dataclass)ÚPathLike)ÚAnyÚAnyStrÚCallabler   ÚDictÚGenericr   ÚIteratorÚListÚOptionalÚSequenceÚSetÚTupleÚTypeVarÚUnioné   )ÚPattern)é   é	   ÚTStrPath)ÚboundÚpathÚreturnc                 ól   • [        U 5      nU R                  5       (       a  U[        R                  -  nU$ )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`).
)ÚstrÚis_dirÚosÚsep)r   Ústr_paths     ÚN/var/www/blue/EV-Temp_rev04/venv/lib/python3.13/site-packages/pathspec/util.pyÚappend_dir_sepr#   D   s+   € ô �‹I€Ø‡K�K‡M�MØ
Œb�f‰fÑ€(à€ó    ÚpatternsÚfilec                 óˆ   • SnSnU  H6  u  pEUR                   c  M  UR                  U5      c  M(  UR                   nUnM8     X#4$ )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 actual
pattern (:class:`~pathspec.pattern.Pattern`).

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

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©ÚincludeÚ
match_file)r%   r&   Úout_includeÚ	out_indexÚindexÚpatterns         r"   Úcheck_match_filer/   V   sM   € ð$  $€Ø €Û�^€UØ‡_�_Ó  W×%7Ñ%7¸Ó%=Ó%IØ—‘€;Ø‚9ñ  ð
 	ÐÐr$   ÚfilesÚall_matchesÚMatchDetailc                 ó†  • [        U[        5      (       a  UO
[        U5      n0 nU  H–  nUR                  c  M  UR	                  U5      nUR                  (       aW  U HO  nXt;   a9  U(       a  XG   R
                  R                  U5        M.  XTU   R
                  S'   MA  [        U/5      XG'   MQ     M‹  U H  nXH	 M     M˜     U$ )a¦  
Matches the files to the patterns, and returns which patterns matched
the files.

*patterns* (:class:`~collections.abc.Iterable` of :class:`~pathspec.pattern.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`).
r   )Ú
isinstanceÚCollectionTypeÚlistr)   Úmatchr%   Úappendr2   )	r%   r0   r1   Ú	all_filesÚreturn_filesr.   Úresult_filesÚresult_filer&   s	            r"   Údetailed_match_filesr=   r   s¯   € ô, ! ¬×7Ñ7‰U¼TÀ%»[€Ø€Û€WØ‡_�_Ó Ø—-‘- 	Ó*€<Ø‡o‡oã#ˆØÓ#Þ	ØÑ ×)Ñ)×0Ñ0°Ö9à/6�KÑ ×)Ñ)¨!Ó,ä"-¨w¨iÓ"8€lÓó $ó ˆØ	Ò	ó ñ! ð& 	Ðr$   c                 ól   • [        U 5       VVs/ sH  u  pUR                  c  M  X4PM     snn$ s  snnf )a  
Filters out null-patterns.

*patterns* (:class:`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:`~pathspec.pattern.Pattern`).
)Ú	enumerater)   )r%   Ú__indexÚ__pats      r"   Ú_filter_check_patternsrB       s<   € ô " (Ô+ô	á+�n€gØ
‡]�]ó €7ÓÙ+ò	ð ùó 	s   �0¥0Úvaluec                 óf   • [        U [        5      =(       a    [        U [        [        45      (       + $ )z”
Check whether the value is an iterable (excludes strings).

*value* is the value to check,

Returns whether *value* is a iterable (:class:`bool`).
)r4   ÚIterableTyper   Úbytes)rC   s    r"   Ú_is_iterablerG   ´   s$   € ô 	�5œ,Ó'×O´
¸5Ä3ÌÀ,Ó0OÔ,OÐOr$   ÚrootÚon_errorÚfollow_linksÚ	TreeEntryc              #   óÆ   #   • Ub   [        U5      (       d  [        SU< S35      eUc  Sn[        [        R                  R                  U 5      S0 X5       Sh  v•N   g N7f)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*.
Nz	on_error:ú is not callable.TÚ )ÚcallableÚ	TypeErrorÚ_iter_tree_entries_nextr   r   Úabspath©rH   rI   rJ   s      r"   Úiter_tree_entriesrT   ¿   sX   é € ð4 Ñ¤¨(×!3Ñ!3Ü�I˜h™\Ð):Ð;Ó<Ð<àÑØ€,ä#¤B§G¡G§O¡O°DÓ$9¸2¸rÀ8ÓZ×ZÓZùs   ‚AA!ÁAÁA!Ú	root_fullÚdir_relÚmemoc           	   #   ó–  #   • [         R                  R                  X5      n[         R                  R                  U5      nXb;  a  XU'   O[	        XbU   US9e[         R
                  " U5       nU Hî  n[         R                  R                  XR                  5      n	 UR                  SS9n
UR                  5       (       a   UR                  5       nOU
nUR                  US9(       a0  [        UR                  XšU5      v •  [        X	X#U5       Sh  v•N   M©  UR                  5       (       d  UR                  5       (       d  MÕ  [        UR                  XšU5      v •  Mð     SSS5        X&	 g! [         a  nUb  U" U5         SnAGM  SnAff = f! [         a  nUb  U" U5         SnAGM=  SnAff = f N¢! , (       d  f       N[= f7f)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   rK   rQ   Úis_file)rU   rV   rW   rI   rJ   Údir_fullÚdir_realÚ	scan_iterÚnode_entÚnode_relÚ
node_lstatÚeÚ	node_stats                r"   rQ   rQ   â   s}  é € ô6 �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ô �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	Á./F8ÂE.Â-F8ÃFÃA F8ÄF6Ä.F8ÅF8Å#G	Å.
FÅ8F
ÆF8Æ
FÆF8Æ
F3ÆF.Æ'F8Æ.F3Æ3F8Æ8
GÇG	c              #   óz   #   • [        XUS9 H)  nUR                  U5      (       a  M  UR                  v •  M+     g7f)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*.
©rI   rJ   N)rT   r   r   )rH   rI   rJ   Úentrys       r"   Úiter_tree_filesrq   3  s2   é € ô4   ÀlÔS€UØ	�‰�l×	#Ó	#Ø	�‰Ôò Tùs   ‚";¨;c                 óJ   • [         R                  " S[        SS9  [        XUS9$ )zd
DEPRECATED: The :func:`.iter_tree` function is an alias for the
:func:`.iter_tree_files` function.
zCutil.iter_tree() is deprecated. Use util.iter_tree_files() instead.é   ©Ú
stacklevelro   )ÚwarningsÚwarnÚDeprecationWarningrq   rS   s      r"   Ú	iter_treery   R  s'   € ô
 
‡‚ØGÜ 1ò&ô 	˜¸lÑKÐKr$   ra   c                 ó   • [         U    $ )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)ra   s    r"   Úlookup_patternr|   ]  s   € ô 	˜TÑ"Ð"r$   c                 óz   • SnU  H2  nUR                   c  M  UR                  U5      c  M&  UR                   nM4     U$ )a0  
Matches the file to the patterns.

*patterns* (:class:`~collections.abc.Iterable` of :class:`~pathspec.pattern.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&   Úmatchedr.   s       r"   r*   r*   i  s=   € ð €Û€WØ‡_�_Ó  W×%7Ñ%7¸Ó%=Ó%IØ�_‰_‚7ñ ð 	€r$   c                 ó
  • [         R                  " [         S[         S3[        SS9  U  Vs/ sH  o"R                  c  M  UPM     nn[        5       nU H&  n[        X55      (       d  M  UR                  U5        M(     U$ s  snf )aß  
DEPRECATED: This is an old function no longer used. Use the
:func:`~pathspec.util.match_file` function with a loop for better results.

Matches the files to the patterns.

*patterns* (:class:`~collections.abc.Iterable` of :class:`~pathspec.pattern.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`).
z".match_files() is deprecated. Use z-.match_file() with a loop for better results.rs   rt   )rv   rw   Ú__name__rx   r)   Úsetr*   Úadd)r%   r0   rA   Úuse_patternsr:   r&   s         r"   Úmatch_filesr„   }  s}   € ô$ 
‡‚Ü€JÐ0´°
ð ;ð  ä 1ò&ñ
 %-ÓJ¡H˜5·±—¡H€ÐJä“€Û€TÜ�×#Ó#Ø×Ñ�DÖñ ð 	Ðùò Ks   ­B Á B Ú
separatorsc                 ó  • Uc  [         n[        R                  " U 5      nU H#  nUR                  U[        R
                  5      nM%     UR                  S5      (       a  USS nU$ UR                  S5      (       a  USS nU$ )an  
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
``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 ``NORMALIZE_PATH_SEPS``. To prevent normalization, pass an
empty container (e.g., an empty tuple ``()``).

Returns the normalized file path (:class:`str`).
NÚ/r   z./rs   )ÚNORMALIZE_PATH_SEPSr   ÚfspathÚreplaceÚ	posixpathr    Ú
startswith)r&   r…   Ú	norm_filer    s       r"   Únormalize_filerŽ   ž  sˆ   € ð( ÑÜ"€*ô —)’)˜D“/€ã€SØ×Ñ ¤Y§]¡]Ó3‚)ñ ð ×Ñ˜×Ñà˜˜ˆm€)ð 	Ðð	 ×Ñ˜4× Ñ à˜˜ˆm€)àÐr$   c                 ó    • [         R                  " S[        SS9  0 nU  H+  n[        X1S9nXB;   a  X$   R	                  U5        M&  U/X$'   M-     U$ )aŽ  
DEPRECATED: 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`).
z_util.normalize_files() is deprecated. Use util.normalize_file() with a loop for better results.rs   rt   )r…   )rv   rw   rx   rŽ   r8   )r0   r…   Ú
norm_filesr   r�   s        r"   Únormalize_filesr‘   Æ  s^   € ô* 
‡‚ð$ä 1ò&ð
 €Û€TÜ˜TÑ9€)ØÓØÑ×Ñ Ö%à ˜6€:Óñ ð 	Ðr$   Úpattern_factoryÚoverridec                 óè   • [        U [        5      (       d  [        SU < S35      e[        U5      (       d  [        SU< S35      eU [        ;   a  U(       d  [        U [        U    5      eU[        U '   g)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:rM   N)r4   r   rP   rO   r{   ÚAlreadyRegisteredError)ra   r’   r“   s      r"   Úregister_patternr–   ë  sq   € ô( 	�4œ×ÑÜ�E˜$™Ð!2Ð3Ó4Ð4ä�×!Ñ!ÜÐ$ _Ñ$7Ð7HÐIÓJÐJàÔ Ó ®Ü˜tÔ%9¸$Ñ%?Ó@Ð@à-Ô�dÒr$   c                   óœ   ^ • \ rS rSrSrS\S\\/\4   SS4U 4S jjr	\
S\4S j5       r\
S\4S	 j5       r\
S\\/\4   4S
 j5       rSrU =r$ )r•   i  zy
The :exc:`AlreadyRegisteredError` exception is raised when a pattern
factory is registered under a name already in use.
ra   r’   r   Nc                 ó,   >• [         [        U ]  X5        g)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)Úsuperr•   Ú__init__)Úselfra   r’   Ú	__class__s      €r"   rš   ÚAlreadyRegisteredError.__init__  s   ø€ ô Ô Ñ.¨tÕEr$   c                 óJ   • SR                  U R                  U R                  S9$ )ú0
*message* (:class:`str`) is the error message.
zG{name!r} is already registered for pattern factory:{pattern_factory!r}.)ra   r’   )Úformatra   r’   ©r›   s    r"   ÚmessageÚAlreadyRegisteredError.message   s.   € ð
 
S×	YÑ	YØ�	‰	Ø×'Ñ'ð 
Zð 
ð r$   c                 ó    • U R                   S   $ )z>
*name* (:class:`str`) is the name of the registered pattern.
r   ©Úargsr¡   s    r"   ra   ÚAlreadyRegisteredError.name*  s   € ð
 
�‰�1‰Ðr$   c                 ó    • U R                   S   $ )z[
*pattern_factory* (:class:`~collections.abc.Callable`) is the
registered pattern factory.
r   r¥   r¡   s    r"   r’   Ú&AlreadyRegisteredError.pattern_factory1  ó   € ð 
�‰�1‰Ðr$   © )r€   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r	   r   r   rš   Úpropertyr¢   ra   r’   Ú__static_attributes__Ú__classcell__©rœ   s   @r"   r•   r•     s–   ø† ñð
FàðFð ˜V˜H gÐ-Ñ.ðFð ÷	Fð ð�có ó ðð ð�3ó ó ðð ð˜h¨ x°Ð'8Ñ9ó ó ör$   r•   c                   ó    ^ • \ rS rSrSrS\S\S\SS4U 4S jjr\S\4S	 j5       r\S\4S
 j5       r	\S\4S j5       r
\S\4S j5       rSrU =r$ )r_   i:  zK
The :exc:`RecursionError` exception is raised when recursion is
detected.
rY   rZ   r[   r   Nc                 ó.   >• [         [        U ]  XU5        g)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*.
N)r™   r_   rš   )r›   rY   rZ   r[   rœ   s       €r"   rš   ÚRecursionError.__init__@  s   ø€ ô$ Œ˜Ñ& y¸kÕJr$   c                 ó    • U R                   S   $ )zr
*first_path* (:class:`str`) is the first path encountered for
:attr:`self.real_path <RecursionError.real_path>`.
r   r¥   r¡   s    r"   rZ   ÚRecursionError.first_pathT  rª   r$   c                 ó`   • SR                  U R                  U R                  U R                  S9$ )rŸ   zDReal path {real!r} was encountered at {first!r} and then {second!r}.)ÚrealÚfirstÚsecond)r    rY   rZ   r[   r¡   s    r"   r¢   ÚRecursionError.message\  s5   € ð
 
P×	VÑ	VØ�‰Ø	�‰Ø
×
Ñ
ð 
Wð 
ð r$   c                 ó    • U R                   S   $ )zP
*real_path* (:class:`str`) is the real path that recursion was
encountered on.
r   r¥   r¡   s    r"   rY   ÚRecursionError.real_pathg  rª   r$   c                 ó    • U R                   S   $ )zt
*second_path* (:class:`str`) is the second path encountered for
:attr:`self.real_path <RecursionError.real_path>`.
rs   r¥   r¡   s    r"   r[   ÚRecursionError.second_patho  rª   r$   r«   )r€   r¬   r­   r®   r¯   r   rš   r°   rZ   r¢   rY   r[   r±   r²   r³   s   @r"   r_   r_   :  s¤   ø† ñð
KàðKð ðKð ð	Kð
 ÷Kð( ð˜ó ó ðð ð�có ó ðð ð˜ó ó ðð ð˜#ó ó ör$   r_   T)Úfrozenc                   óL   • \ rS rSr% SrSr\\S'    \\	   \S'    \\
   \S'   Srg)	ÚCheckResultix  zb
The :class:`CheckResult` class contains information about the file and which
pattern matched it.
)r&   r)   r-   r&   r)   r-   r«   N)r€   r¬   r­   r®   r¯   Ú	__slots__r   Ú__annotations__r   ÚboolÚintr±   r«   r$   r"   rÄ   rÄ   x  s<   ‡ ñð€ð ƒðð �4‰.Óðð
 	�‰Óòr$   rÄ   c                   ó4   • \ rS rSrSrSrS\\   SS4S jrSr	g)r2   i˜  z<
The :class:`.MatchDetail` class contains information about
©r%   r%   r   Nc                 ó   • Xl         g)z×
Initialize the :class:`.MatchDetail` instance.

*patterns* (:class:`~collections.abc.Sequence` of :class:`~pathspec.pattern.Pattern`)
contains the patterns that matched the file in the order they were
encountered.
NrÊ   )r›   r%   s     r"   rš   ÚMatchDetail.__init__   s   € ð „-ðr$   )
r€   r¬   r­   r®   r¯   rÅ   r   r   rš   r±   r«   r$   r"   r2   r2   ˜  s&   † ñð
 €ð˜h wÑ/ð °D÷ r$   c            
       óØ   • \ rS rSrSrSrS\S\S\R                  S\R                  SS	4
S
 jr	SS\
\   S\4S jjrSS\
\   S\4S jjrS\4S jrSS\
\   S\R                  4S jjrSrg	)rK   i±  zO
The :class:`.TreeEntry` class contains information about a file-system
entry.
©Ú_lstatra   r   Ú_statra   r   Úlstatrb   r   Nc                 ó:   • X0l          Xl         X l         X@l        g)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.
NrÎ   )r›   ra   r   rÑ   rb   s        r"   rš   ÚTreeEntry.__init__º  s2   € ð* !&„+ðð
 „)ðð „)ðð  $„*ðr$   rJ   c                 óŠ   • Uc  SnU(       a  U R                   OU R                  n[        R                  " UR                  5      $ )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Ï   rb   ÚS_ISDIRÚst_mode©r›   rJ   rm   s      r"   r   ÚTreeEntry.is_dirå  ó5   € ð ÑØ€<æ(ˆd�jŠj¨d¯k©k€)Ü	�Š�i×'Ñ'Ó	(Ð(r$   c                 óŠ   • Uc  SnU(       a  U R                   OU R                  n[        R                  " UR                  5      $ )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Ï   rb   ÚS_ISREGrÖ   r×   s      r"   re   ÚTreeEntry.is_fileõ  rÙ   r$   c                 óV   • [         R                  " U R                  R                  5      $ )z?
Returns whether the entry is a symbolic link (:class:`bool`).
)rb   ÚS_ISLNKrÏ   rÖ   r¡   s    r"   rd   ÚTreeEntry.is_symlink  s   € ô 
�Š�d—k‘k×)Ñ)Ó	*Ð*r$   c                 óJ   • Uc  SnU(       a  U R                   $ U R                  $ )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›   rJ   s     r"   rb   ÚTreeEntry.stat  s$   € ð ÑØ€<æ#ˆ�‰Ð4¨¯©Ð4r$   )rÏ   rÐ   ra   r   ©N)r€   r¬   r­   r®   r¯   rÅ   r   r   Ústat_resultrš   r   rÇ   r   re   rd   rb   r±   r«   r$   r"   rK   rK   ±  s¦   † ñð 1€ð)àð)ð 	ð)ð 
�‰ð	)ð
 	�‰ð)ð ô)ñV) ¨¡ð )¸$õ )ñ ) ¨$¡ð )¸4õ )ð +˜ô +ñ5˜h t™nð 5¸¿¹÷ 5ð 5r$   râ   )NN)Br¯   r   Úos.pathÚpathlibr‹   rb   Úsysrv   Úcollections.abcr   r5   r   rE   Údataclassesr   r   Útypingr   r   r	   r
   r   r   r   r   r   r   r   r   r   r.   r   Úversion_infor   ÚStrPathr   r    Úaltseprˆ   r{   ÚPathr#   rÈ   rÇ   r/   r=   rB   rG   rc   rT   rQ   rq   ry   r|   r*   r„   rŽ   r‘   r–   Ú	Exceptionr•   r_   rÄ   Úobjectr2   rK   )Ú__seps   0r"   Ú<module>rñ      s1  ðñó 
Û Û Û Û Û 
Û ÷õõ÷÷ ÷ ÷ ñ õ"
ð ×Ñ�vÓØ��h˜s‘mÐ#Ñ$�à��h�Ñ€á�: WÑ-€ðð �v‰v�r—y‘yÑ!óá!€UÜ	ó à�y—}‘}Ñ$÷ Ù!ñÐ ð
ð Ð ðð˜Ÿ™ð ¨#ô ð$Ø�E˜#˜w˜,Ñ'Ñ(ðà
ðð ˆ8�D‰>˜8 C™=Ð(Ñ)ôð>  $ñ+Ø�GÑð+à�‰ð+ð �t‰nð+ð 
ˆ#ˆ}Ð
Ñõ	+ð\Ø�GÑðà	ˆ%��W�Ñ
Ñôð(P˜ð P ô Pð 26Ø $ñ [Øð [à�H˜g˜Y¨˜_Ñ-Ñ.ð [ð ˜‰~ð [ð ˆkÑõ	 [ðFNØðNà
ðNð ˆC�ˆH�~ðNð �W�I˜t�OÑ$ð	Nð
 ðNð ˆkÑôNðf 26Ø $ñØðà�H˜g˜Y¨˜_Ñ-Ñ.ðð ˜‰~ðð ˆc�]õ	ô>Lð	#˜ð 	# ¨6¨(°GÐ*;Ñ!<ô 	#ð˜ 'Ñ*ð °#ð ¸$ô ð(Ø�GÑðà�‰ðð 	ˆ�XôðF *.ñ%Øð%à�j ‘oÑ&ð%ð 	õ%ðT *.ñ"Ø�Ñð"à�j ‘oÑ&ð"ð 
ˆ#ˆt�G‰}Ð
Ñõ"ðP !ñ.Ø
ð.à˜F˜8 WÐ,Ñ-ð.ð �D‰>ð.ð 
õ	.ô@,˜Yô ,ô^;�Yô ;ñ| �$Ñô�'˜(Ñ#ó ó ðô>�&ô ô2g5�õ g5ùòAs   Â
IÂ-IÂ?I