cmds.projects.BaseCmdPkgRelations: Code beautification

pkg_relations_list() has an intricate case distinction around
expand_semver_revision_range, clean that up.

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2026-03-16 06:02:48 +01:00
commit 8869a2d3df

View file

@ -100,28 +100,27 @@ class BaseCmdPkgRelations(Cmd):
pass pass
else: else:
raise Exception("Unknown version specifier in " + spec) raise Exception("Unknown version specifier in " + spec)
if not expand_semver_revision_range: if len(dep) != 3 or not expand_semver_revision_range:
expanded_deps = [dep] expanded_deps = [dep]
else: else:
expanded_deps = [] expanded_deps = []
if expand_semver_revision_range and len(dep) == 3: semver = re.split(r'[.-]', version)
semver = re.split(r'[.-]', version) if len(semver) != 4:
if len(semver) != 4: expanded_deps = [dep]
expanded_deps = [dep] else:
else: release = int(semver[2])
release = int(semver[2]) major_minor = f'{semver[0]}.{semver[1]}'
major_minor = f'{semver[0]}.{semver[1]}' match dep[1]:
match dep[1]: case '>' | '>=':
case '>' | '>=': expanded_deps.append([dep[0], dep[1], dep[2]])
expanded_deps.append([dep[0], dep[1], dep[2]]) expanded_deps.append([dep[0], '<', f'{major_minor}.{release + 1}'])
expanded_deps.append([dep[0], '<', f'{major_minor}.{release + 1}']) case '<' | '<=':
case '<' | '<=': expanded_deps.append([dep[0], dep[1], dep[2]])
expanded_deps.append([dep[0], dep[1], dep[2]]) case '=':
case '=': expanded_deps.append([dep[0], '>=', f'{major_minor}.{release}'])
expanded_deps.append([dep[0], '>=', f'{major_minor}.{release}']) expanded_deps.append([dep[0], '<', f'{major_minor}.{release + 1}'])
expanded_deps.append([dep[0], '<', f'{major_minor}.{release + 1}']) case _:
case _: raise NotImplementedError(f'Expanding SemVer range "{dep[0]} {dep[1]} {dep[3]}" is not yet implemented')
raise NotImplementedError(f'Expanding SemVer range "{dep[0]} {dep[1]} {dep[3]}" is not yet implemented')
for expanded_dep in expanded_deps: for expanded_dep in expanded_deps:
if hide_self and dep_name in modules: if hide_self and dep_name in modules:
continue continue