Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
setuptools
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jérome Perrin
setuptools
Commits
3d4d8b9d
Commit
3d4d8b9d
authored
Jan 19, 2020
by
Jason R. Coombs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
👹
Feed the hobgoblins (delint).
parent
a0e8d056
Changes
32
Show whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
251 additions
and
187 deletions
+251
-187
docs/conf.py
docs/conf.py
+11
-28
pkg_resources/__init__.py
pkg_resources/__init__.py
+3
-1
pkg_resources/tests/test_pkg_resources.py
pkg_resources/tests/test_pkg_resources.py
+5
-3
pkg_resources/tests/test_resources.py
pkg_resources/tests/test_resources.py
+1
-2
setuptools/__init__.py
setuptools/__init__.py
+3
-3
setuptools/archive_util.py
setuptools/archive_util.py
+4
-2
setuptools/build_meta.py
setuptools/build_meta.py
+16
-8
setuptools/command/build_clib.py
setuptools/command/build_clib.py
+17
-14
setuptools/command/build_ext.py
setuptools/command/build_ext.py
+6
-3
setuptools/command/easy_install.py
setuptools/command/easy_install.py
+18
-13
setuptools/command/egg_info.py
setuptools/command/egg_info.py
+8
-4
setuptools/command/install_lib.py
setuptools/command/install_lib.py
+2
-1
setuptools/command/py36compat.py
setuptools/command/py36compat.py
+1
-1
setuptools/command/test.py
setuptools/command/test.py
+2
-1
setuptools/command/upload_docs.py
setuptools/command/upload_docs.py
+3
-3
setuptools/dep_util.py
setuptools/dep_util.py
+3
-1
setuptools/installer.py
setuptools/installer.py
+2
-2
setuptools/msvc.py
setuptools/msvc.py
+10
-7
setuptools/namespaces.py
setuptools/namespaces.py
+10
-6
setuptools/package_index.py
setuptools/package_index.py
+4
-2
setuptools/py27compat.py
setuptools/py27compat.py
+1
-1
setuptools/sandbox.py
setuptools/sandbox.py
+5
-4
setuptools/site-patch.py
setuptools/site-patch.py
+6
-4
setuptools/ssl_support.py
setuptools/ssl_support.py
+14
-9
setuptools/tests/test_build_meta.py
setuptools/tests/test_build_meta.py
+1
-0
setuptools/tests/test_dist.py
setuptools/tests/test_dist.py
+7
-4
setuptools/tests/test_easy_install.py
setuptools/tests/test_easy_install.py
+47
-30
setuptools/tests/test_egg_info.py
setuptools/tests/test_egg_info.py
+27
-21
setuptools/tests/test_test.py
setuptools/tests/test_test.py
+1
-1
setuptools/tests/test_virtualenv.py
setuptools/tests/test_virtualenv.py
+7
-5
setuptools/tests/test_wheel.py
setuptools/tests/test_wheel.py
+4
-2
setuptools/wheel.py
setuptools/wheel.py
+2
-1
No files found.
docs/conf.py
View file @
3d4d8b9d
# -*- coding: utf-8 -*-
#
# Setuptools documentation build configuration file, created by
# sphinx-quickstart on Fri Jul 17 14:22:37 2009.
#
# This file is execfile()d with the current directory set to its containing dir.
#
# The contents of this file are pickled, so don't put values in the namespace
# that aren't pickleable (module imports are okay, they're removed automatically).
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
import
subprocess
import
sys
import
os
...
...
@@ -30,10 +10,8 @@ import os
cwd
=
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
os
.
path
.
pardir
),
)
# -- General configuration --
---------------------------------------------------
# -- General configuration --
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions
=
[
'jaraco.packaging.sphinx'
,
'rst.linker'
]
# Add any paths that contain templates here, relative to this directory.
...
...
@@ -45,7 +23,8 @@ source_suffix = '.txt'
# The master toctree document.
master_doc
=
'index'
# A list of glob-style patterns that should be excluded when looking for source files.
# A list of glob-style patterns that should be excluded
# when looking for source files.
exclude_patterns
=
[
'requirements.txt'
]
# List of directories, relative to source directory, that shouldn't be searched
...
...
@@ -55,7 +34,7 @@ exclude_trees = []
# The name of the Pygments (syntax highlighting) style to use.
pygments_style
=
'sphinx'
# -- Options for HTML output --
-------------------------------------------------
# -- Options for HTML output --
# The theme to use for HTML and HTML Help pages. Major themes that come with
# Sphinx are currently 'default' and 'sphinxdoc'.
...
...
@@ -69,7 +48,10 @@ html_theme_path = ['_theme']
html_use_smartypants
=
True
# Custom sidebar templates, maps document names to template names.
html_sidebars
=
{
'index'
:
[
'relations.html'
,
'sourcelink.html'
,
'indexsidebar.html'
,
'searchbox.html'
]}
html_sidebars
=
{
'index'
:
[
'relations.html'
,
'sourcelink.html'
,
'indexsidebar.html'
,
'searchbox.html'
]}
# If false, no module index is generated.
html_use_modindex
=
False
...
...
@@ -77,10 +59,11 @@ html_use_modindex = False
# If false, no index is generated.
html_use_index
=
False
# -- Options for LaTeX output --
------------------------------------------------
# -- Options for LaTeX output --
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
# (source start file, target name, title, author,
# documentclass [howto/manual]).
latex_documents
=
[
(
'index'
,
'Setuptools.tex'
,
'Setuptools Documentation'
,
'The fellowship of the packaging'
,
'manual'
),
...
...
pkg_resources/__init__.py
View file @
3d4d8b9d
...
...
@@ -2329,7 +2329,8 @@ register_namespace_handler(object, null_ns_handler)
def normalize_path(filename):
"""Normalize a file/dir name for comparison purposes"""
return os.path.normcase(os.path.realpath(os.path.normpath(_cygwin_patch(filename))))
return os.path.normcase(os.path.realpath(os.path.normpath(
_cygwin_patch(filename))))
def _cygwin_patch(filename): # pragma: nocover
...
...
@@ -3288,6 +3289,7 @@ def _initialize_master_working_set():
list(map(working_set.add_entry, sys.path))
globals().update(locals())
class PkgResourcesDeprecationWarning(Warning):
"""
Base class for warning about deprecations in ``pkg_resources``
...
...
pkg_resources/tests/test_pkg_resources.py
View file @
3d4d8b9d
...
...
@@ -17,7 +17,9 @@ try:
except
ImportError
:
import
mock
from
pkg_resources
import
DistInfoDistribution
,
Distribution
,
EggInfoDistribution
from
pkg_resources
import
(
DistInfoDistribution
,
Distribution
,
EggInfoDistribution
,
)
from
setuptools.extern
import
six
from
pkg_resources.extern.six.moves
import
map
from
pkg_resources.extern.six
import
text_type
,
string_types
...
...
@@ -279,8 +281,8 @@ def make_distribution_no_version(tmpdir, basename):
(
'dist-info'
,
'METADATA'
,
DistInfoDistribution
),
],
)
def
test_distribution_version_missing
(
tmpdir
,
suffix
,
expected_filename
,
expected_dist_type
):
def
test_distribution_version_missing
(
tmpdir
,
suffix
,
expected_filename
,
expected_dist_type
):
"""
Test Distribution.version when the "Version" header is missing.
"""
...
...
pkg_resources/tests/test_resources.py
View file @
3d4d8b9d
...
...
@@ -15,7 +15,7 @@ import pkg_resources
from
pkg_resources
import
(
parse_requirements
,
VersionConflict
,
parse_version
,
Distribution
,
EntryPoint
,
Requirement
,
safe_version
,
safe_name
,
WorkingSet
,
PkgResourcesDeprecationWarning
)
WorkingSet
)
# from Python 3.6 docs.
...
...
@@ -501,7 +501,6 @@ class TestEntryPoints:
ep
.
load
(
require
=
False
)
class
TestRequirements
:
def
testBasics
(
self
):
r
=
Requirement
.
parse
(
"Twisted>=1.2"
)
...
...
setuptools/__init__.py
View file @
3d4d8b9d
"""Extensions to the 'distutils' for large or complex distributions"""
import
os
import
sys
import
functools
import
distutils.core
import
distutils.filelist
...
...
@@ -144,6 +143,7 @@ def setup(**attrs):
_install_setup_requires
(
attrs
)
return
distutils
.
core
.
setup
(
**
attrs
)
setup
.
__doc__
=
distutils
.
core
.
setup
.
__doc__
...
...
setuptools/archive_util.py
View file @
3d4d8b9d
...
...
@@ -25,7 +25,8 @@ def default_filter(src, dst):
return
dst
def
unpack_archive
(
filename
,
extract_dir
,
progress_filter
=
default_filter
,
def
unpack_archive
(
filename
,
extract_dir
,
progress_filter
=
default_filter
,
drivers
=
None
):
"""Unpack `filename` to `extract_dir`, or raise ``UnrecognizedFormat``
...
...
@@ -148,7 +149,8 @@ def unpack_tarfile(filename, extract_dir, progress_filter=default_filter):
# resolve any links and to extract the link targets as normal
# files
while
member
is
not
None
and
(
member
.
islnk
()
or
member
.
issym
()):
while
member
is
not
None
and
(
member
.
islnk
()
or
member
.
issym
()):
linkpath
=
member
.
linkname
if
member
.
issym
():
base
=
posixpath
.
dirname
(
member
.
name
)
...
...
setuptools/build_meta.py
View file @
3d4d8b9d
...
...
@@ -48,6 +48,7 @@ __all__ = ['get_requires_for_build_sdist',
'__legacy__'
,
'SetupRequirementsError'
]
class
SetupRequirementsError
(
BaseException
):
def
__init__
(
self
,
specifiers
):
self
.
specifiers
=
specifiers
...
...
@@ -143,7 +144,8 @@ class _BuildMetaBackend(object):
def
get_requires_for_build_wheel
(
self
,
config_settings
=
None
):
config_settings
=
self
.
_fix_config
(
config_settings
)
return
self
.
_get_build_requires
(
config_settings
,
requirements
=
[
'wheel'
])
return
self
.
_get_build_requires
(
config_settings
,
requirements
=
[
'wheel'
])
def
get_requires_for_build_sdist
(
self
,
config_settings
=
None
):
config_settings
=
self
.
_fix_config
(
config_settings
)
...
...
@@ -160,8 +162,10 @@ class _BuildMetaBackend(object):
dist_infos
=
[
f
for
f
in
os
.
listdir
(
dist_info_directory
)
if
f
.
endswith
(
'.dist-info'
)]
if
(
len
(
dist_infos
)
==
0
and
len
(
_get_immediate_subdirectories
(
dist_info_directory
))
==
1
):
if
(
len
(
dist_infos
)
==
0
and
len
(
_get_immediate_subdirectories
(
dist_info_directory
))
==
1
):
dist_info_directory
=
os
.
path
.
join
(
dist_info_directory
,
os
.
listdir
(
dist_info_directory
)[
0
])
...
...
@@ -193,7 +197,8 @@ class _BuildMetaBackend(object):
config_settings
[
"--global-option"
])
self
.
run_setup
()
result_basename
=
_file_with_extension
(
tmp_dist_dir
,
result_extension
)
result_basename
=
_file_with_extension
(
tmp_dist_dir
,
result_extension
)
result_path
=
os
.
path
.
join
(
result_directory
,
result_basename
)
if
os
.
path
.
exists
(
result_path
):
# os.rename will fail overwriting on non-Unix.
...
...
@@ -202,7 +207,6 @@ class _BuildMetaBackend(object):
return
result_basename
def
build_wheel
(
self
,
wheel_directory
,
config_settings
=
None
,
metadata_directory
=
None
):
return
self
.
_build_with_temp_dir
([
'bdist_wheel'
],
'.whl'
,
...
...
@@ -217,9 +221,12 @@ class _BuildMetaBackend(object):
class
_BuildMetaLegacyBackend
(
_BuildMetaBackend
):
"""Compatibility backend for setuptools
This is a version of setuptools.build_meta that endeavors to maintain backwards
compatibility with pre-PEP 517 modes of invocation. It exists as a temporary
bridge between the old packaging mechanism and the new packaging mechanism,
This is a version of setuptools.build_meta that endeavors
to maintain backwards
compatibility with pre-PEP 517 modes of invocation. It
exists as a temporary
bridge between the old packaging mechanism and the new
packaging mechanism,
and will eventually be removed.
"""
def
run_setup
(
self
,
setup_script
=
'setup.py'
):
...
...
@@ -250,6 +257,7 @@ class _BuildMetaLegacyBackend(_BuildMetaBackend):
sys
.
path
[:]
=
sys_path
sys
.
argv
[
0
]
=
sys_argv_0
# The primary backend
_BACKEND
=
_BuildMetaBackend
()
...
...
setuptools/command/build_clib.py
View file @
3d4d8b9d
...
...
@@ -71,14 +71,17 @@ class build_clib(orig.build_clib):
output_dir
=
self
.
build_temp
)
if
newer_pairwise_group
(
dependencies
,
expected_objects
)
!=
([],
[]):
if
(
newer_pairwise_group
(
dependencies
,
expected_objects
)
!=
([],
[])
):
# First, compile the source code to object files in the library
# directory. (This should probably change to putting object
# files in a temporary build directory.)
macros
=
build_info
.
get
(
'macros'
)
include_dirs
=
build_info
.
get
(
'include_dirs'
)
cflags
=
build_info
.
get
(
'cflags'
)
objects
=
self
.
compiler
.
compile
(
self
.
compiler
.
compile
(
sources
,
output_dir
=
self
.
build_temp
,
macros
=
macros
,
...
...
setuptools/command/build_ext.py
View file @
3d4d8b9d
...
...
@@ -14,7 +14,8 @@ from setuptools.extern import six
if
six
.
PY2
:
import
imp
EXTENSION_SUFFIXES
=
[
s
for
s
,
_
,
tp
in
imp
.
get_suffixes
()
if
tp
==
imp
.
C_EXTENSION
]
EXTENSION_SUFFIXES
=
[
s
for
s
,
_
,
tp
in
imp
.
get_suffixes
()
if
tp
==
imp
.
C_EXTENSION
]
else
:
from
importlib.machinery
import
EXTENSION_SUFFIXES
...
...
@@ -29,7 +30,7 @@ except ImportError:
# make sure _config_vars is initialized
get_config_var
(
"LDSHARED"
)
from
distutils.sysconfig
import
_config_vars
as
_CONFIG_VARS
from
distutils.sysconfig
import
_config_vars
as
_CONFIG_VARS
# noqa
def
_customize_compiler_for_shlib
(
compiler
):
...
...
@@ -65,7 +66,9 @@ elif os.name != 'nt':
except
ImportError
:
pass
if_dl
=
lambda
s
:
s
if
have_rtld
else
''
def
if_dl
(
s
):
return
s
if
have_rtld
else
''
def
get_abi3_suffix
():
...
...
setuptools/command/easy_install.py
View file @
3d4d8b9d
...
...
@@ -121,7 +121,8 @@ else:
return
False
_one_liner
=
lambda
text
:
textwrap
.
dedent
(
text
).
strip
().
replace
(
'
\
n
'
,
'; '
)
def
_one_liner
(
text
):
return
textwrap
.
dedent
(
text
).
strip
().
replace
(
'
\
n
'
,
'; '
)
class
easy_install
(
Command
):
...
...
@@ -414,8 +415,8 @@ class easy_install(Command):
if
show_deprecation
:
self
.
announce
(
"WARNING: The easy_install command is deprecated "
"and will be removed in a future version."
,
log
.
WARN
,
"and will be removed in a future version."
,
log
.
WARN
,
)
if
self
.
verbose
!=
self
.
distribution
.
verbose
:
log
.
set_verbosity
(
self
.
verbose
)
...
...
@@ -507,13 +508,13 @@ class easy_install(Command):
the distutils default setting) was:
%s
"""
).
lstrip
()
"""
).
lstrip
()
# noqa
__not_exists_id
=
textwrap
.
dedent
(
"""
This directory does not currently exist. Please create it and try again, or
choose a different installation directory (using the -d or --install-dir
option).
"""
).
lstrip
()
"""
).
lstrip
()
# noqa
__access_msg
=
textwrap
.
dedent
(
"""
Perhaps your account does not have write access to this directory? If the
...
...
@@ -529,7 +530,7 @@ class easy_install(Command):
https://setuptools.readthedocs.io/en/latest/easy_install.html
Please make the appropriate changes for your system and try again.
"""
).
lstrip
()
"""
).
lstrip
()
# noqa
def
cant_write_to_target
(
self
):
msg
=
self
.
__cant_write_msg
%
(
sys
.
exc_info
()[
1
],
self
.
install_dir
,)
...
...
@@ -1093,13 +1094,13 @@ class easy_install(Command):
pkg_resources.require("%(name)s") # latest installed version
pkg_resources.require("%(name)s==%(version)s") # this exact version
pkg_resources.require("%(name)s>=%(version)s") # this version or higher
"""
).
lstrip
()
"""
).
lstrip
()
# noqa
__id_warning
=
textwrap
.
dedent
(
"""
Note also that the installation directory must be on sys.path at runtime for
this to work. (e.g. by being the application's script directory, by being on
PYTHONPATH, or by being added to sys.path by your code.)
"""
)
"""
)
# noqa
def
installation_report
(
self
,
req
,
dist
,
what
=
"Installed"
):
"""Helpful installation message for display to package users"""
...
...
@@ -1124,7 +1125,7 @@ class easy_install(Command):
%(python)s setup.py develop
See the setuptools documentation for the "develop" command for more info.
"""
).
lstrip
()
"""
).
lstrip
()
# noqa
def
report_editable
(
self
,
spec
,
setup_script
):
dirname
=
os
.
path
.
dirname
(
setup_script
)
...
...
@@ -1307,7 +1308,8 @@ class easy_install(Command):
https://setuptools.readthedocs.io/en/latest/easy_install.html#custom-installation-locations
Please make the appropriate changes for your system and try again."""
).
lstrip
()
Please make the appropriate changes for your system and try again.
"""
).
strip
()
def
no_default_version_msg
(
self
):
template
=
self
.
__no_default_msg
...
...
@@ -2093,7 +2095,8 @@ class ScriptWriter:
@
classmethod
def
get_script_header
(
cls
,
script_text
,
executable
=
None
,
wininst
=
False
):
# for backward compatibility
warnings
.
warn
(
"Use get_header"
,
EasyInstallDeprecationWarning
,
stacklevel
=
2
)
warnings
.
warn
(
"Use get_header"
,
EasyInstallDeprecationWarning
,
stacklevel
=
2
)
if
wininst
:
executable
=
"python.exe"
return
cls
.
get_header
(
script_text
,
executable
)
...
...
@@ -2342,6 +2345,8 @@ def _patch_usage():
finally
:
distutils
.
core
.
gen_usage
=
saved
class
EasyInstallDeprecationWarning
(
SetuptoolsDeprecationWarning
):
"""Class for warning about deprecations in EasyInstall in SetupTools. Not ignored by default, unlike DeprecationWarning."""
class
EasyInstallDeprecationWarning
(
SetuptoolsDeprecationWarning
):
"""
Warning for EasyInstall deprecations, bypassing suppression.
"""
setuptools/command/egg_info.py
View file @
3d4d8b9d
...
...
@@ -33,6 +33,7 @@ from setuptools.glob import glob
from
setuptools.extern
import
packaging
from
setuptools
import
SetuptoolsDeprecationWarning
def
translate_pattern
(
glob
):
"""
Translate a file path glob like '*.txt' in to a regular expression.
...
...
@@ -113,7 +114,7 @@ def translate_pattern(glob):
pat
+=
sep
pat
+=
r'\
Z
'
return re.compile(pat, flags=re.MULTILINE
|
re.DOTALL)
return re.compile(pat, flags=re.MULTILINE
|
re.DOTALL)
class InfoCommon:
...
...
@@ -637,7 +638,9 @@ def warn_depends_obsolete(cmd, basename, filename):
def
_write_requirements
(
stream
,
reqs
):
lines
=
yield_lines
(
reqs
or
())
append_cr
=
lambda
line
:
line
+
'
\
n
'
def
append_cr
(
line
):
return
line
+
'
\
n
'
lines
=
map
(
append_cr
,
lines
)
stream
.
writelines
(
lines
)
...
...
@@ -703,7 +706,8 @@ def get_pkg_info_revision():
Get a -r### off of PKG-INFO Version in case this is an sdist of
a subversion revision.
"""
warnings
.
warn
(
"get_pkg_info_revision is deprecated."
,
EggInfoDeprecationWarning
)
warnings
.
warn
(
"get_pkg_info_revision is deprecated."
,
EggInfoDeprecationWarning
)
if
os
.
path
.
exists
(
'PKG-INFO'
):
with
io
.
open
(
'PKG-INFO'
)
as
f
:
for
line
in
f
:
...
...
@@ -714,4 +718,4 @@ def get_pkg_info_revision():
class
EggInfoDeprecationWarning
(
SetuptoolsDeprecationWarning
):
"""
Class for warning about deprecations in eggInfo in setupTools. Not ignored by default, unlike DeprecationWarning
."""
"""
Deprecated behavior warning for EggInfo, bypassing suppression
."""
setuptools/command/install_lib.py
View file @
3d4d8b9d
...
...
@@ -77,7 +77,8 @@ class install_lib(orig.install_lib):
if
not
hasattr
(
sys
,
'implementation'
):
return
base
=
os
.
path
.
join
(
'__pycache__'
,
'__init__.'
+
sys
.
implementation
.
cache_tag
)
base
=
os
.
path
.
join
(
'__pycache__'
,
'__init__.'
+
sys
.
implementation
.
cache_tag
)
yield
base
+
'.pyc'
yield
base
+
'.pyo'
yield
base
+
'.opt-1.pyc'
...
...
setuptools/command/py36compat.py
View file @
3d4d8b9d
...
...
@@ -132,5 +132,5 @@ class sdist_add_defaults:
if
hasattr
(
sdist
.
sdist
,
'_add_defaults_standards'
):
# disable the functionality already available upstream
class
sdist_add_defaults
:
class
sdist_add_defaults
:
# noqa
pass
setuptools/command/test.py
View file @
3d4d8b9d
...
...
@@ -129,7 +129,8 @@ class test(Command):
@
contextlib
.
contextmanager
def
project_on_sys_path
(
self
,
include_dists
=
[]):
with_2to3
=
not
six
.
PY2
and
getattr
(
self
.
distribution
,
'use_2to3'
,
False
)
with_2to3
=
not
six
.
PY2
and
getattr
(
self
.
distribution
,
'use_2to3'
,
False
)
if
with_2to3
:
# If we run 2to3 we can not do this inplace:
...
...
setuptools/command/upload_docs.py
View file @
3d4d8b9d
...
...
@@ -127,8 +127,8 @@ class upload_docs(upload):
"""
Build up the MIME payload for the POST data
"""
boundary
=
b
'--------------GHSKFJDLGDS7543FJKLFHRE75642756743254'
sep_boundary
=
b'
\
n
--'
+
boundary
boundary
=
'--------------GHSKFJDLGDS7543FJKLFHRE75642756743254'
sep_boundary
=
b'
\
n
--'
+
boundary
.
encode
(
'ascii'
)
end_boundary
=
sep_boundary
+
b'--'
end_items
=
end_boundary
,
b"
\
n
"
,
builder
=
functools
.
partial
(
...
...
@@ -138,7 +138,7 @@ class upload_docs(upload):
part_groups
=
map
(
builder
,
data
.
items
())
parts
=
itertools
.
chain
.
from_iterable
(
part_groups
)
body_items
=
itertools
.
chain
(
parts
,
end_items
)
content_type
=
'multipart/form-data; boundary=%s'
%
boundary
.
decode
(
'ascii'
)
content_type
=
'multipart/form-data; boundary=%s'
%
boundary
return
b''
.
join
(
body_items
),
content_type
def
upload_file
(
self
,
filename
):
...
...
setuptools/dep_util.py
View file @
3d4d8b9d
from
distutils.dep_util
import
newer_group
# yes, this is was almost entirely copy-pasted from
# 'newer_pairwise()', this is just another convenience
# function.
...
...
@@ -10,7 +11,8 @@ def newer_pairwise_group(sources_groups, targets):
of 'newer_group()'.
"""
if
len
(
sources_groups
)
!=
len
(
targets
):
raise
ValueError
(
"'sources_group' and 'targets' must be the same length"
)
raise
ValueError
(
"'sources_group' and 'targets' must be the same length"
)
# build a pair of lists (sources_groups, targets) where source is newer
n_sources
=
[]
...
...
setuptools/installer.py
View file @
3d4d8b9d
...
...
@@ -64,8 +64,8 @@ def fetch_build_egg(dist, req):
dist
.
announce
(
'WARNING: The pip package is not available, falling back '
'to EasyInstall for handling setup_requires/test_requires; '
'this is deprecated and will be removed in a future version.'
,
log
.
WARN
'this is deprecated and will be removed in a future version.'
,
log
.
WARN
)
return
_legacy_fetch_build_egg
(
dist
,
req
)
# Warn if wheel is not.
...
...
setuptools/msvc.py
View file @
3d4d8b9d
...
...
@@ -1225,7 +1225,7 @@ class EnvironmentInfo:
arch_subdir = self.pi.target_dir(x64=True)
lib = join(self.si.WindowsSdkDir, '
lib
')
libver = self._sdk_subdir
return [join(lib, '
%
sum
%
s
' % (libver
, arch_subdir))]
return [join(lib, '
%
sum
%
s
' % (libver, arch_subdir))]
@property
def OSIncludes(self):
...
...
@@ -1274,11 +1274,14 @@ class EnvironmentInfo:
libpath += [
ref,
join(self.si.WindowsSdkDir, '
UnionMetadata
'),
join(ref, '
Windows
.
Foundation
.
UniversalApiContract
', '
1.0
.
0.0
'),
join(
ref, '
Windows
.
Foundation
.
UniversalApiContract
', '
1.0
.
0.0
'),
join(ref, '
Windows
.
Foundation
.
FoundationContract
', '
1.0
.
0.0
'),
join(ref,'
Windows
.
Networking
.
Connectivity
.
WwanContract
',
join(
ref, '
Windows
.
Networking
.
Connectivity
.
WwanContract
',
'
1.0
.
0.0
'),
join(self.si.WindowsSdkDir, '
ExtensionSDKs
', '
Microsoft
.
VCLibs
',
join(
self.si.WindowsSdkDir, '
ExtensionSDKs
', '
Microsoft
.
VCLibs
',
'
%
0.1
f' % self.vs_ver, '
References
', '
CommonConfiguration
',
'
neutral
'),
]
...
...
setuptools/namespaces.py
View file @
3d4d8b9d
...
...
@@ -47,13 +47,17 @@ class Installer:
"p = os.path.join(%(root)s, *%(pth)r)"
,
"importlib = has_mfs and __import__('importlib.util')"
,
"has_mfs and __import__('importlib.machinery')"
,
(
"m = has_mfs and "
"sys.modules.setdefault(%(pkg)r, "
"importlib.util.module_from_spec("
"importlib.machinery.PathFinder.find_spec(%(pkg)r, "
"[os.path.dirname(p)])))"
,
"[os.path.dirname(p)])))"
),
(
"m = m or "
"sys.modules.setdefault(%(pkg)r, types.ModuleType(%(pkg)r))"
,
"sys.modules.setdefault(%(pkg)r, types.ModuleType(%(pkg)r))"
),
"mp = (m or []) and m.__dict__.setdefault('__path__',[])"
,
"(p not in mp) and mp.append(p)"
,
)
...
...
setuptools/package_index.py
View file @
3d4d8b9d
...
...
@@ -46,7 +46,8 @@ __all__ = [
_SOCKET_TIMEOUT = 15
_tmpl = "setuptools/{setuptools.__version__} Python-urllib/{py_major}"
user_agent = _tmpl.format(py_major='
{}.{}
'.format(*sys.version_info), setuptools=setuptools)
user_agent = _tmpl.format(
py_major='
{}.{}
'.format(*sys.version_info), setuptools=setuptools)
def parse_requirement_arg(spec):
...
...
@@ -1092,7 +1093,8 @@ def open_with_auth(url, opener=urllib.request.urlopen):
# copy of urllib.parse._splituser from Python 3.8
def _splituser(host):
"""
splituser
(
'user[:passwd]@host[:port]'
)
-->
'user[:passwd]'
,
'host[:port]'
.
"""
"""
splituser
(
'user[:passwd]@host[:port]'
)
-->
'user[:passwd]'
,
'host[:port]'
.
"""
user, delim, host = host.rpartition('@')
return (user if delim else None), host
...
...
setuptools/py27compat.py
View file @
3d4d8b9d
...
...
@@ -16,7 +16,7 @@ def get_all_headers(message, key):
if
six
.
PY2
:
def
get_all_headers
(
message
,
key
):
def
get_all_headers
(
message
,
key
):
# noqa
return
message
.
getheaders
(
key
)
...
...
setuptools/sandbox.py
View file @
3d4d8b9d
...
...
@@ -13,6 +13,8 @@ from setuptools.extern import six
from
setuptools.extern.six.moves
import
builtins
,
map
import
pkg_resources.py31compat
from
distutils.errors
import
DistutilsError
from
pkg_resources
import
working_set
if
sys
.
platform
.
startswith
(
'java'
):
import
org.python.modules.posix.PosixModule
as
_os
...
...
@@ -23,8 +25,6 @@ try:
except
NameError
:
_file
=
None
_open
=
open
from
distutils.errors
import
DistutilsError
from
pkg_resources
import
working_set
__all__
=
[
...
...
@@ -374,7 +374,7 @@ class AbstractSandbox:
if hasattr(os, 'devnull'):
_EXCEPTIONS = [os.devnull
,
]
_EXCEPTIONS = [os.devnull]
else:
_EXCEPTIONS = []
...
...
@@ -466,7 +466,8 @@ class DirectorySandbox(AbstractSandbox):
WRITE_FLAGS = functools.reduce(
operator.or_, [getattr(_os, a, 0) for a in
operator.or_, [
getattr(_os, a, 0) for a in
"O_WRONLY O_RDWR O_APPEND O_CREAT O_TRUNC O_TEMPORARY".split()]
)
...
...
setuptools/site-patch.py
View file @
3d4d8b9d
...
...
@@ -38,22 +38,24 @@ def __boot():
else
:
raise
ImportError
(
"Couldn't find the real 'site' module"
)
known_paths
=
dict
([(
makepath
(
item
)[
1
],
1
)
for
item
in
sys
.
path
])
# 2.2 comp
# 2.2 comp
known_paths
=
dict
([(
makepath
(
item
)[
1
],
1
)
for
item
in
sys
.
path
])
# noqa
oldpos
=
getattr
(
sys
,
'__egginsert'
,
0
)
# save old insertion position
sys
.
__egginsert
=
0
# and reset the current one
for
item
in
PYTHONPATH
:
addsitedir
(
item
)
addsitedir
(
item
)
# noqa
sys
.
__egginsert
+=
oldpos
# restore effective old position
d
,
nd
=
makepath
(
stdpath
[
0
])
d
,
nd
=
makepath
(
stdpath
[
0
])
# noqa
insert_at
=
None
new_path
=
[]
for
item
in
sys
.
path
:
p
,
np
=
makepath
(
item
)
p
,
np
=
makepath
(
item
)
# noqa
if
np
==
nd
and
insert_at
is
None
:
# We've hit the first 'system' path entry, so added entries go here
...
...
setuptools/ssl_support.py
View file @
3d4d8b9d
...
...
@@ -35,7 +35,8 @@ try:
except
AttributeError
:
HTTPSHandler
=
HTTPSConnection
=
object
is_available
=
ssl
is
not
None
and
object
not
in
(
HTTPSHandler
,
HTTPSConnection
)
is_available
=
ssl
is
not
None
and
object
not
in
(
HTTPSHandler
,
HTTPSConnection
)
try
:
...
...
@@ -85,8 +86,10 @@ if not match_hostname:
return
dn
.
lower
()
==
hostname
.
lower
()
# RFC 6125, section 6.4.3, subitem 1.
# The client SHOULD NOT attempt to match a presented identifier in which
# the wildcard character comprises a label other than the left-most label.
# The client SHOULD NOT attempt to match a
# presented identifier in which the wildcard
# character comprises a label other than the
# left-most label.
if
leftmost
==
'*'
:
# When '*' is a fragment by itself, it matches a non-empty dotless
# fragment.
...
...
@@ -137,15 +140,16 @@ if not match_hostname:
return
dnsnames.append(value)
if len(dnsnames) > 1:
raise CertificateError(
"hostname %r "
"doesn'
t
match
either
of
%
s
"
raise CertificateError(
"
hostname %r
doesn'
t
match
either
of
%
s
"
% (hostname, ', '.join(map(repr, dnsnames))))
elif len(dnsnames) == 1:
raise CertificateError(
"
hostname
%
r
"
"
doesn
't match %r"
raise CertificateError(
"
hostname
%
r
doesn
't match %r"
% (hostname, dnsnames[0]))
else:
raise CertificateError("no appropriate commonName or "
raise CertificateError(
"no appropriate commonName or "
"subjectAltName fields were found")
...
...
@@ -158,7 +162,8 @@ class VerifyingHTTPSHandler(HTTPSHandler):
def https_open(self, req):
return self.do_open(
lambda host, **kw: VerifyingHTTPSConn(host, self.ca_bundle, **kw), req
lambda host, **kw: VerifyingHTTPSConn(host, self.ca_bundle, **kw),
req
)
...
...
setuptools/tests/test_build_meta.py
View file @
3d4d8b9d
...
...
@@ -23,6 +23,7 @@ class BuildBackendBase:
self
.
env
=
env
self
.
backend_name
=
backend_name
class
BuildBackend
(
BuildBackendBase
):
"""PEP 517 Build Backend"""
...
...
setuptools/tests/test_dist.py
View file @
3d4d8b9d
...
...
@@ -309,7 +309,8 @@ CHECK_PACKAGE_DATA_TESTS = (
({
'hello'
:
str
(
'*.msg'
),
},
(
"
\
"
values of 'package_data' dict
\
"
must be a list of strings (got '*.msg')"
"
\
"
values of 'package_data' dict
\
"
"
"must be a list of strings (got '*.msg')"
)),
# Invalid value type (generators are single use)
({
...
...
@@ -321,10 +322,12 @@ CHECK_PACKAGE_DATA_TESTS = (
)
@
pytest
.
mark
.
parametrize
(
'package_data, expected_message'
,
CHECK_PACKAGE_DATA_TESTS
)
@
pytest
.
mark
.
parametrize
(
'package_data, expected_message'
,
CHECK_PACKAGE_DATA_TESTS
)
def
test_check_package_data
(
package_data
,
expected_message
):
if
expected_message
is
None
:
assert
check_package_data
(
None
,
'package_data'
,
package_data
)
is
None
else
:
with
pytest
.
raises
(
DistutilsSetupError
,
match
=
re
.
escape
(
expected_message
)):
with
pytest
.
raises
(
DistutilsSetupError
,
match
=
re
.
escape
(
expected_message
)):
check_package_data
(
None
,
str
(
'package_data'
),
package_data
)
setuptools/tests/test_easy_install.py
View file @
3d4d8b9d
...
...
@@ -671,8 +671,10 @@ class TestSetupRequires:
dep_url
=
path_to_url
(
dep_sdist
,
authority
=
'localhost'
)
test_pkg
=
create_setup_requires_package
(
temp_dir
,
'python-xlib'
,
'0.19'
,
# Ignored (overriden by setup_attrs).
setup_attrs
=
dict
(
setup_requires
=
'dependency @ %s'
%
dep_url
))
# Ignored (overriden by setup_attrs)
'python-xlib'
,
'0.19'
,
setup_attrs
=
dict
(
setup_requires
=
'dependency @ %s'
%
dep_url
))
test_setup_py
=
os
.
path
.
join
(
test_pkg
,
'setup.py'
)
run_setup
(
test_setup_py
,
[
str
(
'--version'
)])
assert
len
(
mock_index
.
requests
)
==
0
...
...
@@ -710,11 +712,14 @@ class TestSetupRequires:
dep_1_0_sdist
=
'dep-1.0.tar.gz'
dep_1_0_url
=
path_to_url
(
str
(
tmpdir
/
dep_1_0_sdist
))
dep_1_0_python_requires
=
'>=2.7'
make_python_requires_sdist
(
str
(
tmpdir
/
dep_1_0_sdist
),
'dep'
,
'1.0'
,
dep_1_0_python_requires
)
make_python_requires_sdist
(
str
(
tmpdir
/
dep_1_0_sdist
),
'dep'
,
'1.0'
,
dep_1_0_python_requires
)
dep_2_0_sdist
=
'dep-2.0.tar.gz'
dep_2_0_url
=
path_to_url
(
str
(
tmpdir
/
dep_2_0_sdist
))
dep_2_0_python_requires
=
'!='
+
'.'
.
join
(
map
(
str
,
sys
.
version_info
[:
2
]))
+
'.*'
make_python_requires_sdist
(
str
(
tmpdir
/
dep_2_0_sdist
),
'dep'
,
'2.0'
,
dep_2_0_python_requires
)
dep_2_0_python_requires
=
'!='
+
'.'
.
join
(
map
(
str
,
sys
.
version_info
[:
2
]))
+
'.*'
make_python_requires_sdist
(
str
(
tmpdir
/
dep_2_0_sdist
),
'dep'
,
'2.0'
,
dep_2_0_python_requires
)
index
=
tmpdir
/
'index.html'
index
.
write_text
(
DALS
(
'''
...
...
@@ -726,7 +731,7 @@ class TestSetupRequires:
<a href="{dep_2_0_url}" data-requires-python="{dep_2_0_python_requires}">{dep_2_0_sdist}</a><br/>
</body>
</html>
'''
).
format
(
'''
).
format
(
# noqa
dep_1_0_url
=
dep_1_0_url
,
dep_1_0_sdist
=
dep_1_0_sdist
,
dep_1_0_python_requires
=
dep_1_0_python_requires
,
...
...
@@ -739,22 +744,28 @@ class TestSetupRequires:
test_pkg
=
create_setup_requires_package
(
str
(
tmpdir
),
'python-xlib'
,
'0.19'
,
# Ignored (overriden by setup_attrs).
setup_attrs
=
dict
(
setup_requires
=
'dep'
,
dependency_links
=
[
index_url
]))
setup_attrs
=
dict
(
setup_requires
=
'dep'
,
dependency_links
=
[
index_url
]))
test_setup_py
=
os
.
path
.
join
(
test_pkg
,
'setup.py'
)
run_setup
(
test_setup_py
,
[
str
(
'--version'
)])
eggs
=
list
(
map
(
str
,
pkg_resources
.
find_distributions
(
os
.
path
.
join
(
test_pkg
,
'.eggs'
))))
eggs
=
list
(
map
(
str
,
pkg_resources
.
find_distributions
(
os
.
path
.
join
(
test_pkg
,
'.eggs'
))))
assert
eggs
==
[
'dep 1.0'
]
@
pytest
.
mark
.
parametrize
(
'use_legacy_installer,with_dependency_links_in_setup_py'
,
@
pytest
.
mark
.
parametrize
(
'use_legacy_installer,with_dependency_links_in_setup_py'
,
itertools
.
product
((
False
,
True
),
(
False
,
True
)))
def
test_setup_requires_with_find_links_in_setup_cfg
(
self
,
monkeypatch
,
use_legacy_installer
,
def
test_setup_requires_with_find_links_in_setup_cfg
(
self
,
monkeypatch
,
use_legacy_installer
,
with_dependency_links_in_setup_py
):
monkeypatch
.
setenv
(
str
(
'PIP_RETRIES'
),
str
(
'0'
))
monkeypatch
.
setenv
(
str
(
'PIP_TIMEOUT'
),
str
(
'0'
))
with
contexts
.
save_pkg_resources_state
():
with
contexts
.
tempdir
()
as
temp_dir
:
make_trivial_sdist
(
os
.
path
.
join
(
temp_dir
,
'python-xlib-42.tar.gz'
),
'python-xlib'
,
'42'
)
make_trivial_sdist
(
os
.
path
.
join
(
temp_dir
,
'python-xlib-42.tar.gz'
),
'python-xlib'
,
'42'
)
test_pkg
=
os
.
path
.
join
(
temp_dir
,
'test_pkg'
)
test_setup_py
=
os
.
path
.
join
(
test_pkg
,
'setup.py'
)
test_setup_cfg
=
os
.
path
.
join
(
test_pkg
,
'setup.cfg'
)
...
...
@@ -771,7 +782,7 @@ class TestSetupRequires:
installer.fetch_build_egg = installer._legacy_fetch_build_egg
setup(setup_requires='python-xlib==42',
dependency_links={dependency_links!r})
'''
).
format
(
use_legacy_installer
=
use_legacy_installer
,
'''
).
format
(
use_legacy_installer
=
use_legacy_installer
,
# noqa
dependency_links
=
dependency_links
))
with
open
(
test_setup_cfg
,
'w'
)
as
fp
:
fp
.
write
(
DALS
(
...
...
@@ -783,14 +794,17 @@ class TestSetupRequires:
find_links
=
temp_dir
))
run_setup
(
test_setup_py
,
[
str
(
'--version'
)])
def
test_setup_requires_with_transitive_extra_dependency
(
self
,
monkeypatch
):
def
test_setup_requires_with_transitive_extra_dependency
(
self
,
monkeypatch
):
# Use case: installing a package with a build dependency on
# an already installed `dep[extra]`, which in turn depends
# on `extra_dep` (whose is not already installed).
with
contexts
.
save_pkg_resources_state
():
with
contexts
.
tempdir
()
as
temp_dir
:
# Create source distribution for `extra_dep`.
make_trivial_sdist
(
os
.
path
.
join
(
temp_dir
,
'extra_dep-1.0.tar.gz'
),
'extra_dep'
,
'1.0'
)
make_trivial_sdist
(
os
.
path
.
join
(
temp_dir
,
'extra_dep-1.0.tar.gz'
),
'extra_dep'
,
'1.0'
)
# Create source tree for `dep`.
dep_pkg
=
os
.
path
.
join
(
temp_dir
,
'dep'
)
os
.
mkdir
(
dep_pkg
)
...
...
@@ -806,12 +820,12 @@ class TestSetupRequires:
'setup.cfg'
:
''
,
},
prefix
=
dep_pkg
)
# "Install" dep.
run_setup
(
os
.
path
.
join
(
dep_pkg
,
'setup.py'
),
[
str
(
'dist_info'
)])
run_setup
(
os
.
path
.
join
(
dep_pkg
,
'setup.py'
),
[
str
(
'dist_info'
)])
working_set
.
add_entry
(
dep_pkg
)
# Create source tree for test package.
test_pkg
=
os
.
path
.
join
(
temp_dir
,
'test_pkg'
)
test_setup_py
=
os
.
path
.
join
(
test_pkg
,
'setup.py'
)
test_setup_cfg
=
os
.
path
.
join
(
test_pkg
,
'setup.cfg'
)
os
.
mkdir
(
test_pkg
)
with
open
(
test_setup_py
,
'w'
)
as
fp
:
fp
.
write
(
DALS
(
...
...
@@ -881,14 +895,17 @@ def make_nspkg_sdist(dist_path, distname, version):
def
make_python_requires_sdist
(
dist_path
,
distname
,
version
,
python_requires
):
make_sdist
(
dist_path
,
[
(
'setup.py'
,
DALS
(
"""
\
(
'setup.py'
,
DALS
(
"""
\
import setuptools
setuptools.setup(
name={name!r},
version={version!r},
python_requires={python_requires!r},
)
"""
).
format
(
name
=
distname
,
version
=
version
,
"""
).
format
(
name
=
distname
,
version
=
version
,
python_requires
=
python_requires
)),
(
'setup.cfg'
,
''
),
])
...
...
setuptools/tests/test_egg_info.py
View file @
3d4d8b9d
...
...
@@ -565,7 +565,8 @@ class TestEggInfo:
assert
'LICENSE'
in
sources_text
else
:
assert
'LICENSE'
not
in
sources_text
assert
'INVALID_LICENSE'
not
in
sources_text
# for invalid license test
# for invalid license test
assert
'INVALID_LICENSE'
not
in
sources_text
@
pytest
.
mark
.
parametrize
(
"files, incl_licenses, excl_licenses"
,
[
({
...
...
@@ -684,7 +685,8 @@ class TestEggInfo:
"""
),
'LICENSE-ABC'
:
"ABC license"
,
'LICENSE-XYZ'
:
"XYZ license"
},
[],
[
'LICENSE-ABC'
,
'LICENSE-XYZ'
]),
# license_file is still singular
# license_file is still singular
},
[],
[
'LICENSE-ABC'
,
'LICENSE-XYZ'
]),
({
'setup.cfg'
:
DALS
(
"""
[metadata]
...
...
@@ -709,7 +711,8 @@ class TestEggInfo:
'LICENSE-ABC'
:
"ABC license"
,
'LICENSE-PQR'
:
"PQR license"
,
'LICENSE-XYZ'
:
"XYZ license"
},
[
'LICENSE-ABC'
,
'LICENSE-PQR'
,
'LICENSE-XYZ'
],
[]),
# duplicate license
# duplicate license
},
[
'LICENSE-ABC'
,
'LICENSE-PQR'
,
'LICENSE-XYZ'
],
[]),
({
'setup.cfg'
:
DALS
(
"""
[metadata]
...
...
@@ -720,7 +723,8 @@ class TestEggInfo:
'LICENSE-ABC'
:
"ABC license"
,
'LICENSE-PQR'
:
"PQR license"
,
'LICENSE-XYZ'
:
"XYZ license"
},
[
'LICENSE-ABC'
,
'LICENSE-XYZ'
],
[
'LICENSE-PQR'
]),
# combined subset
# combined subset
},
[
'LICENSE-ABC'
,
'LICENSE-XYZ'
],
[
'LICENSE-PQR'
]),
({
'setup.cfg'
:
DALS
(
"""
[metadata]
...
...
@@ -730,7 +734,8 @@ class TestEggInfo:
LICENSE-PQR
"""
),
'LICENSE-PQR'
:
"Test license"
},
[
'LICENSE-PQR'
],
[
'LICENSE-ABC'
,
'LICENSE-XYZ'
]),
# with invalid licenses
# with invalid licenses
},
[
'LICENSE-PQR'
],
[
'LICENSE-ABC'
,
'LICENSE-XYZ'
]),
({
'setup.cfg'
:
DALS
(
"""
[metadata]
...
...
@@ -743,7 +748,8 @@ class TestEggInfo:
'LICENSE-ABC'
:
"ABC license"
,
'LICENSE-PQR'
:
"PQR license"
,
'LICENSE-XYZ'
:
"XYZ license"
},
[
'LICENSE-XYZ'
],
[
'LICENSE-ABC'
,
'LICENSE-PQR'
])
# manually excluded
# manually excluded
},
[
'LICENSE-XYZ'
],
[
'LICENSE-ABC'
,
'LICENSE-PQR'
])
])
def
test_setup_cfg_license_file_license_files
(
self
,
tmpdir_cwd
,
env
,
files
,
incl_licenses
,
excl_licenses
):
...
...
setuptools/tests/test_test.py
View file @
3d4d8b9d
...
...
@@ -12,7 +12,7 @@ from setuptools.command.test import test
from
setuptools.dist
import
Distribution
from
.textwrap
import
DALS
from
.
import
contexts
SETUP_PY
=
DALS
(
"""
from setuptools import setup
...
...
setuptools/tests/test_virtualenv.py
View file @
3d4d8b9d
...
...
@@ -8,8 +8,6 @@ from pytest_fixture_config import yield_requires_config
import
pytest_virtualenv
from
setuptools.extern
import
six
from
.textwrap
import
DALS
from
.test_easy_install
import
make_nspkg_sdist
...
...
@@ -180,12 +178,16 @@ def _check_test_command_install_requirements(virtualenv, tmpdir):
)).
format
(
tmpdir
=
tmpdir
))
assert
tmpdir
.
join
(
'success'
).
check
()
def
test_test_command_install_requirements
(
virtualenv
,
tmpdir
):
# Ensure pip/wheel packages are installed.
virtualenv
.
run
(
"python -c
\
"
__import__('pkg_resources').require(['pip', 'wheel'])
\
"
"
)
virtualenv
.
run
(
"python -c
\
"
__import__('pkg_resources').require(['pip', 'wheel'])
\
"
"
)
_check_test_command_install_requirements
(
virtualenv
,
tmpdir
)
def
test_test_command_install_requirements_when_using_easy_install
(
bare_virtualenv
,
tmpdir
):
def
test_test_command_install_requirements_when_using_easy_install
(
bare_virtualenv
,
tmpdir
):
_check_test_command_install_requirements
(
bare_virtualenv
,
tmpdir
)
...
...
setuptools/tests/test_wheel.py
View file @
3d4d8b9d
...
...
@@ -455,7 +455,8 @@ WHEEL_INSTALL_TESTS = (
id
=
'empty_namespace_package'
,
file_defs
=
{
'foobar'
:
{
'__init__.py'
:
"__import__('pkg_resources').declare_namespace(__name__)"
,
'__init__.py'
:
"__import__('pkg_resources').declare_namespace(__name__)"
,
},
},
setup_kwargs
=
dict
(
...
...
@@ -579,4 +580,5 @@ def test_wheel_is_compatible(monkeypatch):
for
t
in
parse_tag
(
'cp36-cp36m-manylinux1_x86_64'
):
yield
t
monkeypatch
.
setattr
(
'setuptools.wheel.sys_tags'
,
sys_tags
)
assert
Wheel
(
'onnxruntime-0.1.2-cp36-cp36m-manylinux1_x86_64.whl'
).
is_compatible
()
assert
Wheel
(
'onnxruntime-0.1.2-cp36-cp36m-manylinux1_x86_64.whl'
).
is_compatible
()
setuptools/wheel.py
View file @
3d4d8b9d
...
...
@@ -77,7 +77,8 @@ class Wheel:
def is_compatible(self):
'''Is the wheel is compatible with the current platform?'''
supported_tags = set((t.interpreter, t.abi, t.platform) for t in sys_tags())
supported_tags = set(
(t.interpreter, t.abi, t.platform) for t in sys_tags())
return next((True for t in self.tags() if t in supported_tags), False)
def egg_name(self):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment