Skip to content

Commit 6f57608

Browse files
drernieclaude
andauthored
fix: file catalog URLs missing /latest/ version component (#314)
* fix(packages): include /latest/ version in file catalog URLs Fixed file URL generation to include the version component in the path. File URLs now follow the correct format: /tree/latest/{file_path} instead of /tree/{file_path} Example: - Before: .../tree/README.md - After: .../tree/latest/README.md Updated tests to verify the correct URL format and ensure the fix prevents regression. Fixes #313 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * chore: bump version to 0.9.8 * docs: add CHANGELOG entry for v0.9.8 Document fix for file catalog URLs missing /latest/ version component. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent a26c9aa commit 6f57608

File tree

8 files changed

+26
-16
lines changed

8 files changed

+26
-16
lines changed

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,16 @@
33

44
All notable changes to this project will be documented in this file, one line per user-visible change.
55

6+
## [0.9.8] - 2025-12-22
7+
8+
### Fixed
9+
10+
- **File catalog URLs now include version component** - Fixed file URL generation to include `/latest/` in path (#313)
11+
- File URLs now follow correct format: `/tree/latest/{file_path}` instead of `/tree/{file_path}`
12+
- Example: `https://catalog.com/b/bucket/packages/benchling/EXP25000088/tree/latest/README.md`
13+
- Updated tests to verify correct URL format and prevent regression
14+
- Affects `Package.make_catalog_url()` and `PackageFile.catalog_url` property
15+
616
## [0.9.7] - 2025-12-18
717

818
### Fixed

docker/app-manifest.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ manifestVersion: 1
22
info:
33
name: quilt-docker
44
description: Packaging Benchling Notebooks as Quilt packages
5-
version: 0.9.7
5+
version: 0.9.8
66
features:
77
- name: Quilt Connector
88
id: quilt_entry

docker/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "benchling-quilt-integration"
7-
version = "0.9.7"
7+
version = "0.9.8"
88
description = "Benchling-Quilt Integration Webhook Service"
99
license = {text = "Apache-2.0"}
1010
authors = [

docker/src/packages.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,11 @@ def make_catalog_url(self, logical_key: str) -> str:
7070
Direct link to file in Quilt catalog
7171
7272
Example:
73-
'https://nightly.quilttest.com/b/my-bucket/packages/benchling/etr_123/tree/data%2Ffile.csv'
73+
'https://nightly.quilttest.com/b/my-bucket/packages/benchling/etr_123/tree/latest/data%2Ffile.csv'
7474
"""
7575
encoded_key = quote(logical_key, safe="")
7676
base_url = f"https://{self.catalog_base_url}/b/{self.bucket}/packages/{self.package_name}"
77-
return f"{base_url}/tree/{encoded_key}"
77+
return f"{base_url}/tree/latest/{encoded_key}"
7878

7979
def make_sync_url(self, path: Optional[str] = None, version: Optional[str] = None) -> str:
8080
"""Generate QuiltSync download URL for the package or a file within it.

docker/tests/test_package_files.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def test_package_file_size_display(self):
6767
assert file.size_display == "1.0 GB"
6868

6969
def test_package_file_catalog_url(self):
70-
"""Test catalog URL generation."""
70+
"""Test catalog URL generation includes /latest/ version."""
7171
file = PackageFile(
7272
logical_key="data/exp.csv",
7373
size=1024,
@@ -80,7 +80,7 @@ def test_package_file_catalog_url(self):
8080
assert "https://nightly.quilttest.com" in url
8181
assert "/b/test-bucket" in url
8282
assert "/packages/benchling/etr_123" in url
83-
assert "/tree/" in url
83+
assert "/tree/latest/" in url
8484

8585
def test_package_file_sync_url(self):
8686
"""Test QuiltSync URL generation."""

docker/tests/test_packages.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -92,25 +92,25 @@ def test_upload_url_is_property(self, package):
9292
assert "?action=revisePackage" in result
9393

9494
def test_make_catalog_url_with_file_path(self, package):
95-
"""Test make_catalog_url generates correct URL for files."""
95+
"""Test make_catalog_url generates correct URL for files with /latest/ version."""
9696
result = package.make_catalog_url("README.md")
97-
expected = "https://nightly.quilttest.com/b/test-bucket/packages/benchling/etr_123/tree/README.md"
97+
expected = "https://nightly.quilttest.com/b/test-bucket/packages/benchling/etr_123/tree/latest/README.md"
9898
assert result == expected
9999

100100
def test_make_catalog_url_with_nested_path(self, package):
101-
"""Test make_catalog_url with nested file paths."""
101+
"""Test make_catalog_url with nested file paths includes /latest/ version."""
102102
result = package.make_catalog_url("data/results.csv")
103-
# Forward slash should be encoded
104-
assert "/tree/data%2Fresults.csv" in result
103+
# Forward slash should be encoded and version should be included
104+
assert "/tree/latest/data%2Fresults.csv" in result
105105

106106
def test_make_catalog_url_special_characters(self, package):
107-
"""Test make_catalog_url encodes special characters in file paths."""
107+
"""Test make_catalog_url encodes special characters in file paths and includes /latest/ version."""
108108
result = package.make_catalog_url("data/file name with spaces.txt")
109-
# Spaces should be encoded
109+
# Spaces should be encoded and version should be included
110110
assert "%20" in result
111111
expected_url = (
112112
"https://nightly.quilttest.com/b/test-bucket/packages/benchling/etr_123/"
113-
"tree/data%2Ffile%20name%20with%20spaces.txt"
113+
"tree/latest/data%2Ffile%20name%20with%20spaces.txt"
114114
)
115115
assert result == expected_url
116116

docker/uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@quiltdata/benchling-webhook",
3-
"version": "0.9.7",
3+
"version": "0.9.8",
44
"description": "AWS CDK deployment for Benchling webhook processing using Fargate - Deploy directly with npx",
55
"main": "dist/lib/index.js",
66
"types": "dist/lib/index.d.ts",

0 commit comments

Comments
 (0)