From 74e7cd9de1b904ba356fa8cd836b338f86300255 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 17 Jul 2026 03:19:40 +0200 Subject: [PATCH 1/3] docs(whats-new-23): add 2.3.1 cascade fix bullet; refresh releases link MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two follow-ups from the 2.3.1 release: - Adds a fourth bullet to 'Changes in 2.3.1' for the #1484 multi-part-master cascade fix. Previously the section listed only strict_provenance removal, Python 3.14, and the GC fix — omitting the silent-integrity cascade fix that the release announcement highlights. - Updates the See Also release-notes link from v2.3.0 (releases root) to the v2.3.1 tag-specific URL. Docs-only. --- src/about/whats-new-23.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/about/whats-new-23.md b/src/about/whats-new-23.md index 123d6fa2..a0269067 100644 --- a/src/about/whats-new-23.md +++ b/src/about/whats-new-23.md @@ -12,6 +12,7 @@ DataJoint 2.3 adds a first-class **upstream read surface** — `Diagram.trace` a - **`strict_provenance` removed.** The opt-in `dj.config["strict_provenance"]` runtime guardrail that shipped in 2.3.0 has been retired. Comprehensively checking the `make()` read/write contract across every access path is a code-inspection problem rather than a runtime one, so it is validated at review or deploy time rather than by an in-process flag. The flag was off by default with no known adoption, so existing pipelines are unaffected. The ergonomic read surface — `Diagram.trace` and `self.upstream` — is unchanged, and the rules are documented as the [make() reproducibility contract](../reference/specs/autopopulate.md#43-the-make-reproducibility-contract). - **Python 3.14 support.** `requires-python` now spans `>=3.10,<3.15`; CI exercises both ends of the range (3.10 and 3.14). +- **Cascade multi-part-master fix.** `Table.delete(part_integrity="cascade")` now restricts the master from *every* restricted Part, closing a silent-integrity path where two Parts of the same Master reached through different foreign-key paths could leave the Master with rows that should have been deleted. Invalid `part_integrity` values now raise `ValueError`. See [Cascade Specification](../reference/specs/cascade.md). - **Garbage-collection fix.** `gc.collect()` now discovers codec-referenced files correctly, closing a path where live custom-codec and schema-addressed object-store files (``, ``) could be misclassified as orphans and deleted. See [Clean Up Object Storage](../how-to/garbage-collection.md). ## Overview @@ -105,4 +106,4 @@ It is PostgreSQL-only (raising a clear error on other backends), idempotent at t - [Deployment Operations](../reference/specs/deploy-operations.md) — the `dj.deploy` module - [Cascade Specification](../reference/specs/cascade.md) — propagation rules shared with `trace` - [What's New in 2.2](whats-new-22.md) — Previous release -- [Release Notes (v2.3.0)](https://github.com/datajoint/datajoint-python/releases) — GitHub changelog +- [Release Notes (v2.3.1)](https://github.com/datajoint/datajoint-python/releases/tag/v2.3.1) — GitHub changelog From 07f3818798a803fdcf9f095eb6d47251b77c5302 Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 17 Jul 2026 17:31:46 +0200 Subject: [PATCH 2/3] docs(whats-new-23): drop ValueError callout per review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per Dimitri's review on #212: the invalid-value ValueError is (a) stdlib convention for enum-like args and doesn't need a callout, and (b) 'now' misdates it — Table.delete() has raised ValueError on invalid part_integrity since 2.3.0 (cabdb744), not 2.3.1. The cascade multi-part-master fix stays as the substantive 2.3.1 change. --- src/about/whats-new-23.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/about/whats-new-23.md b/src/about/whats-new-23.md index a0269067..d87026f9 100644 --- a/src/about/whats-new-23.md +++ b/src/about/whats-new-23.md @@ -12,7 +12,7 @@ DataJoint 2.3 adds a first-class **upstream read surface** — `Diagram.trace` a - **`strict_provenance` removed.** The opt-in `dj.config["strict_provenance"]` runtime guardrail that shipped in 2.3.0 has been retired. Comprehensively checking the `make()` read/write contract across every access path is a code-inspection problem rather than a runtime one, so it is validated at review or deploy time rather than by an in-process flag. The flag was off by default with no known adoption, so existing pipelines are unaffected. The ergonomic read surface — `Diagram.trace` and `self.upstream` — is unchanged, and the rules are documented as the [make() reproducibility contract](../reference/specs/autopopulate.md#43-the-make-reproducibility-contract). - **Python 3.14 support.** `requires-python` now spans `>=3.10,<3.15`; CI exercises both ends of the range (3.10 and 3.14). -- **Cascade multi-part-master fix.** `Table.delete(part_integrity="cascade")` now restricts the master from *every* restricted Part, closing a silent-integrity path where two Parts of the same Master reached through different foreign-key paths could leave the Master with rows that should have been deleted. Invalid `part_integrity` values now raise `ValueError`. See [Cascade Specification](../reference/specs/cascade.md). +- **Cascade multi-part-master fix.** `Table.delete(part_integrity="cascade")` now restricts the master from *every* restricted Part, closing a silent-integrity path where two Parts of the same Master reached through different foreign-key paths could leave the Master with rows that should have been deleted. See [Cascade Specification](../reference/specs/cascade.md). - **Garbage-collection fix.** `gc.collect()` now discovers codec-referenced files correctly, closing a path where live custom-codec and schema-addressed object-store files (``, ``) could be misclassified as orphans and deleted. See [Clean Up Object Storage](../how-to/garbage-collection.md). ## Overview From 9b4a90389455b30726a17cc28b54c26506348f7d Mon Sep 17 00:00:00 2001 From: MilagrosMarin Date: Fri, 17 Jul 2026 17:46:46 +0200 Subject: [PATCH 3/3] docs(whats-new-23): generalize release-notes link to cover the 2.3.x line --- src/about/whats-new-23.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/about/whats-new-23.md b/src/about/whats-new-23.md index d87026f9..fc45a797 100644 --- a/src/about/whats-new-23.md +++ b/src/about/whats-new-23.md @@ -106,4 +106,4 @@ It is PostgreSQL-only (raising a clear error on other backends), idempotent at t - [Deployment Operations](../reference/specs/deploy-operations.md) — the `dj.deploy` module - [Cascade Specification](../reference/specs/cascade.md) — propagation rules shared with `trace` - [What's New in 2.2](whats-new-22.md) — Previous release -- [Release Notes (v2.3.1)](https://github.com/datajoint/datajoint-python/releases/tag/v2.3.1) — GitHub changelog +- [Release Notes (2.3.x)](https://github.com/datajoint/datajoint-python/releases) — GitHub changelog