-
Notifications
You must be signed in to change notification settings - Fork 359
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
Python requires generator: Cannot chain different ops: or + with #995
Comments
We would need to put the or pairs into parenthesis, correct? |
I'm testing a fix. If it works, will submit a PR. |
My fix does this:
|
Fixes rpm-software-management#995 For this input: pyparsing>=2.0.1,!=2.0.4,!=2.1.2,!=2.1.6 Instead of (invalid): (python3.8dist(pyparsing) >= 2.0.1 with python3.8dist(pyparsing) < 2.1.2 or python3.8dist(pyparsing) >= 2.1.2.0 with python3.8dist(pyparsing) < 2.1.6 or python3.8dist(pyparsing) >= 2.1.6.0 with python3.8dist(pyparsing) < 2.0.4 or python3.8dist(pyparsing) >= 2.0.4.0) Produces (valid): (python3.8dist(pyparsing) >= 2.0.1 with (python3.8dist(pyparsing) < 2.1.2 or python3.8dist(pyparsing) >= 2.1.2.0) with (python3.8dist(pyparsing) < 2.0.4 or python3.8dist(pyparsing) >= 2.0.4.0) with (python3.8dist(pyparsing) < 2.1.6 or python3.8dist(pyparsing) >= 2.1.6.0)) For this input: babel>=1.3,!=2.0 Instead of (invalid): (python3.8dist(babel) >= 1.3 with python3.8dist(babel) < 2 or python3.8dist(babel) >= 2.0) Produces (valid): (python3.8dist(babel) >= 1.3 with (python3.8dist(babel) < 2 or python3.8dist(babel) >= 2.0)) For this input: pbr!=2.1.0,>=2.0.0 Instead of (invalid): (python3.8dist(pbr) >= 2 with python3.8dist(pbr) < 2.1 or python3.8dist(pbr) >= 2.1.0) Produces (valid): (python3.8dist(pbr) >= 2 with (python3.8dist(pbr) < 2.1 or python3.8dist(pbr) >= 2.1.0))
Fixes #995 For this input: pyparsing>=2.0.1,!=2.0.4,!=2.1.2,!=2.1.6 Instead of (invalid): (python3.8dist(pyparsing) >= 2.0.1 with python3.8dist(pyparsing) < 2.1.2 or python3.8dist(pyparsing) >= 2.1.2.0 with python3.8dist(pyparsing) < 2.1.6 or python3.8dist(pyparsing) >= 2.1.6.0 with python3.8dist(pyparsing) < 2.0.4 or python3.8dist(pyparsing) >= 2.0.4.0) Produces (valid): (python3.8dist(pyparsing) >= 2.0.1 with (python3.8dist(pyparsing) < 2.1.2 or python3.8dist(pyparsing) >= 2.1.2.0) with (python3.8dist(pyparsing) < 2.0.4 or python3.8dist(pyparsing) >= 2.0.4.0) with (python3.8dist(pyparsing) < 2.1.6 or python3.8dist(pyparsing) >= 2.1.6.0)) For this input: babel>=1.3,!=2.0 Instead of (invalid): (python3.8dist(babel) >= 1.3 with python3.8dist(babel) < 2 or python3.8dist(babel) >= 2.0) Produces (valid): (python3.8dist(babel) >= 1.3 with (python3.8dist(babel) < 2 or python3.8dist(babel) >= 2.0)) For this input: pbr!=2.1.0,>=2.0.0 Instead of (invalid): (python3.8dist(pbr) >= 2 with python3.8dist(pbr) < 2.1 or python3.8dist(pbr) >= 2.1.0) Produces (valid): (python3.8dist(pbr) >= 2 with (python3.8dist(pbr) < 2.1 or python3.8dist(pbr) >= 2.1.0))
Does rpm offer an interface to determine whether or not a dependency expression is valid, either on a command line or in python's "rpm" module? Or is building an rpm the only available test? |
The RPM Python API may provide a way to build such a tool that could be incorporated into |
The RPM Python API would be ideal if I could use it to determine if an expression were valid. I would think dsSingle would do that, but it does not seem to care whether the second arg is a valid expression or not. |
Puts bounded requirements into parenthesis Fixes: rpm-software-management/rpm#995 Upstream: rpm-software-management/rpm#996 For this input: pyparsing>=2.0.1,!=2.0.4,!=2.1.2,!=2.1.6 Instead of (invalid): (python3.8dist(pyparsing) >= 2.0.1 with python3.8dist(pyparsing) < 2.1.2 or python3.8dist(pyparsing) >= 2.1.2.0 with python3.8dist(pyparsing) < 2.1.6 or python3.8dist(pyparsing) >= 2.1.6.0 with python3.8dist(pyparsing) < 2.0.4 or python3.8dist(pyparsing) >= 2.0.4.0) Produces (valid): (python3.8dist(pyparsing) >= 2.0.1 with (python3.8dist(pyparsing) < 2.1.2 or python3.8dist(pyparsing) >= 2.1.2.0) with (python3.8dist(pyparsing) < 2.0.4 or python3.8dist(pyparsing) >= 2.0.4.0) with (python3.8dist(pyparsing) < 2.1.6 or python3.8dist(pyparsing) >= 2.1.6.0)) For this input: babel>=1.3,!=2.0 Instead of (invalid): (python3.8dist(babel) >= 1.3 with python3.8dist(babel) < 2 or python3.8dist(babel) >= 2.0) Produces (valid): (python3.8dist(babel) >= 1.3 with (python3.8dist(babel) < 2 or python3.8dist(babel) >= 2.0)) For this input: pbr!=2.1.0,>=2.0.0 Instead of (invalid): (python3.8dist(pbr) >= 2 with python3.8dist(pbr) < 2.1 or python3.8dist(pbr) >= 2.1.0) Produces (valid): (python3.8dist(pbr) >= 2 with (python3.8dist(pbr) < 2.1 or python3.8dist(pbr) >= 2.1.0))
Fixes rpm-software-management/rpm#995 For this input: pyparsing>=2.0.1,!=2.0.4,!=2.1.2,!=2.1.6 Instead of (invalid): (python3.8dist(pyparsing) >= 2.0.1 with python3.8dist(pyparsing) < 2.1.2 or python3.8dist(pyparsing) >= 2.1.2.0 with python3.8dist(pyparsing) < 2.1.6 or python3.8dist(pyparsing) >= 2.1.6.0 with python3.8dist(pyparsing) < 2.0.4 or python3.8dist(pyparsing) >= 2.0.4.0) Produces (valid): (python3.8dist(pyparsing) >= 2.0.1 with (python3.8dist(pyparsing) < 2.1.2 or python3.8dist(pyparsing) >= 2.1.2.0) with (python3.8dist(pyparsing) < 2.0.4 or python3.8dist(pyparsing) >= 2.0.4.0) with (python3.8dist(pyparsing) < 2.1.6 or python3.8dist(pyparsing) >= 2.1.6.0)) For this input: babel>=1.3,!=2.0 Instead of (invalid): (python3.8dist(babel) >= 1.3 with python3.8dist(babel) < 2 or python3.8dist(babel) >= 2.0) Produces (valid): (python3.8dist(babel) >= 1.3 with (python3.8dist(babel) < 2 or python3.8dist(babel) >= 2.0)) For this input: pbr!=2.1.0,>=2.0.0 Instead of (invalid): (python3.8dist(pbr) >= 2 with python3.8dist(pbr) < 2.1 or python3.8dist(pbr) >= 2.1.0) Produces (valid): (python3.8dist(pbr) >= 2 with (python3.8dist(pbr) < 2.1 or python3.8dist(pbr) >= 2.1.0))
The new version of Python requires generator fails with complicated expressions.
cc @gordonmessmer @Conan-Kudo @ignatenkobrain
Examples:
Matplotlib
https://koschei.fedoraproject.org/package/python-matplotlib?collection=f32
Requirement:
pyparsing>=2.0.1,!=2.0.4,!=2.1.2,!=2.1.6
Sphinx
https://koschei.fedoraproject.org/package/python-sphinx?collection=f32
Requirement:
babel>=1.3,!=2.0
ara
https://koschei.fedoraproject.org/package/ara?collection=f32
Requirement:
pbr!=2.1.0,>=2.0.0
The text was updated successfully, but these errors were encountered: