§
    ïyIfO1  ã                   óê   — d Z ddlZddlZddlmZmZmZ ddlmZ ddl	m
Z
 dZ	 dZ	  G d	„ d
e¦  «        Z G d„ de
¦  «        Z ej        de¦  «          G d„ de¦  «        Z ej        de¦  «         dS )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                   ó   — e Zd ZdZdS )ÚGitWildMatchPatternErrorzW
	The :class:`GitWildMatchPatternError` indicates an invalid git wild match
	pattern.
	N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úR/var/www/piapp/venv/lib/python3.11/site-packages/pathspec/patterns/gitwildmatch.pyr   r      s   € € € € € ðð ð €r   r   c                   óž   — e Zd ZdZdZededeee         ee	         f         fd„¦   «         Z
ededefd„¦   «         Zededefd„¦   «         Zd	S )
ÚGitWildMatchPatternzX
	The :class:`GitWildMatchPattern` class represents a compiled Git wildmatch
	pattern.
	r   ÚpatternÚreturnc                 óX  — t          |t          ¦  «        rt          }nJt          |t          ¦  «        r"t          }|                     t          ¦  «        }nt          d|›d�¦  «        ‚|}|                     d¦  «        r|                     ¦   «         }n|                     ¦   «         }| 	                    d¦  «        rd}d}�n@|dk    rd}d}�n4|�r-| 	                    d¦  «        rd}|d	d…         }nd
}d}| 
                    d¦  «        }|d          }t          t          |¦  «        d	z
  dd¦  «        D ]$}	||	d	z
           }
||	         }|
dk    r	|dk    r||	= Œ%t          |¦  «        dk    r|d         dk    r|d	         sdt          › d�}|d         s|d= nRt          |¦  «        d	k    st          |¦  «        dk    r+|d	         s#|d         dk    r|                     dd¦  «         n	 |st          d|›�¦  «        ‚|d         st          |¦  «        d	k    rd|d<   |�€Ùdg}d}t          |¦  «        d	z
  }t!          |¦  «        D �]†\  }	}|dk    r•|	dk    r|	|k    r|                     d¦  «         Œ.|	dk    r|                     d¦  «         d}ŒL|	|k    r7|r|                     dt          › d�¦  «         Œs|                     d¦  «         Œ‰|                     d¦  «         d
}Œ¡|dk    rS|r|                     d¦  «         |                     d¦  «         |	|k    r|                     dt          › d�¦  «         d
}Œú|r|                     d¦  «         	 |                     |                      |¦  «        ¦  «         n%# t&          $ r}t          d|›�¦  «        |‚d}~ww xY w|	|k    r|                     dt          › d�¦  «         d
}�Œˆ|                     d¦  «         d                     |¦  «        }n|}nd}d}|�#|t          u r|                     t          ¦  «        }||fS )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`).
		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_regexz$GitWildMatchPattern.pattern_to_regex-   s
  € õ ��ÑÔð LÝ€;€;Ý�'�5Ñ!Ô!ð LÝ€;Ø�^Š^�OÑ,Ô,€7€7å	ÐJ˜gÐJÐJÐJÑ	KÔ	KÐKàÐà×Ò�eÑÔð ð �^Š^ÑÔ€7€7à�]Š]‰_Œ_€7à×Ò˜ÑÔð að €5Ø€7�7à�#‚~€~ð €5Ø€7�7àñ TØ×Ò˜ÑÔð ð €Gà�a�b�bŒk€G€Gà€Gð €>ð —-’- Ñ$Ô$€<ð % RÔ(Ð(€>õ •#�lÑ#Ô# aÑ'¨¨BÑ/Ô/ð ð €qØ˜˜!™Ô€DØ
�qŒ/€CØˆt‚|€|˜˜tš˜Ø	�aˆøå	ˆ,ÑÔ˜1ÒÐ ¨a¤°DÒ!8Ð!8ÀÈaÄÐ!8ð 1�yÐ0Ð0Ð0€Nà
�qŒ/ð 	ð 	�QˆˆåˆLÑÔ˜QÒÐ¥3 |Ñ#4Ô#4¸Ò#9Ð#9À,ÈqÄ/Ð#9ð �A„˜$ÒÐØ×Ò˜˜DÑ!Ô!Ð!øð 	à
ð Qõ #Ð#OÐ;KÐ#OÐ#OÑ
PÔ
PÐPà
�rÔ
ð �s <Ñ0Ô0°1Ò4Ð4ð
 €L�ÑàÑàˆU€FØ€JÝ
ˆlÑ
Ô
˜aÑ
€CÝ˜LÑ)Ô)ð :ñ :‰ˆˆ3ØˆtŠˆØ	
ˆaŠˆ�A˜’H�Hð ‡}‚}Ð%Ñ&Ô&Ð&Ð&à�Š6ˆ6ð ‡}‚}�ZÑ Ô Ð Ø€z€zà�Š8ˆ8ð ð Ø�ŠÐ-�YÐ-Ð-Ð-Ñ.Ô.Ð.Ð.à�Š�fÑÔÐÐð
 ‡}‚}�ZÑ Ô Ð Ø€z€zà
�Š*ˆ*à	ð Ø‡}‚}�SÑÔÐà‡m‚m�GÑÔÐà	
ˆcŠˆð ‡}‚}Ð1�yÐ1Ð1Ð1Ñ2Ô2Ð2à€j€jð 
ð Ø‡}‚}�SÑÔÐð[Ø‡}‚}�S×0Ò0°Ñ5Ô5Ñ6Ô6Ð6Ð6øÝð [ð [ð [Ý%Ð&RÐ>NÐ&RÐ&RÑSÔSÐYZÐZøøøøð[øøøð 
ˆcŠˆð ‡}‚}Ð1�yÐ1Ð1Ð1Ñ2Ô2Ð2à€j�jà
‡M‚M�#ÑÔÐØ�GŠG�F‰OŒO€E€Eð €E€Eð
 €5Ø€7à
Ð˜;­%Ð/Ð/Ø�<Š<�Ñ(Ô(€5à	�ˆÐs   Í(NÎ
N&ÎN!Î!N&c                 óâ  — d}d}dt          | ¦  «        }}||k     �r>| |         }|dz  }|rd}|t          j        |¦  «        z  }�n|dk    rd}�n|dk    r|dz  }n÷|d	k    r|d
z  }në|dk    rÎ|}||k     r| |         dk    s| |         dk    r|dz  }||k     r| |         dk    r|dz  }||k     r#| |         dk    r|dz  }||k     r| |         dk    °||k     r]|dz  }d}| |         dk    r|dz  }|dz  }n| |         dk    r
|dz  }|dz  }|| ||…                              dd¦  «        z  }||z  }|}n|dz  }n|t          j        |¦  «        z  }||k     �°>|rt	          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"   r   r   ú\Tr    z[^/]*ú?z[^/]ú[r   r   ú]z\\z\[z9Escape character found with no next character to escape: )r/   ÚreÚescapeÚreplacer5   )r   rN   r;   r@   rE   ÚcharÚjÚexprs           r   r4   z+GitWildMatchPattern._translate_segment_globõ   s#  € ð €&Ø
€%Ø�c�'‰lŒl€S€!Ø	ˆCŠ‰à
�!Œ*€4Øˆ�6€1àð Rà€FØ	�RŒY�t‰_Œ_Ñ€E�Eà�Šˆà€F�Fà�Šˆð 
ˆWÑ€E€Eà�Šˆð 
ˆV�O€E€Eà�Šˆð 	
€Að 	ˆ3‚w€w�G˜A”J #Ò%Ð%¨°¬°sÒ):Ð):Øˆ!�V€Qð 	ˆ3‚w€w�7˜1”: Ò$Ð$Øˆ!�V€Qð ˆcŠ'ˆ'�g˜a”j CÒ'Ð'Øˆ!�V€Qð ˆcŠ'ˆ'�g˜a”j CÒ'Ð'ð 	ˆ3‚w€wð ˆ!�V€QØ€Tà�Œ
�cÒÐà
ˆc�k€dØˆ1�f€a€aØ
�!Œ*˜Ò
Ð
ð ˆc�k€dØˆ1�f€að 
ˆW�Q�q�SŒ\×!Ò! $¨Ñ/Ô/Ñ/€Tð ˆd�]€Uð 
€Q€Qð
 ˆe�^€U€Uð 
�RŒY�t‰_Œ_Ñ€Eðo 	
ˆCŠ‰ðr ð ]Ý	Ð[ÐPWÐ[Ð[Ñ	\Ô	\Ð\à	€,r   Úsc                 óf  ‡— t          | t          ¦  «        r
t          }| }nJt          | t          ¦  «        r"t          }|                      t          ¦  «        }nt          d| ›d�¦  «        ‚dŠd                     ˆfd„|D ¦   «         ¦  «        }|t          u r|                     t          ¦  «        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`).
		zs:r   z[]!*#?r"   c              3   ó.   •K  — | ]}|‰v rd |z   n|V — ŒdS )rI   Nr   )Ú.0ÚxÚmeta_characterss     €r   ú	<genexpr>z-GitWildMatchPattern.escape.<locals>.<genexpr>z  s5   øè è € ÐOÐOÀ1 1¨Ð#7Ð#7�t˜a‘x�x¸QÐOÐOÐOÐOÐOÐOr   )r#   r$   r%   r&   r'   r(   r6   r7   )rS   r9   ÚstringÚ
out_stringrX   s       @r   rN   zGitWildMatchPattern.escaped  s»   ø€ õ �•3ÑÔð @Ý€;Ø€6€6Ý�!•UÑÔð @Ý€;Ø�HŠH•_Ñ%Ô%€6€6å	Ð>˜Ð>Ð>Ð>Ñ	?Ô	?Ð?ð €/à�wŠwÐOÐOÐOÐOÈÐOÑOÔOÑOÔO€*à•EÐÐØ
×
Ò
�OÑ
,Ô
,Ð,à
Ðr   N)r   r   r   r   Ú	__slots__Úclassmethodr   r   r   ÚboolrG   Ústaticmethodr$   r4   rN   r   r   r   r   r   $   sÒ   € € € € € ðð ð €àðEàðEð ˆH�VÔ˜h tœnÐ,Ô-ðEð Eð Eñ „+ðEðN ðl cð l¨cð lð lð lñ „,ðlð\ ðˆvð ˜&ð ð ð ñ „,ðð ð r   r   Úgitwildmatchc                   óV   ‡ — e Zd ZdZdˆ fd„Zedd„¦   «         Zeˆ fd„¦   «         Zˆ xZ	S )ÚGitIgnorePatternz“
	The :class:`GitIgnorePattern` class is deprecated by :class:`GitWildMatchPattern`.
	This class only exists to maintain compatibility with v0.4.
	r   Nc                 óp   •— |                       ¦   «           t          t          | ¦  «        j        |i |¤Ž dS )ú
		Warn about deprecation.
		N)Ú_deprecatedÚsuperrb   Ú__init__)ÚselfÚargsÚkwÚ	__class__s      €r   rg   zGitIgnorePattern.__init__Š  s@   ø€ ð ×ÒÑÔÐØ(…%Õ˜$ÑÔÔ(¨$Ð5°"Ð5Ð5Ð5Ð5Ð5r   c                  ó>   — t          j        dt          d¬¦  «         dS )rd   z_GitIgnorePattern ('gitignore') is deprecated. Use GitWildMatchPattern ('gitwildmatch') instead.é   )Ú
stacklevelN)ÚwarningsÚwarnÚDeprecationWarningr   r   r   re   zGitIgnorePattern._deprecated‘  s1   € õ
 „-ðå Að'ñ 'ô 'ð 'ð 'ð 'r   c                 ól   •— |                       ¦   «           t          t          | ¦  «        j        |i |¤ŽS )rd   )re   rf   rb   rG   )r8   ri   rj   rk   s      €r   rG   z!GitIgnorePattern.pattern_to_regex›  s8   ø€ ð
 ‡/‚/ÑÔÐØ	6�Õ Ñ	%Ô	%Ô	6¸Ð	CÀÐ	CÐ	CÐCr   )r   N)
r   r   r   r   rg   r_   re   r]   rG   Ú__classcell__)rk   s   @r   rb   rb   „  s•   ø€ € € € € ðð ð
6ð 6ð 6ð 6ð 6ð 6ð ð'ð 'ð 'ñ „,ð'ð ðDð Dð Dð Dñ „+ðDð Dð Dð Dð Dr   rb   Ú	gitignore)r   rM   ro   Útypingr   r   r   r"   r   r   r   r'   r0   r5   r   r   Úregister_patternrb   r   r   r   ú<module>rw      sX  ððð ð
 
€	€	€	Ø €€€ðð ð ð ð ð ð ð ð ð ð
 Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "à€ðð €	ððð ð ð ð ˜zñ ô ð ð[ð [ð [ð [ð [˜,ñ [ô [ð [ðz
 €Ô �nÐ&9Ñ :Ô :Ð :ðDð Dð Dð Dð DÐ*ñ Dô Dð DðB €Ô �kÐ#3Ñ 4Ô 4Ð 4Ð 4Ð 4r   