feat: S.M.A.R.T. disk health monitoring with CLI and GUI

- Add core module with SMART data parsing and health calculation
- Add CLI with Rich-based terminal UI and health bar visualization
- Add GUI with PyQt6 tabs for summary and detailed views
- Support multiple health indicators (ID 231, 169, 233) for different SSD manufacturers
- Add bilingual support (Russian/English) with auto-detection
- Add GitHub Actions workflow for building binaries on Linux, Windows, macOS
- Calculate health based on reallocated sectors, pending sectors, SSD life, and more

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
kilyabin
2026-03-15 00:15:21 +04:00
commit 19b79a4e13
12 changed files with 2333 additions and 0 deletions

52
pyproject.toml Normal file
View File

@@ -0,0 +1,52 @@
[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "smart-report"
version = "1.0.0"
description = "S.M.A.R.T. disk health monitoring tool with CLI and GUI interfaces"
readme = "README.md"
license = {text = "MIT"}
authors = [
{name = "kilyabin"}
]
classifiers = [
"Development Status :: 4 - Beta",
"Environment :: Console",
"Environment :: X11 Applications :: Qt",
"Intended Audience :: System Administrators",
"License :: OSI Approved :: MIT License",
"Operating System :: POSIX :: Linux",
"Operating System :: Microsoft :: Windows",
"Operating System :: MacOS :: MacOS X",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: System :: Monitoring",
"Topic :: System :: Hardware",
]
requires-python = ">=3.8"
dependencies = [
"rich>=13.0.0",
]
[project.optional-dependencies]
gui = ["PyQt6>=6.4.0"]
dev = ["pyinstaller>=6.0.0", "build"]
[project.scripts]
smart-report = "smart_report.cli:main"
smart-report-gui = "smart_report.gui:main"
[project.urls]
Homepage = "https://github.com/kilyabin/smart-report"
Repository = "https://github.com/kilyabin/smart-report.git"
Issues = "https://github.com/kilyabin/smart-report/issues"
[tool.setuptools.packages.find]
where = ["."]
include = ["smart_report*"]