Ë N’I¸nöãóÞ—dZddlZddlZddlmZmZmZddlmZddl m Z dZ dZ Gd „d e «ZGd „d e «Zej d e«Gd„de«Zej de«y)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ó—eZdZdZy)ÚGitWildMatchPatternErrorzW The :class:`GitWildMatchPatternError` indicates an invalid git wild match pattern. N)Ú__name__Ú __module__Ú __qualname__Ú__doc__©óúC/usr/lib/python3.12/site-packages/pathspec/patterns/gitwildmatch.pyr r s „ñðrr cóx—eZdZdZdZededeeeee ffd„«Z e de de fd„«Z e dedefd„«Zy ) ÚGitWildMatchPatternzX The :class:`GitWildMatchPattern` class represents a compiled Git wildmatch pattern. rÚpatternÚreturncóÈ—t|t«rt}n;t|t«rt}|jt«}nt d|›d�«‚|}|j d«r|j«}n|j«}|jd«rd}d}�nƒ|dk(rd}d}�nx|�rq|jd«rd}|d d}nd }d}|jd«}|d  }tt|«d z d d «D]} || d z } || } | d k(sŒ| d k(sŒ|| =Œ t|«dk(r|d d k(r|d s dt›d�}|d s|d =n=t|«d k(st|«dk(r |d s|d d k7r|jd d «n |std|›�«‚|d st|«d kDrd |d <|�€jdg} d} t|«d z }t!|«D�]%\} } | d k(r|| d k(r| |k(r| j#d«Œ(| d k(r| j#d«d} ŒA| |k(r.|r| j#dt›d�«Œb| j#d«Œt| j#d«d } Œˆ| dk(rE| r| j#d«| j#d«| |k(r| j#dt›d�«d } ŒÒ| r| j#d« | j#|j%| ««| |k(r| j#dt›d�«d } �Œ(| j#d«dj)| «}n|}nd}d}|�|tur|j+t«}||fS#t&$r}td|›�«|‚d}~wwxYw)a 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`). zpattern:ú! is not a unicode or byte string.z\ Ú#NÚ/Ú!FéTéÿÿÿÿrz**rz^.+(?P/).*$zInvalid git pattern: Ú^z [^/]+(?:/.*)?z(?:.+/)?z(?P/).*z/.*z(?:/.+)?Ú*z[^/]+z(?:(?P/).*)?Ú$Ú)Ú 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_regexz$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Ø �q‰/€CØ ˆtƒ|˜˜t› Ø �a‰ð 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×)‰ˆˆ3Ø ˆtŠ Ø ˆaŠ�A˜’Hð‡}�}�}Õ&à �Š6ð‡}�}�ZÔ Ø�zà �Š8ñ Ø� ‰ ˜œY˜K uÐ-Õ.à� ‰ ˜Õð ‡}�}�ZÔ Ø�zà �Š*á Ø ‡}�}�SÔà ‡m�m�GÔà ˆcŠð‡}�}�wœy˜k¨Ð1Ô2à�jñ Ø ‡}�}�SÔð[Ø ‡}�}�S×0Ñ0°Ó5Ô6ð ˆcŠð‡}�}�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Ê4 MÍ M!Í MÍM!cóp—d}d}dt|«}}||k�r||}|dz }|rd}|tj|«z }nà|dk(rd}nØ|dk(r|dz }nÍ|d k(r|d z }nÂ|d k(r¥|}||kr||d k(s||d k(r|dz }||kr ||dk(r|dz }||kr||dk7r|dz }||kr ||dk7rŒ||krL|dz }d }||d k(r |d z }|dz }n||d k(r |d z }|dz }||||jdd«z }||z }|}n|dz }n|tj|«z }||kr�Œ|rt d|›�«‚|S)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"rrÚ\Tr z[^/]*Ú?z[^/]Ú[rrÚ]z\\z\[z9Escape character found with no next character to escape: )r/ÚreÚescapeÚreplacer5)rrNr;r@rEÚcharÚjÚexprs rr4z+GitWildMatchPattern._translate_segment_globõsÓ€ð €&Ø €%Ø Œc�'‹l€S€!Ø ˆC‹à �!‰*€4؈�6€1á à €FØ ŒR�Y‰Y�t‹_Ñ�Eà �Š à �Fà �Š ð ˆWÑ�Eà �Š ð ˆV�O�Eà �Š ð €Að ˆ3‚w�G˜A‘J #Ò%¨°©°sÒ):؈!�V€Qð ˆ3‚w�7˜1‘: Ò$؈!�V€Qð ˆcŠ'�g˜a‘j CÒ'؈!�V€Qð ˆcŠ'�g˜a‘j CÓ'ð ˆ3‚wðˆ!�V€QØ €Tà�‰ �cÒà ˆc�k€d؈1�f�aØ �!‰*˜Ò ð  ˆc�k€d؈1�f€að ˆW�Q�qˆ\× !Ñ ! $¨Ó /Ñ/€Tð ˆd�]€Uð �Qð  ˆe�^�Uð ŒR�Y‰Y�t‹_Ñ€Eðo ˆCŒñr Ü ÐOÐPWÈ{Ð[Ó \Ð\à €,rÚscó"‡—t|t«r t}|}n;t|t«rt}|jt«}nt d|›d�«‚dŠdj ˆfd„|D««}|tur|jt«S|S)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`). zs:rz[]!*#?r"c3ó4•K—|]}|‰vrd|zn|–—Œy­w)rINr)Ú.0ÚxÚmeta_characterss €rÚ z-GitWildMatchPattern.escape..zs"øèø€ÐOÉÀ1 1¨Ñ#7�t˜a’x¸QÓ>Éùsƒ)r#r$r%r&r'r(r6r7)rSr9ÚstringÚ out_stringrXs @rrNzGitWildMatchPattern.escapeds…ø€ô�”3ÔÜ€;Ø �6Ü�!”UÔÜ€;Ø �H‰H”_Ó %�6ä �R˜�uÐ=Ð>Ó ?Ð?ð€/à�w‰wÓOÉÓOÓO€*à”EÑØ × Ñ œOÓ ,Ð,à ÐrN)r rrrÚ __slots__Ú classmethodrrrÚboolrGÚ staticmethodr$r4rNrrrrr$s“„ñð €à ðEà ðEð ˆH�VÑ ˜h t™nÐ ,Ñ-òEóðEðNðl cðl¨còlóðlð\ðˆvð˜&òóñrrÚ gitwildmatchcóJ‡—eZdZdZdˆfd„ Zedd„«Zeˆfd„«ZˆxZ S)ÚGitIgnorePatternz“ The :class:`GitIgnorePattern` class is deprecated by :class:`GitWildMatchPattern`. This class only exists to maintain compatibility with v0.4. cóL•—|j«tt|�|i|¤Žy)ú Warn about deprecation. N)Ú _deprecatedÚsuperrbÚ__init__)ÚselfÚargsÚkwÚ __class__s €rrgzGitIgnorePattern.__init__Šs&ø€ð×ÑÔÜÔ˜$Ñ(¨$Ð5°"Ó5rcó<—tjdtd¬«y)rdz_GitIgnorePattern ('gitignore') is deprecated. Use GitWildMatchPattern ('gitwildmatch') instead.é)Ú stacklevelN)ÚwarningsÚwarnÚDeprecationWarningrrrrezGitIgnorePattern._deprecated‘s€ô  ‡-�-ðä Aö'rcóJ•—|j«tt|�|i|¤ŽS)rd)rerfrbrG)r8rirjrks €rrGz!GitIgnorePattern.pattern_to_regex›s'ø€ð ‡/�/ÔÜ Ô Ñ 6¸Ð CÀÑ CÐCr)rN) r rrrrgr_rer]rGÚ __classcell__)rks@rrbrb„s7ø„ñõ 6ðò'óð'ðóDóôDrrbÚ gitignore)rrMroÚtypingrrrr"rrrr'r0r5r rÚregister_patternrbrrrÚrws�ðñó  Û÷ñõ Ý"à€ðð € ðô ˜zôô[˜,ô[ðz €×Ñ�nÐ&9Ô:ôDÐ*ôDðB€×Ñ�kÐ#3Õ4r