+
    …rœiæ  ã                  ó´   € R t ^ RIHt ^ RIHtHtHt  ^ RIt^ RI	H
t
 ^ RIHtHtHtHt ^ RIHt ^RIHtHt ^RIHt  ! R	 R
]4      tR#   ] d    Rt L>i ; i)zß
This module provides the :module:`re2` backend for :class:`~pathspec.gitignore.GitIgnoreSpec`.

WARNING: The *pathspec._backends.re2* package is not part of the public API. Its
contents and structure are likely to change.
)Úannotations)ÚCallableÚOptionalÚUnionN)ÚRegexPattern)ÚGitIgnoreSpecPatternÚ_BYTES_ENCODINGÚ_DIR_MARK_CGÚ_DIR_MARK_OPT)Úoverride)ÚRe2RegexDatÚRe2RegexDebug)ÚRe2PsBackendc                  óP   € ] tR t^$tRt]]R R l4       4       t]R R l4       tRt	R# )ÚRe2GiBackendzŒ
The :class:`Re2GiBackend` class is the :module:`re2` implementation used by
:class:`~pathspec.gitignore.GitIgnoreSpec` for matching files.
c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )é   ÚdebugÚboolÚpatternszdict[int, RegexPattern]Ú	regex_setzre2.SetÚsort_indicesz%Optional[Callable[[list[int]], None]]Úreturnzlist[Re2RegexDat]© )Úformats   "ÚB/usr/lib/python3/dist-packages/pathspec/_backends/re2/gitignore.pyÚ__annotate__ÚRe2GiBackend.__annotate__,   sA   € ÷ Wñ WØ	ðWà#ðWð ðWð 6ð	Wð
 ñWó    c                ó"  € \        VP                  4       4      pVe	   V! V4       . pV EFÐ  pW,          pVP                  f   K  \        V\        4      '       g   Q V4       hVP
                  P                  p. p	\        V\        4      '       dÛ   \        V\        4      '       d   Tp
M2\        V\        4      '       g   Q V4       hVP                  \        4      p
\        V
9   d…   V
P                  \        4      '       dA   V
R\        \        4      )  pV	P!                  V R2R34       V	P!                  V R2R34       M)V
P#                  \        R4      pV	P!                  VR34       V	'       g   V	P!                  VR34       V	 Fn  w  rŒV '       d*   VP!                  \%        VP                  VVVR7      4       M'VP!                  \'        VP                  VVR7      4       VP)                  V4       Kp  	  EKÓ  	  VP+                  4        V# )a>  
Create the re2 regex set.

*debug* (:class:`bool`) is whether to include additional debugging
information for the regular expressions.

*patterns* (:class:`dict`) maps pattern index (:class:`int`) to pattern
(:class:`.RegexPattern`).

*regex_set* (:class:`re2.Set`) is the regex set.

*sort_indices* (:class:`callable` or :data:`None`) is a function used to
sort the patterns by index. This is used during testing to ensure the order
of patterns is not accidentally relied on.

Returns a :class:`list` indexed by regex id (:class:`int`) to its data
(:class:`Re2RegexDat`).
NÚ/TÚ$F)ÚincludeÚindexÚis_dir_patternÚregex)r"   r#   r$   )ÚlistÚkeysr"   Ú
isinstancer   r%   Úpatternr   ÚstrÚbytesÚdecoder   r	   Úendswithr
   ÚlenÚappendÚreplacer   r   ÚAddÚCompile)r   r   r   r   ÚindicesÚ
regex_dataÚpattern_indexr)   r%   Úuse_regexesÚ	regex_strÚ
base_regexr$   s   &&&&         r   Ú	_init_setÚRe2GiBackend._init_set*   sÙ  € ô6 �—‘“Ó!€'ØÒÙ�Ôð #%€*Ü€mØÕ$€7Ø‡o�oÒÙä
�Wœl×
+Ò
+Ð4¨WÓ4Ð
+Ø�=‰=× Ñ €5à79€;Ü�Ô.×/Ò/ô
 �%œ×ÒØ�Yä�uœe×$Ò$Ð+ eÓ+Ð$Ø—‘œoÓ.€Yä�yÔ à×Ñœ=×)Ò)ð Ð1œs¤=Ó1Ð1Ð2€jØ×Ñ˜Z˜L¨Ð*¨DÐ1Ô2Ø×Ñ˜Z˜L¨Ð*¨EÐ2Õ3ð ×$Ñ$¤\°3Ó7€jØ×Ñ˜* dÐ+Ô,ç
à×Ñ˜˜u�~Ô&ã +Ñ€ußØ×Ñ”}Ø�o‰oØØ#Øô	õ ð ×Ñ”{Ø�o‰oØØ#ôô ð ‡M�M�%Öô !,ñK ðn ×ÑÔØ	Ðr   c               ó    € V ^8„  d   QhRRRR/# )r   Úfiler*   r   z$tuple[Optional[bool], Optional[int]]r   )r   s   "r   r   r   †   s   € ÷ -"ñ -"˜Cð -"Ð$Hñ -"r   c                óz  € V P                   P                  V4      pV'       g   R# RpRpRpV P                  pV Fl  pWg,          pVP                  p	V	'       d   ^p
M^p
VP                  pVP
                  pV'       d   V	'       d   WÄ8”  g   W¥8X  d   WÄ8”  g	   W¥8”  g   Kf  TpTpT
pKn  	  VR8w  g
   Q WCV34       hW43# )a  
Check the file against the patterns.

*file* (:class:`str`) is the normalized file path to check.

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éÿÿÿÿ)Ú_setÚMatchÚ_regex_datar$   r"   r#   )Úselfr<   Ú	match_idsÚout_includeÚ	out_indexÚout_priorityr4   Úregex_idÚ	regex_datr$   Úpriorityr"   r#   s   &&           r   Ú
match_fileÚRe2GiBackend.match_file…   sÆ   € ð $(§9¡9§?¡?°4Ó#8€)ß	Ø
Ðà $€+Ø€)Ø€,à×Ñ€*Û€hØÕ#€9à×,Ñ,€>ßà�Hð €Hð ×Ñ€7Ø�?‰?€5ç— EÔ$5ØÔ  UÔ%6ØÖà€KØ€IØ‚Lñ- ð0 
�bŒÐ@˜9°<Ð@Ó@ˆØ
Ð	!Ð!r   r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ústaticmethodr9   rJ   Ú__static_attributes__r   r   r   r   r   $   s:   † ñð
 ØôWó ó ðWðr ô-"ó ô-"r   r   )rP   Ú
__future__r   Útypingr   r   r   Úre2ÚModuleNotFoundErrorÚpathspec.patternr   Ú pathspec.patterns.gitignore.specr   r   r	   r
   Úpathspec._typingr   Ú_baser   r   Úpathspecr   r   r   r   r   Ú<module>r\      sc   ðñõ #÷ñ ð
Ûõ÷ó õ
÷õôO"�<ö O"øð) ô Ø‚ðús   ”A Á	AÁA