+
    VBiE                         ^ RI Ht ^ RIHt ^ RIHt ^ RIHt ^ RIt^ RIt^ RIt^ RI	H
t ^ RIHt ^ RIHt ^ RIt^RIHt ]P(                  ! ]4      tRR	 lt ! R
 R4      t ! R R4      tR# )    )defaultdict)copy)glob)GzipFileNPath)join)commonc                    \        V 4      p ^ V n        ^ V n        RV n        RV n        \
        P                  ! V P                  4      V n        Ve   Wn        V # )zClean metadata from a TarInfo object to make it more reproducible.

- Set uid & gid to 0
- Set uname and gname to ""
- Normalise permissions to 644 or 755
- Set mtime if not None
 )	r   uidgidunamegnamer
   normalize_file_permissionsmodemtime)tir   s   &&4/usr/lib/python3.14/site-packages/flit_core/sdist.pyclean_tarinfor      sO     
bBBFBFBHBH//8BGI    c                   6   a  ] tR t^%t o RtR tR tR tRtV t	R# )FilePatternszEManage a set of file inclusion/exclusion patterns relative to basedirc           	        W n         \        4       V n        \        4       V n        V F  p\	        \        \        P                  ! W#4      R R7      4       Fm  p\        P                  ! WB4      p\        P                  ! V4      '       d   V P                  P                  V4       KR  V P                  P                  V4       Ko  	  K  	  R# )T)	recursiveN)basedirsetdirsfilessortedr   ospr	   relpathisdiradd)selfpatternsr   patternpathrels   &&&   r   __init__FilePatterns.__init__'   s~    E	U
GtCHHW$>$OPkk$099T??IIMM#&JJNN3' Q  r   c                   a SV P                   9   d   R # \        ;QJ d)    V3R lV P                   4       F  '       g   K   R # 	  R# ! V3R lV P                   4       4      # )Tc              3   p   <"   T F+  pSP                  V\        P                  ,           4      x  K-  	  R # 5iN
startswithossep.0drel_paths   & r   	<genexpr>*FilePatterns.match_file.<locals>.<genexpr>9   '     FIq8&&q266z22I   36F)r   anyr   r%   r6   s   &fr   
match_fileFilePatterns.match_file5   sC    tzz!sFDIIFssFsFsFDIIFFFr   c                   a SV P                   9   d   R # \        ;QJ d)    V3R lV P                    4       F  '       g   K   R # 	  R# ! V3R lV P                    4       4      # )Tc              3   p   <"   T F+  pSP                  V\        P                  ,           4      x  K-  	  R # 5ir.   r/   r3   s   & r   r7   )FilePatterns.match_dir.<locals>.<genexpr>@   r9   r:   F)r   r;   r<   s   &fr   	match_dirFilePatterns.match_dir;   sE    tyy  sFDIIFssFsFsFDIIFFFr   )r   r   r   N)
__name__
__module____qualname____firstlineno____doc__r*   r=   rB   __static_attributes____classdictcell____classdict__s   @r   r   r   %   s     O(GG Gr   r   c                   |   a  ] tR t^Ct o RtRR lt]V 3R lR l4       tR tR t	R t
R t]R	 4       tRR
 ltRtV tR# )SdistBuilderzBuilds a minimal sdist

These minimal sdists should work for PEP 517.
The class is extended in flit.sdist to make a more 'full fat' sdist,
which is what should normally be published to PyPI.
c
                    Wn         W n        W0n        W@n        WPn        W`n        Wpn        \        V\        V4      4      V n	        \        V	\        V4      4      V n
        R # r.   )modulemetadatacfgdirreqs_by_extraentrypointsextra_filesdata_directoryr   strincludesexcludes)
r%   rP   rQ   rR   rS   rT   rU   rV   include_patternsexclude_patternss
   &&&&&&&&&&r   r*   SdistBuilder.__init__J   sO     *&&,$%5s6{C$%5s6{Cr   c                    < V ^8  d   QhRS[ /# )   ini_pathr   )formatrL   s   "r   __annotate__SdistBuilder.__annotate__W   s     
 
T 
r   c                ^   ^RI Hp V! V4      pVP                  p\        P                  ! VP
                  V4      p\        P                  ! WS4      pVP                  .VP                  ,           pV ! WVWCP                  VP                  WsP                  VP                  VP                  4	      # )   )read_flit_config)configre   parentr
   ModulerP   make_metadatanamereferenced_filesrS   rT   rV   sdist_include_patternssdist_exclude_patterns)clsr_   re   ini_infosrcdirrP   rQ   rU   s   &&      r   from_ini_pathSdistBuilder.from_ini_pathV   s     	-#H-x7''9}}o(A(AAf&<&<  +/F/F++X-L-L
 	
r   c                   \        \        4      pV P                  P                  4        FM  w  r#\	        VP                  4       4       F+  w  rEW,          P                  R P                  WE4      4       K-  	  KO  	  \        V4      # )z{} = {})r   listrT   itemsr    appendr`   dict)r%   res	groupnamegrouprj   eps   &     r   prep_entry_pointsSdistBuilder.prep_entry_pointse   sf    $ $ 0 0 6 6 8I"5;;=1%%i&6&6t&@A 2 !9 Cyr   c                p   \        V P                  4      pV P                  P                  4        Uu. uF  p\        P
                  ! W!4      NK  	  up\        P                  ! V P                  4       Uu. uF  p\        P
                  ! W!4      NK  	  up,           V P                  ,           # u upi u upi )zPick which files from the source tree will be included in the sdist

This is overridden in flit itself to use information from a VCS to
include tests, docs, etc. for a 'gold standard' sdist.
)
rW   rR   rP   
iter_filesr!   r"   r
   walk_data_dirrV   rU   )r%   cfgdir_sps   &  r   select_filesSdistBuilder.select_filesn   s     t{{#.2kk.D.D.F
.FCKK$.F
 /5.B.B4CVCV.W
.WCKK$.W

 	 	 

s   B.5B3c                   \        V P                  4      pV Uu0 uF'  q0P                  P                  V4      '       d   K%  VkK)  	  ppV P                  P
                   F7  pV P                  P                  V4      '       d   K&  VP                  V4       K9  	  V P                  P                   EF  p\        P                  ! \        P                  ! W%4      4       F  w  rgpV Fc  p	\        P                  ! Wi4      p
\        P                  ! W4      pV P                  P                  V4      '       d   KR  VP                  V4       Ke  	  V Uu. uFP  qP                  P                  \        P                  ! \        P                  ! Wk4      V4      4      '       d   KN  VNKR  	  upVR &   K  	  EK  	  \        V P                  \        V P                   P"                  P%                  V P                  4      4      .,           4      pW,
          pV'       d*   \'        RP)                  RP                  V4      4      4      h\+        V4      # u upi u upi ):NNNz.Crucial files were excluded from the sdist: {}z, )rW   rR   rY   r=   rX   r   r$   r   r1   walkr!   r	   r"   rB   r   rU   rP   filerelative_to	Exceptionr`   r    )r%   r   r   ff_relrel_ddirpathr   dfilesr   f_absr5   crucial_filesmissing_crucials   &&            r   apply_includes_excludes$SdistBuilder.apply_includes_excludes{   s   t{{#!EEq)A)A!)DEE]]((E==++E22		%  ) ]]''E)+(1J)K%v"DHHW3EKK8E==33E::		%(	 # '+ d--2I2IKK 4h?311d Q *L ( DKK$4$4$@$@$M NOO
 (/L#VDIIo$>?A A e}7 Fs   "IIAI!Ic                    R# )z3No-op here; overridden in flit to generate setup.pyN )r%   files_to_addtarget_tarfiles   &&&r   add_setup_pySdistBuilder.add_setup_py   s    r   c                    \         P                  ! V P                  P                  V P                  P                  4      # r.   )r
   normalize_dist_namerQ   rj   version)r%   s   &r   dir_nameSdistBuilder.dir_name   s)    ))$--*<*<dmm>S>STTr   c                   \         P                  ! \        V4      R R7       VRP                  V P                  4      ,          p\         P
                  P                  RR4      pV'       d   \        V4      MRp\        \        V4      RT;'       g    RR7      p\        P                  ! \        V4      R	V\        P                  R
7      p V P                  V P                  4       4      pV F  p	\        V P                  V	,          4      p
VP                  V
\!        V P                  V	4      R7      p\#        W4      pVP%                  4       '       d1   \'        V
R4      ;_uu_ 4       pVP)                  W4       RRR4       K  VP)                  V4       K  	  V'       d   V P+                  W4       \,        P.                  ! 4       pV P0                  P3                  V4       VP5                  4       P7                  4       p\        P8                  ! \!        V P                  R4      4      p\;        V4      Vn        VP)                  V\,        P>                  ! V4      4       VPA                  4        VPA                  4        \B        PE                  RV4       V#   + '       g   i     EK  ; i  TPA                  4        TPA                  4        i ; i)T)exist_okz	{}.tar.gzSOURCE_DATE_EPOCHr   NwbiV)r   r   w)r   fileobjr`   )arcnamerbzPKG-INFOzBuilt sdist: %s)#r1   makedirsrW   r`   r   environgetintr   tarfileTarFile
PAX_FORMATr   r   rR   
gettarinfopjoinr   isregopenaddfiler   ioStringIOrQ   write_metadata_filegetvalueencodeTarInfolensizeBytesIOcloseloginfo)r%   
target_dirgen_setup_pytargetsource_date_epochr   gztfr   r"   r(   r   r   streampkg_infos   &&&            r   buildSdistBuilder.build   s   
C
Od3k00??JJNN+>C*;%& c&kU5H5HjJ__S[sB$+$6$68	778I8I8KLL'4;;01]]4t}}g1N]O"2-88::dD))Q

2) *) JJrN ( !!,3[[]FMM--f5(//1Ht}}j!ABB(mBGJJr2::h/0 HHJHHJ"F+) *))  HHJHHJs,   BJ- (J:&J- !B?J- J*#
J- -"K)	rR   rV   rT   rY   rU   rX   rQ   rP   rS   N)r   r   )T)rD   rE   rF   rG   rH   r*   classmethodrq   r|   r   r   r   propertyr   r   rI   rJ   rK   s   @r   rN   rN   C   sX     
D 
 
> U U) )r   rN   r.   )collectionsr   r   r   gzipr   r   loggingr1   os.pathr(   r!   pathlibr   	posixpathr	   r   r   r   r
   	getLoggerrD   r   r   r   rN   r   r   r   <module>r      sV    #    	  	   #  !&G G<H Hr   