Skip to content

Commit

Permalink
fix: add support for dev/alpha/beta/rc python versions (#235)
Browse files Browse the repository at this point in the history
  • Loading branch information
MarcusArdelean authored Mar 12, 2024
1 parent e8a7063 commit 117ee7e
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 7 deletions.
34 changes: 27 additions & 7 deletions pysrc/pip_resolve.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,25 +171,45 @@ def create_package_as_root(package):
return dir_as_root


def satisfies_python_requirement(parsed_operator, py_version_str):
def satisfies_python_requirement(parsed_operator, py_version):
"""Check if a package required python versions matches the one of the system
Args:
parsed_operator (str): operator to compare by i.e. >, <=, ==
py_version (str): The python version that is required by the package
Returns:
bool: True if the version matches, False otherwise
"""
# TODO: use python semver library to compare versions
operator_func = {
operator = {
">": gt,
"==": eq,
"<": lt,
"<=": le,
">=": ge,
'!=': ne,
}[parsed_operator]
}
operator_func = operator.get(parsed_operator)
system_py_version_tuple = (sys.version_info[0], sys.version_info[1])
py_version_tuple = tuple(py_version_str.split('.')) # string tuple
py_version_tuple = tuple(py_version.split('.')) # tuple of strings

# For wildcard versions like 3.9.*
if py_version_tuple[-1] == '*':
system_py_version_tuple = system_py_version_tuple[0]
py_version_tuple = int(py_version_tuple[0]) # int tuple
py_version_tuple = int(py_version_tuple[0]) # tuple of integers

# For dev/alpha/beta/rc versions like 3.9.dev0
elif not py_version_tuple[-1].isdigit():
py_version_tuple = (int(py_version_tuple[0]), int(py_version_tuple[1]))

# For stable releases like 3.9.2
else:
py_version_tuple = tuple(int(x) for x in py_version_tuple) # int tuple
py_version_tuple = tuple(int(x) for x in py_version_tuple)

result = operator_func(system_py_version_tuple, py_version_tuple)

return operator_func(system_py_version_tuple, py_version_tuple)
return result


def get_markers_text(requirement):
Expand Down
14 changes: 14 additions & 0 deletions test/system/inspect.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,20 @@ describe('inspect', () => {
},
],
},
{
workspace: 'pip-app-dev-alpha-beta-python-version',
uninstallPackages: [],
pluginOpts: {},
expected: [
{
pkg: {
name: 'requests',
version: '2.31.0',
},
directDeps: ['requests'],
},
],
},
])(
'should get a valid dependency graph for workspace = $workspace',
async ({ workspace, uninstallPackages, pluginOpts, expected }) => {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
requests==2.31.0 ; python_version >= "3.8.dev0"

0 comments on commit 117ee7e

Please sign in to comment.