update Shared
This commit is contained in:
parent
e7ebbedd38
commit
6881f3471a
184 changed files with 13080 additions and 13691 deletions
|
|
@ -15,8 +15,12 @@ from distutils.errors import (DistutilsOptionError, DistutilsPlatformError,
|
|||
|
||||
from setuptools.depends import Require
|
||||
from setuptools.compat import basestring, PY2
|
||||
from setuptools import windows_support
|
||||
import pkg_resources
|
||||
|
||||
packaging = pkg_resources.packaging
|
||||
|
||||
|
||||
def _get_unpatched(cls):
|
||||
"""Protect against re-patching the distutils if reloaded
|
||||
|
||||
|
|
@ -111,24 +115,26 @@ def check_extras(dist, attr, value):
|
|||
def assert_bool(dist, attr, value):
|
||||
"""Verify that value is True, False, 0, or 1"""
|
||||
if bool(value) != value:
|
||||
raise DistutilsSetupError(
|
||||
"%r must be a boolean value (got %r)" % (attr,value)
|
||||
)
|
||||
tmpl = "{attr!r} must be a boolean value (got {value!r})"
|
||||
raise DistutilsSetupError(tmpl.format(attr=attr, value=value))
|
||||
|
||||
|
||||
def check_requirements(dist, attr, value):
|
||||
"""Verify that install_requires is a valid requirements list"""
|
||||
try:
|
||||
list(pkg_resources.parse_requirements(value))
|
||||
except (TypeError,ValueError):
|
||||
raise DistutilsSetupError(
|
||||
"%r must be a string or list of strings "
|
||||
"containing valid project/version requirement specifiers" % (attr,)
|
||||
except (TypeError, ValueError) as error:
|
||||
tmpl = (
|
||||
"{attr!r} must be a string or list of strings "
|
||||
"containing valid project/version requirement specifiers; {error}"
|
||||
)
|
||||
raise DistutilsSetupError(tmpl.format(attr=attr, error=error))
|
||||
|
||||
def check_entry_points(dist, attr, value):
|
||||
"""Verify that entry_points map is parseable"""
|
||||
try:
|
||||
pkg_resources.EntryPoint.parse_map(value)
|
||||
except ValueError:
|
||||
e = sys.exc_info()[1]
|
||||
except ValueError as e:
|
||||
raise DistutilsSetupError(e)
|
||||
|
||||
def check_test_suite(dist, attr, value):
|
||||
|
|
@ -268,6 +274,26 @@ class Distribution(_Distribution):
|
|||
# Some people apparently take "version number" too literally :)
|
||||
self.metadata.version = str(self.metadata.version)
|
||||
|
||||
if self.metadata.version is not None:
|
||||
try:
|
||||
ver = packaging.version.Version(self.metadata.version)
|
||||
normalized_version = str(ver)
|
||||
if self.metadata.version != normalized_version:
|
||||
warnings.warn(
|
||||
"Normalizing '%s' to '%s'" % (
|
||||
self.metadata.version,
|
||||
normalized_version,
|
||||
)
|
||||
)
|
||||
self.metadata.version = normalized_version
|
||||
except (packaging.version.InvalidVersion, TypeError):
|
||||
warnings.warn(
|
||||
"The version specified (%r) is an invalid version, this "
|
||||
"may not work as expected with newer versions of "
|
||||
"setuptools, pip, and PyPI. Please see PEP 440 for more "
|
||||
"details." % self.metadata.version
|
||||
)
|
||||
|
||||
def parse_command_line(self):
|
||||
"""Process features after parsing command line options"""
|
||||
result = _Distribution.parse_command_line(self)
|
||||
|
|
@ -305,6 +331,21 @@ class Distribution(_Distribution):
|
|||
else:
|
||||
self.convert_2to3_doctests = []
|
||||
|
||||
def get_egg_cache_dir(self):
|
||||
egg_cache_dir = os.path.join(os.curdir, '.eggs')
|
||||
if not os.path.exists(egg_cache_dir):
|
||||
os.mkdir(egg_cache_dir)
|
||||
windows_support.hide_file(egg_cache_dir)
|
||||
readme_txt_filename = os.path.join(egg_cache_dir, 'README.txt')
|
||||
with open(readme_txt_filename, 'w') as f:
|
||||
f.write('This directory contains eggs that were downloaded '
|
||||
'by setuptools to build, test, and run plug-ins.\n\n')
|
||||
f.write('This directory caches those eggs to prevent '
|
||||
'repeated downloads.\n\n')
|
||||
f.write('However, it is safe to delete this directory.\n\n')
|
||||
|
||||
return egg_cache_dir
|
||||
|
||||
def fetch_build_egg(self, req):
|
||||
"""Fetch an egg needed for building"""
|
||||
|
||||
|
|
@ -328,8 +369,9 @@ class Distribution(_Distribution):
|
|||
if 'find_links' in opts:
|
||||
links = opts['find_links'][1].split() + links
|
||||
opts['find_links'] = ('setup', links)
|
||||
install_dir = self.get_egg_cache_dir()
|
||||
cmd = easy_install(
|
||||
dist, args=["x"], install_dir=os.curdir, exclude_scripts=True,
|
||||
dist, args=["x"], install_dir=install_dir, exclude_scripts=True,
|
||||
always_copy=False, build_directory=None, editable=False,
|
||||
upgrade=False, multi_version=True, no_report=True, user=False
|
||||
)
|
||||
|
|
@ -393,7 +435,8 @@ class Distribution(_Distribution):
|
|||
def print_commands(self):
|
||||
for ep in pkg_resources.iter_entry_points('distutils.commands'):
|
||||
if ep.name not in self.cmdclass:
|
||||
cmdclass = ep.load(False) # don't require extras, we're not running
|
||||
# don't require extras as the commands won't be invoked
|
||||
cmdclass = ep.resolve()
|
||||
self.cmdclass[ep.name] = cmdclass
|
||||
return _Distribution.print_commands(self)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue