+
    ®¾jX7  ã                   óR  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^RIHt ^RIH	t	 ^RI
Ht R.t]P                  ! ]4      t]P                   ! R]P"                  4      t]P                   ! R]P"                  ]P&                  ,          4      t]P*                  R,          t ! R	 R]4      tR# )
zu
Class representing the list of files in a distribution.

Equivalent to distutils.filelist, but fixes some problems.
N)ÚDistlibException)Úfsdecode)Úconvert_pathÚManifestz\\w*
z#.*?(?=
)|
(?=$):Né   Nc                   ó€   a € ] tR t^&t o RtRR ltR tR tR tRR lt	R t
R	 tR
 tRR ltRR ltRR ltR tRtV tR# )r   zt
A list of files built by exploring the filesystem and filtered by applying various
patterns to what we find there.
Nc                ó:  € \         P                  P                  \         P                  P                  T;'       g    \         P                  ! 4       4      4      V n        V P
                  \         P                  ,           V n        RV n        \        4       V n
        R# )zL
Initialise an instance.

:param base: The base directory to explore under.
N)ÚosÚpathÚabspathÚnormpathÚgetcwdÚbaseÚsepÚprefixÚallfilesÚsetÚfiles)Úselfr   s   &&Ú[/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/pip/_vendor/distlib/manifest.pyÚ__init__ÚManifest.__init__,   sY   € ô —G‘G—O‘O¤B§G¡G×$4Ñ$4°T×5HÐ5H¼R¿YºY»[Ó$IÓJˆŒ	Ø—i‘i¤"§&¡&Õ(ˆŒØˆŒÜ“UˆŽ
ó    c                ó   € ^ RI HpHpHp . ;V n        pV P
                  pV.pVP                  pVP                  pV'       d¼   V! 4       p\        P                  ! V4      p	V	 F–  p
\        P                  P                  WZ4      p\        P                   ! V4      pVP                  pV! V4      '       d   VP                  \        V4      4       Kn  V! V4      '       g   K~  V! V4      '       d   KŽ  V! V4       K˜  	  KÃ  R# )z]Find all files under the base and set ``allfiles`` to the absolute
pathnames of files found.
)ÚS_ISREGÚS_ISDIRÚS_ISLNKN)Ústatr   r   r   r   r   ÚpopÚappendr	   Úlistdirr
   ÚjoinÚst_moder   )r   r   r   r   r   ÚrootÚstackr   ÚpushÚnamesÚnameÚfullnamer   Úmodes   &             r   ÚfindallÚManifest.findall;   s¼   € ÷ 	3Ñ2à#%Ð%ˆŒ˜Ø�y‰yˆØ�ˆØ�i‰iˆØ�|‰|ˆçÙ“5ˆDÜ—J’J˜tÓ$ˆEã�ÜŸ7™7Ÿ<™<¨Ó3�ô —w’w˜xÓ(�Ø—|‘|�Ù˜4—=’=Ø—O‘O¤H¨XÓ$6Ö7Ù˜T—]”]©7°4¯=¬=Ù˜–Nó ñ	 r   c                ó  € VP                  V P                  4      '       g+   \        P                  P	                  V P
                  V4      pV P                  P                  \        P                  P                  V4      4       R# )zb
Add a file to the manifest.

:param item: The pathname to add. This can be relative to the base.
N)	Ú
startswithr   r	   r
   r!   r   r   Úaddr   )r   Úitems   &&r   r.   ÚManifest.addV   sN   € ð �‰˜tŸ{™{×+Ò+Ü—7‘7—<‘< §	¡	¨4Ó0ˆDØ�
‰
�‰”r—w‘w×'Ñ'¨Ó-Ö.r   c                ó:   € V F  pV P                  V4       K  	  R# )zn
Add a list of files to the manifest.

:param items: The pathnames to add. These can be relative to the base.
N)r.   )r   Úitemsr/   s   && r   Úadd_manyÚManifest.add_many`   s   € ó ˆDØ�H‰H�TŽNó r   c                óV  a a€ VV 3R lo\        S P                  4      pV'       dB   \        4       pV F)  pS! V\        P                  P	                  V4      4       K+  	  W#,          p\        R V 4       4       Uu. uF!  p\        P                  P                  ! V!  NK#  	  up# u upi )z(
Return sorted files in directory order
c                 óà   <€ V P                  V4       \        P                  R V4       VSP                  8w  d5   \        P
                  P                  V4      w  r#VR9  g   Q hS! W4       R# R# )zadd_dir added %sN)Ú Ú/)r.   ÚloggerÚdebugr   r	   r
   Úsplit)ÚdirsÚdÚparentÚ_Úadd_dirr   s   &&  €€r   r@   Ú Manifest.sorted.<locals>.add_dirn   sW   ø€ Ø�H‰H�QŒKÜ�L‰LÐ+¨QÔ/Ø�D—I‘IŒ~ÜŸG™GŸM™M¨!Ó,‘	�Ø YÔ.Ð.Ð.Ù˜Ö%ñ r   c              3   ó`   "  € T F$  p\         P                  P                  V4      x € K&  	  R # 5i©N)r	   r
   r;   )Ú.0r
   s   & r   Ú	<genexpr>Ú"Manifest.sorted.<locals>.<genexpr>}   s    é € Ð>±v¨t”r—w‘w—}‘} T×*Ð*³vùs   ‚,.)r   r   r	   r
   ÚdirnameÚsortedr!   )r   ÚwantdirsÚresultr<   ÚfÚ
path_tupler@   s   f&    @r   rH   ÚManifest.sortedi   sŠ   ù€ ö
	&ô �T—Z‘Z“ˆßÜ“5ˆDÛ�Ù˜œbŸg™gŸo™o¨aÓ0Ö1ñ à�NˆFäÑ>±vÓ>Ô>ó@Ù>ð /9”—‘—’˜jÔ)Ù>ñ@ð 	@ùò @s   Á<'B&c                ó2   € \        4       V n        . V n        R# )zClear all collected files.N)r   r   r   )r   s   &r   ÚclearÚManifest.clear   s   € ä“UˆŒ
ØˆŽr   c                ó¢  € V P                  V4      w  r#rEVR8X  d=   V F4  pV P                  VRR7      '       d   K  \        P                  RV4       K6  	  R# VR8X  d   V F  pV P	                  VRR7       K  	  R# VR8X  d=   V F4  pV P                  VRR7      '       d   K  \        P                  RV4       K6  	  R# VR	8X  d   V F  pV P	                  VRR7       K  	  R# VR
8X  d<   V F3  pV P                  WdR7      '       d   K  \        P                  RWd4       K5  	  R# VR8X  d   V F  pV P	                  WdR7       K  	  R# VR8X  d4   V P                  RVR7      '       g   \        P                  RV4       R# R# VR8X  d4   V P	                  RVR7      '       g   \        P                  RV4       R# R# \        RV,          4      h)aF  
Process a directive which either adds some files from ``allfiles`` to
``files``, or removes some files from ``files``.

:param directive: The directive to process. This should be in a format
             compatible with distutils ``MANIFEST.in`` files:

             http://docs.python.org/distutils/sourcedist.html#commands
ÚincludeT)Úanchorzno files found matching %rÚexcludeúglobal-includeFz3no files found matching %r anywhere in distributionúglobal-excludeúrecursive-include)r   z-no files found matching %r under directory %rúrecursive-excludeÚgraftNz no directories found matching %rÚprunez4no previously-included directories found matching %rzinvalid action %r)Ú_parse_directiveÚ_include_patternr9   ÚwarningÚ_exclude_patternr   )r   Ú	directiveÚactionÚpatternsÚthedirÚ
dirpatternÚpatterns   &&     r   Úprocess_directiveÚManifest.process_directive„   sÎ  € ð 04×/DÑ/DÀYÓ/OÑ,ˆ˜&ð
 �YÔÛ#�Ø×,Ñ,¨W¸TÐ,×BÔBÜ—N‘NÐ#?ÀÖIó $ð �yÔ Û#�Ø×%Ñ% g°dÐ%Ö;ó $ð Ð'Ô'Û#�Ø×,Ñ,¨W¸UÐ,×CÔCÜ—N‘Nð $>Ø?FöHó $ð
 Ð'Ô'Û#�Ø×%Ñ% g°eÐ%Ö<ó $ð Ð*Ô*Û#�Ø×,Ñ,¨WÐ,×DÔDÜ—N‘Nð $8Ø9@öJó $ð
 Ð*Ô*Û#�Ø×%Ñ% gÐ%Ö=ó $ð �wÔØ×(Ñ(¨°jÐ(×AÒAÜ—‘ÐAØ)ö+ñ Bð �wÔØ×(Ñ(¨°jÐ(×AÒAÜ—‘ð  -Ø.8ö:ñ Bô #Ø# fÕ,ó.ð .r   c                ó¦  € VP                  4       p\        V4      ^8X  d!   V^ ,          R	9  d   VP                  ^ R4       V^ ,          pR;p;rVVR
9   dE   \        V4      ^8  d   \        RV,          4      hVR,           Uu. uF  p\	        V4      NK  	  ppM«VR9   dW   \        V4      ^8  d   \        RV,          4      h\	        V^,          4      pVR,           Uu. uF  p\	        V4      NK  	  ppMNVR9   d6   \        V4      ^8w  d   \        RV,          4      h\	        V^,          4      pM\        RV,          4      hW4WV3# u upi u upi )z
Validate a directive.
:param directive: The directive to validate.
:return: A tuple of action, patterns, thedir, dir_patterns
rR   Nz$%r expects <pattern1> <pattern2> ...:é   NNz*%r expects <dir> <pattern1> <pattern2> ...:r   NNz!%r expects a single <dir_pattern>zunknown action %r)rR   rT   rU   rV   rW   rX   rY   rZ   )rR   rT   rU   rV   )rW   rX   )rY   rZ   )r;   ÚlenÚinsertr   r   )r   r_   Úwordsr`   ra   rb   Údir_patternÚwords   &&      r   r[   ÚManifest._parse_directiveÈ   sb  € ð —‘Ó!ˆÜˆu‹:˜Œ?˜u Q�xð 0Bô  Bð �L‰L˜˜IÔ&à�q•ˆØ*.Ð.ˆÐ.�6àð :ô :ä�5‹z˜AŒ~Ü&Ø:¸VÕCóEð Eð 8=¸R¶yÓA±y¨tœ TÖ*±yˆHÐAˆHàÐAÔAÜ�5‹z˜AŒ~Ü&Ø@À6ÕIóKð Kô " %¨¥(Ó+ˆFØ7<¸R¶yÓA±y¨tœ TÖ*±yˆHÐAˆHàÐ)Ô)Ü�5‹z˜QŒÜ&Ø7¸&Õ@óBð Bô ' u¨Q¥xÓ0‰Kô #Ð#6¸Õ#?Ó@Ð@à Ð4Ð4ùò) Bùò Bs   ÂE	Ã Ec                óü   € RpV P                  WW44      pV P                  f   V P                  4        V P                   F9  pVP                  V4      '       g   K  V P                  P                  V4       RpK;  	  V# )aõ  Select strings (presumably filenames) from 'self.files' that
match 'pattern', a Unix-style wildcard (glob) pattern.

Patterns are not quite the same as implemented by the 'fnmatch'
module: '*' and '?'  match non-special characters, where "special"
is platform-dependent: slash on Unix; colon, slash, and backslash on
DOS/Windows; and colon on Mac OS.

If 'anchor' is true (the default), then the pattern match is more
stringent: "*.py" will match "foo.py" but not "foo/bar.py".  If
'anchor' is false, both of these will match.

If 'prefix' is supplied, then only filenames starting with 'prefix'
(itself a pattern) and ending with 'pattern', with anything in between
them, will match.  'anchor' is ignored in this case.

If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and
'pattern' is assumed to be either a string containing a regex or a
regex object -- no translation is done, the regex is just compiled
and used as-is.

Selected strings will be added to self.files.

Return True if files are found.
FT)Ú_translate_patternr   r*   Úsearchr   r.   )r   rd   rS   r   Úis_regexÚfoundÚ
pattern_rer'   s   &&&&&   r   r\   ÚManifest._include_pattern÷   sk   € ð8 ˆØ×,Ñ,¨W¸fÓOˆ
ð �=‰=Ò Ø�L‰LŒNà—M”MˆDØ× Ñ  ×&Ô&Ø—
‘
—‘˜tÔ$Ø’ñ "ð ˆr   c                óÒ   € RpV P                  WW44      p\        V P                  4       F9  pVP                  V4      '       g   K  V P                  P	                  V4       RpK;  	  V# )a<  Remove strings (presumably filenames) from 'files' that match
'pattern'.

Other parameters are the same as for 'include_pattern()', above.
The list 'self.files' is modified in place. Return True if files are
found.

This API is public to allow e.g. exclusion of SCM subdirs, e.g. when
packaging source distributions
FT)rp   Úlistr   rq   Úremove)r   rd   rS   r   rr   rs   rt   rK   s   &&&&&   r   r^   ÚManifest._exclude_pattern   s]   € ð ˆØ×,Ñ,¨W¸fÓOˆ
Ü�d—j‘jÖ!ˆAØ× Ñ  ×#Ô#Ø—
‘
×!Ñ! !Ô$Ø’ñ "ð ˆr   c                ó  € V'       d/   \        V\        4      '       d   \        P                  ! V4      # V# \        R8”  d$   V P                  R4      P                  R4      w  rVpV'       dN   V P                  V4      p\        R8”  d1   VP                  X4      '       d   VP                  X4      '       g   Q hMRp\        P                  ! \        P                  P                  V P                  R4      4      p	VEe<   \        R8:  d1   V P                  R4      p
V P                  V4      R\        V
4      )  pMhV P                  V4      pVP                  X4      '       d   VP                  X4      '       g   Q hV\        V4      \        V4      \        V4      ,
           p\        P                  p\        P                  R8X  d   Rp\        R8:  d*   RV	,           VP                  VRV,           34      ,           pMxV\        X4      \        V4      \        X4      ,
           pV: V	: V: V: RV: V: 2pM;V'       d4   \        R8:  d   RV	,           V,           pMX: V	: V\        V4      R : 2p\        P                  ! V4      # )	zóTranslate a shell-like wildcard pattern to a compiled regular
expression.

Return the compiled regex.  If 'is_regex' true,
then 'pattern' is directly compiled to a regex (if it's a string)
or just returned as-is (assumes it's a regex object).
r?   r7   NÚ\z\\Ú^z.*)é   r   )Ú
isinstanceÚstrÚreÚcompileÚ_PYTHON_VERSIONÚ_glob_to_reÚ	partitionr-   ÚendswithÚescaper	   r
   r!   r   ri   r   )r   rd   rS   r   rr   Ústartr?   Úendrt   r   Úempty_patternÚ	prefix_rer   s   &&&&&        r   rp   ÚManifest._translate_pattern4  s  € ÷ Ü˜'¤3×'Ò'Ü—z’z 'Ó*Ð*à�ä˜VÔ#à ×,Ñ,¨SÓ1×;Ñ;¸CÓ@‰MˆE�cçØ×)Ñ)¨'Ó2ˆJÜ Ô'Ø!×,Ñ,¨U×3Ò3¸
×8KÑ8KÈC×8PÒ8PÐPÐPøàˆJä�yŠyœŸ™Ÿ™ d§i¡i°Ó4Ó5ˆØÓä &Ô(Ø $× 0Ñ 0°Ó 4�Ø ×,Ñ,¨VÓ4Ð5I´s¸=Ó7IÐ6IÐJ‘	à ×,Ñ,¨VÓ4�	Ø ×+Ñ+¨E×2Ò2°y×7IÑ7IÈ#×7NÒ7NÐNÐNØ%¤c¨%£j´#°i³.Ä3ÀsÃ8Õ2KÐL�	Ü—&‘&ˆCÜ�v‰v˜Œ~Ø�Ü &Ô(Ø  4�Z¨#¯(©(°IØ48¸:Õ4Eð4Gó +Hõ H‘
ð (¬¨E«
´C¸
³OÄcÈ#ÃhÕ4NÐO�
Ú27ººyË#Ú2<ºcðC‘
÷ Ü" fÔ,Ø!$ t¥¨jÕ!8‘Jâ.3²T¸:ÄcÈ%ÃjÀkÒ;RÐ!S�Jä�zŠz˜*Ó%Ð%r   c                óÀ   € \         P                  ! V4      p\        P                  p\        P                  R8X  d   RpRV,          p\        P
                  ! RWB4      pV# )z×Translate a shell-like glob pattern to a regular expression.

Return a string containing the regex.  Differs from
'fnmatch.translate()' in that '*' does not match "special characters"
(which are platform-specific).
r{   z\\\\z\1[^%s]z((?<!\\)(\\\\)*)\.)ÚfnmatchÚ	translater	   r   r€   Úsub)r   rd   rt   r   Úescapeds   &&   r   rƒ   ÚManifest._glob_to_rek  sR   € ô ×&Ò& wÓ/ˆ
ô �f‰fˆÜ�6‰6�TŒ>ð ˆCØ˜sÕ"ˆÜ—V’VÐ1°7ÓGˆ
ØÐr   )r   r   r   r   rC   )F)TNF)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r*   r.   r3   rH   rO   re   r[   r\   r^   rp   rƒ   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r   r   &   sP   ø‡ € ñô
	ò#ò6/òô@ò,ò
>.òH-5ô^'ôRô(5&÷nð r   )r–   r�   Úloggingr	   r€   Úsysr7   r   Úcompatr   Úutilr   Ú__all__Ú	getLoggerr’   r9   r�   ÚMÚ_COLLAPSE_PATTERNÚSÚ_COMMENTED_LINEÚversion_infor‚   Úobjectr   © r   r   Ú<module>r§      s‘   ðñó
 Û Û 	Û 	Û 
å Ý Ý ð ˆ,€à	×	Ò	˜8Ó	$€ð —J’J˜z¨2¯4©4Ó0Ð Ø—*’*Ð1°2·4±4¸"¿$¹$µ;Ó?€ð ×"Ñ" 2Õ&€ôZˆvö Zr   