Skip to content

Commit

Permalink
Fix when a start operator is inplace that can lead to wrong name clas…
Browse files Browse the repository at this point in the history
…hing with the same package name without a star
  • Loading branch information
marcelotrevisani committed Oct 12, 2023
1 parent 0abe2ac commit 971fa45
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 3 deletions.
11 changes: 8 additions & 3 deletions grayskull/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,13 @@ def rm_duplicated_deps(all_requirements: Union[list, set, None]) -> Optional[lis
if dep.strip().startswith(("{{", "<{")):
new_reqs[dep] = dep
continue
dep_name = re_split.split(dep.strip())[0].strip()
dep_name, *constrains = re_split.split(dep.strip())
dep_name = dep_name.strip()
constrains = [
c.strip() for c in constrains if c.strip() not in {"*", "*.*", "*.*.*"}
]
canonicalized = dep_name.replace("_", "-").lower()
constrains.insert(0, dep_name)
if canonicalized in new_reqs:
# In order to break ties deterministically, we prioritize the requirement
# which is alphanumerically lowest. This happens to prioritize the "-"
Expand All @@ -140,9 +145,9 @@ def rm_duplicated_deps(all_requirements: Union[list, set, None]) -> Optional[lis
# keep "importlib-metadata" because it is alphabetically lower.
previous_req = new_reqs[canonicalized]
if len(dep) > len(previous_req) or "-" in dep_name:
new_reqs[canonicalized] = dep
new_reqs[canonicalized] = " ".join(constrains)
else:
new_reqs[canonicalized] = dep
new_reqs[canonicalized] = " ".join(constrains)
return list(new_reqs.values())


Expand Down
6 changes: 6 additions & 0 deletions tests/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,3 +125,9 @@ def test_rm_duplicated_deps():
assert rm_duplicated_deps([]) is None
# my-crazy-pkg is preferred because "my-crazy-pkg" < "my_craZy-pkg":
assert rm_duplicated_deps(["my_craZy-pkg", "my-crazy-pkg"]) == ["my-crazy-pkg"]


def test_rm_dupliate_deps_with_star():
assert rm_duplicated_deps(["typing-extensions", "typing_extensions *"]) == [
"typing_extensions"
]

0 comments on commit 971fa45

Please sign in to comment.