Some checks failed
lint / docker (push) Has been cancelled
- Move all backup_*.py files to libtisbackup/drivers/ subdirectory - Move XenAPI.py and copy_vm_xcp.py to drivers/ (driver-specific) - Create drivers/__init__.py with automatic driver imports - Update tisbackup.py imports to use new structure - Add pyvmomi>=8.0.0 as mandatory dependency - Sync requirements.txt with pyproject.toml dependencies - Add pylint>=3.0.0 and pytest-cov>=6.0.0 to dev dependencies - Configure pylint and coverage tools in pyproject.toml - Add conventional commits guidelines to CLAUDE.md - Enhance .gitignore with comprehensive patterns for Python, IDEs, testing, and secrets - Update CLAUDE.md documentation with new structure and tooling Breaking Changes: - Drivers must now be imported from libtisbackup.drivers instead of libtisbackup - All backup driver files relocated to drivers/ subdirectory 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
143 lines
3.2 KiB
TOML
143 lines
3.2 KiB
TOML
[project]
|
|
name = "TISbackup"
|
|
version = "1.8.0"
|
|
description = "Backup server side executed python scripts for managing linux and windows system and application data backups, developed by adminsys for adminsys"
|
|
readme = "README.md"
|
|
dependencies = [
|
|
"authlib>=1.3.0",
|
|
"bcrypt>=4.0.0",
|
|
"flask==3.1.0",
|
|
"flask-login>=0.6.0",
|
|
"huey==2.5.3",
|
|
"iniparse==0.5",
|
|
"paramiko==4.0.0",
|
|
"peewee==3.17.9",
|
|
"pexpect==4.9.0",
|
|
"pyvmomi>=8.0.0",
|
|
"redis==5.2.1",
|
|
"requests==2.32.3",
|
|
"ruff>=0.13.3",
|
|
"simplejson==3.20.1",
|
|
"six==1.17.0",
|
|
]
|
|
requires-python = ">=3.13"
|
|
|
|
[project.optional-dependencies]
|
|
# Documentation dependencies
|
|
docs = [
|
|
"docutils",
|
|
"sphinx>=7.0.0,<8.0.0",
|
|
"sphinx_rtd_theme",
|
|
"sphinxjp.themes.revealjs",
|
|
"sphinx-intl",
|
|
"sphinx-tabs",
|
|
]
|
|
|
|
[tool.black]
|
|
line-length = 140
|
|
|
|
|
|
[tool.ruff]
|
|
# Allow lines to be as long as 120.
|
|
line-length = 140
|
|
indent-width = 4
|
|
|
|
[tool.ruff.lint]
|
|
ignore = ["F401", "F403", "F405", "E402", "E701", "E722", "E741"]
|
|
|
|
[tool.pytest.ini_options]
|
|
# Pytest configuration for TISBackup
|
|
|
|
# Test discovery patterns
|
|
python_files = ["test_*.py"]
|
|
python_classes = ["Test*"]
|
|
python_functions = ["test_*"]
|
|
|
|
# Test paths
|
|
testpaths = ["tests"]
|
|
|
|
# Output options
|
|
addopts = [
|
|
"-v",
|
|
"--strict-markers",
|
|
"--tb=short",
|
|
"--color=yes",
|
|
]
|
|
|
|
# Markers for categorizing tests
|
|
markers = [
|
|
"unit: Unit tests for individual functions/methods",
|
|
"integration: Integration tests that test multiple components together",
|
|
"ssh: Tests related to SSH functionality",
|
|
"slow: Tests that take a long time to run",
|
|
]
|
|
|
|
# Minimum Python version
|
|
minversion = "3.13"
|
|
|
|
# Coverage options (optional - uncomment when pytest-cov is installed)
|
|
# addopts = ["--cov=libtisbackup", "--cov-report=html", "--cov-report=term-missing"]
|
|
|
|
[tool.pylint.main]
|
|
# Maximum line length
|
|
max-line-length = 140
|
|
|
|
# Files or directories to skip
|
|
ignore = ["tests", ".venv", "__pycache__", ".pytest_cache", "build", "dist"]
|
|
|
|
[tool.pylint."messages control"]
|
|
# Disable specific warnings to align with ruff configuration
|
|
disable = [
|
|
"C0103", # invalid-name (similar to ruff E741)
|
|
"C0114", # missing-module-docstring
|
|
"C0115", # missing-class-docstring
|
|
"C0116", # missing-function-docstring
|
|
"R0902", # too-many-instance-attributes
|
|
"R0903", # too-few-public-methods
|
|
"R0913", # too-many-arguments
|
|
"R0914", # too-many-locals
|
|
"W0703", # broad-except (similar to ruff E722)
|
|
"W0719", # broad-exception-raised
|
|
]
|
|
|
|
[tool.pylint.format]
|
|
# Indentation settings
|
|
indent-string = " "
|
|
|
|
[tool.coverage.run]
|
|
# Source code to measure coverage for
|
|
source = ["libtisbackup"]
|
|
|
|
# Omit certain files
|
|
omit = [
|
|
"*/tests/*",
|
|
"*/__pycache__/*",
|
|
"*/site-packages/*",
|
|
"*/.venv/*",
|
|
]
|
|
|
|
[tool.coverage.report]
|
|
# Precision for coverage percentage
|
|
precision = 2
|
|
|
|
# Show lines that weren't covered
|
|
show_missing = true
|
|
|
|
# Skip files with no executable code
|
|
skip_empty = true
|
|
|
|
# Fail if coverage is below this percentage
|
|
# fail_under = 80
|
|
|
|
[tool.coverage.html]
|
|
# Directory for HTML coverage report
|
|
directory = "htmlcov"
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"pylint>=3.0.0",
|
|
"pytest>=8.4.2",
|
|
"pytest-cov>=6.0.0",
|
|
"pytest-mock>=3.15.1",
|
|
]
|