-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add nox task to verify dependency declarations #236
base: main
Are you sure you want to change the base?
add nox task to verify dependency declarations #236
Conversation
756d4b8
to
9c33b61
Compare
…ify-dependency-declarations' into feature/#233-add-nox-task-to-verify-dependency-declarations # Conflicts: # exasol/toolbox/nox/_dependencies_check.py
1ad32ce
to
7b88101
Compare
def __init__(self, pyproject_toml: str): | ||
self.illegal_dict: Dict[str, List[str]] = {} | ||
self.content = pyproject_toml |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
after construction the class should be initialized properly
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) -> List[str]: | ||
dependencies = [] | ||
for name, version in section.items(): | ||
if source_filter(version): | ||
dependencies.append(f"{name} = {version}") | ||
return dependencies | ||
|
||
illegal: Dict[str, List[str]] = {} | ||
toml = tomlkit.loads(self.content) | ||
poetry = toml.get("tool", {}).get("poetry", {}) | ||
|
||
part = poetry.get("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) | ||
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", {})) | ||
if dependencies_list: | ||
illegal[f"tool.poetry.group.{group}.dependencies"] = dependencies_list | ||
|
||
self.illegal_dict = illegal | ||
return self | ||
|
||
@property | ||
def illegal(self) -> Dict[str, List[str]]: | ||
return self.illegal_dict |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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) -> List[str]: | |
dependencies = [] | |
for name, version in section.items(): | |
if source_filter(version): | |
dependencies.append(f"{name} = {version}") | |
return dependencies | |
illegal: Dict[str, List[str]] = {} | |
toml = tomlkit.loads(self.content) | |
poetry = toml.get("tool", {}).get("poetry", {}) | |
part = poetry.get("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) | |
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", {})) | |
if dependencies_list: | |
illegal[f"tool.poetry.group.{group}.dependencies"] = dependencies_list | |
self.illegal_dict = illegal | |
return self | |
@property | |
def illegal(self) -> Dict[str, List[str]]: | |
return self.illegal_dict | |
class Dependencies: | |
def __init__(self, illegal: Dict[str, List[str]] | None): | |
self._illegal = illegal or {} | |
@staticmethod | |
def parse(pyproject_toml: str) -> "Dependencies": | |
def _source_filter(version) -> bool: | |
ILLEGAL_SPECIFIERS = ['url', 'git', 'path'] | |
return any( | |
specifier in version | |
for specifier in ILLEGAL_SPECIFIERS | |
) | |
def _extract_dependencies(section) -> List[str]: | |
dependencies = [] | |
for name, version in section.items(): | |
if _source_filter(version): | |
dependencies.append(f"{name} = {version}") | |
return dependencies | |
illegal: Dict[str, List[str]] = {} | |
toml = tomlkit.loads(pyproject_toml) | |
poetry = toml.get("tool", {}).get("poetry", {}) | |
part = poetry.get("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) | |
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", {})) | |
if dependencies_list: | |
illegal[f"tool.poetry.group.{group}.dependencies"] = dependencies_list | |
return Dependencies(illegal) | |
@property | |
def illegal(self) -> Dict[str, List[str]]: | |
return self._illegal |
) | ||
def test_dependencies_check_report(toml, expected, capsys): | ||
console = rich.console.Console() | ||
dependencies = Dependencies(toml).parse() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
dependencies = Dependencies(toml).parse() | |
dependencies = Dependencies.parse(toml) |
closes #233