intellecton/venv/lib/python3.12/site-packages/pathspec/__pycache__/pathspec.cpython-312.pyc

276 lines
20 KiB
Text
Raw Normal View History

<EFBFBD>
J<>j<>A<00><01><00>dZddlmZddlmZmZmZmZddlm Z ddl
m Z m Z m Z mZmZmZmZmZedd<07><08>Z dd lmZdd
lmZmZmZdd lmZdd lmZdd lmZddl m!Z!m"Z"ddl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+Gd<10>de e'<00>Z,y)zn
This module provides :class:`.PathSpec` which is an object-oriented interface
for pattern matching of files.
<EFBFBD>)<01> annotations)<04>
Collection<EFBFBD>Iterable<6C>Iterator<6F>Sequence)<01> zip_longest)<08>Callable<6C>Generic<69>Literal<61>Optional<61>TypeVar<61>Union<6F>cast<73>overload<61>Self<6C>PathSpec)<01>bound)<01>util)<03>BackendNamesHint<6E>_Backend<6E>_TestBackendFactoryHint<6E><01>make_pathspec_backend)<01>Pattern)<01>GitIgnoreBasicPattern)<02>AnyStr<74>
deprecated)<08> CheckResult<6C>StrPath<74>TPattern<72> TPattern_co<63>TStrPath<74> TreeEntry<72> _is_iterable<6C>normalize_filec<01><><00>eZdZdZddd<03> dd<04>Zdd<05>Zdd<06>Zdd<07>Zdd<08>Zdd <09>Z d d!d
<EFBFBD>Z
d d"d <0B>Z d# d$d <0C>Z e eddd<03> d%d <0A><06><00>Ze eddd<03> d&d<0E><06><00>Ze eddd<03> d'd<0F><06><00>Ze eddd<03> d(d<10><06><00>Zeddd<03> d)d<11><06>Ze d*d<12><04>Z d dd<13> d+d<14>Z d d,d<15>Z d dd<13> d-d<16>Z d#dd<13> d.d<17>Zed<18>d/d<19><04>Z d#dd<13> d0d<1A>Zy)1rzd
The :class:`PathSpec` class is a wrapper around a list of compiled
:class:`.Pattern` instances.
N<><02>backend<6E>_test_backend_factoryc<01><><00>t|t<00>r|}n t|<01>}|<02>d}tt|<02>}|<03> ||<04>}n|j ||<04>}||_ ||_ ||_y)a
Initializes the :class:`.PathSpec` instance.
*patterns* (:class:`~collections.abc.Sequence` or :class:`~collections.abc.Iterable`)
contains each compiled pattern (:class:`.Pattern`). If not a sequence, it
will be converted to a :class:`list`.
*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.
N<>best) <09>
isinstancer<00>listrr<00> _make_backend<6E>_backend<6E> _backend_name<6D>patterns)<07>selfr1r(r)<00> use_patterns<6E> backend_name<6D> use_backends <20>T/home/antigravity/intellecton/venv/lib/python3.12/site-packages/pathspec/pathspec.py<70>__init__zPathSpec.__init__=s~<00><00>&<10><08>(<28>#<23><1A><<3C><16>x<EFBFBD>.<2E><<3C> <0C>_<EFBFBD> <13>7<EFBFBD><15>&<26><07>0<>,<2C><1A>&<26>&<26>|<7C>4<>;<3B><15>#<23>#<23>L<EFBFBD>,<2C>?<3F>;<3B>'<27>$<24>-<2D><06>
*6<>$<24><14><06>*6<>$<24>-<2D><06>c<01>h<00>|jj<00>d|j<00>d|j<00>d<03>S)z7
Returns a debug representation of this path-spec.
z
(patterns=z
, backend=<3D>))<04> __class__<5F>__name__r1r0<00>r2s r6<00>__repr__zPathSpec.__repr__os5<00><00> <11>N<EFBFBD>N<EFBFBD> #<23> #<23> $<24>J<EFBFBD>t<EFBFBD>}<7D>}<7D>.?<3F>z<EFBFBD>$<24>J\<5C>J\<5C>I_<49>_`<60> a<>ar8c<01><><00>t|t<00>r5|jg|j<00>|j<00>|j<00><01>St
S)zn
Combines the :attr:`self.patterns <.PathSpec.patterns>` patterns from two
:class:`PathSpec` instances.
)r()r,rr;r1r0<00>NotImplemented<65>r2<00>others r6<00>__add__zPathSpec.__add__us@<00><00>
<10><05>x<EFBFBD> <20>
<0E>.<2E>.<2E>:<3A>4<EFBFBD>=<3D>=<3D>:<3A>5<EFBFBD>><3E>><3E>:<3A>D<EFBFBD>DV<44>DV<44>.<2E>
W<EFBFBD>W<>
<18>r8c<01><><00>t|t<00>r2t|j|j<00>}t d<01>|D<00><00>St
S)z<>
Tests the equality of this path-spec with *other* (:class:`PathSpec`) by
comparing their :attr:`self.patterns <.PathSpec.patterns>` attributes.
c3<01>,K<00>|] \}}||k(<00><01><00>y<00>w<01>N<>)<03>.0<EFBFBD>a<>bs r6<00> <genexpr>z"PathSpec.__eq__.<locals>.<genexpr><3E>s<00><00><><00> 1<><14><11>A<EFBFBD>a<EFBFBD>1<EFBFBD>f<EFBFBD> 1<>s<00>)r,rrr1<00>allr@)r2rB<00>paired_patternss r6<00>__eq__zPathSpec.__eq__s9<00><00>
<10><05>x<EFBFBD> <20> <20><14><1D><1D><05><0E><0E>?<3F>?<3F>
<0A> 1<><1F> 1<>
1<EFBFBD>1<>
<18>r8c<01><><00>t|t<00>rLg|j<00>|j<00>|_|j|j|j<00>|_|St S)zn
Adds the :attr:`self.patterns <.PathSpec.patterns>` from *other*
(:class:`PathSpec`) to this instance.
)r,rr1r.r0r/r@rAs r6<00>__iadd__zPathSpec.__iadd__<5F>sP<00><00>
<10><05>x<EFBFBD> <20>4<>T<EFBFBD>]<5D>]<5D>4<>U<EFBFBD>^<5E>^<5E>4<>4<EFBFBD>=<3D><17>%<25>%<25>d<EFBFBD>&8<>&8<>$<24>-<2D>-<2D>H<>4<EFBFBD>=<3D>
<0E>;<3B>
<18>r8c<01>,<00>t|j<00>S)zp
Returns the number of :attr:`self.patterns <.PathSpec.patterns>` this
path-spec contains (:class:`int`).
)<02>lenr1r=s r6<00>__len__zPathSpec.__len__<5F>s<00><00>
<0A>T<EFBFBD>]<5D>]<5D> <1B>r8c<01>p<00>t||<02>}|jj|<03>\}}t|||<05>S)a<>
Check the files against this path-spec.
*file* (:class:`str` or :class:`os.PathLike`) is the file path to be matched
against :attr:`self.patterns <.PathSpec.patterns>`.
*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 the file check result (:class:`.CheckResult`).
)r%r/<00>
match_filer)r2<00>file<6C>
separators<EFBFBD> norm_file<6C>include<64>indexs r6<00>
check_filezPathSpec.check_file<6C>s7<00><00>"<1D>T<EFBFBD>:<3A>.<2E>)<29><17>=<3D>=<3D>+<2B>+<2B>I<EFBFBD>6<>.<2E>'<27>5<EFBFBD> <14>T<EFBFBD>7<EFBFBD>E<EFBFBD> *<2A>*r8c#<01><>K<00>t|<01>std|<01>d<02><03><00>|D];}t||<02>}|jj |<04>\}}t |||<06><00><01><00>=y<03>w)a
Check the files against this path-spec.
*files* (:class:`~collections.abc.Iterable` of :class:`str` or
:class:`os.PathLike`) contains the file paths to be checked against
:attr:`self.patterns <.PathSpec.patterns>`.
*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 an :class:`~collections.abc.Iterator` yielding each file check
result (:class:`.CheckResult`).
<09>files:<3A> is not an iterable.N)r$<00> TypeErrorr%r/rUr)r2<00>filesrW<00> orig_filerXrYrZs r6<00> check_fileszPathSpec.check_files<65>sg<00><00><><00>&
<16>e<EFBFBD> <1C> <12>V<EFBFBD>E<EFBFBD>9<EFBFBD>$8<>9<> :<3A>:<3A><18>0<>i<EFBFBD><1D>i<EFBFBD><1A>4<>9<EFBFBD><18>M<EFBFBD>M<EFBFBD>,<2C>,<2C>Y<EFBFBD>7<>><3E>7<EFBFBD>E<EFBFBD> <14>Y<EFBFBD><07><15> /<2F>/<2F>0<>s<00>AAc#<01>rK<00>tj|||<03><01>}|j|<04>Ed{<00><02><02>y7<00><05>w)a<>
Walks the specified root path for all files and checks them against this
path-spec.
*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`.
*negate* (:class:`bool` or :data:`None`) is whether to negate the match
results of the patterns. If :data:`True`, a pattern matching a file will
exclude the file rather than include it. Default is :data:`None` for
:data:`False`.
Returns an :class:`~collections.abc.Iterator` yielding each file check
result (:class:`.CheckResult`).
<09><02>on_error<6F> follow_linksN)r<00>iter_tree_filesrb)r2<00>rootrerfr`s r6<00>check_tree_fileszPathSpec.check_tree_files<65>s0<00><00><><00>< <0F>
<1E>
<1E>t<EFBFBD>h<EFBFBD>\<5C>
R<EFBFBD>%<25> <11> <1D> <1D>e<EFBFBD> $<24>$<24>$<24>s <00>-7<01>5<04>7c<01><00>yrFrG<00><05>cls<6C>pattern_factory<72>linesr(r)s r6<00>
from_lineszPathSpec.from_lines<65><00><00><00>r8c<01><00>yrFrGrks r6rozPathSpec.from_lines<65>rpr8c<01><00>yrFrGrks r6rozPathSpec.from_linesrpr8c<01><00>yrFrGrks r6rozPathSpec.from_linesrpr8c<01><00>t|t<00>rtj|<01>}nt |<01>r|}nt d|<01>d<02><03><00>t |<02>st d|<02>d<04><03><00>|D<00>cgc] }|s<01>||<06><00><02>}}||||<04><05>}|Scc}w)a<>
Compiles the pattern lines.
*pattern_factory* can be either the name of a registered pattern factory
(:class:`str`), or a :class:`~collections.abc.Callable` used to compile
patterns. It must accept an uncompiled pattern (:class:`str`) and return the
compiled pattern (:class:`.Pattern`).
*lines* (:class:`~collections.abc.Iterable`) yields each uncompiled pattern
(:class:`str`). This simply has to yield each line so that it can be a
:class:`io.TextIOBase` (e.g., from :func:`open` or :class:`io.StringIO`) or
the result from :meth:`str.splitlines`.
*backend* (:class:`str` or :data:`None`) is the pattern (or 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:`PathSpec` instance.
zpattern_factory:z is not callable.zlines:r^r')r,<00>strr<00>lookup_pattern<72>callabler_r$) rlrmrnr(r)<00> use_factory<72>_PathSpec__liner1r2s r6rozPathSpec.from_liness<><00><00><<10><0F><13>%<25><15>$<24>$<24>_<EFBFBD>5<>;<3B><0F><0F> <20> <20>;<3B> <12>%<25>o<EFBFBD>%8<>8I<38>J<> K<>K<> <15>e<EFBFBD> <1C> <12>V<EFBFBD>E<EFBFBD>9<EFBFBD>$8<>9<> :<3A>:<3A>05<30> @<40>f<EFBFBD><16>k<EFBFBD>&<26>!<21> @<40>(<28> @<40> <0C>X<EFBFBD>w<EFBFBD>>S<> T<>$<24> <0A>+<2B><>As <00>"B<04>*
Bc<01><00>t||<01>S)aM
.. 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 matcher (:class:`._Backend`).
r)<02>namer1s r6r.zPathSpec._make_backendJs<00><00>$
<1F>t<EFBFBD>X<EFBFBD> .<2E>.r8<00><01>negatec#<01><>K<00>t|<01>std|<01>d<02><03><00>|D]B}t|j|<02>}|jj |<05>\}}|r| }|s<01>?|<04><01><00>Dy<03>w)a<>
Matches the entries to this path-spec.
*entries* (:class:`~collections.abc.Iterable` of :class:`.TreeEntry`)
contains the entries to be matched against :attr:`self.patterns <.PathSpec.patterns>`.
*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.
*negate* (:class:`bool` or :data:`None`) is whether to negate the match
results of the patterns. If :data:`True`, a pattern matching a file will
exclude the file rather than include it. Default is :data:`None` for
:data:`False`.
Returns the matched entries (:class:`~collections.abc.Iterator` of
:class:`.TreeEntry`).
zentries:r^N)r$r_r%<00>pathr/rU)r2<00>entriesrWr}<00>entryrXrY<00>_indexs r6<00> match_entrieszPathSpec.match_entries^sn<00><00><><00>2
<16>g<EFBFBD> <1E> <12>X<EFBFBD>g<EFBFBD>[<5B>(<<3C>=<3D> ><3E>><3E><16><10>e<EFBFBD><1D>e<EFBFBD>j<EFBFBD>j<EFBFBD>*<2A>5<>9<EFBFBD><19>]<5D>]<5D>-<2D>-<2D>i<EFBFBD>8<>?<3F>7<EFBFBD>F<EFBFBD> <0C><19>k<EFBFBD>G<EFBFBD> <0A>
<0F>K<EFBFBD><10>s <00>AA%<01>A%c<01>l<00>t||<02>}|jj|<03>\}}t|<04>S)a<>
Matches the file to this path-spec.
*file* (:class:`str` or :class:`os.PathLike`) is the file path to be matched
against :attr:`self.patterns <.PathSpec.patterns>`.
*separators* (:class:`~collections.abc.Collection` of :class:`str`)
optionally contains the path separators to normalize. See
:func:`.normalize_file` for more information.
Returns :data:`True` if *file* matched; otherwise, :data:`False`.
)r%r/rU<00>bool)r2rVrWrXrYr<>s r6rUzPathSpec.match_file<6C>s2<00><00>"<1D>T<EFBFBD>:<3A>.<2E>)<29><18>M<EFBFBD>M<EFBFBD>,<2C>,<2C>Y<EFBFBD>7<>/<2F>'<27>6<EFBFBD> <0A>g<EFBFBD><1D>r8c#<01><>K<00>t|<01>std|<01>d<02><03><00>|D]8}t||<02>}|jj |<05>\}}|r| }|s<01>5|<04><01><00>:y<03>w)a<>
Matches the files to this path-spec.
*files* (:class:`~collections.abc.Iterable` of :class:`str` or
:class:`os.PathLike`) contains the file paths to be matched against
:attr:`self.patterns <.PathSpec.patterns>`.
*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.
*negate* (:class:`bool` or :data:`None`) is whether to negate the match
results of the patterns. If :data:`True`, a pattern matching a file will
exclude the file rather than include it. Default is :data:`None` for
:data:`False`.
Returns the matched files (:class:`~collections.abc.Iterator` of
:class:`str` or :class:`os.PathLike`).
r]r^N)r$r_r%r/rU)r2r`rWr}rarXrYr<>s r6<00> match_fileszPathSpec.match_files<65>sj<00><00><><00>4
<16>e<EFBFBD> <1C> <12>V<EFBFBD>E<EFBFBD>9<EFBFBD>$8<>9<> :<3A>:<3A><18><14>i<EFBFBD><1D>i<EFBFBD><1A>4<>9<EFBFBD><19>]<5D>]<5D>-<2D>-<2D>i<EFBFBD>8<>?<3F>7<EFBFBD>F<EFBFBD> <0C><19>k<EFBFBD>G<EFBFBD> <0A>
<13>O<EFBFBD><14>s <00>AA<01>Ac#<01>vK<00>tj|||<03><01>}|j||<04><02>Ed{<00><02><02>y7<00><05>w)a<>
Walks the specified root path for all files and matches them to this
path-spec.
*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`.
*negate* (:class:`bool` or :data:`None`) is whether to negate the match
results of the patterns. If :data:`True`, a pattern matching a file will
exclude the file rather than include it. Default is :data:`None` for
:data:`False`.
Returns the matched files (:class:`~collections.abc.Iterator` of
:class:`.TreeEntry`).
rdr|N)r<00>iter_tree_entriesr<73>)r2rhrerfr}r<>s r6<00>match_tree_entrieszPathSpec.match_tree_entries<65>s6<00><00><><00>@ <11> "<22> "<22>4<EFBFBD>(<28><1C> V<>'<27> <11> <1F> <1F><07><06> <1F> 7<>7<>7<><37> <00>/9<01>7<04>9zEPathSpec.match_tree() is deprecated. Use .match_tree_files() instead.c<01>&<00>|j|i|<02><01>S)z<>
.. version-deprecated:: 0.3.2
This is an alias for the :meth:`self.match_tree_files <.PathSpec.match_tree_files>`
method.
)<01>match_tree_files)r2<00>args<67>kws r6<00>
match_treezPathSpec.match_tree<65>s<00><00>
<1F><14> <1E> <1E><04> +<2B><02> +<2B>+r8c#<01>vK<00>tj|||<03><01>}|j||<04><02>Ed{<00><02><02>y7<00><05>w)a<>
Walks the specified root path for all files and matches them to this
path-spec.
*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`.
*negate* (:class:`bool` or :data:`None`) is whether to negate the match
results of the patterns. If :data:`True`, a pattern matching a file will
exclude the file rather than include it. Default is :data:`None` for
:data:`False`.
Returns the matched files (:class:`~collections.abc.Iterable` of :class:`str`).
rdr|N)rrgr<>)r2rhrerfr}r`s r6r<>zPathSpec.match_tree_files<65>s5<00><00><><00>> <0F>
<1E>
<1E>t<EFBFBD>h<EFBFBD>\<5C>
R<EFBFBD>%<25> <11> <1D> <1D>e<EFBFBD>F<EFBFBD> <1D> 3<>3<>3<>r<EFBFBD>)r1z3Union[Sequence[TPattern_co], Iterable[TPattern_co]]r(<00>"Union[BackendNamesHint, str, None]r)r<00>return<72>None)r<>ru)r2rrBrr<>r)rB<00>objectr<74>r<>)r<><00>intrF)rVr"rW<00>Optional[Collection[str]]r<>zCheckResult[TStrPath])r`<00>Iterable[TStrPath]rWr<>r<>zIterator[CheckResult[TStrPath]])NN)rhrre<00>#Optional[Callable[[OSError], None]]rf<00>Optional[bool]r<>zIterator[CheckResult[str]]) rl<00>type[PathSpec]rmzLiteral['gitignore']rn<00>Iterable[AnyStr]r(r<>r)rr<>zPathSpec[GitIgnoreBasicPattern]) rlr<>rmrurnr<>r(r<>r)rr<>zPathSpec[Pattern]) rlr<>rmztype[TPattern]rnr<>r(r<>r)rr<><00>PathSpec[TPattern]) rlr<>rmzCallable[[AnyStr], TPattern]rnr<>r(r<>r)rr<>r<>) rlz
type[Self]rmz6Union[str, type[Pattern], Callable[[AnyStr], Pattern]]rnr<>r(r<>r)rr<>r)r{rr1zSequence[Pattern]r<>r)r<>zIterable[TreeEntry]rWr<>r}r<>r<><00>Iterator[TreeEntry])rVrrWr<>r<>r<>)r`r<>rWr<>r}r<>r<>zIterator[TStrPath])
rhrrer<>rfr<>r}r<>r<>r<>)r<><00> Iterator[str])
rhrrer<>rfr<>r}r<>r<>r<>)r<<00>
__module__<EFBFBD> __qualname__<5F>__doc__r7r>rCrNrPrSr[rbrir<00> classmethodro<00> staticmethodr.r<>rUr<>r<>rr<>r<>rGr8r6rr7s<00><00><05>15<31>37<33> 0<06> ?<3F>0<06> .<2E> 0<06>
1<> 0<06>  <0B> 0<06>db<01> <19> <19>
<19><1C>+/<2F>+<2B><10>+<2B>(<28>+<2B><1C> +<2B>0+/<2F>0<> <1B>0<>(<28>0<>&<26> 0<><37<33>!%<25> %<25><0F>%<25> 0<>%<25><1F> %<25>
!<21> %<25>B <0B> <0A> 15<31>37<33> <06><15><06>'<27><06>
<1A><06>
.<2E> <06> 1<> <06>&<26><06><0E> <0B><06> <0B> <0A> 15<31>37<33> <06><15><06><16><06>
<1A><06>
.<2E> <06> 1<> <06><18><06><0E> <0B><06> <0B> <0A> 15<31>37<33> <06><15><06>!<21><06>
<1A><06>
.<2E> <06> 1<> <06><19><06><0E> <0B><06> <0B> <0A> 15<31>37<33> <06><15><06>/<2F><06>
<1A><06>
.<2E> <06> 1<> <06><19><06><0E> <0B><06><0E> 15<31>37<33> )<0E><11>)<0E>I<>)<0E>
<1A>)<0E>
.<2E> )<0E> 1<> )<0E> <0B>)<0E><0E>)<0E>V<0F>/<2F><18>/<2F> <1D>/<2F><0F>/<2F><0F>/<2F>,+/<2F>$<10>
 <20> $<10> <1E>$<10>(<28>$<10>
<19> $<10> <1A> $<10>R+/<2F><17><0F><17>(<28><17> <0B> <17>0+/<2F>%<14>
 <20> %<14> <1B>%<14>(<28>%<14>
<19> %<14> <19> %<14>T37<33>!%<25> !8<>  <20> !8<><0F>!8<> 0<>!8<><1F> !8<> <19> !8<><1A>!8<>H <0A>I<><04>,<2C><04>,<2C>37<33>!%<25> 4<>  <20> 4<><0F> 4<> 0<> 4<><1F> 4<> <19> 4<><14> 4r8N)-r<><00>
__future__r<00>collections.abcrrrr<00> itertoolsr<00>typingr r
r r r rrrr<00>pathspecr<00>pathspec.backendrrr<00>pathspec._backends.aggr<00>pathspec.patternr<00>!pathspec.patterns.gitignore.basicr<00>pathspec._typingrr<00> pathspec.utilrrr r!r"r#r$r%rrGr8r6<00><module>r<>s<><00><01><04>#<23> <0B> <0B>
<0E> <0B> <0B> <0B><0F>v<EFBFBD>Z<EFBFBD>(<28><04><04>
<1A><1A><1A><18>
<EFBFBD><18> <0A><11><11><11>X4<>w<EFBFBD>{<7B>#<23>X4r8