ó
    ßÅŸgO1  ã                   óÞ   • S r SSKrSSKrSSKJrJrJr  SSKJr  SSK	J
r
  Sr Sr  " S	 S
\5      r " S S\
5      r\R                   " S\5         " S S\5      r\R                   " S\5        g)z˜
This module implements Git's wildmatch pattern matching which itself is derived
from Rsync's wildmatch. Git uses wildmatch for its ".gitignore" files.
é    N)ÚAnyStrÚOptionalÚTupleé   )Úutil)ÚRegexPatternÚlatin1Úps_dc                   ó   • \ rS rSrSrSrg)ÚGitWildMatchPatternErroré   zT
The :class:`GitWildMatchPatternError` indicates an invalid git wild match
pattern.
© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    Ú_/var/www/blue/EV-Temp_rev04/venv/lib/python3.13/site-packages/pathspec/patterns/gitwildmatch.pyr   r      s   † ñò r   r   c                   ó†   • \ rS rSrSrSr\S\S\\	\   \	\
   4   4S j5       r\S\S\4S j5       r\S\S\4S	 j5       rSrg
)ÚGitWildMatchPatterné$   zU
The :class:`GitWildMatchPattern` class represents a compiled Git wildmatch
pattern.
r   ÚpatternÚreturnc                 ó’  • [        U[        5      (       a  [        nOA[        U[        5      (       a  [        nUR                  [        5      nO[        SU< S35      eUnUR                  S5      (       a  UR                  5       nOUR                  5       nUR                  S5      (       a  SnSnGOÐUS:X  a  SnSnGOÄU(       Ga¸  UR                  S5      (       a  SnUS	S nOS
nSnUR                  S5      nUS   (       + n[        [        U5      S	-
  SS5       H   n	XyS	-
     n
Xy   nU
S:X  d  M  US:X  d  M  Xy	 M"     [        U5      S:X  a  US   S:X  a  US	   (       d
  S[         S3nUS   (       d  US	 OE[        U5      S	:X  d  [        U5      S:X  a&  US	   (       d  US   S:w  a  UR                  SS5        O U(       d  [        SU< 35      eUS   (       d  [        U5      S	:”  a  SUS'   UGc„  S/nSn[        U5      S	-
  n[!        U5       GH>  u  p›US:X  aˆ  U	S:X  a  Xž:X  a  UR#                  S5        M*  U	S:X  a  UR#                  S5        SnME  Xž:X  a5  U(       a  UR#                  S[         S35        Ml  UR#                  S5        M  UR#                  S5        S
nM”  US:X  aK  U(       a  UR#                  S5        UR#                  S5        Xž:X  a  UR#                  S[         S35        S
nMå  U(       a  UR#                  S5         UR#                  U R%                  U5      5        Xž:X  a  UR#                  S[         S35        S
nGMA     UR#                  S5        SR)                  U5      nOUnOSnSnUb  U[        L a  UR+                  [        5      nXE4$ ! [&         a  n[        SU< 35      UeSnAff = f)aq  
Convert the pattern into a regular expression.

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

Returns the uncompiled regular expression (:class:`str`, :class:`bytes`, or
:data:`None`); and whether matched files should be included (:data:`True`),
excluded (:data:`False`), or if it is a null-operation (:data:`None`).
zpattern:ú! is not a unicode or byte string.z\ Ú#NÚ/Ú!Fé   Téÿÿÿÿr   z**r   z^.+(?P<z>/).*$zInvalid git pattern: Ú^z[^/]+(?:/.*)?z(?:.+/)?z(?P<z>/).*z/.*z(?:/.+)?Ú*z[^/]+z(?:(?P<z>/).*)?Ú$Ú )Ú
isinstanceÚstrÚbytesÚdecodeÚ_BYTES_ENCODINGÚ	TypeErrorÚendswithÚlstripÚstripÚ
startswithÚsplitÚrangeÚlenÚ	_DIR_MARKÚinsertr   Ú	enumerateÚappendÚ_translate_segment_globÚ
ValueErrorÚjoinÚencode)Úclsr   Úreturn_typeÚoriginal_patternÚregexÚincludeÚoverride_regexÚpattern_segsÚis_dir_patternÚiÚprevÚsegÚoutputÚ
need_slashÚendÚes                   r   Úpattern_to_regexÚ$GitWildMatchPattern.pattern_to_regex-   sº  € ô �œ×ÑÜ�;Ü�'œ5×!Ñ!Ü€;Ø�^‰^œOÓ,�7ä	�X˜g™[Ð(IÐJÓ	KÐKàÐà×Ñ�e×Ñð �^‰^Ó�7à�]‰]‹_€7à×Ñ˜×Ñð €5Ø‚7à�#ƒ~ð €5Ø‚7çØ×Ñ˜×Ñð €Gà�a�bˆk�Gà€Gð €>ð —-‘- Ó$€<ð % RÑ(Ô(€>ô ”#�lÓ# aÑ'¨¨BÖ/€qØ˜!™Ñ€DØ
‰/€CØˆt…|˜˜t�Ø	Šñ	 0ô 
ˆ,Ó˜1Ó ¨a¡°DÓ!8ÀÈaÇð œy˜k¨Ð0€Nà
�q�/ð 	�Q‰äˆLÓ˜QÓ¤3 |Ó#4¸Ó#9À,ÈqÇ/ð �A�˜$ÓØ×Ñ˜˜DÔ!øð 	æ
ô #Ð%:Ð;KÑ:NÐ#OÓ
PÐPà
�r×
œs <Ó0°1Ó4ð
 €L�ÑàÒàˆU€FØ€JÜ
ˆlÓ
˜aÑ
€CÜ˜L×)‰ˆØˆt‹Ø	
ˆa‹�A“Hð ‡}�}�}Ö&à�‹6ð ‡}�}�ZÔ Ø‚zà‹8ö Ø�‰˜œY˜K uÐ-Ö.à�‰˜Öð
 ‡}�}�ZÔ Ø‚zà
�‹*æ	Ø‡}�}�SÔà‡m�m�GÔà	
‹ð ‡}�}�wœy˜k¨Ð1Ô2à‚jö 
Ø‡}�}�SÔð[Ø‡}�}�S×0Ñ0°Ó5Ô6ð 
‹ð ‡}�}�wœy˜k¨Ð1Ô2àƒjñu *ðx ‡M�M�#ÔØ�G‰G�F‹O�Eð �Eð
 €5Ø€7à
Ñ˜;¬%Ò/Ø�<‰<œÓ(€5à	ˆÐøô7 ó [Ü%Ð(=Ð>NÑ=QÐ&RÓSÐYZÐZûð[ús   Ì N'Î'
OÎ1OÏOc                 óŒ  • SnSnS[        U 5      pCX4:  Ga  X   nUS-  nU(       a  SnU[        R                  " U5      -  nOãUS:X  a  SnOÚUS:X  a  US-  nOÎUS	:X  a  US
-  nOÂUS:X  a£  UnXd:  a  X   S:X  d  X   S:X  a  US-  nXd:  a  X   S:X  a  US-  nXd:  a  X   S:w  a  US-  nXd:  a
  X   S:w  a  M  Xd:  aI  US-  nSnX   S:X  a  US-  nUS-  nOX   S:X  a
  US-  nUS-  nXpX6 R                  SS5      -  nX'-  nUnOUS-  nOU[        R                  " U5      -  nX4:  a  GM  U(       a  [	        SU < 35      eU$ )a  
Translates the glob pattern to a regular expression. This is used in the
constructor to translate a path segment glob pattern to its corresponding
regular expression.

*pattern* (:class:`str`) is the glob pattern.

Returns the regular expression (:class:`str`).
Fr&   r   r!   Ú\Tr$   z[^/]*Ú?z[^/]Ú[r    r#   Ú]z\\z\[z9Escape character found with no next character to escape: )r3   ÚreÚescapeÚreplacer9   )r   rS   r?   rD   rI   ÚcharÚjÚexprs           r   r8   Ú+GitWildMatchPattern._translate_segment_globõ   s­  € ð €&Ø
€%ØŒc�'‹l€SØ	Œà
‰*€4Øˆ�6€1æà€FØ	ŒR�YŠY�t‹_Ñ�Eà�‹à�Fà�‹ð 
ˆWÑ�Eà�‹ð 
ˆV�O�Eà�‹ð 	
€Að 	ƒw�G‘J #Ó%¨©°sÓ):Øˆ!�V€Qð 	ƒw�7‘: Ó$Øˆ!�V€Qð ‹'�g‘j CÓ'Øˆ!�V€Qð ‹'�g‘j CÕ'ð 	ƒwð ˆ!�V€QØ€Tà‰
�cÓà
ˆc�k€dØˆ1�f�aØ
‰*˜Ó
ð ˆc�k€dØˆ1�f€að 
�Qˆ\×!Ñ! $¨Ó/Ñ/€Tð �]€Uð 
�Qð
 ˆe�^�Uð 
ŒR�YŠY�t‹_Ñ€Eðo 	
Žör Ü	ÐOÐPWÉ{Ð[Ó	\Ð\à	€,r   Úsc                 ó<  ^• [        U [        5      (       a	  [        nU nOA[        U [        5      (       a  [        nU R                  [        5      nO[        SU < S35      eSmSR                  U4S jU 5       5      nU[        L a  UR                  [        5      $ U$ )zð
Escape special characters in the given string.

*s* (:class:`str` or :class:`bytes`) a filename or a string that you want to
escape, usually before adding it to a ".gitignore".

Returns the escaped string (:class:`str` or :class:`bytes`).
zs:r   z[]!*#?r&   c              3   ó:   >#   • U H  oT;   a  S U-   OUv •  M     g7f)rN   Nr   )Ú.0ÚxÚmeta_characterss     €r   Ú	<genexpr>Ú-GitWildMatchPattern.escape.<locals>.<genexpr>z  s   øé € ÐOÉÀ1¨Ó#7�t˜a’x¸QÔ>Êùs   ƒ)r'   r(   r)   r*   r+   r,   r:   r;   )rY   r=   ÚstringÚ
out_stringr^   s       @r   rS   ÚGitWildMatchPattern.escaped  s‹   ø€ ô �”3×ÑÜ€;Ø�6Ü�!”U×ÑÜ€;Ø�H‰H”_Ó%�6ä	�R˜‘uÐ=Ð>Ó	?Ð?ð €/à�w‰wÔOÉÓOÓO€*à”EÒØ
×
Ñ
œOÓ
,Ð,à
Ðr   N)r   r   r   r   r   Ú	__slots__Úclassmethodr   r   r   ÚboolrK   Ústaticmethodr(   r8   rS   r   r   r   r   r   r   $   s“   † ñð €àðEàðEð ˆH�VÑ˜h t™nÐ,Ñ-óEó ðEðN ðl cð l¨có ló ðlð\ ðˆvð ˜&ó ó ór   r   Úgitwildmatchc                   óZ   ^ • \ rS rSrSrSU 4S jjr\SS j5       r\U 4S j5       r	Sr
U =r$ )ÚGitIgnorePatterni„  z�
The :class:`GitIgnorePattern` class is deprecated by :class:`GitWildMatchPattern`.
This class only exists to maintain compatibility with v0.4.
c                 óN   >• U R                  5         [        [        U ]  " U0 UD6  g)ú
Warn about deprecation.
N)Ú_deprecatedÚsuperrj   Ú__init__)ÚselfÚargsÚkwÚ	__class__s      €r   ro   ÚGitIgnorePattern.__init__Š  s&   ø€ ð ×ÑÔÜÔ˜$Ò(¨$Ð5°"Ó5r   c                  ó8   • [         R                  " S[        SS9  g)rl   z_GitIgnorePattern ('gitignore') is deprecated. Use GitWildMatchPattern ('gitwildmatch') instead.é   )Ú
stacklevelN)ÚwarningsÚwarnÚDeprecationWarningr   r   r   rm   ÚGitIgnorePattern._deprecated‘  s   € ô
 ‡-‚-ðä Aó'r   c                 óL   >• U R                  5         [        [        U ]  " U0 UD6$ )rl   )rm   rn   rj   rK   )r<   rq   rr   rs   s      €r   rK   Ú!GitIgnorePattern.pattern_to_regex›  s'   ø€ ð
 ‡/�/ÔÜ	Ô Ò	6¸Ð	CÀÑ	CÐCr   r   )r   N)r   r   r   r   r   ro   rg   rm   re   rK   r   Ú__classcell__)rs   s   @r   rj   rj   „  s7   ø† ñ÷
6ð ó'ó ð'ð ôDó öDr   rj   Ú	gitignore)r   rR   rx   Útypingr   r   r   r&   r   r   r   r+   r4   r9   r   r   Úregister_patternrj   r   r   r   Ú<module>r‚      s‹   ðñó
 
Û ÷ñ õ
 Ý "à€ðð €	ðô˜zô ô[˜,ô [ðz
 × Ò �nÐ&9Ô :ôDÐ*ô DðB × Ò �kÐ#3Õ 4r   