Skip to content
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

version 20.2 doesn't like non numeric requirements #499

Closed
ghost opened this issue Feb 19, 2016 · 11 comments
Closed

version 20.2 doesn't like non numeric requirements #499

ghost opened this issue Feb 19, 2016 · 11 comments

Comments

@ghost
Copy link

ghost commented Feb 19, 2016

Originally reported by: mathiasbc (Bitbucket: mathiasbc, GitHub: mathiasbc)


Latest version 20.2 fails when trying to install requirements in the form:
'mypackage==0.1.2.xy1'

$ python setup.py egg_info
error in mypackage setup command: 'install_requires' must be a string or list of strings containing valid project/version requirement specifiers; Invalid requirement, parse error at "'.xy1'"

I was able to confirm that setuptools 20.1 does not present this issue.


@ghost
Copy link
Author

ghost commented Feb 19, 2016

Original comment by jaraco (Bitbucket: jaraco, GitHub: jaraco):


I think the issue is that the bump to Packaging 16 has made the version parsing more strict. According to the PEP 440, those local version specifies should be 0.1.2+xy1.

@ghost
Copy link
Author

ghost commented Feb 19, 2016

Original comment by jaraco (Bitbucket: jaraco, GitHub: jaraco):


Add test capturing previously allowed usage. Ref #499.

@ghost
Copy link
Author

ghost commented Feb 19, 2016

Original comment by jaraco (Bitbucket: jaraco, GitHub: jaraco):


@stevenk_: Can you review this issue? Was this an intentional limitation? How difficult would it be to restore the prior expectation, captured by the above test?

@ghost
Copy link
Author

ghost commented Feb 21, 2016

Original comment by lukasgraf (Bitbucket: lukasgraf, GitHub: lukasgraf):


Has 20.2 since been pulled from PyPi, or am I imagining things?

@ghost
Copy link
Author

ghost commented Feb 21, 2016

Original comment by jaraco (Bitbucket: jaraco, GitHub: jaraco):


Yes, that's right. Until we can triage the issue and determine a plan forward, I want to avoid causing harm to existing deployments.

@ghost
Copy link
Author

ghost commented Feb 21, 2016

Original comment by lukasgraf (Bitbucket: lukasgraf, GitHub: lukasgraf):


I see, thank you for clarifying.

@ghost
Copy link
Author

ghost commented Feb 22, 2016

Original comment by stevenk_ (Bitbucket: stevenk_, GitHub: Unknown):


No, this was not an intentional limitation. The support for non-PEP 440 specifiers was present, it was just buggy (and untested, sigh). I have corrected both of those issues in pypa/packaging#62, and will submit a PR to update packaging to the new release (expected to be 16.3) when my PR has landed and a packaging release made.

@ghost
Copy link
Author

ghost commented Feb 22, 2016

Original comment by stevenk_ (Bitbucket: stevenk_, GitHub: Unknown):


Turns out packaging 16.3 causes another regression, this time with "name (==4)" which is an existing requirement in use in setuptools. I'm trying to sort out the parser so that all cases work.

@ghost
Copy link
Author

ghost commented Feb 25, 2016

Original comment by jaraco (Bitbucket: jaraco, GitHub: jaraco):


Update to packaging 16.4. Fixes #499.

@ghost
Copy link
Author

ghost commented Feb 25, 2016

Original comment by lukasgraf (Bitbucket: lukasgraf, GitHub: lukasgraf):


With setuptools-20.2.1 I'm seeing another regression. Parsing the requirement plone.app.portlets >=2.5.1, <3.0(which used to work before 20.2) now fails with InvalidRequirement: Invalid requirement, parse error at "'<3.0'".

@ghost
Copy link
Author

ghost commented Feb 25, 2016

Original comment by jaapz (Bitbucket: jaapz, GitHub: jaapz):


I am bumping into this issue as well with a dependency I use (SQLAlchemy-Utils), which defines a requirement as passlib >= 1.6, < 2.0. When I run the install using setuptools 20.1, everything works, but with 20.2.1, it doesn't and fails with "error in SQLAlchemy-Utils setup command: 'extras_require' must be a dictionary whose values are strings or lists of strings containing valid project/version requirement specifiers.".

When I remove the passlib requirement, it installs just fine.

This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

0 participants