mirror of
https://github.com/beshu-tech/deltaglider.git
synced 2026-05-25 16:19:32 +02:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2d345bc663 |
+32
-2
@@ -5,9 +5,39 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
## [6.2.0] - 2026-05-22 — Final release; project deprecated
|
||||
|
||||
### Fixed
|
||||
### Deprecated
|
||||
- **The `deltaglider` Python package is deprecated as of this release.**
|
||||
The canonical implementation is now
|
||||
[`deltaglider_proxy`](https://github.com/beshu-tech/deltaglider_proxy), a
|
||||
single Rust binary that ships the S3-compatible proxy, the `s3` CLI
|
||||
(every Python subcommand has a 1:1 Rust equivalent), and the web UI.
|
||||
Wire format is byte-identical: data written by this tool is readable
|
||||
by `deltaglider_proxy` and vice versa.
|
||||
- **Every CLI invocation now prints a deprecation banner to stderr.**
|
||||
Set `DG_SUPPRESS_DEPRECATION=1` to silence it for CI/automation that
|
||||
hasn't migrated yet.
|
||||
- **PyPI classifier bumped to `Development Status :: 7 - Inactive`.**
|
||||
- **Repo will be archived approximately one week after this release.**
|
||||
PyPI installs continue to work indefinitely (PyPI never deletes
|
||||
published versions), but no further updates or security fixes will
|
||||
land. File new issues against
|
||||
[`deltaglider_proxy`](https://github.com/beshu-tech/deltaglider_proxy/issues).
|
||||
|
||||
Migration:
|
||||
```bash
|
||||
brew install beshu-tech/tap/deltaglider_proxy
|
||||
# or grab a binary from
|
||||
# https://github.com/beshu-tech/deltaglider_proxy/releases
|
||||
|
||||
alias dg='deltaglider_proxy s3'
|
||||
dg cp foo s3://bucket/foo
|
||||
dg ls s3://bucket
|
||||
dg migrate s3://src s3://dest
|
||||
```
|
||||
|
||||
### Fixed (carried from Unreleased)
|
||||
- **Direct-upload metadata now uses the canonical `dg-*` dashed namespace.** Pre-fix, files routed through `_upload_direct` (non-delta-eligible extensions: `.sha1`, `.sha512`, etc.) wrote metadata with bare underscored keys (`original_name`, `file_sha256`, `compression`) while delta and reference uploads correctly used the namespaced form (`dg-original-name`, `dg-file-sha256`, `dg-compression`). Downstream consumers — most visibly the [DeltaGlider Proxy](https://github.com/beshu-tech/deltaglider_proxy) — only recognised the dashed form, so every `.sha1`/`.sha512` listing triggered a `PATHOLOGICAL | Missing/corrupt DG metadata` warning. Aligned the writer to the canonical scheme so new uploads stop producing log spam.
|
||||
|
||||
### Changed
|
||||
|
||||
@@ -1,5 +1,40 @@
|
||||
# DeltaGlider
|
||||
|
||||
> ## ⚠️ DEPRECATED — use [`deltaglider_proxy`](https://github.com/beshu-tech/deltaglider_proxy)
|
||||
>
|
||||
> This Python package is **deprecated as of v6.2.0** (this is the last
|
||||
> feature release). The canonical implementation is now
|
||||
> **[`deltaglider_proxy`](https://github.com/beshu-tech/deltaglider_proxy)** —
|
||||
> a single Rust binary that ships the S3-compatible proxy, the CLI, and
|
||||
> the web UI. Wire format is byte-identical: data written by this tool
|
||||
> is readable by `deltaglider_proxy` and vice versa.
|
||||
>
|
||||
> **Migration:**
|
||||
> ```bash
|
||||
> # Install the Rust binary (proxy + CLI + UI, one artifact):
|
||||
> brew install beshu-tech/tap/deltaglider_proxy
|
||||
> # or download from https://github.com/beshu-tech/deltaglider_proxy/releases
|
||||
>
|
||||
> # Optional alias for Python-style ergonomics:
|
||||
> alias dg='deltaglider_proxy s3'
|
||||
>
|
||||
> # Every Python subcommand has a 1:1 Rust equivalent:
|
||||
> deltaglider cp … → deltaglider_proxy s3 cp …
|
||||
> deltaglider migrate … → deltaglider_proxy s3 migrate …
|
||||
> deltaglider stats … → deltaglider_proxy s3 stats …
|
||||
> ```
|
||||
>
|
||||
> The Python repository will be **archived** approximately one week
|
||||
> after the v6.2.0 release. PyPI installs will continue to work
|
||||
> indefinitely (PyPI never deletes published versions), but no further
|
||||
> updates or security fixes will land here. Open issues and PRs should
|
||||
> go to [`deltaglider_proxy`](https://github.com/beshu-tech/deltaglider_proxy/issues).
|
||||
>
|
||||
> The stderr deprecation notice can be suppressed with
|
||||
> `DG_SUPPRESS_DEPRECATION=1` for CI that hasn't migrated yet.
|
||||
|
||||
---
|
||||
|
||||
[](https://pypi.org/project/deltaglider/)
|
||||
[](https://github.com/beshu-tech/deltaglider)
|
||||
[](LICENSE)
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
|
||||
[project]
|
||||
name = "deltaglider"
|
||||
dynamic = ["version"]
|
||||
description = "Store 4TB in 5GB: S3-compatible storage with 99.9% compression for versioned files"
|
||||
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"},
|
||||
]
|
||||
@@ -32,7 +32,7 @@ keywords = [
|
||||
"devops",
|
||||
]
|
||||
classifiers = [
|
||||
"Development Status :: 4 - Beta",
|
||||
"Development Status :: 7 - Inactive",
|
||||
"Intended Audience :: Developers",
|
||||
"Intended Audience :: System Administrators",
|
||||
"Operating System :: OS Independent",
|
||||
|
||||
@@ -142,6 +142,42 @@ def _version_callback(ctx: click.Context, param: click.Parameter, value: bool) -
|
||||
ctx.exit(0)
|
||||
|
||||
|
||||
# Deprecation banner shown at the top of every CLI invocation (stderr).
|
||||
# Suppressed by setting DG_SUPPRESS_DEPRECATION=1 in the environment — for
|
||||
# CI/automation that hasn't migrated yet and doesn't want noise on every
|
||||
# run. Print only once per process; some commands (e.g. `migrate`) invoke
|
||||
# `cli` callbacks transitively.
|
||||
_DEPRECATION_PRINTED = False
|
||||
|
||||
|
||||
def _print_deprecation_notice() -> None:
|
||||
global _DEPRECATION_PRINTED
|
||||
if _DEPRECATION_PRINTED:
|
||||
return
|
||||
_DEPRECATION_PRINTED = True
|
||||
if os.environ.get("DG_SUPPRESS_DEPRECATION") == "1":
|
||||
return
|
||||
click.echo(
|
||||
"═════════════════════════════════════════════════════════════════\n"
|
||||
" deltaglider (Python) is DEPRECATED as of v6.2.0.\n"
|
||||
"\n"
|
||||
" The canonical implementation is now `deltaglider_proxy`, a single\n"
|
||||
" Rust binary that ships the S3-compatible proxy, the CLI, and the\n"
|
||||
" web UI. Wire format is byte-identical with this tool.\n"
|
||||
"\n"
|
||||
" brew install beshu-tech/tap/deltaglider_proxy # or download:\n"
|
||||
" https://github.com/beshu-tech/deltaglider_proxy/releases\n"
|
||||
"\n"
|
||||
" Then:\n"
|
||||
" alias dg='deltaglider_proxy s3'\n"
|
||||
" dg cp s3://bucket/key .\n"
|
||||
"\n"
|
||||
" Suppress this notice: DG_SUPPRESS_DEPRECATION=1\n"
|
||||
"═════════════════════════════════════════════════════════════════",
|
||||
err=True,
|
||||
)
|
||||
|
||||
|
||||
@click.group()
|
||||
@click.option("--debug", is_flag=True, help="Enable debug logging")
|
||||
@click.option(
|
||||
@@ -154,9 +190,14 @@ def _version_callback(ctx: click.Context, param: click.Parameter, value: bool) -
|
||||
)
|
||||
@click.pass_context
|
||||
def cli(ctx: click.Context, debug: bool) -> None:
|
||||
"""DeltaGlider - Delta-aware S3 file storage wrapper."""
|
||||
"""DeltaGlider - Delta-aware S3 file storage wrapper.
|
||||
|
||||
DEPRECATED as of v6.2.0. Migrate to `deltaglider_proxy` — see
|
||||
https://github.com/beshu-tech/deltaglider_proxy
|
||||
"""
|
||||
import logging
|
||||
|
||||
_print_deprecation_notice()
|
||||
log_level = "DEBUG" if debug else os.environ.get("DG_LOG_LEVEL", "INFO")
|
||||
ctx.obj = create_service(log_level)
|
||||
logging.getLogger("deltaglider").info("deltaglider %s", __version__)
|
||||
|
||||
Reference in New Issue
Block a user