Compare commits

38 Commits
v1.0.0 ... main

Author SHA1 Message Date
eeae701c4f fix: resolve CI linting failures
All checks were successful
CI / test (push) Successful in 24s
- Remove unused imports across all modules
- Remove unused variables (names, color, output, original_line, extras)
- Fix regex syntax errors in parser files
- Remove unused Dependency imports from parsers
2026-02-02 22:00:03 +00:00
6527165498 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
- Remove unused imports across all modules
- Remove unused variables (names, color, output, original_line, extras)
- Fix regex syntax errors in parser files
- Remove unused Dependency imports from parsers
2026-02-02 22:00:01 +00:00
2e5cbcc666 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
- Remove unused imports across all modules
- Remove unused variables (names, color, output, original_line, extras)
- Fix regex syntax errors in parser files
- Remove unused Dependency imports from parsers
2026-02-02 22:00:00 +00:00
11e4569360 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
- Remove unused imports across all modules
- Remove unused variables (names, color, output, original_line, extras)
- Fix regex syntax errors in parser files
- Remove unused Dependency imports from parsers
2026-02-02 21:59:59 +00:00
2613ac1388 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
- Remove unused imports across all modules
- Remove unused variables (names, color, output, original_line, extras)
- Fix regex syntax errors in parser files
- Remove unused Dependency imports from parsers
2026-02-02 21:59:58 +00:00
0c4a3ec376 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
- Remove unused imports across all modules
- Remove unused variables (names, color, output, original_line, extras)
- Fix regex syntax errors in parser files
- Remove unused Dependency imports from parsers
2026-02-02 21:59:55 +00:00
7734a7f728 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
- Remove unused imports across all modules
- Remove unused variables (names, color, output, original_line, extras)
- Fix regex syntax errors in parser files
- Remove unused Dependency imports from parsers
2026-02-02 21:59:53 +00:00
ae9fc1e54d fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
- Remove unused imports across all modules
- Remove unused variables (names, color, output, original_line, extras)
- Fix regex syntax errors in parser files
- Remove unused Dependency imports from parsers
2026-02-02 21:59:52 +00:00
5ac234aa7f fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
- Remove unused imports across all modules
- Remove unused variables (names, color, output, original_line, extras)
- Fix regex syntax errors in parser files
- Remove unused Dependency imports from parsers
2026-02-02 21:59:51 +00:00
42d2514680 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
- Remove unused imports across all modules
- Remove unused variables (names, color, output, original_line, extras)
- Fix regex syntax errors in parser files
- Remove unused Dependency imports from parsers
2026-02-02 21:59:51 +00:00
d11ea8e99e fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
- Remove unused imports across all modules
- Remove unused variables (names, color, output, original_line, extras)
- Fix regex syntax errors in parser files
- Remove unused Dependency imports from parsers
2026-02-02 21:59:49 +00:00
96daf3df57 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
- Remove unused imports across all modules
- Remove unused variables (names, color, output, original_line, extras)
- Fix regex syntax errors in parser files
- Remove unused Dependency imports from parsers
2026-02-02 21:59:47 +00:00
255fd2cfe8 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
- Remove unused imports across all modules
- Remove unused variables (names, color, output, original_line, extras)
- Fix regex syntax errors in parser files
- Remove unused Dependency imports from parsers
2026-02-02 21:59:44 +00:00
eb0abc0c15 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
- Remove unused imports across all modules
- Remove unused variables (names, color, output, original_line, extras)
- Fix regex syntax errors in parser files
- Remove unused Dependency imports from parsers
2026-02-02 21:59:42 +00:00
ad56432a3b fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
- Remove unused imports across all modules
- Remove unused variables (names, color, output, original_line, extras)
- Fix regex syntax errors in parser files
- Remove unused Dependency imports from parsers
2026-02-02 21:59:40 +00:00
a88ce088f3 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
- Remove unused imports across all modules
- Remove unused variables (names, color, output, original_line, extras)
- Fix regex syntax errors in parser files
- Remove unused Dependency imports from parsers
2026-02-02 21:59:39 +00:00
79d9f7c5dd fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
- Remove unused imports across all modules
- Remove unused variables (names, color, output, original_line, extras)
- Fix regex syntax errors in parser files
- Remove unused Dependency imports from parsers
2026-02-02 21:59:39 +00:00
a2a9d4772a fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
- Remove unused imports across all modules
- Remove unused variables (names, color, output, original_line, extras)
- Fix regex syntax errors in parser files
- Remove unused Dependency imports from parsers
2026-02-02 21:59:38 +00:00
07e2d9c9a2 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
- Remove unused imports across all modules
- Remove unused variables (names, color, output, original_line, extras)
- Fix regex syntax errors in parser files
- Remove unused Dependency imports from parsers
2026-02-02 21:59:38 +00:00
5828a2da6c fix: resolve CI linting failures
Some checks failed
CI / test (push) Failing after 13s
2026-02-02 21:50:41 +00:00
d19d867d78 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
2026-02-02 21:50:41 +00:00
754b334acd fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
2026-02-02 21:50:40 +00:00
a846225f93 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
2026-02-02 21:50:39 +00:00
8bd320237a fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
2026-02-02 21:50:39 +00:00
883d0161fc fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
2026-02-02 21:50:38 +00:00
6fc403de85 fix: resolve CI linting failures
Some checks failed
CI / test (push) Failing after 11s
2026-02-02 21:49:22 +00:00
072a4c1e00 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
2026-02-02 21:49:20 +00:00
7922dccb80 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
2026-02-02 21:49:19 +00:00
6f2a5b4e54 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
2026-02-02 21:49:19 +00:00
b23ebf838a fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
2026-02-02 21:49:18 +00:00
d1322f259a fix: resolve CI linting failures
Some checks failed
CI / test (push) Failing after 13s
2026-02-02 21:48:03 +00:00
c3cb7cc142 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
2026-02-02 21:48:02 +00:00
89df03a9b9 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
2026-02-02 21:48:02 +00:00
9c6de1b32e fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
2026-02-02 21:48:01 +00:00
6611aa6fd8 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
2026-02-02 21:48:01 +00:00
16b8daa3d4 fix: resolve CI linting failures
Some checks failed
CI / test (push) Failing after 12s
2026-02-02 21:46:53 +00:00
ea08d50b30 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
2026-02-02 21:46:52 +00:00
9e29cb5813 fix: resolve CI linting failures
Some checks failed
CI / test (push) Has been cancelled
2026-02-02 21:46:51 +00:00
19 changed files with 15 additions and 46 deletions

View File

@@ -1,6 +1,6 @@
from __future__ import annotations from __future__ import annotations
from dataclasses import dataclass, field from dataclasses import dataclass
from typing import Any from typing import Any

View File

@@ -1,7 +1,5 @@
from __future__ import annotations from __future__ import annotations
from dataclasses import dataclass
from typing import Any
from depaudit.checks import LicenseInfo from depaudit.checks import LicenseInfo

View File

@@ -1,6 +1,5 @@
from __future__ import annotations from __future__ import annotations
import json
import re import re
from dataclasses import dataclass from dataclasses import dataclass
from typing import Any from typing import Any

View File

@@ -4,7 +4,6 @@ import ast
import re import re
from dataclasses import dataclass from dataclasses import dataclass
from pathlib import Path from pathlib import Path
from typing import Any
from depaudit.checks import UnusedDependency from depaudit.checks import UnusedDependency
@@ -51,7 +50,6 @@ class PythonSourceParser(SourceParser):
) )
elif isinstance(node, ast.ImportFrom): elif isinstance(node, ast.ImportFrom):
module = node.module or "" module = node.module or ""
names = [alias.asname or alias.name for alias in node.names]
for alias in node.names: for alias in node.names:
imports.append( imports.append(
ImportStatement( ImportStatement(

View File

@@ -1,18 +1,13 @@
from __future__ import annotations from __future__ import annotations
import json
import sys import sys
import time import time
from pathlib import Path from pathlib import Path
from typing import Any
import click import click
import requests import requests
from depaudit import __version__ from depaudit import __version__
from depaudit.checks.outdated import OutdatedPackage
from depaudit.checks.licenses import LicenseInfo
from depaudit.checks.unused import UnusedDependency
from depaudit.checks.vulnerabilities import Vulnerability from depaudit.checks.vulnerabilities import Vulnerability
from depaudit.checks.outdated import check_outdated from depaudit.checks.outdated import check_outdated
from depaudit.checks.licenses import check_license, validate_license_compliance from depaudit.checks.licenses import check_license, validate_license_compliance
@@ -20,7 +15,6 @@ from depaudit.checks.unused import check_unused_dependencies
from depaudit.config import config from depaudit.config import config
from depaudit.output import AuditResult from depaudit.output import AuditResult
from depaudit.output.factory import FormatterFactory from depaudit.output.factory import FormatterFactory
from depaudit.parsers import ParsedManifest
from depaudit.parsers.factory import ParserFactory from depaudit.parsers.factory import ParserFactory
@@ -217,7 +211,7 @@ def audit(
def check_vulnerability(dep, severity_filter: str) -> Vulnerability | None: def check_vulnerability(dep, severity_filter: str) -> Vulnerability | None:
try: try:
url = f"https://api.osv.dev/v1/query" url = "https://api.osv.dev/v1/query"
payload = { payload = {
"package": {"name": dep.name}, "package": {"name": dep.name},
"version": dep.version, "version": dep.version,

View File

@@ -5,7 +5,7 @@ import subprocess
from dataclasses import dataclass from dataclasses import dataclass
from pathlib import Path from pathlib import Path
from depaudit.checks import Vulnerability, OutdatedPackage from depaudit.checks import OutdatedPackage
@dataclass @dataclass

View File

@@ -1,6 +1,5 @@
from __future__ import annotations from __future__ import annotations
from typing import Optional
from depaudit.output import Formatter from depaudit.output import Formatter
from depaudit.output.json_formatter import JSONFormatter from depaudit.output.json_formatter import JSONFormatter

View File

@@ -58,7 +58,6 @@ class TableFormatter(Formatter):
lines.append("SEVERITY SUMMARY:") lines.append("SEVERITY SUMMARY:")
for severity, count in summary["severity_breakdown"].items(): for severity, count in summary["severity_breakdown"].items():
if count > 0: if count > 0:
color = SEVERITY_COLORS.get(severity, "grey")
lines.append(f" {severity.upper()}: {count}") lines.append(f" {severity.upper()}: {count}")
lines.append("") lines.append("")
@@ -67,8 +66,6 @@ class TableFormatter(Formatter):
return "\n".join(lines) return "\n".join(lines)
def _render_table(self, table: Table) -> str: def _render_table(self, table: Table) -> str:
from io import StringIO
output = StringIO()
self.console.begin_capture() self.console.begin_capture()
self.console.print(table) self.console.print(table)
captured = self.console.end_capture() captured = self.console.end_capture()

View File

@@ -1,9 +1,8 @@
from __future__ import annotations from __future__ import annotations
from pathlib import Path from pathlib import Path
from typing import Any
from depaudit.parsers import Parser, ParsedManifest, Dependency from depaudit.parsers import Parser, ParsedManifest
class GoParser(Parser): class GoParser(Parser):
@@ -27,7 +26,6 @@ class GoParser(Parser):
while i < len(lines): while i < len(lines):
line = lines[i].strip() line = lines[i].strip()
original_line = lines[i]
if not line or line.startswith("//"): if not line or line.startswith("//"):
i += 1 i += 1

View File

@@ -2,9 +2,8 @@ from __future__ import annotations
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
from pathlib import Path from pathlib import Path
from typing import Any
from depaudit.parsers import Parser, ParsedManifest, Dependency from depaudit.parsers import Parser, ParsedManifest
class JavaParser(Parser): class JavaParser(Parser):
@@ -138,8 +137,8 @@ class JavaParser(Parser):
def _extract_gradle_value(self, content: str, key: str) -> str | None: def _extract_gradle_value(self, content: str, key: str) -> str | None:
import re import re
patterns = [ patterns = [
key + "\s*=\s*["']([^"\']+)["']", key + r"\s*=\s*[\"']([^\"']+)[\"']",
key + "\s*=\s*([^\s]+)", key + r"\s*=\s*([^\s]+)",
] ]
for pattern in patterns: for pattern in patterns:
match = re.search(pattern, content) match = re.search(pattern, content)

View File

@@ -4,7 +4,7 @@ import json
from pathlib import Path from pathlib import Path
from typing import Any from typing import Any
from depaudit.parsers import Parser, ParsedManifest, Dependency from depaudit.parsers import Parser, ParsedManifest
class JavaScriptParser(Parser): class JavaScriptParser(Parser):

View File

@@ -3,14 +3,13 @@ from __future__ import annotations
import re import re
import sys import sys
from pathlib import Path from pathlib import Path
from typing import Any
if sys.version_info >= (3, 11): if sys.version_info >= (3, 11):
import tomllib import tomllib
else: else:
import tomli as tomllib import tomli as tomllib
from depaudit.parsers import Parser, ParsedManifest, Dependency from depaudit.parsers import Parser, ParsedManifest
class PythonParser(Parser): class PythonParser(Parser):
@@ -119,11 +118,11 @@ class PythonParser(Parser):
self._create_dependency(file_path, name, version) self._create_dependency(file_path, name, version)
) )
name_match = re.search(r'name\s*=\s*["']([^"\']+)["']', content) name_match = re.search(r"name\s*=\s*[\"']([^\"']+)[\"']", content)
if name_match: if name_match:
manifest.project_name = name_match.group(1) manifest.project_name = name_match.group(1)
version_match = re.search(r'version\s*=\s*["']([^"\']+)["']', content) version_match = re.search(r"version\s*=\s*[\"']([^\"']+)[\"']", content)
if version_match: if version_match:
manifest.project_version = version_match.group(1) manifest.project_version = version_match.group(1)
@@ -147,7 +146,7 @@ class PythonParser(Parser):
def _parse_pipfile(self, file_path: Path, manifest: ParsedManifest) -> None: def _parse_pipfile(self, file_path: Path, manifest: ParsedManifest) -> None:
content = file_path.read_text(encoding="utf-8") content = file_path.read_text(encoding="utf-8")
name_match = re.search(r'name\s*=\s*["']([^"\']+)["']', content) name_match = re.search(r"name\s*=\s*[\"']([^\"']+)[\"']", content)
if name_match: if name_match:
manifest.project_name = name_match.group(1) manifest.project_name = name_match.group(1)
@@ -195,10 +194,8 @@ class PythonParser(Parser):
extras_match = re.match(r"([^\[]+)(?:\[([^\]]+)\])?", req) extras_match = re.match(r"([^\[]+)(?:\[([^\]]+)\])?", req)
if extras_match: if extras_match:
name = extras_match.group(1) name = extras_match.group(1)
extras = extras_match.group(2)
else: else:
name = req name = req
extras = None
for op in ["==", ">=", "<=", "~=", "!=", ">", "<", "==="]: for op in ["==", ">=", "<=", "~=", "!=", ">", "<", "==="]:
if op in name: if op in name:

View File

@@ -4,7 +4,7 @@ import tomllib
from pathlib import Path from pathlib import Path
from typing import Any from typing import Any
from depaudit.parsers import Parser, ParsedManifest, Dependency from depaudit.parsers import Parser, ParsedManifest
class RustParser(Parser): class RustParser(Parser):

View File

@@ -1,6 +1,5 @@
"""Pytest configuration and fixtures for DepAudit tests.""" """Pytest configuration and fixtures for DepAudit tests."""
import json
import tempfile import tempfile
from pathlib import Path from pathlib import Path

View File

@@ -1,4 +1,3 @@
import pytest
from pathlib import Path from pathlib import Path
import tempfile import tempfile
import json import json

View File

@@ -1,10 +1,8 @@
import pytest from unittest.mock import patch
from unittest.mock import Mock, patch
from depaudit.utils.version import ( from depaudit.utils.version import (
parse_version, parse_version,
compare_versions, compare_versions,
is_version_outdated, is_version_outdated,
extract_version_from_specifier,
) )

View File

@@ -1,5 +1,4 @@
import pytest import pytest
from unittest.mock import patch, Mock
from click.testing import CliRunner from click.testing import CliRunner
from pathlib import Path from pathlib import Path
import tempfile import tempfile

View File

@@ -1,8 +1,6 @@
import pytest
from unittest.mock import Mock, patch
import json import json
from depaudit.output import AuditResult, Formatter from depaudit.output import AuditResult
from depaudit.output.json_formatter import JSONFormatter from depaudit.output.json_formatter import JSONFormatter
from depaudit.output.table_formatter import TableFormatter from depaudit.output.table_formatter import TableFormatter
from depaudit.output.factory import FormatterFactory from depaudit.output.factory import FormatterFactory

View File

@@ -1,8 +1,5 @@
import json import json
import pytest
from pathlib import Path
from depaudit.parsers import Parser, ParsedManifest
from depaudit.parsers.javascript import JavaScriptParser from depaudit.parsers.javascript import JavaScriptParser
from depaudit.parsers.python import PythonParser from depaudit.parsers.python import PythonParser
from depaudit.parsers.go import GoParser from depaudit.parsers.go import GoParser