Skip to content

Fix environment markers handling#1081

Merged
jaraco merged 1 commit intopypa:masterfrom
benoit-pierre:fix_environment_markers_handling
Jul 14, 2017
Merged

Fix environment markers handling#1081
jaraco merged 1 commit intopypa:masterfrom
benoit-pierre:fix_environment_markers_handling

Conversation

@benoit-pierre
Copy link
Copy Markdown
Member

@benoit-pierre 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 fix_environment_markers_handling branch from e3692a5 to 050808d Compare July 13, 2017 19:27
@benoit-pierre
Copy link
Copy Markdown
Member Author

Rebased on master.

@jaraco jaraco merged commit 3e76534 into pypa:master Jul 14, 2017
@benoit-pierre benoit-pierre deleted the fix_environment_markers_handling branch July 14, 2017 00:57
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
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
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
@di di mentioned this pull request Sep 25, 2018
2 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants