Skip to content

Add support for Openstack Advisories#184

Open
Samk1710 wants to merge 1 commit intoaboutcode-org:mainfrom
Samk1710:ossa
Open

Add support for Openstack Advisories#184
Samk1710 wants to merge 1 commit intoaboutcode-org:mainfrom
Samk1710:ossa

Conversation

@Samk1710
Copy link
Copy Markdown
Contributor

Resolves:

Added from_ossa_native function and its corresponding unit test.

Unit test logs:

collected 4661 items / 4645 deselected / 16 selected                                                 

tests/test_version_range.py::test_PypiVersionRange_raises_ivr_for_unsupported_and_invalid_ranges[ ~= 0.9-False-Unsupported PyPI version constraint operator] PASSED [  6%]
tests/test_version_range.py::test_PypiVersionRange_raises_ivr_for_unsupported_and_invalid_ranges[~= 1.3-False-Unsupported PyPI version constraint operator] PASSED [ 12%]
tests/test_version_range.py::test_PypiVersionRange_raises_ivr_for_unsupported_and_invalid_ranges[ >= 1.0-True-vers:pypi/>=1.0] PASSED [ 18%]
tests/test_version_range.py::test_PypiVersionRange_raises_ivr_for_unsupported_and_invalid_ranges[ != 1.3.4.*-False-Unsupported PyPI version] PASSED [ 25%]
tests/test_version_range.py::test_PypiVersionRange_raises_ivr_for_unsupported_and_invalid_ranges[< 2.0-True-vers:pypi/<2.0] PASSED [ 31%]
tests/test_version_range.py::test_PypiVersionRange_raises_ivr_for_unsupported_and_invalid_ranges[~= 1.3.4.*-False-] PASSED [ 37%]
tests/test_version_range.py::test_PypiVersionRange_raises_ivr_for_unsupported_and_invalid_ranges[==1. *-False-Unsupported PyPI version] PASSED [ 43%]
tests/test_version_range.py::test_PypiVersionRange_raises_ivr_for_unsupported_and_invalid_ranges[==1.3.4 ) (-False-Unsupported character] PASSED [ 50%]
tests/test_version_range.py::test_PypiVersionRange_raises_ivr_for_unsupported_and_invalid_ranges[===1.0-False-Unsupported PyPI version] PASSED [ 56%]
tests/test_version_range.py::test_PypiVersionRange_from_ossa_native[<=5.0.3, >=6.0.0 <=6.1.0 and ==7.0.0-vers:pypi/<=5.0.3|>=6.0.0|<=6.1.0|7.0.0] PASSED [ 62%]
tests/test_version_range.py::test_PypiVersionRange_from_ossa_native[<=14.0.10, >=15.0.0 <=15.0.8, >=16.0.0 <=16.0.3-vers:pypi/<=14.0.10|>=15.0.0|<=15.0.8|>=16.0.0|<=16.0.3] PASSED [ 68%]
tests/test_version_range.py::test_PypiVersionRange_from_ossa_native[<17.0.12, >=18.0.0 <18.2.2, >=19.0.0 <19.0.2-vers:pypi/<17.0.12|>=18.0.0|<18.2.2|>=19.0.0|<19.0.2] PASSED [ 75%]
tests/test_version_range.py::test_PypiVersionRange_from_ossa_native[<19.3.1, >=20.0.0 <20.3.1, ==21.0.0-vers:pypi/<19.3.1|>=20.0.0|<20.3.1|21.0.0] PASSED [ 81%]
tests/test_version_range.py::test_PypiVersionRange_from_ossa_native[>=10.5.0 <10.7.2, >=10.8.0 <10.9.1, >=10.10.0 <10.12.1-vers:pypi/>=10.5.0|<10.7.2|>=10.8.0|<10.9.1|>=10.10.0|<10.12.1] PASSED [ 87%]
tests/test_version_range.py::test_PypiVersionRange_from_ossa_native[<16.3.3, >=17.0.0 <17.1.3, =18.0.0-vers:pypi/<16.3.3|>=17.0.0|<17.1.3|18.0.0] PASSED [ 93%]
tests/test_version_range.py::test_PypiVersionRange_from_ossa_native[-InvalidVersionRange] PASSED [100%]

========================== 16 passed, 4645 deselected, 54 warnings in 0.20s ==========================

Took some inspiration from from_gitlab_native function.

Signed-off-by: Samk <sampurnapyne1710@gmail.com>
Comment on lines +795 to +806
# Normalize "and" keyword to comma
# "<=5.0.3, >=6.0.0 <=6.1.0 and ==7.0.0" -> "<=5.0.3, >=6.0.0 <=6.1.0, ==7.0.0"
string = string.replace(" and ", ",")

# Remove spaces around operators
# "<=5.0.3, >=6.0.0 <=6.1.0, ==7.0.0" -> "<=5.0.3,>=6.0.0<=6.1.0,==7.0.0"
string = re.sub(r"\s+([<>=!]+)", r"\1", string)
string = re.sub(r"([<>=!]+)\s+", r"\1", string)

# Insert comma between consecutive constraints
# "<=5.0.3,>=6.0.0<=6.1.0,==7.0.0" -> "<=5.0.3,>=6.0.0,<=6.1.0,==7.0.0"
string = re.sub(r"(\d)([<>=!])", r"\1,\2", string)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we should use regex, may be some thing simple like this could work

raw_parts = string.replace("and", " ").split()
parts = [p.strip(",") for p in raw_parts]

f"Invalid version constraint {part!r} in OSSA version string {string!r}: {e}"
) from e

return cls(constraints=constraints)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we use from_gitlab_native directly after normalizing the version ( removing spaces and replacing 'and', ..), if this will simplify the code?

from_gitlab_native(gitlab_scheme="pypi", string="<=5.0.3,>=6.0.0,<=6.1.0,==7.0.0")
Out[17]: PypiVersionRange(constraints=(VersionConstraint(comparator='<=', version=PypiVersion(string='5.0.3')), VersionConstraint(comparator='>=', version=PypiVersion(string='6.0.0')), VersionConstraint(comparator='<=', version=PypiVersion(string='6.1.0')), VersionConstraint(comparator='=', version=PypiVersion(string='7.0.0'))))

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