
    wg-W                       d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZ ddlmZ ddlmZ ddlmZmZ ddlmZmZ dd	lmZmZ dd
lmZ ddlmZmZm Z  ddl	m!Z! ddl"m"Z# ddl$m%Z% ddZ&ddZ' e( ejR                  d      d         Z*dZ+d dZ,d!dZ-d"dZ.	 d#	 	 	 	 	 	 	 	 	 d$dZ/d%dZ0ddZ1ddZ2 G d de      Z3y)&zI
Create a wheel (.whl) distribution.

A wheel is a built archive format.
    )annotationsN)IterableSequence)BytesGenerator)iglob)Literalcast)ZIP_DEFLATED
ZIP_STORED)tagsversion)	WheelFile   )Command__version___shutil)SetuptoolsDeprecationWarning   )egg_info)logc                0    t        j                  dd|       S )zConvert an arbitrary string to a standard distribution name
    Any runs of non-alphanumeric/. characters are replaced with a single '-'.
    [^A-Za-z0-9.]+-)resubnames    c/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/setuptools/command/bdist_wheel.py	safe_namer       s     66"C..    c                    	 t        t        j                  |             S # t        j                  $ r, | j	                  dd      } t        j                  dd|       cY S w xY w)zB
    Convert an arbitrary string to a standard version string
     .r   r   )str_packaging_versionVersionInvalidVersionreplacer   r   r   s    r   safe_versionr*   '   sW    6%--g677,, 6//#s+vv&W556s     <AAr#   zcp3\dc                 2    t        j                  d      dk(  S )NP   )structcalcsize r    r   _is_32bit_interpreterr1   8   s    ??31$$r    c                 <    dt         j                  j                   S )Npy)sysversion_infomajorr0   r    r   
python_tagr7   <   s      &&'((r    c                    t        j                         }|j                  d      r| ddlm}  || |      }nt               r|dk(  rd}n|dk(  rd}|j                  dd	      S )
z0Return our platform name 'win32', 'linux_x86_64'macosxr   )calculate_macosx_platform_taglinux-x86_64z
linux-i686linux-aarch64zlinux-armv7lr   _)	sysconfigget_platform
startswithwheel.macosx_libfiler:   r1   r(   )archive_rootresultr:   s      r   r?   r?   @   se    ##%F"|'?F.|VD		 ^#!F& $F>>#s##r    c                    t        j                  |       }|$|r t        j                  d|  dt        d       |S ||k(  S )zfUse a fallback value for determining SOABI flags if the needed config
    var is unset or unavailable.zConfig variable 'z+' is unset, Python ABI tag may be incorrectr   
stacklevel)r>   get_config_varwarningswarnRuntimeWarning)varfallbackexpectedrI   vals        r   get_flagrO   T   sL    
 
"
"3
'C
{MM#C5(ST
 (?r    c                 z   t        j                  d      } t        j                         }| sW|dv rSt	        t
        d      rCd}d}t        dt	        t
        d      |dk(        rd	}| t        j                          | | }|S | r/|dk(  r*| j                  d
      rd| j                  d      d   z   }|S | rA|dk(  r<| j                  d      r+| j                  d      d   }t	        t
        d      r|d	z  }|S | rL|dk(  rGdj                  | j                  d      dd       }|j                  dd      j                  dd      }|S | rL|dk(  rGdj                  | j                  d      dd       }|j                  dd      j                  dd      }|S | r$| j                  dd      j                  dd      }|S d}|S )zJReturn the ABI tag based on SOABI (if available) or emulate SOABI (PyPy2).SOABI)cppp
maxunicode Py_DEBUGgettotalrefcountrR   )rI   dcpythonr   r   r   rS   Nr   r#   r=   graalpy   )r>   rG   r   interpreter_namehasattrr4   rO   interpreter_versionr@   splitjoinr(   )soabiimplrX   uabis        r   get_abi_tagre   e   s   ))'2E  "DT\)gc<.HJ-? @PTVAt//121#aS9, J+ 
44<E$4$4Y$?U[[%a((& J% 
44<E$4$4T$:kk#q!3*+3JC J 
44<hhu{{3'+,kk#s#++C5 J 
49$hhu{{3'+,kk#s#++C5 J 
mmC%--c37 J Jr    c                8    t        |       j                  dd      S Nr   r=   )r   r(   r   s    r   
safer_namerh      s    T?""3,,r    c                8    t        |       j                  dd      S rg   )r*   r(   r)   s    r   safer_versionrj      s     ((c22r    c                  6   e Zd ZdZeedZdddd ed       dfd	d
ddddddddj                  dj                  e            fddd e
        dfdddgZg dZd'dZd'dZd'dZed(d       Zd)dZd Zd e d!f	 	 	 	 	 d*d"Zd+d#Zed,d$       Zd-d%Zd.d&Zy)/bdist_wheelzcreate a wheel distribution)storeddeflated)z
bdist-dir=bz1temporary directory for creating the distributionz
plat-name=pz8platform name to embed in generated filenames [default: N])	keep-tempkzPkeep the pseudo-installation tree around after creating the distribution archive)z	dist-dir=rX   z-directory to put final built distributions in)
skip-buildNz2skip rebuilding everything (for testing/debugging))relativeNz7build the archive using relative paths [default: false])zowner=rc   z@Owner name used when creating a tar file [default: current user])zgroup=gzAGroup name used when creating a tar file [default: current group])	universalNz4*DEPRECATED* make a universal wheel [default: false]zcompression=z6zipfile compression (one of: {}) [default: 'deflated']z, zpython-tag=z3Python implementation compatibility tag [default: 'z'])zbuild-number=NzqBuild number for this particular version. As specified in PEP-0427, this must start with a digit. [default: None])zpy-limited-api=Nz?Python tag (cp32|cp33|cpNN) for abi3 wheel tag [default: false])zdist-info-dir=Nzdirectory where a pre-generated dist-info can be found (e.g. as a result of calling the PEP517 'prepare_metadata_for_build_wheel' method))rr   rt   ru   rw   c                ,   d | _         d| _        d | _        d | _        d| _        d| _        d | _        d | _        d | _        d | _	        d| _
        d| _        d | _        d | _        d| _        d| _        t!               | _        d | _        d| _        d| _        y )NrU   zipFrn   )	bdist_dirdata_dir	plat_nameplat_tagformat	keep_tempdist_dirdist_info_diregginfo_dirroot_is_pure
skip_buildru   ownergrouprw   compressionr7   build_numberpy_limited_apiplat_name_suppliedselfs    r   initialize_optionszbdist_wheel.initialize_options   s    %)%)$($(!'+)-

&0$,(,49"'r    c                   | j                   s@| j                  d      j                  }t        j                  j                  |d      | _         | j                  9t        t        | j                  j                  d            }|j                          | j                  dz   | _        t        | j                        | _        d} | j"                  dgt%        ||        | j                  j'                         xs | j                  j)                          | _        | j-                          | j                  j/                  d      }d|v rDt1        j2                  d       |d   d   j5                         }|j7                         d	v rd
| _        | j8                  rt;        j<                  ddd       | j>                  )| j>                  d d jA                         stC        d      y y )Nbdistwheelr   z.data)r   r|   r   rw   z=The [wheel] section is deprecated. Use [bdist_wheel] instead.r   )1trueyesTz#bdist_wheel.universal is deprecatedaj  
                With Python 2.7 end-of-life, support for building universal wheels
                (i.e., wheels that support both Python 2 and Python 3)
                is being obviated.
                Please discontinue using this option, or if you still need it,
                file an issue with pypa/setuptools describing your use case.
                )i        )due_datez1Build tag (build-number) must start with a digit.)"rz   get_finalized_command
bdist_baseospathr`   r   r	   egg_info_clsdistributionget_command_objensure_finalizedwheel_dist_namer{   boolr|   r   set_undefined_optionsry   has_ext_moduleshas_c_librariesr   _validate_py_limited_apiget_option_dictr   rI   striplowerrw   r   emitr   isdigit
ValueError)r   r   r   need_optionsr   rN   s         r   finalize_optionszbdist_wheel.finalize_options   s   ~~33G<GGJWW\\*g>DN%L$*;*;*K*KJ*WXH%%',,w6"&t~~"6>"""7MS|-LM --/V43D3D3T3T3V
 	%%' !!11':%HHTU$Q'--/Cyy{22!%>>(--5 '
 (1B1B2A1F1N1N1PPQQ 2Q(r    c                
   | j                   sy t        j                  t        | j                         st	        dt         d      t        j                  d      r*t	        d| j                   dt        j                  d      y )Nzpy-limited-api must match ''Py_GIL_DISABLEDz`py_limited_api=za` not supported. `Py_LIMITED_API` is currently incompatible with `Py_GIL_DISABLED` (sys.abiflags=z7). See https://github.com/python/cpython/issues/111506.)	r   r   matchPY_LIMITED_API_PATTERNr   r>   rG   r4   abiflagsr   s    r   r   z$bdist_wheel._validate_py_limited_api   s    ""xx.0C0CD:;Q:RRSTUU##$56"4#6#6"9 :4&)ll%6 7GG  7r    c                    t        | j                  j                               t        | j                  j	                               g}| j
                  r|j                  | j
                         dj                  |      S )z4Return distribution full name with - replaced with _r   )rh   r   get_namerj   get_versionr   appendr`   )r   
componentss     r   r   zbdist_wheel.wheel_dist_name/  sg     t((1134$++779:

 d//0xx
##r    c                   | j                   r| j                  r| j                  }nn| j                  rd}n_| j                  r(| j                  j                  d      s| j                  }nt	        | j
                        }t               r|dv rd}|dv rd}|j                         j                  dd      j                  d	d      j                  d
d      }| j                  r"| j                  rd}n| j                  }|d|f}|S t        j                         }t        j                         }||z   }| j                  r#||z   j                  d      r| j                  }d}n!t        t!                     j                         }|||f}t        j"                         D cg c]  }|j$                  |j&                  |f }}||v s
J d|        |S c c}w )Nanyr9   )r;   linux_x86_64
linux_i686)r<   linux_aarch64linux_armv7lr   r=   r#   r"   zpy2.py3nonecp3abi3z'would build wheel with unsupported tag )r   r|   r   r@   r?   rz   r1   r   r(   rw   r7   r   r\   r^   r   r$   re   sys_tagsinterpreterrd   )	r   r|   rb   tag	impl_nameimpl_verabi_tagtsupported_tagss	            r   get_tagzbdist_wheel.get_tag:  s    ""t~~II ~~dnn&?&?&I NN	 )8	$& @@ ,I BB !/I OO%%c3/77SAII#sS 	 ~~ +C& 
# --/I//1Hx'D""	H(<'H'H'O** km,224),C <@==?67y1N  .( 9#?( 
s    Gc           	     ~	   | j                  d      }d|_        d|_        | j                  d      }d|_        | j                  s| j                  d       | j                  dd      }| j                  |_        d|_        | j                  |_        d|_	        | j                  d	      }d|_
        d
D ]:  }t        |d|z   t        j                  j                  | j                  |             < d}t        j                   dk(  rUt        j                  j#                  t        j                  j                  | j                  d            }|x| _        | _        t        || j(                  rdnd|       t+        j,                  d| j                          | j                  d       | j/                         \  }}}	| j0                   d| d| d|	 }
| j2                  s| j                  }nCt        j                  j                  | j                  | j5                  |j6                              }| j9                  dd       t;        | j<                  j?                                dtA        | j<                  jC                                d}t        j                  j                  | j                  |      }| jD                  rbt+        jF                  d| jD                          tI        jJ                  | jD                  |       tM        jN                  | jP                         n| jS                  | jP                  |       | jU                  |       t        j                  jW                  | jX                        st        jZ                  | jX                         t        j                  j                  | jX                  |
dz         }t]        |d| j_                               5 }|ja                  |       d d d        tc        | j<                  dg       je                  dtf        jh                  jj                   dtf        jh                  jl                   |f       | jn                  sOt+        j,                  d| j                          | jp                  s tM        jN                  | j                         y y y # 1 sw Y   xY w)Nbuild_scriptspythonT	build_extFbuildinstall)reinit_subcommandsinstall_scripts)headersscriptsdatapurelibplatlibinstall_rU   ntz..install_purelibinstall_platlibzinstalling to r   install_egg_info)targetr   z
.dist-infozreusing z.whlw
dist_filesrl   r#   z	removing )9reinitialize_command
executableforceinplacer   run_commandrz   rootcompilewarn_dirno_epsetattrr   r   r`   r{   r   normpathinstall_libbaseinstall_libr   r   infor   r   ru   _ensure_relativeinstall_baser   rh   r   r   rj   r   r   debugshutilcopytreer   rmtreer   egg2distwrite_wheelfileexistsr   makedirsr   _zip_compressionwrite_filesgetattrr   r4   r5   r6   minorr   dry_run)r   r   r   r   r   keybasedir_observedimpl_tagr   r}   archive_basenamerB   distinfo_dirnamedistinfo_dir
wheel_pathwfs                   r   runzbdist_wheel.runt  s   11/B#+ "--k:	!	W%++I$+O~~!__ 
 334EF $ H 	QCGZ#-rww||DMM3/OP	Q 77d?  "ww//T]]D0QR6FFD 4#3!%!2!28I	
 	>$..!123#&*lln#'8"2231XJay(T}}>>L77<< 5 5g6J6J KL 	""#57PQ$++44678T..::<=>jJ 	 ww||DNN4DEII!3!3 456OOD..= NN4++, MM$**L9\* ww~~dmm,KK&WW\\$--1AF1JK
z3(=(=(?@ 	)BNN<(	) 	!!<4;;%%&a(8(8(>(>'?@=
 	 ~~HHy 012<<t~~.   	) 	)s   R33R<zsetuptools ()c                x   ddl m}  |       }d|d<   ||d<   t        | j                        j	                         |d<   | j
                  | j
                  |d<   | j                         \  }}}|j                  d      D ]E  }|j                  d      D ]/  }	|j                  d      D ]  }
d	j                  ||	|
f      |d
<    1 G t        j                  j                  |d      }t        j                  d|        t        |d      5 }t        |d      j                  |       d d d        y # 1 sw Y   y xY w)Nr   )Messagez1.0zWheel-Version	GeneratorzRoot-Is-PurelibBuildr#   r   TagWHEELz	creating wb)maxheaderlen)email.messager  r$   r   r   r   r   r_   r`   r   r   r   r   openr   flatten)r   wheelfile_base	generatorr  msgr   r   r}   rb   rd   platwheelfile_pathfs                r   r   zbdist_wheel.write_wheelfile  s1    	*i$O$K!$T%6%6!7!=!=!?(,,CL '+lln#'8NN3' 	=D}}S) =$NN3/ =D!$4d*;!<CJ==	=
 ng>9^,-..$' 	;111-55c:	; 	; 	;s   
D00D9c                    t         j                  j                  |      \  }}|dd t         j                  k(  r||dd  z   }|S )Nr   r   )r   r   
splitdrivesep)r   r   drives      r   r   zbdist_wheel._ensure_relative  sA    gg((.t!948#Dr    c           	     $   t         dk\  r$| j                  j                  j                  xs dS t	               }| j                  j                  d      }t         dk\  r6t        t        t           | j                  j                  j                        }nd|v r|d   d   j                         }nd}d|v r3t        j                  dt        d	
       |j                  |d   d          |s|st        |t              sd}|D ]  }t!        |      D ]  }|j#                  d      rt%        j&                  d| d       .||vs3t(        j*                  j-                  |      sSt%        j.                  d| d| d       |j                  |         |S )N9   r0   metadata*   license_filesr   license_filezEThe "license_file" option is deprecated. Use "license_files" instead.r   rE   )zLICEN[CS]E*zCOPYING*zNOTICE*zAUTHORS*~zignoring license file "z" as it looks like a backupzadding license file "z" (matched pattern "z"))setuptools_major_versionr   r  r  setr   r	   r   r$   r_   rH   rI   DeprecationWarningadd
isinstancelistr   endswithr   r   r   r   isfiler   )r   filesr  patternspatternr   s         r   license_pathszbdist_wheel.license_paths  st   #r)$$--;;ArA%$$44Z@#r)HSM4+<+<+E+E+S+STH (*#O4Q7==?X%MMW"
 IIh~.q12Xj4.HIH 	$Gg $==%II1$7RS u$)=HH/v5I'RTU IIdO$	$ r    c                   dd} ||       t         j                  j                  |      sddl}t         j                  j	                  t         j                  j                  |      d      }|j                  |      }d| d}|r+t         j                  j                  |d         }|d| dz  }t        |      t         j                  j	                  |d	      }	t        j                  ||d
        t         j                  j	                  |d      }
t        |
d      5 }|j                         j                         }ddd       s ||
       t         j                  j	                  |d      }t        j                  |	|       | j                  D ]U  }t         j                  j                  |      }t        j                  |t         j                  j	                  ||             W  ||       y# 1 sw Y   xY w)z:Convert an .egg-info directory into a .dist-info directoryc                T   t         j                  j                  |       rTt         j                  j                  |       s5t         j                  j	                  |       rt        j                  |        yt         j                  j                  |       rt        j                  |        yy)z-Appropriately delete directory, file or link.N)r   r   r   islinkisdirr   r   unlink)rp   s    r   adiosz#bdist_wheel.egg2dist.<locals>.adios!  s\    ww~~a ):rww}}Q?Oq!"		! #r    r   Nz
*.egg-infozEgg metadata expected at z but not foundz (z) found - possible misnamed archive file?)PKG-INFOc                
    h dS )N>   SOURCES.txtnot-zip-saferequires.txtr4  r0   )xys     r   <lambda>z&bdist_wheel.egg2dist.<locals>.<lambda>A  s	     ! r    )ignorezdependency_links.txtzutf-8)encodingMETADATA)rp   r$   returnNone)r   r   r   globr`   dirnamebasenamer   r   r   r  readr   copyr-  )r   egginfo_pathdistinfo_pathr3  rA  patpossibleerraltpkginfo_pathdependency_links_pathdependency_links_filedependency_linksmetadata_pathlicense_pathfilenames                   r   r   zbdist_wheel.egg2dist  s   	 	mww~~l+
 '',,rww|<lKCyy~H-l^>JCgg&&x{3C5 IJJS/! ww||L*= 			
 !#]<R S'': 	D>S499;AAC	D'(]J?L-0 .. 	MLww''5HKKbggll=(&KL	M 	l	D 	Ds   "G66G?c                .   t        | j                  t              r2| j                  | j                  j	                         v r| j                  S | j                  j                  t        | j                              }||S t        d| j                        )NzUnsupported compression: )r&  r   intsupported_compressionsvaluesgetr$   r   )r   r   s     r   r   zbdist_wheel._zip_compressionY  s    t''-  D$?$?$F$F$HH###1155c$:J:J6KL"4T5E5E4HIJJr    )r?  r@  r?  r$   )r?  ztuple[str, str, str])r  r$   r  r$   r?  r@  )r   r$   r?  r$   )r?  zIterable[str])rF  r$   rG  r$   r?  r@  )r?  rT  )__name__
__module____qualname__descriptionr   r
   rU  r?   r~   r`   r7   user_optionsboolean_optionsr   r   r   propertyr   r   r  r   r   r   r-  r   r   r0   r    r   rl   rl      sG   /K   	Q%d+,A/	
	
 	LR	

	

	

 	TDKK		01	
 A*,rR	

	
	

	
q?LB KO(,-R^ $ $8t\/~ 7C;-q4Q;!;.1;	;0 * *X9vKr    rl   )r   r$   r?  r$   )r   r$   r?  r$   )r?  r   rX  )rB   
str | Noner?  r$   )TT)
rK   r$   rL   r   rM   r   rI   r   r?  r   )r?  r`  )4__doc__
__future__r   r   r   r   r.   r4   r>   rH   collections.abcr   r   email.generatorr   rA  r   typingr   r	   zipfiler
   r   	packagingr   r   r%   wheel.wheelfiler   rU   r   r   r   r   r   r   	distutilsr   r   r*   rT  r_   r"  r   r1   r7   r?   rO   re   rh   rj   rl   r0   r    r   <module>rj     s    # 	 	   
   . *    , 9 % , , 3 . /	6 0{005a89 ! %)$* CG	(,;?	" F-3TK' TKr    