Skip to content

Commit 4f39517

Browse files
committed
Use Package instead of PoetryDependency, as group info already given, which makes for easier comparisons
1 parent 2a164b6 commit 4f39517

File tree

4 files changed

+32
-48
lines changed

4 files changed

+32
-48
lines changed

exasol/toolbox/util/dependencies/licenses.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@
88

99
from pydantic import field_validator
1010

11-
from exasol.toolbox.util.dependencies.poetry_dependencies import (
12-
PoetryDependency,
13-
)
1411
from exasol.toolbox.util.dependencies.shared_models import Package
1512

1613
LICENSE_MAPPING_TO_ABBREVIATION = {
@@ -127,7 +124,7 @@ def heading():
127124

128125
def dependency(
129126
group: str,
130-
group_packages: list[PoetryDependency],
127+
group_packages: list[Package],
131128
packages: list[PackageLicense],
132129
) -> str:
133130
def _header(_group: str):
@@ -138,7 +135,7 @@ def _header(_group: str):
138135
return text
139136

140137
def _rows(
141-
_group_packages: list[PoetryDependency], _packages: list[PackageLicense]
138+
_group_packages: list[Package], _packages: list[PackageLicense]
142139
) -> str:
143140
text = ""
144141
for package in _group_packages:

exasol/toolbox/util/dependencies/poetry_dependencies.py

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,6 @@ class Config:
2626
TRANSITIVE_GROUP = PoetryGroup(name="transitive", toml_section=None)
2727

2828

29-
class PoetryDependency(Package):
30-
name: str
31-
version: str
32-
group: PoetryGroup
33-
34-
3529
class PoetryToml(BaseModel):
3630
working_directory: Path
3731

@@ -86,38 +80,39 @@ class PoetryDependencies(BaseModel):
8680
working_directory: Path
8781

8882
@staticmethod
89-
def _extract_from_line(line: str, group: PoetryGroup) -> PoetryDependency:
83+
def _extract_from_line(line: str) -> Package:
9084
pattern = r"\s+(\d+(?:\.\d+)*)\s+"
9185
match = re.split(pattern, line)
92-
return PoetryDependency(name=match[0], version=match[1], group=group)
86+
return Package(name=match[0], version=match[1])
9387

94-
def _extract_from_poetry_show(
95-
self, output_text: str, group: PoetryGroup
96-
) -> list[PoetryDependency]:
97-
return [
98-
self._extract_from_line(line, group=group)
99-
for line in output_text.splitlines()
100-
]
88+
def _extract_from_poetry_show(self, output_text: str) -> list[Package]:
89+
return [self._extract_from_line(line) for line in output_text.splitlines()]
10190

10291
@property
103-
def direct_dependencies(self) -> dict[str, list[PoetryDependency]]:
92+
def direct_dependencies(self) -> dict[str, list[Package]]:
10493
dependencies = {}
10594
for group in self.groups:
10695
command = ("poetry", "show", "--top-level", f"--only={group.name}")
10796
output = subprocess.run(
108-
command, capture_output=True, text=True, cwd=self.working_directory, check=True
109-
)
110-
result = self._extract_from_poetry_show(
111-
output_text=output.stdout, group=group
97+
command,
98+
capture_output=True,
99+
text=True,
100+
cwd=self.working_directory,
101+
check=True,
112102
)
103+
result = self._extract_from_poetry_show(output_text=output.stdout)
113104
dependencies[group.name] = result
114105
return dependencies
115106

116107
@property
117-
def all_dependencies(self) -> dict[str, list[PoetryDependency]]:
108+
def all_dependencies(self) -> dict[str, list[Package]]:
118109
command = ("poetry", "show")
119110
output = subprocess.run(
120-
command, capture_output=True, text=True, cwd=self.working_directory, check=True
111+
command,
112+
capture_output=True,
113+
text=True,
114+
cwd=self.working_directory,
115+
check=True,
121116
)
122117

123118
direct_dependencies = self.direct_dependencies.copy()
@@ -128,7 +123,7 @@ def all_dependencies(self) -> dict[str, list[PoetryDependency]]:
128123
for dep in group_list
129124
}
130125
for line in output.stdout.splitlines():
131-
dep = self._extract_from_line(line=line, group=TRANSITIVE_GROUP)
126+
dep = self._extract_from_line(line=line)
132127
if dep.name not in names_direct_dependencies:
133128
transitive_dependencies.append(dep)
134129

test/unit/util/dependencies/licenses_test.py

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
packages_to_markdown,
99
)
1010
from exasol.toolbox.util.dependencies.poetry_dependencies import (
11-
PoetryDependency,
1211
PoetryGroup,
1312
)
13+
from exasol.toolbox.util.dependencies.shared_models import Package
1414

1515
MAIN_GROUP = PoetryGroup(name="main", toml_section="project.dependencies")
1616
DEV_GROUP = PoetryGroup(name="dev", toml_section="tool.poetry.group.dev.dependencies")
@@ -112,18 +112,10 @@ def test_packages_from_json(json, expected):
112112
(
113113
{
114114
MAIN_GROUP.name: [
115-
PoetryDependency(
116-
name="package1", version="version1", group=MAIN_GROUP
117-
),
118-
PoetryDependency(
119-
name="package3", version="version3", group=MAIN_GROUP
120-
),
121-
],
122-
DEV_GROUP.name: [
123-
PoetryDependency(
124-
name="package2", version="version2", group=DEV_GROUP
125-
)
115+
Package(name="package1", version="version1"),
116+
Package(name="package3", version="version3"),
126117
],
118+
DEV_GROUP.name: [Package(name="package2", version="version2")],
127119
},
128120
[
129121
PackageLicense(

test/unit/util/dependencies/poetry_dependencies_test.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,20 @@
44

55
from exasol.toolbox.util.dependencies.poetry_dependencies import (
66
PoetryDependencies,
7-
PoetryDependency,
87
PoetryGroup,
98
PoetryToml,
109
)
10+
from exasol.toolbox.util.dependencies.shared_models import Package
1111

1212
MAIN_GROUP = PoetryGroup(name="main", toml_section="project.dependencies")
1313
DEV_GROUP = PoetryGroup(name="dev", toml_section="tool.poetry.group.dev.dependencies")
1414
ANALYSIS_GROUP = PoetryGroup(
1515
name="analysis", toml_section="tool.poetry.group.analysis.dependencies"
1616
)
1717

18-
PYLINT = PoetryDependency(name="pylint", version="3.3.7", group=MAIN_GROUP)
19-
ISORT = PoetryDependency(name="isort", version="6.0.1", group=DEV_GROUP)
20-
BLACK = PoetryDependency(name="black", version="25.1.0", group=ANALYSIS_GROUP)
18+
PYLINT = Package(name="pylint", version="3.3.7")
19+
ISORT = Package(name="isort", version="6.0.1")
20+
BLACK = Package(name="black", version="25.1.0")
2121

2222
DIRECT_DEPENDENCIES = {
2323
MAIN_GROUP.name: [PYLINT],
@@ -85,20 +85,20 @@ class TestPoetryDependencies:
8585
[
8686
(
8787
"coverage 7.8.0 Code coverage measurement for Python",
88-
PoetryDependency(name="coverage", version="7.8.0", group=MAIN_GROUP),
88+
Package(name="coverage", version="7.8.0"),
8989
),
9090
(
9191
"furo 2024.8.6 A clean customisable Sphinx documentation theme.",
92-
PoetryDependency(name="furo", version="2024.8.6", group=MAIN_GROUP),
92+
Package(name="furo", version="2024.8.6"),
9393
),
9494
(
9595
"import-linter 2.3 Enforces rules for the imports within and between Python packages.",
96-
PoetryDependency(name="import-linter", version="2.3", group=MAIN_GROUP),
96+
Package(name="import-linter", version="2.3"),
9797
),
9898
],
9999
)
100100
def test_extract_from_line(line, expected):
101-
result = PoetryDependencies._extract_from_line(line=line, group=MAIN_GROUP)
101+
result = PoetryDependencies._extract_from_line(line=line)
102102
assert result == expected
103103

104104
@staticmethod

0 commit comments

Comments
 (0)