New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix environment markers handling #1081

Merged
merged 1 commit into from Jul 14, 2017

Conversation

Projects
None yet
2 participants
@benoit-pierre
Member

benoit-pierre commented Jul 10, 2017

While the documentation now points to using environment markers with install_requires for declaring platform dependencies, this result in invalid wheels because those are stripped from the final requirements in the embedded metadata.

E.g, using something like this:

from setuptools import setup
setup(
    name='foo',
    install_requires='barbazquux; "foobar" in sys_platform',
)

result in foo.egg-info/requires.txt containing:

barbazquux; "foobar" in sys_platform

instead of:

import sys

from setuptools import setup

setup(
    name='foo',
    extras_require={':"foobar" in sys_platform': 'barbazquux'},
)

which yields:

[:"foobar" in sys_platform]
barbazquux

This PR automatically move requirements in install_requires that use environment markers to extras_require so the egg info is valid and the generated wheels work as expected.

Additionally, I added a check to error out if an extras_require requirement is itself using an environment marker, as it's not supported.

Note: first commit is a fix for the same issue as #1063, so I'll rebase once this is merged.

@benoit-pierre benoit-pierre force-pushed the benoit-pierre:fix_environment_markers_handling branch from e3692a5 to 050808d Jul 13, 2017

@benoit-pierre

This comment has been minimized.

Member

benoit-pierre commented Jul 13, 2017

Rebased on master.

@jaraco jaraco merged commit 3e76534 into pypa:master Jul 14, 2017

2 checks passed

continuous-integration/appveyor/pr AppVeyor build succeeded
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details

@benoit-pierre benoit-pierre deleted the benoit-pierre:fix_environment_markers_handling branch Jul 14, 2017

jaraco added a commit that referenced this pull request Jul 14, 2017

suutari-ai pushed a commit to suutari/prequ that referenced this pull request Aug 2, 2017

setup.py: Require setuptools 36.2.7
If the wheel is generated with older setuptools it will have incorrect
requirements for Python 3, since some of the requirements use
environment markers and there was a problem with those in older versions
of the setuptools.

See pypa/setuptools#1081 and
pypa/setuptools#1108 for details.

stephenfin added a commit to stephenfin/setuptools that referenced this pull request Mar 26, 2018

tests: Add regression test for pypa#1081
This ensures we don't unknowingly change the behavior of this again.

Signed-off-by: Stephen Finucane <stephen@that.guru>
Fixes: pypa#1307

pganssle added a commit that referenced this pull request Mar 26, 2018

Merge pull request #1308 from stephenfin/issue/1307
tests: Add regression test for #1081

@di di referenced this pull request Sep 25, 2018

Closed

Support the empty-string extra #1503

1 of 2 tasks complete
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment