Merge branch 'master' into fix_handling_of_find-links_in_setup.cfg
This commit is contained in:
commit
f8a6f27b42
11
README.rst
11
README.rst
|
@ -34,8 +34,17 @@ To report a security vulnerability, please use the
|
|||
Tidelift will coordinate the fix and disclosure.
|
||||
|
||||
|
||||
For Enterprise
|
||||
==============
|
||||
|
||||
Available as part of the Tidelift Subscription.
|
||||
|
||||
Setuptools and the maintainers of thousands of other packages are working with Tidelift to deliver one enterprise subscription that covers all of the open source you use.
|
||||
|
||||
`Learn more <https://tidelift.com/subscription/pkg/pypi-setuptools?utm_source=pypi-setuptools&utm_medium=referral&utm_campaign=github>`_.
|
||||
|
||||
Code of Conduct
|
||||
---------------
|
||||
===============
|
||||
|
||||
Everyone interacting in the setuptools project's codebases, issue trackers,
|
||||
chat rooms, and mailing lists is expected to follow the
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Build dependencies (setup_requires and tests_require) now install transitive dependencies indicated by extras.
|
|
@ -1,3 +1,10 @@
|
|||
<h3 class="donation">For Enterprise</h3>
|
||||
|
||||
<p>
|
||||
Professionally-supported {{ project }} is available with the
|
||||
<a href="https://tidelift.com/subscription/pkg/pypi-{{ project }}?utm_source=pypi-{{ project }}&utm_medium=referral">Tidelift Subscription</a>.
|
||||
</p>
|
||||
|
||||
<h3>Download</h3>
|
||||
|
||||
<p>Current version: <b>{{ version }}</b></p>
|
||||
|
@ -6,10 +13,3 @@
|
|||
<h3>Questions? Suggestions? Contributions?</h3>
|
||||
|
||||
<p>Visit the <a href="{{ package_url }}">Project page</a> </p>
|
||||
|
||||
<h3 class="donation">Professional support</h3>
|
||||
|
||||
<p>
|
||||
Professionally-supported {{ project }} is available with the
|
||||
<a href="https://tidelift.com/subscription/pkg/pypi-{{ project }}?utm_source=pypi-{{ project }}&utm_medium=readme">Tidelift Subscription</a>.
|
||||
</p>
|
||||
|
|
|
@ -73,8 +73,8 @@ def fetch_build_egg(dist, req):
|
|||
pkg_resources.get_distribution('wheel')
|
||||
except pkg_resources.DistributionNotFound:
|
||||
dist.announce('WARNING: The wheel package is not available.', log.WARN)
|
||||
if not isinstance(req, pkg_resources.Requirement):
|
||||
req = pkg_resources.Requirement.parse(req)
|
||||
# Ignore environment markers; if supplied, it is required.
|
||||
req = strip_marker(req)
|
||||
# Take easy_install options into account, but do not override relevant
|
||||
# pip environment variables (like PIP_INDEX_URL or PIP_QUIET); they'll
|
||||
# take precedence.
|
||||
|
@ -136,3 +136,15 @@ def fetch_build_egg(dist, req):
|
|||
dist = pkg_resources.Distribution.from_filename(
|
||||
dist_location, metadata=dist_metadata)
|
||||
return dist
|
||||
|
||||
|
||||
def strip_marker(req):
|
||||
"""
|
||||
Return a new requirement without the environment marker to avoid
|
||||
calling pip with something like `babel; extra == "i18n"`, which
|
||||
would always be ignored.
|
||||
"""
|
||||
# create a copy to avoid mutating the input
|
||||
req = pkg_resources.Requirement.parse(str(req))
|
||||
req.marker = None
|
||||
return req
|
||||
|
|
|
@ -37,6 +37,7 @@ from setuptools.tests import fail_on_ascii
|
|||
import pkg_resources
|
||||
|
||||
from . import contexts
|
||||
from .files import build_files
|
||||
from .textwrap import DALS
|
||||
|
||||
__metaclass__ = type
|
||||
|
@ -782,6 +783,49 @@ class TestSetupRequires:
|
|||
find_links=temp_dir))
|
||||
run_setup(test_setup_py, [str('--version')])
|
||||
|
||||
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')
|
||||
# Create source tree for `dep`.
|
||||
dep_pkg = os.path.join(temp_dir, 'dep')
|
||||
os.mkdir(dep_pkg)
|
||||
build_files({
|
||||
'setup.py':
|
||||
DALS("""
|
||||
import setuptools
|
||||
setuptools.setup(
|
||||
name='dep', version='2.0',
|
||||
extras_require={'extra': ['extra_dep']},
|
||||
)
|
||||
"""),
|
||||
'setup.cfg': '',
|
||||
}, prefix=dep_pkg)
|
||||
# "Install" dep.
|
||||
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(
|
||||
'''
|
||||
from setuptools import installer, setup
|
||||
setup(setup_requires='dep[extra]')
|
||||
'''))
|
||||
# Check...
|
||||
monkeypatch.setenv(str('PIP_FIND_LINKS'), str(temp_dir))
|
||||
monkeypatch.setenv(str('PIP_NO_INDEX'), str('1'))
|
||||
monkeypatch.setenv(str('PIP_RETRIES'), str('0'))
|
||||
monkeypatch.setenv(str('PIP_TIMEOUT'), str('0'))
|
||||
run_setup(test_setup_py, [str('--version')])
|
||||
|
||||
|
||||
def make_trivial_sdist(dist_path, distname, version):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue