69 lines
1.8 KiB
Python
69 lines
1.8 KiB
Python
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass, field
|
|
from typing import Any
|
|
|
|
|
|
@dataclass
|
|
class OutdatedPackage:
|
|
package_name: str
|
|
current_version: str
|
|
latest_version: str
|
|
language: str
|
|
minor_available: bool = False
|
|
patch_available: bool = False
|
|
major_available: bool = False
|
|
registry_url: str | None = None
|
|
publish_date: str | None = None
|
|
|
|
def to_dict(self) -> dict[str, Any]:
|
|
return {
|
|
"package_name": self.package_name,
|
|
"current_version": self.current_version,
|
|
"latest_version": self.latest_version,
|
|
"language": self.language,
|
|
"minor_available": self.minor_available,
|
|
"patch_available": self.patch_available,
|
|
"major_available": self.major_available,
|
|
"registry_url": self.registry_url,
|
|
"publish_date": self.publish_date,
|
|
}
|
|
|
|
|
|
@dataclass
|
|
class LicenseInfo:
|
|
package_name: str
|
|
license_type: str | None
|
|
license_expression: str | None
|
|
source: str
|
|
is_spdx_compliant: bool = False
|
|
|
|
def to_dict(self) -> dict[str, Any]:
|
|
return {
|
|
"package_name": self.package_name,
|
|
"license_type": self.license_type,
|
|
"license_expression": self.license_expression,
|
|
"source": self.source,
|
|
"is_spdx_compliant": self.is_spdx_compliant,
|
|
}
|
|
|
|
|
|
@dataclass
|
|
class UnusedDependency:
|
|
package_name: str
|
|
version: str
|
|
language: str
|
|
declared_in: str
|
|
file_path: str
|
|
reason: str
|
|
|
|
def to_dict(self) -> dict[str, Any]:
|
|
return {
|
|
"package_name": self.package_name,
|
|
"version": self.version,
|
|
"language": self.language,
|
|
"declared_in": self.declared_in,
|
|
"file_path": self.file_path,
|
|
"reason": self.reason,
|
|
}
|