mirror of
https://github.com/beshu-tech/deltaglider.git
synced 2026-05-24 15:57:04 +02:00
2d345bc663
The Rust `deltaglider_proxy` ships proxy + CLI + UI in one binary with a byte-identical wire format. Maintaining both has been a duplication tax (metadata-namespace fix v6.1.2 had to land twice). This release is the final feature release; security/bug fixes stop here. What this commit does: - CLI: every invocation prints a deprecation notice to stderr pointing at github.com/beshu-tech/deltaglider_proxy with a one-line migration alias (`alias dg='deltaglider_proxy s3'`). Banner prints once per process; suppress via DG_SUPPRESS_DEPRECATION=1 for CI that hasn't migrated yet. - README: prominent deprecation banner at the top with the migration command and the archive-timing notice (~1 week after v6.2.0 ships). - pyproject.toml: description prefixed with "DEPRECATED" so PyPI search results show the warning. Classifier moved Beta -> Inactive. - CHANGELOG: v6.2.0 entry under "Deprecated" documenting the migration path + archive plan, preserving the carried-forward Fixed/Changed/ Added items from Unreleased. Repo archive timing: Maintainer will archive ~1 week after v6.2.0 hits PyPI to give users a window to see the stderr notice on their next update. PyPI installs continue to work indefinitely. No behaviour changes to the wire format, the CLI surface, or the metadata schema. Existing buckets remain readable forever. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
164 lines
3.9 KiB
TOML
164 lines
3.9 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=61.0", "setuptools-scm>=8.0"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "deltaglider"
|
|
dynamic = ["version"]
|
|
description = "DEPRECATED — migrate to deltaglider_proxy (Rust): https://github.com/beshu-tech/deltaglider_proxy . Store 4TB in 5GB: S3-compatible storage with 99.9% compression for versioned files."
|
|
authors = [
|
|
{name = "Beshu Tech", email = "info@beshu.tech"},
|
|
]
|
|
maintainers = [
|
|
{name = "Beshu Tech Team", email = "info@beshu.tech"},
|
|
]
|
|
readme = "README.md"
|
|
license = "MIT"
|
|
requires-python = ">=3.11"
|
|
keywords = [
|
|
"s3",
|
|
"compression",
|
|
"delta",
|
|
"storage",
|
|
"backup",
|
|
"deduplication",
|
|
"xdelta3",
|
|
"binary-diff",
|
|
"artifact-storage",
|
|
"version-control",
|
|
"minio",
|
|
"aws",
|
|
"cost-optimization",
|
|
"devops",
|
|
]
|
|
classifiers = [
|
|
"Development Status :: 7 - Inactive",
|
|
"Intended Audience :: Developers",
|
|
"Intended Audience :: System Administrators",
|
|
"Operating System :: OS Independent",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Programming Language :: Python :: 3.13",
|
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
"Topic :: System :: Archiving :: Backup",
|
|
"Topic :: System :: Archiving :: Compression",
|
|
"Topic :: System :: Filesystems",
|
|
"Topic :: Internet",
|
|
"Environment :: Console",
|
|
]
|
|
|
|
dependencies = [
|
|
"boto3>=1.35.0,<2.0.0",
|
|
"click>=8.1.0,<9.0.0",
|
|
"cryptography>=42.0.0,<45.0.0",
|
|
"python-dateutil>=2.9.0,<3.0.0",
|
|
"requests>=2.32.0,<3.0.0",
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://github.com/beshu-tech/deltaglider"
|
|
Documentation = "https://github.com/beshu-tech/deltaglider#readme"
|
|
Repository = "https://github.com/beshu-tech/deltaglider"
|
|
Issues = "https://github.com/beshu-tech/deltaglider/issues"
|
|
Changelog = "https://github.com/beshu-tech/deltaglider/releases"
|
|
"Case Study" = "https://github.com/beshu-tech/deltaglider/blob/main/docs/case-study-readonlyrest.md"
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"pytest>=8.0.0",
|
|
"pytest-mock>=3.14.0",
|
|
"pytest-asyncio>=0.24.0",
|
|
"moto[s3]>=5.0.0",
|
|
"ruff>=0.8.0",
|
|
"mypy>=1.13.0",
|
|
"boto3-stubs[s3]>=1.35.0",
|
|
"types-python-dateutil>=2.9.0",
|
|
]
|
|
|
|
[project.scripts]
|
|
deltaglider = "deltaglider.app.cli.main:main"
|
|
|
|
|
|
[tool.hatch.build.targets.sdist]
|
|
include = [
|
|
"/src",
|
|
"/tests",
|
|
"/docs",
|
|
"README.md",
|
|
"LICENSE",
|
|
"CONTRIBUTING.md",
|
|
"pyproject.toml",
|
|
]
|
|
exclude = [
|
|
"*.pyc",
|
|
"__pycache__",
|
|
".git",
|
|
".pytest_cache",
|
|
"*.delta",
|
|
"reference.bin",
|
|
"1.66.1/",
|
|
]
|
|
|
|
[tool.uv]
|
|
dev-dependencies = [
|
|
"pytest>=8.0.0",
|
|
"pytest-mock>=3.14.0",
|
|
"pytest-asyncio>=0.24.0",
|
|
"moto[s3]>=5.0.0",
|
|
"ruff>=0.8.0",
|
|
"mypy>=1.13.0",
|
|
"boto3-stubs[s3]>=1.35.0",
|
|
"types-python-dateutil>=2.9.0",
|
|
"types-requests>=2.32.0",
|
|
"setuptools-scm>=8.0.0",
|
|
]
|
|
|
|
[tool.setuptools_scm]
|
|
# Automatically determine version from git tags
|
|
write_to = "src/deltaglider/_version.py"
|
|
local_scheme = "no-local-version"
|
|
|
|
[tool.ruff]
|
|
target-version = "py311"
|
|
line-length = 100
|
|
extend-exclude = ["src/deltaglider/_version.py"]
|
|
|
|
[tool.ruff.lint]
|
|
select = [
|
|
"E", # pycodestyle errors
|
|
"W", # pycodestyle warnings
|
|
"F", # pyflakes
|
|
"I", # isort
|
|
"B", # flake8-bugbear
|
|
"UP", # pyupgrade
|
|
]
|
|
ignore = ["E501"] # line too long
|
|
|
|
[tool.ruff.format]
|
|
quote-style = "double"
|
|
indent-style = "space"
|
|
|
|
[tool.mypy]
|
|
python_version = "3.11"
|
|
warn_return_any = true
|
|
warn_unused_configs = true
|
|
disallow_untyped_defs = true
|
|
disallow_any_unimported = false
|
|
no_implicit_optional = true
|
|
check_untyped_defs = true
|
|
namespace_packages = false
|
|
mypy_path = "src"
|
|
exclude = [
|
|
"^build/",
|
|
"^dist/",
|
|
]
|
|
|
|
[tool.pytest.ini_options]
|
|
minversion = "8.0"
|
|
testpaths = ["tests"]
|
|
markers = [
|
|
"e2e: end-to-end tests requiring LocalStack",
|
|
"integration: integration tests",
|
|
"unit: unit tests",
|
|
] |