
    DxMgT                    J   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
Z
ddlmZmZ ddlmZ ddlmZ ddlmZ ddlmZmZmZmZmZmZ dd	lmZmZ ddlZdd
lmZ ddlm Z! ddl"m#Z# ddl$m%Z% ddl&m'Z' ddl&m(Z) ddl*m+Z+ erddl,Z,	  e-d           n # e.$ r ddlm/Z/  e/j0                     Y nw xY wd7dZ1d8dZ2 e3ej         4                    d          d                   Z5dZ6d9dZ7d:dZ8d;d!Z9	 d<d=d'Z:d>d(Z;d7d)Z<d8d*Z=d?d1Z>d@d4Z? G d5 d6e          Z@dS )AzI
Create a wheel (.whl) distribution.

A wheel is a built archive format.
    )annotationsN)BytesGenerator	Generator)EmailPolicy)iglob)rmtree)TYPE_CHECKINGCallableIterableLiteralSequencecast)ZIP_DEFLATED
ZIP_STORED)Command   )__version__)pkginfo_to_metadata)log)tagsversion)	WheelFilezsetuptools.logging)_setuptools_loggingnamestrreturnc                .    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r   s    2lib/python3.11/site-packages/wheel/_bdist_wheel.py	safe_namer%   /   s     6"C...    r   c                    	 t          t          j        |                     S # t          j        $ r/ |                     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    )r   _packaging_versionVersionInvalidVersionreplacer!   r"   r   s    r$   safe_versionr.   6   sm    6%-g66777, 6 6 6//#s++v&W555556s    # ;A! A!r)   zcp3\dboolc                 2    t          j        d          dk    S )NP   )structcalcsize r&   r$   _is_32bit_interpreterr6   G   s    ?31$$r&   c                 ,    dt           j        d          S )Npyr   )sysversion_infor5   r&   r$   
python_tagr;   K   s    % #%%%r&   archive_root
str | Nonec                    t          j                    }|                    d          r| ddlm}  || |          }nt                      r|dk    rd}n|dk    rd}|                    d	d
          S )z0Return our platform name 'win32', 'linux_x86_64'macosxNr   )calculate_macosx_platform_taglinux-x86_64z
linux-i686linux-aarch64zlinux-armv7lr    _)	sysconfigget_platform
startswithmacosx_libfiler@   r6   r-   )r<   resultr@   s      r$   rE   rE   O   s    #%%F"" $|'?AAAAAA..|VDD		 	  $^##!FF&& $F>>#s###r&   Tvarfallbackexpectedwarnc                    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.NzConfig variable 'z+' is unset, Python ABI tag may be incorrect   
stacklevel)rD   get_config_varwarningsrL   RuntimeWarning)rI   rJ   rK   rL   vals        r$   get_flagrU   c   s_    
 
"3
'
'C
{ 	MTCTTT   
 (?r&   c                 x   t          j        d          } t          j                    }| s|dv rt	          t
          d          rd}d}d}t          dt	          t
          d          |dk              rd	}t          d
|dk    |dk    ot
          j        dk               rt
          j        dk     rd}| t          j                     | | | }nk| r;|dk    r5| 	                    d          r d| 
                    d          d         z   }n.| r7|dk    r1| 	                    d          r| 
                    d          d         }n| ra|dk    r[d                    | 
                    d          dd                   }|                    dd                              dd          }n| ra|dk    r[d                    | 
                    d          dd                   }|                    dd                              dd          }n/| r+|                     dd                              dd          }nd}|S )zJReturn the ABI tag based on SOABI (if available) or emulate SOABI (PyPy2).SOABI)cppp
maxunicode Py_DEBUGgettotalrefcountrX   )rL   dWITH_PYMALLOC)      mcpythonr    r   r   rY   NrN   r)   rC   graalpyr`   )rD   rQ   r   interpreter_namehasattrr9   rU   r:   interpreter_versionrF   splitjoinr-   )soabiimplr^   rb   uabis         r$   get_abi_tagrn   t   sX   )'22E ""D T\))gc<.H.H)J-? @ @PTVVV 	ADL$,<3#3f#<
 
 
 	 ''A<t/11<1<a<<<	 44<<E$4$4Y$?$?<U[[%%a((	 44<<E$4$4T$:$:<kk#q!	 
44<<hhu{{3''+,,kk#s##++C55	 49$$hhu{{3''+,,kk#s##++C55	 mmC%%--c377Jr&   c                H    t          |                               dd          S Nr    rC   )r%   r-   r#   s    r$   
safer_namerq      s    T??""3,,,r&   c                H    t          |                               dd          S rp   )r.   r-   r   s    r$   safer_versionrs      s       ((c222r&   funcCallable[..., object]pathexcinfo6tuple[type[Exception], Exception, types.TracebackType]Nonec                4    t          | ||d                    d S )Nr   )remove_readonly_exc)rt   rv   rw   s      r$   remove_readonlyr|      s     
 dGAJ/////r&   exc	Exceptionc                Z    t          j        |t          j                    | |           d S )N)oschmodstatS_IWRITE)rt   rv   r}   s      r$   r{   r{      s'    HT4=!!!DJJJJJr&   c                  >   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                    d	                    e                    fddd e
             dfddgZg dZd Zd Zed             Zd,dZd Zd e dfd-d$Zd.d&Zed/d(            Zd0d+ZdS )1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=r^   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=rl   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])	universalNz'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))r   r   r   r   c                (   d | _         d | _        d | _        d | _        d| _        d| _        d | _        d | _        d | _        d | _	        d| _
        d | _        d | _        d| _        d| _        t                      | _        d | _        d| _        d| _        d S )NzipFr   )	bdist_dirdata_dir	plat_nameplat_tagformat	keep_tempdist_diregginfo_dirroot_is_pure
skip_buildr   ownergroupr   compressionr;   build_numberpy_limited_apiplat_name_supplied)selfs    r$   initialize_optionszbdist_wheel.initialize_options   s    "%)$()-

$&0)||(,49"'r&   c                   | j         ?|                     d          j        }t          j                            |d          | _         | j                            d          }|                                 | j	        dz   | _
        | j        d u| _        	 | j        | j                 | _        n&# t          $ r t!          d| j                   d w xY wd} | j        dgt%          ||          R   | j                                        p| j                                         | _        | j        r7t/          j        t2          | j                  st!          dt2           d          | j                            d          }d	|v rQt7          j        d
           |d	         d                                         }|                                dv rd| _        | j         0| j         d d         !                                st!          d          d S d S )Nbdistwheelegg_infoz.datazUnsupported compression: )r   r   r   zpy-limited-api must match ''r   z=The [wheel] section is deprecated. Use [bdist_wheel] instead.r   )1trueyesTz1Build tag (build-number) must start with a digit.)"r   get_finalized_command
bdist_baser   rv   ri   distributionget_command_objensure_finalizedwheel_dist_namer   r   r   supported_compressionsr   KeyError
ValueErrorset_undefined_optionsr   has_ext_moduleshas_c_librariesr   r   r!   matchPY_LIMITED_API_PATTERNget_option_dictr   warningstriplowerr   r   isdigit)r   r   r   need_optionsr   rT   s         r$   finalize_optionszbdist_wheel.finalize_options
  s/   >!33G<<GJW\\*g>>DN$44Z@@!!###,w6"&."<	W#:4;KLD 	W 	W 	WK9IKKLLRVV	W ?""7MS|-L-LMMMM --//V43D3T3T3V3V
  	Vrx"D$7(
 (
 	V T;QTTTUUU !11'::%KO   $Q'--//Cyy{{222!%(1B2A21F1N1N1P1P(PQQQ )(((s   B+ +#Cc                    t          | j                                                  t          | j                                                  f}| j        r|| j        fz  }d                    |          S )z4Return distribution full name with - replaced with _r    )rq   r   get_namers   get_versionr   ri   )r   
componentss     r$   r   zbdist_wheel.wheel_dist_name5  sn     t(113344$+7799::

  	/4,..Jxx
###r&   r   tuple[str, str, str]c                V   | j         rt          t          | j                  na| j        rdnW| j        r"| j                            d          s| j        nt          | j                  t                      rdv rddv rd	                                
                    dd          
                    d	d          
                    d
d          | j        r| j        rd}n| j        }|df}nt          j                    }t          j                    }||z   }| j        r"||z                       d          r
| j        }d}n-t          t#                                	                                }||f}fdt          j                    D             }||v sJ d|             |S )Nanyr?   )rA   linux_x86_64
linux_i686)rB   linux_aarch64linux_armv7lr    rC   r)   r(   zpy2.py3nonecp3abi3c                .    g | ]}|j         |j        fS r5   )interpreterrm   ).0tr   s     r$   
<listcomp>z'bdist_wheel.get_tag.<locals>.<listcomp>r  s1       67y1  r&   z'would build wheel with unsupported tag )r   r   r   r   r   rF   rE   r   r6   r   r-   r   r;   r   re   rg   r   rn   sys_tags)r   rk   tag	impl_nameimpl_verabi_tagsupported_tagsr   s          @r$   get_tagzbdist_wheel.get_tag@  s    " 	/S$.11II 	/II ~ 	9dn&?&?&I&I 	9 N		 )88	$&& / @@@ ,I BBB !/I OO%%c3//77SAAII#sSS 	  	?~ ' +CC-//I/11Hx'D" 5	H(<'H'H'O'O 5* kmm,,2244),C   ;?=??  N ~%%%>>> &%%
r&   c           	     j   |                      d          }d|_        d|_        |                      d          }d|_        | j        s|                     d           |                      dd          }| j        |_        d|_        | j        |_        d|_	        |                      d	          }d|_
        d
D ]9}t          |d|z   t          j                            | j        |                     :d}t          j        dk    rPt          j                            t          j                            | j        d                    }|x| _        | _        t          || j        rdnd|           t+          j        d| j                    |                     d           |                                 \  }}}	| j         d| d| d|	 }
| j        s| j        }n=t          j                            | j        |                     |j                            }|                     dd           t;          | j                                                   dtA          | j        !                                           d}t          j                            | j        |          }| "                    | j#        |           | $                    |           t          j        %                    | j&                  st          j'        | j&                   t          j                            | j&        |
dz             }tQ          |d| j)                  5 }|*                    |           d d d            n# 1 swxY w Y   tW          | j        dg           ,                    d dj-        t\          j/        d d          |f           | j0        smt+          j        d| j                    | j1        sLt\          j/        dk     rte          | j        tf                     d S te          | j        th                     d S d S d S ) Nbuild_scriptspythonT	build_extFbuildinstall)reinit_subcommandsinstall_scripts)headersscriptsdatapurelibplatlibinstall_r[   ntz..install_purelibinstall_platlibzinstalling to r    install_egg_info)targetr   z
.dist-infoz.whlw
dist_filesr   z{}.{}rN   z	removing )r`      )onerror)onexc)5reinitialize_command
executableforceinplacer   run_commandr   rootcompilewarn_dirno_epsetattrr   rv   ri   r   r   normpathinstall_libbaseinstall_libr   r   infor   r   r   _ensure_relativeinstall_baser   rq   r   r   rs   r   egg2distr   write_wheelfileexistsr   makedirsr   r   write_filesgetattrappendr   r9   r:   r   dry_runr   r|   r{   )r   r   r   r   r   keybasedir_observedimpl_tagr   r   archive_basenamer<   distinfo_dirnamedistinfo_dir
wheel_pathwfs                   r$   runzbdist_wheel.runz  sk   11/BB#+ "--k::	!	 	&W%%%++I$+OO~!_ 
 334EFF $ H 	Q 	QCGZ#-rw||DM3/O/OPPPP7d??  "w//T]D0Q0QRR6FFD 4#3!%!2I8I	
 	
 	
 	2$.22333###&*llnn#'8"2TTXTTTT(TT} 	>LL7<< 5 5g6J K K L 	""#57PQQQ$+446677 J JT.::<<==J J J 	 w||DN4DEEd&555\*** w~~dm,, 	'K&&&W\\$-1AF1JKK
z3(899 	)RNN<(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	!<44;; 0! 45	
 	
 	
 ~ 	FH111222< F#g--4>?CCCCCC4>1DEEEEEE	F 	FF Fs   
M,,M03M0zbdist_wheel (wheelfile_baser   	generatorc                   ddl m}  |            }d|d<   ||d<   t          | j                                                  |d<   | j        
| j        |d<   |                                 \  }}}|                    d          D ]M}|                    d          D ]5}	|                    d          D ]}
d	                    ||	|
f          |d
<   6Nt          j
                            |d          }t          j        d|            t          |d          5 }t          |d                              |           d d d            d S # 1 swxY w Y   d S )Nr   )Messagez1.0zWheel-Versionr   zRoot-Is-PurelibBuildr)   r    TagWHEELz	creating wb)maxheaderlen)email.messager  r   r   r   r   r   rh   ri   r   rv   r   r  openr   flatten)r   r  r  r  msgr  r   r   rk   rm   platwheelfile_pathfs                r$   r  zbdist_wheel.write_wheelfile  s    	*)))))gii$O$K!$T%6!7!7!=!=!?!?(,CL '+llnn#'8NN3'' 	= 	=D}}S)) = =$NN3// = =D!$4d*;!<!<CJJ== ng>>-^--....$'' 	;111---55c:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   %E		EErv   c                    t           j                            |          \  }}|dd         t           j        k    r||dd          z   }|S )Nr   r   )r   rv   
splitdrivesep)r   rv   drives      r$   r  zbdist_wheel._ensure_relative  sG    g((..t!948#Dr&   Iterable[str]c           	     >   t           dk    r| j        j        j        pdS t	                      }| j                            d          }t           dk    r0t          t          t                   | j        j        j                  }n'd|v r!|d         d         	                                }nd}d|v r=t          j        dt          d	
           |                    |d         d                    |s|st          |t                    sd}|D ]}t!          |          D ]}|                    d          rt%          j        d| d           0||vrOt(          j                            |          r0t%          j        d| d| d           |                    |           |S )N9   r5   metadata*   license_filesr   license_filezEThe "license_file" option is deprecated. Use "license_files" instead.rN   rO   )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   rh   rR   rL   DeprecationWarningadd
isinstancelistr   endswithr   debugr   rv   isfiler  )r   filesr,  patternspatternrv   s         r$   license_pathszbdist_wheel.license_paths  s   #r))$-;ArA%%$44Z@@#r))HSM4+<+E+STTHH (**#O4Q7==??X%%MW"   
 IIh~.q1222 	JX 	Jj4.H.H 	JIH 	$ 	$Gg $ $==%% IS$SSS   u$$)=)=$HUUU'UUU   IIdOOO$ r&   egginfo_pathdistinfo_pathc                v   dd} ||           t           j                            |          sddl}t           j                            t           j                            |          d          }|                    |          }d	| d
}|r.t           j                            |d                   }|d| dz  }t          |          t           j                            |          r%t          ||          }	t          j
        |           nt           j                            |d          }
t          ||
          }	t          j        ||d            t           j                            |d          }t          |d          5 }|                                                                }ddd           n# 1 swxY w Y   |s ||           t           j                            |d          }t!          ddd          }t          |dd          5 }t#          ||                              |	           ddd           n# 1 swxY w Y   | j        D ]T}t           j                            |          }t          j        |t           j                            ||                     U ||           dS )z:Convert an .egg-info directory into a .dist-info directoryr   r   r   ry   c                V   t           j                            |           rTt           j                            |           s5t           j                            |           rt          j        |            dS t           j                            |           rt          j        |            dS dS )z-Appropriately delete directory, file or link.N)r   rv   r  islinkisdirshutilr   unlink)r   s    r$   adiosz#bdist_wheel.egg2dist.<locals>.adios#  s    w~~a   ):): rw}}Q?O?O a     "" 	! 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.txtrG  r5   )xys     r$   <lambda>z&bdist_wheel.egg2dist.<locals>.<lambda>I  s     % % % r&   )ignorezdependency_links.txtzutf-8)encodingMETADATATF)utf8mangle_from_max_line_lengthr   )policy)r   r   r   ry   )r   rv   r  globri   dirnamebasenamer   r9  r   mkdirrD  copytreer  readr   r   r   r   r=  copy)r   r>  r?  rF  rV  patpossibleerraltpkg_infopkginfo_pathdependency_links_pathdependency_links_filedependency_linkspkg_info_pathserialization_policyoutlicense_pathfilenames                      r$   r  zbdist_wheel.egg2dist   sS   	 	 	 	 	mw~~l++ 	"
 KKK',,rw|<<lKKCyy~~HJlJJJC Kg&&x{33JCJJJJS//!7>>,'' 	-*<FFHH]#### 7<<jAAL*<FFH O 	 	 	 	 %'GLL@V$W$W!+g>>> HBW#8#=#=#?#?#E#E#G#G H H H H H H H H H H H H H H H# -+,,,]J??* 
  
  

 -w777 	J3c"6777??III	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J !. 	M 	MLw''55HKbgll=(&K&KLLLLls$   'F::F>F>%III)r   r   )r  r   r  r   )rv   r   r   r   )r   r)  )r>  r   r?  r   )__name__
__module____qualname__descriptionr   r   r   rE   r   ri   r;   user_optionsboolean_optionsr   r   propertyr   r   r  wheel_versionr  r  r=  r  r5   r&   r$   r   r      s       /K    	Q/%d++/ / /	
	
 	LR	

	

	

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

	
	
g8Lt KJJO( ( (*)R )R )RV $ $ X$8 8 8 8tXF XF XFv 5UM4T4T4T; ; ; ; ;0    * * * X*XE E E E E Er&   r   )r   r   r   r   )r   r   r   r   )r   r/   )r   r   )r<   r=   r   r   )TT)
rI   r   rJ   r/   rK   r/   rL   r/   r   r/   )r   r=   )rt   ru   rv   r   rw   rx   r   ry   )rt   ru   rv   r   r}   r~   r   ry   )A__doc__
__future__r   r   r!   rD  r   r3   r9   rD   rR   email.generatorr   r   email.policyr   rV  r   r   typingr	   r
   r   r   r   r   zipfiler   r   
setuptoolsr   r[   r   rr  r,  r   utilr   vendored.packagingr   r   r*   	wheelfiler   types
__import__ImportErrorr   	configurer%   r.   intrh   r1  r   r6   r;   rE   rU   rn   rq   rs   r|   r{   r   r5   r&   r$   <module>r     sR    # " " " " " 				 				    



      5 5 5 5 5 5 5 5 $ $ $ $ $ $             M M M M M M M M M M M M M M M M , , , , , , , ,           * * * * * * ) ) ) ) ) )       $ $ $ $ $ $ = = = = = =             LLL$J#$$$$ $ $ $%%%%%%!!#####	$/ / / /	6 	6 	6 	6 3z5;;C@@CDD ! % % % %& & & &$ $ $ $* CG    "% % % %P- - - -3 3 3 30 0 0 0   
t t t t t' t t t t ts   B B98B9