feat: implement hierarchical S3 keys and automated version management
This commit introduces two major improvements: 1. **Hierarchical S3 Key Structure**: - Replace URL-based hashing with remote-name/hash(directory_path)/filename format - Enables remote-specific cache operations and intuitive S3 organization - Cache keys now independent of mirror URL changes - Example: fedora/886d215f6d1a0108/eccodes-2.44.0-1.fc42.x86_64.rpm 2. **Automated Version Management**: - Add bumpver for semantic version bumping - Single source of truth in pyproject.toml - FastAPI dynamically reads version from package metadata - Eliminates manual version synchronization between files Changes: - storage.py: New get_object_key(remote_name, path) method with directory hashing - main.py: Dynamic version import and updated cache key generation calls - cache.py: Updated to use new hierarchical key structure - pyproject.toml: Added bumpver config and dev dependency Breaking change: S3 key format changed, existing cache will need regeneration
This commit is contained in:
@@ -40,4 +40,18 @@ dev = [
|
||||
"isort>=5.12.0",
|
||||
"mypy>=1.6.0",
|
||||
"ruff>=0.1.0",
|
||||
"bumpver>=2025.1131",
|
||||
]
|
||||
|
||||
[tool.bumpver]
|
||||
current_version = "2.0.2"
|
||||
version_pattern = "MAJOR.MINOR.PATCH"
|
||||
commit_message = "Bump version {old_version} → {new_version}"
|
||||
commit = true
|
||||
tag = true
|
||||
push = false
|
||||
|
||||
[[tool.bumpver.files]]
|
||||
filename = "pyproject.toml"
|
||||
search = 'version = "{current_version}"'
|
||||
replace = 'version = "{new_version}"'
|
||||
|
||||
Reference in New Issue
Block a user