TISbackup/pyproject.toml
k3nny 1cb731cbdb
Some checks failed
lint / docker (push) Has been cancelled
refactor(drivers): organize backup modules into drivers subfolder
- 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>
2025-10-05 23:54:26 +02:00

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",
]