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

47
setup.py Normal file
View File

@@ -0,0 +1,47 @@
#!/usr/bin/env python3
"""Setup script for smart-report package."""
from setuptools import setup, find_packages
setup(
name="smart-report",
version="1.0.0",
description="S.M.A.R.T. disk health monitoring tool with CLI and GUI interfaces",
long_description=open("README.md", encoding="utf-8").read(),
long_description_content_type="text/markdown",
author="kilyabin",
license="MIT",
packages=find_packages(),
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",
],
python_requires=">=3.8",
install_requires=[
"rich>=13.0.0",
],
extras_require={
"gui": ["PyQt6>=6.4.0"],
"dev": ["pyinstaller>=6.0.0", "build"],
},
entry_points={
"console_scripts": [
"smart-report=smart_report.cli:main",
"smart-report-gui=smart_report.gui:main",
],
},
)