+
    …rœiÄ&  ã                   ó†   € R t ^ RIHt ^ RIHt ^ RIHtHtHt ^RI	H
t
HtHt  ! R R]4      t]P                  ! R]4       R# )	zÿ
This module provides :class:`GitIgnoreBasicPattern` which implements Git's
`gitignore`_ patterns as documented. This differs from how Git actually behaves
when including files in excluded directories.

.. _`gitignore`: https://git-scm.com/docs/gitignore
)ÚOptional)Úutil)ÚAnyStrÚassert_unreachableÚoverride)ÚGitIgnorePatternErrorÚ_BYTES_ENCODINGÚ_GitIgnoreBasePatternc                   ó†   a € ] tR t^t o RtRt]V 3R lR l4       t]]	V 3R lR l4       4       t
]	V 3R lR l4       tRtV tR	# )
ÚGitIgnoreBasicPatternz„
The :class:`GitIgnoreBasicPattern` class represents a compiled gitignore
pattern as documented. This is registered as "gitignore".
c          	      ó‚   <€ V ^8„  d   QhRS[ RS[S[,          RS[S[S[S[,          ,          S[S[,          3,          /# )é   Úis_dir_patternÚpattern_segsÚreturn)ÚboolÚlistÚstrÚtupler   )ÚformatÚ__classdict__s   "€ÚC/usr/lib/python3/dist-packages/pathspec/patterns/gitignore/basic.pyÚ__annotate__Ú"GitIgnoreBasicPattern.__annotate__"   sG   ø€ ÷ Zñ ZÙðZá‘S•	ðZñ ‰H‘T™#•YÕ¡©#¥Ð.Õ/ñZó    c                óÆ  € V^ ,          '       g   V^  MQ\        V4      ^8X  g    \        V4      ^8X  d1   V^,          '       g"   V^ ,          R8w  d   VP                  ^ R4       M V'       g   \        R4      hVR,          '       g   RVR&   \        \        V4      ^,
          ^ R4       F.  pW^,
          ,          pW,          pVR8X  g   K#  VR8X  g   K,  W K0  	  \        V4      pV^8X  d   V^ ,          R8X  d   V '       d   R# R# V^8X  d   V^ ,          R8X  d   V^,          R8X  d   R# V^8X  d-   V^ ,          R8X  d   V^,          R8X  d   V^,          R8X  d   R# VR3# )aÕ  
Normalize the pattern segments to make processing easier.

*is_dir_pattern* (:class:`bool`) is whether the pattern is a directory
pattern (i.e., ends with a slash '/').

*pattern_segs* (:class:`list` of :class:`str`) contains the pattern
segments. This may be modified in place.

Returns a :class:`tuple` containing either:

- The normalized segments (:class:`list` of :class:`str`; or :data:`None`).

- The regular expression override (:class:`str` or :data:`None`).
ú**zPattern normalized to nothing.NÚ*éÿÿÿÿ)NÚ/)NÚ.)ÚlenÚinsertÚ
ValueErrorÚrange)r   r   ÚiÚprevÚsegÚ	seg_counts   &&    r   Ú__normalize_segmentsÚ*GitIgnoreBasicPattern.__normalize_segments!   sc  € ð( 
�a�Œð �A�ä
ˆ<Ó˜AÔ¤# lÓ"3°qÔ"8ÀÈaÇÄð �1…o˜ÔØ×Ñ˜˜4Ô øð ç	ô 
Ð4Ó	5Ð5à	�b×	Ô	ð
 €<�Ñô
 ”�\Ó" QÕ&¨¨2Ö.€aØ
˜•sÕ
€4Ø	�€3Ø
ˆd†l�s˜d–{ØŠñ	 /ô �,Ó€)Ø�!„^˜ Q�¨4Ô/ßð Ðð Ðð �„>Ø�A…˜$ÔØ�A…˜#Ôð Ðð �„>Ø�A…˜$ÔØ�A…˜#ÔØ�A…˜$Ôð
 Ðð ˜Ð	Ðr   c                ó\   <€ V ^8„  d   QhRS[ RS[S[S[ ,          S[S[,          3,          /# )r   Úpatternr   )r   r   r   r   )r   r   s   "€r   r   r   €   s6   ø€ ÷ tñ táðtñ ‰H‘VÕ™h¡t�nÐ,Õ-ñtr   c                óŠ  € \        V\        4      '       d
   Tp\        pMB\        V\        4      '       d   VP                  \        4      p\        pM\        RV: R24      hTp?VP                  R4      '       d   MVP                  4       pV'       g   R# VP                  R4      '       d   R# VP                  R4      '       d   RpVR,          pMR	pVP                  R
4      pVR,          '       * pVR
8X  d   Rp V P                  Wv4      w  rhTe   Tp
M<Te%    T P                  T4      pRP                  T4      p
M\        RT: RT: R24       X
e#   T\        J d   T
P!                  \        4      pYÅ3# T
pYÅ3#   \         d   p	\        RT: 24      T	hRp	?	ii ; i  \         d   p	\        RT: 24      T	hRp	?	ii ; i)a  
Convert the pattern into a regular expression.

*pattern* (:class:`str` or :class:`bytes`) is the pattern to convert into a
regular expression.

Returns a :class:`tuple` containing:

        -       *pattern* (:class:`str`, :class:`bytes` or :data:`None`) is the
                uncompiled regular expression.

        -       *include* (:class:`bool` or :data:`None`) is whether matched files
                should be included (:data:`True`), excluded (:data:`False`), or is a
                null-operation (:data:`None`).
zpattern=z! is not a unicode or byte string.z\ NÚ#Ú!F:é   NNTr   zInvalid git pattern: Ú zoverride_regex=z and pattern_segs=z cannot both be null.)NNr   )Ú
isinstancer   ÚbytesÚdecoder   Ú	TypeErrorÚendswithÚrstripÚ
startswithÚsplitÚ*_GitIgnoreBasicPattern__normalize_segmentsr#   r   Ú*_GitIgnoreBasicPattern__translate_segmentsÚjoinr   Úencode)Úclsr,   Úpattern_strÚreturn_typeÚoriginal_patternÚincluder   r   Úoverride_regexÚeÚregexÚregex_partsÚ	out_regexs   &&           r   Úpattern_to_regexÚ&GitIgnoreBasicPattern.pattern_to_regex~   s  € ô* �œ×ÒØ€;Ü�;Ü�'œ5×!Ò!Ø—‘¤Ó0€;Ü�;ä	�h�g‘\Ð!BÐCÓ	DÐDà ÐØà×Ñ˜%× Ò ð ð ×#Ñ#Ó%€;÷
 
ð Ðà×Ñ˜c×"Ò"ð Ðà×Ñ˜C× Ò ð €7à˜R•�;à€7ð ×"Ñ" 3Ó'€,ð $ BÕ'Ô'€.à�CÔð €>ðØ"%×":Ñ":Øó#Ñ€<ð Òà�5àÒðØ×*Ñ*¨<Ó8€Kð �7‰7�;Ó�5ô Ø€~ÑÐ*˜\™OÐ+@ÐAôð Ò˜;¬%Ó/Ø�|‰|œOÓ,€9ð Ð	Ðð €9à
Ð	ÐøôA 
ô Ü	ØÐ,Ñ/Ð0ó
àðûðûô ô Ü
ØÐ-Ñ0Ð1óàðûðús0   Ã>E? ÄF" Å?FÆ
FÆFÆ"GÆ-F=Æ=Gc                óF   <€ V ^8„  d   QhRS[ S[,          RS[ S[,          /# )r   r   r   )r   r   )r   r   s   "€r   r   r   ÷   s'   ø€ ÷ Bñ B©T±#­Yð B¹4Á½9ñ Br   c                óN  € . pRp\        V4      ^,
          p\        V4       Fÿ  w  rVVR8X  dW   V^ 8X  d   VP                  R4       K&  WT8  d   VP                  R4       RpKA  WT8X  g	   Q WT34       hVP                  R4       Kb  V^ 8X  d   VP                  R4       V'       d   VP                  R4       VR8X  d   VP                  R	4       M VP                  V P                  V4      4       WT8X  d+   VR8X  d   VP                  R
4       MVP                  R4       RpEK  	  V# )zÎ
Translate the pattern segments to regular expressions.

*pattern_segs* (:class:`list` of :class:`str`) contains the pattern
segments.

Returns the regular expression parts (:class:`list` of :class:`str`).
Fr   z	^(?:.+/)?z(?:/.+)?Tr   Ú^r   z[^/]+z/?$z(?:/|$))r!   Ú	enumerateÚappendÚ_translate_segment_glob)r>   r   Ú	out_partsÚ
need_slashÚendr%   r'   s   &&     r   Ú__translate_segmentsÚ*GitIgnoreBasicPattern.__translate_segmentsö   s  € ð €)Ø€*ÜˆLÓ˜AÕ€#Ü˜,Ö'�f€aØ	ˆT„kØˆA„vð
 ×Ñ�kÖ"à	
Œð ×Ñ�jÔ!Ø‚Zð ŒHÐ�q�hÓˆHð ×Ñ�cÖð 	ˆA„và×Ñ�cÔçØ×Ñ�cÔà
ˆc„zà×Ñ�gÕð ×Ñ�c×1Ñ1°#Ó6Ô7à„xØˆsŒ
ð ×Ñ�uÕð ×Ñ�yÔ!àƒJñg (ðj 
Ðr   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__Ústaticmethodr:   r   ÚclassmethodrH   r;   Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r      s[   ø‡ € ñð €à÷Zó ðZðx Ø÷tó ó ðtðl ÷Bó öBr   r   Ú	gitignoreN)rZ   Útypingr   Úpathspecr   Úpathspec._typingr   r   r   Úbaser   r   r	   r   Úregister_patternrU   r   r   Ú<module>rf      sK   ðñõõ ÷ñ ÷
ñ ôaÐ1ô aðJ	 × Ò �kÐ#8Ö 9r   