diff --git a/RELEASE_MEMO.md b/RELEASE_MEMO.md index 7fb46cf30..3e9a09ccc 100644 --- a/RELEASE_MEMO.md +++ b/RELEASE_MEMO.md @@ -150,11 +150,16 @@ If the bot doesn't create a PR, manually update the feedstock: run: - python >={{ python_min }} - numpy + - pymysql >=0.7.2 + - deepdiff + - pyparsing - pandas - - pymysql >=1.0 - - minio + - tqdm + - networkx + - pydot + - fsspec >=2023.1.0 + - pydantic-settings >=2.0.0 - packaging - # ... etc ``` 5. **Submit PR** to the feedstock diff --git a/src/datajoint/builtin_codecs/filepath.py b/src/datajoint/builtin_codecs/filepath.py index 034d5b53a..6be05b5cd 100644 --- a/src/datajoint/builtin_codecs/filepath.py +++ b/src/datajoint/builtin_codecs/filepath.py @@ -22,8 +22,10 @@ class FilepathCodec(Codec): This codec gives users maximum freedom in organizing their files while reusing DataJoint's store configuration. Files can be placed anywhere - in the store EXCEPT the reserved ``_hash/`` and ``_schema/`` sections - which are managed by DataJoint. + in the store EXCEPT the reserved sections managed by DataJoint (the + hash-addressed and schema-addressed sections — from each store's + ``hash_prefix`` and ``schema_prefix`` settings, defaults ``_hash`` and + ``_schema``). This is useful when: - Files are managed externally (e.g., by acquisition software) @@ -54,7 +56,8 @@ class Recordings(dj.Manual): JSON metadata: ``{path, store, size, timestamp}`` Reserved Sections: - Paths cannot start with ``_hash/`` or ``_schema/`` - these are managed by DataJoint. + Paths cannot start with the store's reserved ``hash_prefix`` or + ``schema_prefix`` sections (defaults ``_hash/`` and ``_schema/``). Warning: The file must exist in the store at the specified path. @@ -78,7 +81,8 @@ def encode(self, value: Any, *, key: dict | None = None, store_name: str | None Parameters ---------- value : str - Relative path within the store. Cannot use reserved sections (_hash/, _schema/). + Relative path within the store. Cannot use the store's reserved + hash/schema sections. key : dict, optional Primary key values (unused). store_name : str, optional @@ -92,7 +96,7 @@ def encode(self, value: Any, *, key: dict | None = None, store_name: str | None Raises ------ ValueError - If path uses reserved sections (_hash/ or _schema/). + If path uses the store's reserved hash/schema sections. FileNotFoundError If file does not exist in the store. """ diff --git a/tests/integration/test_trace.py b/tests/integration/test_trace.py index 6ac2eec12..cc29b328e 100644 --- a/tests/integration/test_trace.py +++ b/tests/integration/test_trace.py @@ -400,7 +400,7 @@ def test_trace_stops_at_master_no_part_down_collection(schema_by_backend): This corrects the design comment on datajoint/datajoint-python discussion 1232, which described a Master->Parts down-collection that was never - implemented; the spec (provenance.md, Allowed table set) matches this + implemented; the spec (trace.md §Allowed table set) matches this test. If down-collection is ever added deliberately, this test must be revised alongside the spec — it exists so the semantics cannot drift silently."""