Skip to content

Commit

Permalink
resolves the conversations
Browse files Browse the repository at this point in the history
  • Loading branch information
Jannis-Mittenzwei committed Sep 24, 2024
1 parent f48801b commit 2a11ca0
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 31 deletions.
54 changes: 27 additions & 27 deletions exasol/toolbox/nox/_dependencies_check.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,33 +14,32 @@
@nox.session(name="dependencies-check", python=False)
def dependency_check(session: Session) -> None:
content = Path(PROJECT_CONFIG.root, "pyproject.toml").read_text()
dependencies = DependenciesCheck(content).parse()
dependencies = Dependencies(content).parse()
console = rich.console.Console()
if dependencies.illegal():
dependencies.report_illegal(console)
illegal = dependencies.illegal()
report_illegal(illegal, console)
if illegal:
sys.exit(1)
dependencies.report_illegal(console)
sys.exit(0)


class DependenciesCheck:
class Dependencies:
ILLEGAL_DEPENDENCIES = ['url', 'git', 'path']

def __init__(self, pyproject_toml: str):
self.illegal_dict: Dict[str, List[str]] = {}
self.content = pyproject_toml

def parse(self) -> "DependenciesCheck":
def source_filter(version, filters) -> bool:
for f in filters:
def parse(self) -> "Dependencies":
def source_filter(version) -> bool:
for f in self.ILLEGAL_DEPENDENCIES:
if f in version:
return True
return False

def extract_dependencies(section, filters) -> List[str]:
def extract_dependencies(section) -> List[str]:
dependencies = []
for name, version in section.items():
if source_filter(version, filters):
if source_filter(version):
dependencies.append(f"{name} = {version}")
return dependencies

Expand All @@ -49,36 +48,37 @@ def extract_dependencies(section, filters) -> List[str]:
poetry = toml.get("tool", {}).get("poetry", {})

part = poetry.get("dependencies", {})
dependencies_list = extract_dependencies(part, self.ILLEGAL_DEPENDENCIES)
dependencies_list = extract_dependencies(part)
if dependencies_list:
illegal["tool.poetry.dependencies"] = dependencies_list

part = poetry.get("dev", {}).get("dependencies", {})
dependencies_list = extract_dependencies(part, self.ILLEGAL_DEPENDENCIES)
dependencies_list = extract_dependencies(part)
if dependencies_list:
illegal["tool.poetry.dev.dependencies"] = dependencies_list

part = poetry.get("group", {})
for group, content in part.items():
dependencies_list = extract_dependencies(content.get("dependencies", {}), self.ILLEGAL_DEPENDENCIES)
dependencies_list = extract_dependencies(content.get("dependencies", {}))
if dependencies_list:
illegal[f"tool.poetry.group.{group}.dependencies"] = dependencies_list

self.illegal_dict = illegal
return self

def report_illegal(self, console: rich.console.Console):
if self.illegal_dict:
count = sum(len(deps) for deps in self.illegal_dict.values())
suffix = "y" if count == 1 else "ies"
console.print(f"{count} illegal dependenc{suffix}\n", style="red")
for section, dependencies in self.illegal_dict.items():
console.print(f"\\[{section}]", style="red")
for dependency in dependencies:
console.print(dependency, style="red")
console.print("")
else:
console.print("Success: All dependencies refer to explicit pipy releases.", style="green")

def illegal(self) -> Dict[str, List[str]]:
return self.illegal_dict


def report_illegal(illegal: Dict[str, List[str]], console: rich.console.Console):
if illegal:
count = sum(len(deps) for deps in illegal.values())
suffix = "y" if count == 1 else "ies"
console.print(f"{count} illegal dependenc{suffix}\n", style="red")
for section, dependencies in illegal.items():
console.print(f"\\[{section}]", style="red")
for dependency in dependencies:
console.print(dependency, style="red")
console.print("")
else:
console.print("Success: All dependencies refer to explicit pipy releases.", style="green")
8 changes: 4 additions & 4 deletions test/unit/dependencies_check_test.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import pytest
import rich.console

from exasol.toolbox.nox._dependencies_check import DependenciesCheck
from exasol.toolbox.nox._dependencies_check import Dependencies, report_illegal


@pytest.mark.parametrize(
Expand Down Expand Up @@ -95,7 +95,7 @@
]
)
def test_dependency_check_parse(toml, expected):
dependencies = DependenciesCheck(toml).parse()
dependencies = Dependencies(toml).parse()
assert dependencies.illegal() == expected


Expand Down Expand Up @@ -159,6 +159,6 @@ def test_dependency_check_parse(toml, expected):
)
def test_dependencies_check_report(toml, expected, capsys):
console = rich.console.Console()
dependencies = DependenciesCheck(toml).parse()
dependencies.report_illegal(console)
dependencies = Dependencies(toml).parse()
report_illegal(dependencies.illegal(), console)
assert capsys.readouterr().out == expected

0 comments on commit 2a11ca0

Please sign in to comment.