From d36654cf933291a7c9810b834d4ed5c4a23782cb Mon Sep 17 00:00:00 2001 From: Dimitri Yatsenko Date: Tue, 27 Jan 2026 17:28:00 -0600 Subject: [PATCH 1/4] docs: Add DataJoint 2.1 settings to configuration reference - Add database.backend (DJ_BACKEND) for PostgreSQL support (new in 2.1) - Add DJ_USE_TLS env var support (new in 2.1) - Add display.diagram_direction (DJ_DIAGRAM_DIRECTION) (new in 2.1) - Update port to show auto-detection (3306/5432) - Add Environment column to Display Settings table Co-Authored-By: Claude Opus 4.5 --- src/reference/configuration.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/reference/configuration.md b/src/reference/configuration.md index 74e86745..a48fd14d 100644 --- a/src/reference/configuration.md +++ b/src/reference/configuration.md @@ -15,12 +15,13 @@ Configuration is loaded in priority order: | Setting | Environment | Default | Description | |---------|-------------|---------|-------------| +| `database.backend` | `DJ_BACKEND` | `mysql` | Database backend: `mysql` or `postgresql` *(new in 2.1)* | | `database.host` | `DJ_HOST` | `localhost` | Database server hostname | -| `database.port` | `DJ_PORT` | `3306` | Database server port | +| `database.port` | `DJ_PORT` | `3306`/`5432` | Database server port (auto-detects from backend) | | `database.user` | `DJ_USER` | — | Database username (required) | | `database.password` | `DJ_PASS` | — | Database password (required) | | `database.reconnect` | — | `True` | Auto-reconnect on connection loss | -| `database.use_tls` | — | `None` | Enable TLS encryption | +| `database.use_tls` | `DJ_USE_TLS` | `None` | Enable TLS encryption *(env var new in 2.1)* | | `database.database_prefix` | `DJ_DATABASE_PREFIX` | `""` | Prefix for database/schema names | | `database.create_tables` | `DJ_CREATE_TABLES` | `True` | Default for `Schema(create_tables=)`. Set `False` for production mode | @@ -157,11 +158,12 @@ If table lacks partition attributes, it follows normal path structure. ## Display Settings -| Setting | Default | Description | -|---------|---------|-------------| -| `display.limit` | `12` | Max rows to display | -| `display.width` | `14` | Column width | -| `display.show_tuple_count` | `True` | Show row count in output | +| Setting | Environment | Default | Description | +|---------|-------------|---------|-------------| +| `display.limit` | — | `12` | Max rows to display | +| `display.width` | — | `14` | Column width | +| `display.show_tuple_count` | — | `True` | Show row count in output | +| `display.diagram_direction` | `DJ_DIAGRAM_DIRECTION` | `LR` | Diagram layout: `LR` (left-right) or `TB` (top-bottom) *(new in 2.1)* | ## Top-Level Settings From 784f25b88a146b8e4d7c6755dd73313780c73076 Mon Sep 17 00:00:00 2001 From: Dimitri Yatsenko Date: Wed, 28 Jan 2026 09:30:17 -0600 Subject: [PATCH 2/4] docs: note that fetch() remains available with deprecation warning - Add note after Query API Changes table - Update AI agent prompt to say 'recommended' instead of 'always convert' - Update verification checklist to allow intentionally kept fetch() calls - Note that download_path parameter is not supported --- src/how-to/migrate-to-v20.md | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/how-to/migrate-to-v20.md b/src/how-to/migrate-to-v20.md index b30f3e88..07c9ac02 100644 --- a/src/how-to/migrate-to-v20.md +++ b/src/how-to/migrate-to-v20.md @@ -245,6 +245,8 @@ DataJoint 2.0 replaces `external.*` with unified `stores.*` configuration: | `dj.ERD(schema)` | `dj.Diagram(schema)` | I | | `table.insert([(1, 'a'), (2, 'b')])` | Must use dicts/DataFrames (no positional tuples) | I | +> **Note:** The `fetch()` method remains available in DataJoint 2.0 with a deprecation warning. Your existing code will work immediately—`fetch()` automatically delegates to the appropriate 2.0 method (`to_arrays()`, `to_dicts()`, or `to_pandas()`). You can migrate incrementally as time permits. The `download_path` parameter is not supported in the compatibility layer. + **Learn more:** [Fetch API Reference](../reference/specs/fetch-api.md) · [Query Operators Reference](../reference/operators.md) · [Semantic Matching](../reference/specs/semantic-matching.md) --- @@ -1437,6 +1439,9 @@ Update all DataJoint API calls to 2.0 patterns. **Fetch API:** +> **Note:** `fetch()` remains available with a deprecation warning and works immediately. +> Convert to new methods when convenient for cleaner, more explicit code. + - `fetch()` → `to_arrays()` (recarray-like) or `to_dicts()` (list of dicts) - `fetch(..., format="frame")` → `to_pandas()` (pandas DataFrame) - `fetch('attr1', 'attr2')` → `to_arrays('attr1', 'attr2')` (returns tuple) @@ -1486,9 +1491,14 @@ CONTEXT: API CONVERSIONS: -1. Fetch API (always convert): +1. Fetch API (recommended conversion - fetch() still works with deprecation warning): + + NOTE: fetch() remains available in 2.0 and automatically delegates to the + new methods. Existing code works immediately. Convert when convenient. + OLD: data = table.fetch() NEW: data = table.to_arrays() # recarray-like + # OR: keep as fetch() - works with deprecation warning OLD: data = table.fetch(as_dict=True) NEW: data = table.to_dicts() # list of dicts @@ -1509,6 +1519,9 @@ API CONVERSIONS: NEW: a, b = table.to_arrays('a', 'b', include_key=True) # Returns tuple with keys included + NOT SUPPORTED in fetch() compatibility: + - download_path parameter (for blob downloads) + 2. Update Method (always convert): OLD: (table & key)._update('attr', value) NEW: table.update1({**key, 'attr': value}) @@ -1588,7 +1601,7 @@ PROCESS: VERIFICATION: -- No .fetch() calls remaining (except fetch1) +- .fetch() calls either converted OR intentionally kept (works with deprecation warning) - No .fetch1('KEY') calls remaining (replaced with .keys()) - No ._update() calls remaining - No @ operator between tables @@ -1732,7 +1745,7 @@ API conversions: X fetch, Y update, Z join" - [ ] All table definitions use 2.0 type syntax - [ ] All in-table codecs converted (``, ``) - [ ] All in-store codecs converted (``, ``, ``) -- [ ] All `fetch()` calls converted (except `fetch1()`) +- [ ] All `fetch()` calls converted OR intentionally kept (works with deprecation warning) - [ ] All `fetch(..., format="frame")` converted to `to_pandas()` - [ ] All `fetch1('KEY')` converted to `keys()` - [ ] All `._update()` calls converted From 9a5273d37ae7e6cc58efc91ec8c12287f64849d0 Mon Sep 17 00:00:00 2001 From: Dimitri Yatsenko Date: Wed, 28 Jan 2026 10:15:34 -0600 Subject: [PATCH 3/4] docs: remove incorrect note about download_path not being supported download_path works via config context in the new approach --- src/how-to/migrate-to-v20.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/how-to/migrate-to-v20.md b/src/how-to/migrate-to-v20.md index 07c9ac02..2312cb74 100644 --- a/src/how-to/migrate-to-v20.md +++ b/src/how-to/migrate-to-v20.md @@ -245,7 +245,7 @@ DataJoint 2.0 replaces `external.*` with unified `stores.*` configuration: | `dj.ERD(schema)` | `dj.Diagram(schema)` | I | | `table.insert([(1, 'a'), (2, 'b')])` | Must use dicts/DataFrames (no positional tuples) | I | -> **Note:** The `fetch()` method remains available in DataJoint 2.0 with a deprecation warning. Your existing code will work immediately—`fetch()` automatically delegates to the appropriate 2.0 method (`to_arrays()`, `to_dicts()`, or `to_pandas()`). You can migrate incrementally as time permits. The `download_path` parameter is not supported in the compatibility layer. +> **Note:** The `fetch()` method remains available in DataJoint 2.0 with a deprecation warning. Your existing code will work immediately—`fetch()` automatically delegates to the appropriate 2.0 method (`to_arrays()`, `to_dicts()`, or `to_pandas()`). You can migrate incrementally as time permits. **Learn more:** [Fetch API Reference](../reference/specs/fetch-api.md) · [Query Operators Reference](../reference/operators.md) · [Semantic Matching](../reference/specs/semantic-matching.md) @@ -1519,9 +1519,6 @@ API CONVERSIONS: NEW: a, b = table.to_arrays('a', 'b', include_key=True) # Returns tuple with keys included - NOT SUPPORTED in fetch() compatibility: - - download_path parameter (for blob downloads) - 2. Update Method (always convert): OLD: (table & key)._update('attr', value) NEW: table.update1({**key, 'attr': value}) From 7db15bdb0636472bb27100a7091fb665dcfe5ad7 Mon Sep 17 00:00:00 2001 From: Dimitri Yatsenko Date: Wed, 28 Jan 2026 15:29:51 -0600 Subject: [PATCH 4/4] docs: Add Aeon platform to publications list --- src/about/publications.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/about/publications.md b/src/about/publications.md index 9ca684a5..1cf4546f 100644 --- a/src/about/publications.md +++ b/src/about/publications.md @@ -6,6 +6,8 @@ If your work uses DataJoint or DataJoint Elements, please cite the respective ## 2025 ++ Campagner, D., Bhagat, J., Lopes, G., Calcaterra, L., Pouget, A. G., Almeida, A., ... & SWC GCNU Experimental Neuroethology Group. (2025). [Aeon: an open-source platform to study the neural basis of ethological behaviours over naturalistic timescales](https://doi.org/10.1101/2025.07.31.664513). *bioRxiv*. + + Bae, J. A., Baptiste, M., Bodor, A. L., Brittain, D., Buchanan, J., Bumbarger, D. J., Castro, M. A., Celii, B., Cobos, E., Collman, F., ... (2025). [Functional connectomics spanning multiple areas of mouse visual cortex](https://doi.org/10.1038/s41586-025-08790-w). *Nature*, 640(8058), 435-447. + Celii, B., Papadopoulos, S., Ding, Z., Fahey, P. G., Wang, E., Papadopoulos, C., ... & Reimer, J. (2025). [NEURD offers automated proofreading and feature extraction for connectomics](https://doi.org/10.1038/s41586-025-08660-5). *Nature*, 640(8058), 487-496.