+
    …rœi�  ã                  óÞ   € R t ^ RIHt ^ RIHtHt ^ RIHtHtH	t	H
t
HtHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHtHt ^ RIHtHt ]	! RRR7      t   ! R R]4      t!R# )aQ  
This module provides :class:`.GitIgnoreSpec` which replicates *.gitignore*
behavior, and handles edge-cases where Git's behavior differs from what's
documented. Git allows including files from excluded directories which directly
contradicts the documentation. This uses :class:`.GitIgnoreSpecPattern` to fully
replicate Git's handling.
)Úannotations)ÚIterableÚSequence)ÚCallableÚOptionalÚTypeVarÚUnionÚcastÚoverload)ÚBackendNamesHintÚ_Backend©Úmake_gitignore_backend)ÚPathSpec)ÚPattern)ÚGitIgnoreBasicPattern)ÚGitIgnoreSpecPattern)ÚAnyStrÚoverride)Ú_is_iterableÚlookup_patternÚSelfÚGitIgnoreSpec)Úboundc                  óä   a € ] tR t^0tRtR V 3R llt]]RRRR/R R ll4       4       t]]RRRRR/R	 R
 lll4       4       t]	]RRRRR/R V 3R llll4       4       t]	]
R R l4       4       tRtV ;t# )r   z¯
The :class:`GitIgnoreSpec` class extends :class:`.PathSpec` to replicate
*gitignore* behavior. This is uses :class:`.GitIgnoreSpecPattern` to fully
replicate Git's handling.
c               ó    € V ^8„  d   QhRRRR/# )é   ÚotherÚobjectÚreturnÚbool© )Úformats   "Ú4/usr/lib/python3/dist-packages/pathspec/gitignore.pyÚ__annotate__ÚGitIgnoreSpec.__annotate__7   s   € ÷ ñ ˜ð  Dñ ó    c                óŠ   <€ \        V\        4      '       d   \        SV `  V4      # \        V\        4      '       d   R# \
        # )zÑ
Tests the equality of this gitignore-spec with *other* (:class:`.GitIgnoreSpec`)
by comparing their :attr:`self.patterns <.PathSpec.patterns>` attributes. A
non-:class:`GitIgnoreSpec` will not compare equal.
F)Ú
isinstancer   ÚsuperÚ__eq__r   ÚNotImplemented)Úselfr   Ú	__class__s   &&€r#   r*   ÚGitIgnoreSpec.__eq__7   s7   ø€ ô �”}×%Ò%Ü
‰'‰.˜Ó
ÐÜ�%œ×"Ò"Ù
ä
Ðr&   ÚbackendNÚ_test_backend_factoryc               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r   Úclsú
type[Self]Úpattern_factoryú-Union[str, Callable[[AnyStr], Pattern], None]ÚlinesúIterable[AnyStr]r/   ú"Union[BackendNamesHint, str, None]r0   ú1Optional[Callable[[Sequence[Pattern]], _Backend]]r   r   r!   )r"   s   "r#   r$   r%   G   sE   € ÷ ñ Øðà@ðð 
ðð
 .ðð Kðð ñr&   c               	ó   € R # ©Nr!   )r2   r4   r6   r/   r0   s   &&&$$r#   Ú
from_linesÚGitIgnoreSpec.from_linesE   ó   € ñ r&   c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# ©r   r2   r3   r6   r7   r4   r5   r/   r8   r0   r9   r   r   r!   )r"   s   "r#   r$   r%   S   sF   € ÷ ñ Øðà	ðð Aðð
 .ðð Kðð ñr&   c               	ó   € R # r;   r!   )r2   r6   r4   r/   r0   s   &&&$$r#   r<   r=   Q   r>   r&   c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# r@   r!   )r"   s   "r#   r$   r%   _   sF   € ÷ 1ñ 1Øð1à	ð1ð Að1ð
 .ð1ð Kð1ð ñ1r&   c               ó’  <€ \        V\        \        34      '       g   \        V4      '       d   \	        V4      '       d   YrVf   \
        pMVR8X  d   \
        p\        V\        4      '       d   \        V4      p\        V\        4      '       d   \        RV: R\         R24      h\        SV `-  W!W4R7      p\        \        V4      # )ap  
Compiles the pattern lines.

*lines* (:class:`~collections.abc.Iterable`) yields each uncompiled pattern
(:class:`str`). This simply has to yield each line, so it can be a
:class:`io.TextIOBase` (e.g., from :func:`open` or :class:`io.StringIO`) or
the result from :meth:`str.splitlines`.

*pattern_factory* does not need to be set for :class:`GitIgnoreSpec`. If
set, it should be either ``"gitignore"`` or :class:`.GitIgnoreSpecPattern`.
There is no guarantee it will work with any other pattern class. Default is
:data:`None` for :class:`.GitIgnoreSpecPattern`.

*backend* (:class:`str` or :data:`None`) is the pattern (regular expression)
matching backend to use. Default is :data:`None` for "best" to use the best
available backend. Priority of backends is: "re2", "hyperscan", "simple".
The "simple" backend is always available.

Returns the :class:`GitIgnoreSpec` instance.
Ú	gitignorezpattern_factory=z cannot be z) because it will give unexpected results.)r/   r0   )r(   ÚstrÚbytesÚcallabler   r   r   Ú
issubclassr   Ú	TypeErrorr)   r<   r	   r   )r2   r6   r4   r/   r0   r,   r-   s   &&&$$ €r#   r<   r=   ]   s¶   ø€ ô< �œœe˜×%Ò%¬°%¯ª¼lÈ?×>[Ò>[à!�EàÒÜ)�?Ø˜+Ô%ô *€?ä�¤×%Ò%Ü# OÓ4€?ä�Ô!6×7Ò7Ü	Ø€Ñ˜+Ô&;Ð%<ð =$ð %ó
ð ô
 
‰Ñ	˜O¸GÐ	Ó	q€$Ü	Œd�DÓ	Ðr&   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Únamer   ÚpatternszSequence[Pattern]r   r   r!   )r"   s   "r#   r$   r%   ”   s&   € ÷ 0ñ 0Øð0àð0ð ñ0r&   c                ó   € \        W4      # )aD  
.. warning:: This method is not part of the public API. It is subject to
        change.

Create the backend for the patterns.

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

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

Returns the backend (:class:`._Backend`).
r   )rK   rL   s   &&r#   Ú_make_backendÚGitIgnoreSpec._make_backend’   s   € ô& 
  Ó	/Ð/r&   r!   r;   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r*   r
   Úclassmethodr<   r   ÚstaticmethodrN   Ú__static_attributes__Ú__classcell__)r-   s   @r#   r   r   0   sÊ   ø† ñ÷ð ð Øðð
 15ðð NRöó ó ðð Øñð
 15ðð NR÷ó ó ðð Øñ1ð
 15ð1ð NR÷1ò 1ó ó ð1ðf Øô0ó ó ö0r&   N)"rT   Ú
__future__r   Úcollections.abcr   r   Útypingr   r   r   r   r	   r
   Úpathspec.backendr   r   Úpathspec._backends.aggr   Úpathspec.pathspecr   Úpathspec.patternr   Ú!pathspec.patterns.gitignore.basicr   Ú pathspec.patterns.gitignore.specr   Úpathspec._typingr   r   Úpathspec.utilr   r   r   r   r!   r&   r#   Ú<module>rd      sg   ðñõ #÷÷÷ ÷õõõ
õõ÷÷ñ ˆv˜_Ô-€ðôu0�Hö u0r&   