
    |gL              
         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Zd dlmZ d dlmZ d dlmZ d dlmZ d dlZd dlZd dlmZ d dlZd dlmZmZmZmZ d d	lm Z  d d
l!m"Z" d dl#m$Z$ h dZ%h dZ&ddhZ'dZ(e(ddide)jU                  e&e'z  d       ed      dd ed      ddid ed      ddd ed      ddddddddiid  ed!      ddd"d# ed$      d%d&d'Z+e
j                  d(k7  r ed)      d*d+d,e+d-<   d. Z,d/ Z- ej\                  d01      d2        Z/ej\                  d3        Z0d4 Z1d5 Z2d6Z3d7 Z4d8 Z5d9 Z6ejn                  jq                  d:d;d<d=e(js                  d>d?      fg      d@        Z:dA Z;dB Z<dC Z=dDZ>dEZ?ejn                  j                  dF      dG        ZAdH ZBejn                  jq                  dI eCej                  j                                eCej                        J      dK        ZFdL ZGdM ZHdN ZIdO ZJdP ZKdQ ZLdR ZMdS ZNdT ZOdU ZPejn                  jq                  dVdWdXg      ejn                  j                   ej                         dYk7  dZ[      d\               ZSd^d]ZTy)_    )annotationsN)suppress)cleandoc)Mock)ZipFile)tags)bdist_wheelget_abi_tagremove_readonlyremove_readonly_exc)Distribution)SetuptoolsDeprecationWarning)	run_setup>   dummy_dist-1.0.dist-info/WHEEL&dummy_dist-1.0.dist-info/top_level.txtdummy_dist-1.0.dist-info/RECORD!dummy_dist-1.0.dist-info/METADATA>
   
COPYING.md
NOTICE.rstAUTHORS.txtLICENCE.txtLICENSE.txtNOTICEAUTHORSCOPYINGLICENCELICENSEzLICENSE~zAUTHORS~zQfrom setuptools import setup

setup(
    name='dummy_dist',
    version='1.0',
)
	DUMMYFILE )setup.pylicensesu  
            from setuptools import setup

            setup(
                name="simple.dist",
                version="0.1",
                description="A testing distribution ☃",
                extras_require={"voting": ["beaglevote"]},
            )
            )r    
simpledistui  
            from setuptools import setup

            setup(
                name="complex-dist",
                version="0.1",
                description="Another testing distribution ☃",
                long_description="Another testing distribution ☃",
                author="Illustrious Author",
                author_email="illustrious@example.org",
                url="http://example.org/exemplary",
                packages=["complexdist"],
                setup_requires=["setuptools"],
                install_requires=["quux", "splort"],
                extras_require={"simple": ["simple.dist"]},
                entry_points={
                    "console_scripts": [
                        "complex-dist=complexdist:main",
                        "complex-dist2=complexdist:main",
                    ],
                },
            )
            __init__.pyzdef main(): return)r    complexdistz
            from setuptools import setup

            setup(
                name="headers.dist",
                version="0.1",
                description="A distribution with headers",
                headers=["header.h"],
            )
            )r    zheadersdist.pyzheader.hak  
            from setuptools import setup

            setup(
                name="testrepo",
                version="0.1",
                packages=["mypackage"],
                description="A test package with commas in file names",
                include_package_data=True,
                package_data={"mypackage.data": ["*"]},
            )
            )r#   z	1,2,3.txt)r#   data	mypackage)r    r&   ztestrepo-0.1.0u  
            from setuptools import setup

            setup(
                name="unicode.dist",
                version="0.1",
                description="A testing distribution ☃",
                packages=["unicodedist"],
                zip_safe=True,
            )
            )r#      åäö_日本語.py)r    unicodedistu   
            [metadata]
            name = utf8-metadata-dist
            version = 42
            author_email = "John X. Ãørçeč" <john@utf8.org>, Γαμα קּ 東 <gama@utf8.org>
            long_description = file: README.rst
               UTF-8 描述 説明)	setup.cfgz
README.rst)
dummy-distzsimple-distzcomplex-distzheaders-distzcommasinfilenames-distzunicode-distzutf8-metadata-distwin32u  
            from setuptools import Extension, setup

            setup(
                name="extension.dist",
                version="0.1",
                description="A testing distribution ☃",
                ext_modules=[
                    Extension(
                        name="extension", sources=["extension.c"], py_limited_api=True
                    )
                ],
            )
            z![bdist_wheel]
py_limited_api=cp32z5#define Py_LIMITED_API 0x03020000
#include <Python.h>)r    r*   extension.czabi3extension-distc                    t         j                  j                  d      rt        dd      nt	        ddi      }|j                          t        |      }| j                         D ]  \  }}t        |||        |j                          |S )zHRun command in the same process so that it is easier to collect coverager    init)
stop_afterscript_namez%%build_meta%%)
ospathexistsr   r   parse_config_filesr	   itemssetattrfinalize_options)kwargsdist_objcmdattrvalues        ^/var/www/html/pythonbot/venv/lib/python3.12/site-packages/setuptools/tests/test_bdist_wheel.pybdist_wheel_cmdr?      s     77>>*% 	*0=*:;< 
 !
h
C||~ "eT5!"J    c                    | j                  |      }t        j                  j                  t        |   t        |             |S )N)prefix)mktempjaracor3   buildEXAMPLESstr)tmp_path_factorynamebasedirs      r>   	mkexamplerK      s6    %%d+G
KKhtnS\:Nr@   session)scopec                   | j                  d      }| j                  d      }t        D ]v  }t        | |      }||z  }t        j                  j                         j                  |      5  t        t        |      t        |            j                          d d d        x t        d |j                  d      D              S # 1 sw Y   xY w)NrE   dist	bdist_dirdist_dirc              3  2   K   | ]  }t        |        y wN)rG   ).0fnames     r>   	<genexpr>zwheel_paths.<locals>.<genexpr>   s     A#e*As   z*.whl)rC   rF   rK   rD   r3   DirectoryStackcontextr?   rG   runsortedglob)rH   
build_baserR   rI   example_dir	build_dirs         r>   wheel_pathsr`      s    !((1J&&v.H T 0$7%	[['')11+> 	Tc)ns8}MQQS	T 	TT A(--*@AAA	T 	Ts   *.CC	c                    t        | d      S )Nr+   )rK   )rH   s    r>   
dummy_distrb      s    %|44r@   c                    t        d | D              }t        |      j                         D ]  }d|j                  vrJ  y)z0Make sure entry point scripts are not generated.c              3  *   K   | ]  }d |v s|  yw)complex_distN rU   r3   s     r>   rW   z"test_no_scripts.<locals>.<genexpr>        G$0FG   	z.data/scripts/N)nextr   infolistfilename)r`   r3   entrys      r>   test_no_scriptsrn      s@    GGGD'') 6u~~5556r@   c                    t        d | D              }t        |      5 }|j                  d      }d d d        dj                         v sJ y # 1 sw Y   xY w)Nc              3  *   K   | ]  }d |v s|  yw)zunicode.distNrf   rg   s     r>   rW   z&test_unicode_record.<locals>.<genexpr>   rh   ri   z!unicode.dist-0.1.dist-info/RECORDr'   )rj   r   readencode)r`   r3   zfrecords       r>   test_unicode_recordru      sX    GGGD	 >"<=> !'')V333> >s   AAu   Metadata-Version: 2.1
Name: helloworld
Version: 42
Author-email: "John X. Ãørçeč" <john@utf8.org>, Γαμα קּ 東 <gama@utf8.org>


UTF-8 描述 説明
c                R   | j                  |       |dz  }|dz  }|j                          |dz  j                  t        d       |dz  j	                           G d dt
              } |       }|j                  ||       |d	z  j                  d      }d
|v sJ d|v sJ d|v sJ y )Nzdummy_dist.egg-infozdummy_dist.dist-infozPKG-INFOutf-8encodingzdependency_links.txtc                  &    e Zd ZdZd Zed        Zy);test_preserve_unicode_metadata.<locals>.simpler_bdist_wheelz1Avoid messing with setuptools/distutils internalsc                     y rT   rf   selfs    r>   __init__zDtest_preserve_unicode_metadata.<locals>.simpler_bdist_wheel.__init__  s    r@   c                    g S rT   rf   r}   s    r>   license_pathszItest_preserve_unicode_metadata.<locals>.simpler_bdist_wheel.license_paths   s    Ir@   N)__name__
__module____qualname____doc__r   propertyr   rf   r@   r>   simpler_bdist_wheelr{     s    ?	 
	 
	r@   r   METADATAu"   Author-email: "John X. Ãørçeč"u   Γαμα קּ 東 r)   )chdirmkdir
write_textUTF8_PKG_INFOtouchr	   egg2dist	read_text)monkeypatchtmp_pathegginfodistinfor   cmd_objmetadatas          r>   test_preserve_unicode_metadatar     s    h..G00HMMOz%%mg%F%%,,.k  "#GWh':%00'0BH/8;;;(*** H,,,r@   c                .   |j                  |        t        t        |            j                          t	        d      5 }t
        D ch c]  }d|z   	 }}t        |j                               t        |z  k(  sJ 	 d d d        y c c}w # 1 sw Y   y xY w)NrQ   $dist/dummy_dist-1.0-py3-none-any.whldummy_dist-1.0.dist-info/)	r   r?   rG   rZ   r   DEFAULT_LICENSE_FILESsetnamelistDEFAULT_FILES)rb   r   r   wfrV   license_filess         r>   test_licenses_defaultr   -  s    j!c(m,002	7	8 CB=R
49'%/
 
 2;;=!]]%BBBB	C C
C Cs    	B	B'BBBc                B   | j                  d      j                  dd       |j                  |        t        t	        |            j                          t        d      5 }dh}t        |j                               t        |z  k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr*   z*[metadata]
license_file=licenses/DUMMYFILErw   rx   r   r   z"dummy_dist-1.0.dist-info/DUMMYFILE
joinpathr   r   r?   rG   rZ   r   r   r   r   )rb   r   r   r   r   s        r>   test_licenses_deprecatedr   7  s    $//5 0  j!c(m,002	7	8 CB=>2;;=!]]%BBBBC C Cs   ")BBzconfig_file, config)r*   z-[metadata]
license_files=licenses/*
  LICENSE)r*   z,[metadata]
license_files=licenses/*, LICENSEr    )z2  license_files=['licenses/DUMMYFILE', 'LICENSE'])c                j   | j                  |      j                  |d       |j                  |        t        t	        |            j                          t        d      5 }dD ch c]  }d|z   	 }}t        |j                               t        |z  k(  sJ 	 d d d        y c c}w # 1 sw Y   y xY w)Nrw   rx   r   r   >   r   r   r   r   )rb   r   r   config_fileconfigr   rV   r   s           r>   test_licenses_overrider   D  s     $///Ij!c(m,002	7	8 CB=U
49'%/
 
 2;;=!]]%BBBB	C C
C Cs   "B)'B$3'B)$B))B2c                6   | j                  d      j                  dd       |j                  |        t        t	        |            j                          t        d      5 }t        |j                               t        k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr*   z[metadata]
license_files=
rw   rx   r   r   r   )rb   r   r   r   s       r>   test_licenses_disabledr   \  s    $//& 0  j!c(m,002	7	8 3B2;;=!]2223 3 3s   "#BBc                    |j                  |        t        t        |      d      j                          t	        d      5 }t        |j                               }d|v sJ d|v sJ 	 d d d        y # 1 sw Y   y xY w)N2rQ   build_numberz&dist/dummy_dist-1.0-2-py3-none-any.whlr   r   )r   r?   rG   rZ   r   r   r   )rb   r   r   r   	filenamess        r>   test_build_numberr   f  sw    j!c(m#>BBD	9	: @b&	0I===2i???@ @ @s   &A11A:c                   |j                  |        t        j                  t        d      5  t	        t        |      d      j                          d d d        t        j                  j                  d      sJ y # 1 sw Y   +xY w)Nz.*universal is deprecatedmatchT)rQ   	universalz(dist/dummy_dist-1.0-py2.py3-none-any.whl)
r   pytestwarnsr   r?   rG   rZ   r2   r3   r4   )rb   r   r   s      r>   test_universal_deprecatedr   o  si    j!	2:U	V G#h-4@DDFG 77>>DEEE	G Gs   %A<<Ba&  #include <Python.h>

static PyMethodDef methods[] = {
  { NULL, NULL, 0, NULL }
};

static struct PyModuleDef module_def = {
  PyModuleDef_HEAD_INIT,
  "extension",
  "Dummy extension module",
  -1,
  methods
};

PyMODINIT_FUNC PyInit_extension(void) {
  return PyModule_Create(&module_def);
}
u   from __future__ import annotations

from setuptools import Extension, setup

setup(
    name="extension.dist",
    version="0.1",
    description="A testing distribution ☃",
    ext_modules=[Extension(name="extension", sources=["extension.c"])],
)
zEonce:Config variable '.*' is unset.*, Python ABI tag may be incorrectc                N   |j                  d      }|dz  j                  t        d       |dz  j                  t        d       |j	                  d      }|j	                  d      }| j                  |       t        t        |      t        |            j                          y	)
z=Test that building a binary wheel with the limited ABI works.extension_distr    rw   rx   r-   rE   rO   rP   N)	rC   r   EXTENSION_SETUPPYEXTENSION_EXAMPLEr   r   r?   rG   rZ   )r   r   rH   
source_dirr_   rR   s         r>   test_limited_abir     s    
 "(()9:J*(():W(M-++,=+P!!'*I  (Hj!c)ns8}EIIKr@   c                   t        |j                  d            }t        j                  t        |       |       |j	                  |       t        j                  |      D ]O  \  }}}|D ]D  }t        j                  t
        j                  j                  ||      t        j                         F Q t               j                          y )Ndummy)rG   r   shutilcopytreer   r2   walkchmodr3   joinstatS_IREADr?   rZ   )rb   r   r   rJ   root_dirsfilesrV   s           r>   test_build_from_readonly_treer     s    (##G,-G
OOC
OW-g !ggg. >eU 	>EHHRWW\\$.=	>> r@   zoption, compress_type)idsc                >   |j                  |        t        t        |      |      j                          t	        d      5 }t        |j                               }d|v sJ d|v sJ |j                  D ]  }|j                  |k(  rJ  	 d d d        y # 1 sw Y   y xY w)N)rQ   compressionr   r   r   )	r   r?   rG   rZ   r   r   r   filelistcompress_type)rb   r   r   optionr   r   r   zinfos           r>   test_compressionr     s     j!c(m@DDF	7	8 8B&	0I===2i???[[ 	8E&&-777	8	8 8 8s   ABBBc                    | D ]J  }t        |      5 }t        d |j                  D              }|j                  |      }d|vsJ 	 d d d        L y # 1 sw Y   WxY w)Nc              3  X   K   | ]"  }|j                   j                  d       s| $ yw)WHEELN)rl   endswith)rU   fns     r>   rW   z.test_wheelfile_line_endings.<locals>.<genexpr>  s!     WB9M9Mg9VRWs    **   )r   rj   r   rq   )r`   r3   r   	wheelfilewheelfile_contentss        r>   test_wheelfile_line_endingsr     sf     3T] 	3bW"++WWI!#!3 2222	3 	33	3 	3s   4AA	c                   |j                  dd       |j                  |        t        t        |      d      j	                          t        d      5 }|j                  D ]  }|j                  dk\  rJ  	 d d d        y # 1 sw Y   y xY w)NSOURCE_DATE_EPOCH02ar   z'dist/dummy_dist-1.0-2a-py3-none-any.whl)i     r   r   r   r   )setenvr   r?   rG   rZ   r   r   	date_time)rb   r   r   r   r   s        r>   test_unix_epoch_timestampsr     s~    *C0j!c(m$?CCE	:	; <r[[ 	<E??&;;;;	<< < <s   B 3B  B	c                    | j                  t        dd        | j                  t        dd        t               dk(  sJ y )Ninterpreter_namec                      y)Ncprf   rf   r@   r>   <lambda>z*test_get_abi_tag_windows.<locals>.<lambda>      r@   get_config_varc                     y)Nzcp313-win_amd64rf   xs    r>   r   z*test_get_abi_tag_windows.<locals>.<lambda>  r   r@   cp313r7   r   	sysconfigr
   r   s    r>   test_get_abi_tag_windowsr     s9    0,?	#35PQ=G###r@   c                    | j                  t        dd        | j                  t        dd        t               dk(  sJ y )Nr   c                      yNpprf   rf   r@   r>   r   z+test_get_abi_tag_pypy_old.<locals>.<lambda>  r   r@   r   c                     y)Nzpypy36-pp73rf   r   s    r>   r   z+test_get_abi_tag_pypy_old.<locals>.<lambda>  r   r@   pypy36_pp73r   r   s    r>   test_get_abi_tag_pypy_oldr     s9    0,?	#35LM=M)))r@   c                    | j                  t        dd        | j                  t        dd        t               dk(  sJ y )Nr   c                     y)Nzpypy37-pp73-darwinrf   r   s    r>   r   z+test_get_abi_tag_pypy_new.<locals>.<lambda>  r   r@   r   c                      yr   rf   rf   r@   r>   r   z+test_get_abi_tag_pypy_new.<locals>.<lambda>  r   r@   pypy37_pp73r7   r   r   r
   r   s    r>   test_get_abi_tag_pypy_newr    s9    	#35ST0,?=M)))r@   c                    | j                  t        dd        | j                  t        dd        t               dk(  sJ y )Nr   c                     y)Nz"graalpy231-310-native-x86_64-linuxrf   r   s    r>   r   z*test_get_abi_tag_graalpy.<locals>.<lambda>  r   r@   r   c                      y)Ngraalpyrf   rf   r@   r>   r   z*test_get_abi_tag_graalpy.<locals>.<lambda>  r   r@   graalpy231_310_nativer   r   s    r>   test_get_abi_tag_graalpyr    s@    #%S 02CD=3333r@   c                    | j                  t        dd        | j                  t        dd        t               dk(  sJ y )Nr   c                     y)Nzunknown-python-310rf   r   s    r>   r   z+test_get_abi_tag_fallback.<locals>.<lambda>  r   r@   r   c                      y)Nzunknown-pythonrf   rf   r@   r>   r   z+test_get_abi_tag_fallback.<locals>.<lambda>  r   r@   unknown_python_310r   r   s    r>   test_get_abi_tag_fallbackr    s;    	#35ST02JK=0000r@   c                Z    |j                  |        t        d      j                          y)z>Ensure building on platforms with a space in the name succeed.zisilon onefs)	plat_nameN)r   r?   rZ   )rb   r   s     r>   test_platform_with_spacer    s!    j!n-113r@   c                   |dz  }|j                          |j                  d      }|j                          |j                  t        j
                         t        j                  j                  d      rdnd}t        j                  dk  r8t        t              }t        j                  ||       |j                  |k(  s:J t        t              }t        j                  ||	       |j                  |k(  sJ |j!                         rJ y
)zVerify onerr works as expectedwith_readonlyfile.txtwinr   r   )      )side_effect)onerror)onexcN)r   r   r   r   r   r   sysplatform
startswithversion_infor   r   r   rmtree
call_countr   is_dir)r   r   rQ   	some_fileexpected_countcount_remove_readonlycount_remove_readonly_excs          r>   test_rmtree_readonlyr$    s     ?*IOO"":.IOOOODLL!,,11%8QaN
'! $ Ai)>?$//>AAA$(5H$I!i'@A(33~EEE!!!!r@   c                   | j                  |       ddddd}|j                         D ]6  \  }}t        |dd      5 }|j                  t	        |             ddd       8 t               j                          d	}t        j                  j                  |      sJ t        t        |      j                               }d
D ]  }||v rJ  dD ]  }	|	|vrJ  y# 1 sw Y   xY w)z
    Setuptools allow authors to set PEP 440's local version segments
    using ``egg_info.tag_build``. This should be reflected not only in the
    ``.whl`` file name, but also in the ``.dist-info`` and ``.data`` dirs.
    See pypa/setuptools#3997.
    z]
            from setuptools import setup
            setup(headers=["hello.h"])
            z
            [metadata]
            name = test
            version = 1.0

            [options.data_files]
            hello/world = file.txt

            [egg_info]
            tag_build = +what
            tag_date = 0
            r   )r    r*   r  zhello.hwrw   rx   Nz#dist/test-1.0+what-py3-none-any.whl)z"test-1.0+what.data/headers/hello.hz,test-1.0+what.data/data/hello/world/file.txtz test-1.0+what.dist-info/METADATAztest-1.0+what.dist-info/WHEEL)ztest.data/headers/hello.hz'test-1.0.data/data/hello/world/file.txtztest.dist-info/METADATAztest-1.0.dist-info/WHEEL)r   r6   openwriter   r?   rZ   r2   r3   r4   r   r   r   )
r   r   r   filecontentfh
wheel_pathentriesexpectednot_expecteds
             r>   test_data_dir_with_tag_buildr0    s    h %E(  (g$g. 	("HHXg&'	( 	((  7J77>>*%%%'*%..01G # 7"""# + 7***+#	( 	(s   CC#	zreported,expected)zlinux-x86_64
linux_i686)zlinux-aarch64linux_armv7lLinuxz!Only makes sense to test on Linux)reasonc                    |j                  t        dd        t        j                         }t	        |      }| |_        d|_        |j                         \  }}}||k(  sJ y )Ncalcsizec                     y)N   rf   r   s    r>   r   z'test_platform_linux32.<locals>.<lambda>Q  r   r@   F)r7   struct
setuptoolsr   r	   r  root_is_pureget_tag)reportedr.  r   rO   r;   _actuals          r>   test_platform_linux32r@  I  s\     
K8""$D
d
CCMC;;=LAq&Xr@   c                r   dd}t        t              5  | j                  t        j                  d       d d d        | j                  t        d|       t        j                  t        d      5  dd l
}d d d        | j                  t        j                  d       dd l}y # 1 sw Y   mxY w# 1 sw Y   :xY w)	Nc                Z    | dk(  rt        d|        t        j                  | g|i |S )NctypeszNo module named )ModuleNotFoundError	importlib
__import__)rI   argsr9   s      r>   _fake_importz$test_no_ctypes.<locals>._fake_import[  s8    8%(8&?@@##D:4:6::r@   zwheel.macosx_libfilerF  zNo module named ctypesr   r   zsetuptools.command.bdist_wheel)rI   rG   )r   KeyErrordelitemr  modulesr7   builtinsr   raisesrD  wheel.macosx_libfilesetuptools.command.bdist_wheel)r   rH  wheelr:  s       r>   test_no_ctypesrQ  Z  s    ; 
(	 ACKK)?@A ,=	*2J	K $#$
 %EF)A A
$ $s   !B!/B-!B*-B6)returnNone)U
__future__r   rL  rE  os.pathr2   r  r   r   r9  r  r   
contextlibr   inspectr   unittest.mockr   zipfiler   jaraco.pathrD   r   	packagingr   r:  rO  r	   r
   r   r   setuptools.distr   setuptools.warningsr   distutils.corer   r   r   OTHER_IGNORED_FILESSETUPPY_EXAMPLEdictfromkeysrF   r?   rK   fixturer`   rb   rn   ru   r   r   r   r   markparametrizereplacer   r   r   r   r   r   filterwarningsr   r   listsupported_compressionsr6   r   r   r   r   r   r  r  r  r  r$  r0  skipifsystemr@  rQ  rf   r@   r>   <module>rl     s   "        
           ) < $    $ "% ---0CCR
H 	
   
2 &';<5: 	
 " 
 $&R8

 -,
'0 

 (*"E" 
 ,Qtn <<7 
  :O%&H!", i 	B !	B 5 564-8C
C HF##I	
	CC3@F &  KLL
 	+	+	1	1	34[//0  
8
83<$**414".4+n #%FG HOO )L  	*r@   