datajoint 2.1.1__tar.gz → 2.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {datajoint-2.1.1 → datajoint-2.2.1}/CONTRIBUTING.md +38 -2
- {datajoint-2.1.1 → datajoint-2.2.1}/PKG-INFO +5 -5
- {datajoint-2.1.1 → datajoint-2.2.1}/README.md +4 -4
- {datajoint-2.1.1 → datajoint-2.2.1}/pixi.lock +880 -203
- {datajoint-2.1.1 → datajoint-2.2.1}/pyproject.toml +1 -0
- datajoint-2.2.1/src/datajoint/__init__.py +290 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/adapters/base.py +141 -1
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/adapters/mysql.py +44 -3
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/adapters/postgres.py +66 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/autopopulate.py +11 -10
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/builtin_codecs/attach.py +4 -2
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/builtin_codecs/filepath.py +19 -9
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/builtin_codecs/hash.py +4 -2
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/builtin_codecs/npy.py +5 -3
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/builtin_codecs/object.py +5 -3
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/builtin_codecs/schema.py +10 -3
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/codecs.py +18 -3
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/condition.py +7 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/connection.py +63 -41
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/declare.py +16 -23
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/dependencies.py +55 -87
- datajoint-2.2.1/src/datajoint/diagram.py +1402 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/errors.py +4 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/expression.py +20 -9
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/gc.py +25 -13
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/hash_registry.py +32 -12
- datajoint-2.2.1/src/datajoint/instance.py +311 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/jobs.py +15 -15
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/lineage.py +6 -8
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/migrate.py +5 -5
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/objectref.py +2 -1
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/preview.py +2 -2
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/schemas.py +29 -106
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/settings.py +9 -11
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/staged_insert.py +2 -3
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/storage.py +19 -6
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/table.py +117 -168
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/user_tables.py +4 -6
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/utils.py +0 -40
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/version.py +1 -1
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/conftest.py +4 -4
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_autopopulate.py +167 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_cascade_delete.py +104 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_cli.py +6 -3
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_declare.py +10 -4
- datajoint-2.2.1/tests/integration/test_erd.py +158 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_gc.py +2 -2
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_jobs.py +2 -3
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_schema.py +2 -10
- datajoint-2.2.1/tests/integration/test_skip_duplicates.py +205 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/unit/test_codecs.py +2 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/unit/test_settings.py +77 -12
- datajoint-2.2.1/tests/unit/test_thread_safe.py +294 -0
- datajoint-2.1.1/src/datajoint/__init__.py +0 -114
- datajoint-2.1.1/src/datajoint/diagram.py +0 -1037
- datajoint-2.1.1/tests/integration/test_erd.py +0 -63
- {datajoint-2.1.1 → datajoint-2.2.1}/.coveragerc +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/.devcontainer/Dockerfile +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/.devcontainer/devcontainer.json +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/.devcontainer/docker-compose.yml +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/.dockerignore +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/.gitattributes +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/.github/DISCUSSION_TEMPLATE/rfc.yml +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/.github/ISSUE_TEMPLATE/improvement_request.md +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/.github/dependabot.yml +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/.github/release_drafter.yaml +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/.github/workflows/close_inactive_issues_prs.yaml +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/.github/workflows/draft_release.yaml +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/.github/workflows/lint.yaml +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/.github/workflows/post_draft_release_published.yaml +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/.github/workflows/test.yaml +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/.gitignore +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/.pre-commit-config.yaml +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/.vscode/launch.json +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/CHANGELOG-archive.md +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/Dockerfile +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/LICENSE +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/RELEASE_MEMO.md +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/activate.sh +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/docker-compose.yaml +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/images/pipeline.drawio +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/images/pipeline.png +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/adapters/__init__.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/blob.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/builtin_codecs/__init__.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/builtin_codecs/blob.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/cli.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/heading.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/logging.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/src/datajoint/types.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/__init__.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/__init__.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/data/Course.csv +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/data/CurrentTerm.csv +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/data/Department.csv +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/data/Enroll.csv +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/data/Grade.csv +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/data/Section.csv +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/data/Student.csv +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/data/StudentMajor.csv +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/data/Term.csv +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_aggr_regressions.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_alter.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_attach.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_blob.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_blob_matlab.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_cascading_delete.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_codec_chaining.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_codecs.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_connection.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_dependencies.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_fetch.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_fetch_same.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_foreign_keys.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_groupby.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_hash_storage.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_hidden_job_metadata.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_insert.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_json.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_multi_backend.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_nan.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_npy_codec.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_object.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_privileges.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_reconnection.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_relation.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_relation_u.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_relational_operand.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_schema_keywords.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_semantic_matching.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_tls.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_type_aliases.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_university.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_update1.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_utils.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_uuid.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/integration/test_virtual_module.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/schema.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/schema_advanced.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/schema_aggr_regress.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/schema_alter.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/schema_codecs.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/schema_external.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/schema_object.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/schema_privileges.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/schema_simple.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/schema_type_aliases.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/schema_university.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/schema_uuid.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/test_package.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/unit/__init__.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/unit/test_adapters.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/unit/test_condition.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/unit/test_fetch_compat.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/unit/test_lazy_imports.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/unit/test_pk_rules.py +0 -0
- {datajoint-2.1.1 → datajoint-2.2.1}/tests/unit/test_storage_urls.py +0 -0
|
@@ -36,13 +36,17 @@ pytest tests/
|
|
|
36
36
|
|
|
37
37
|
## Running Tests
|
|
38
38
|
|
|
39
|
-
Tests use [testcontainers](https://testcontainers.com/) to automatically manage MySQL and MinIO containers. No manual `docker-compose up` required.
|
|
39
|
+
Tests use [testcontainers](https://testcontainers.com/) to automatically manage MySQL, PostgreSQL, and MinIO containers. No manual `docker-compose up` required.
|
|
40
|
+
|
|
41
|
+
Integration tests are **backend-parameterized** — tests using the `backend` fixture run automatically against both MySQL and PostgreSQL.
|
|
40
42
|
|
|
41
43
|
```bash
|
|
42
|
-
pixi run test # All tests
|
|
44
|
+
pixi run test # All tests (both backends)
|
|
43
45
|
pixi run test-cov # With coverage
|
|
44
46
|
pixi run -e test pytest tests/unit/ # Unit tests only
|
|
45
47
|
pixi run -e test pytest tests/integration/test_blob.py -v # Specific file
|
|
48
|
+
pixi run -e test pytest -m mysql # MySQL tests only
|
|
49
|
+
pixi run -e test pytest -m postgresql # PostgreSQL tests only
|
|
46
50
|
```
|
|
47
51
|
|
|
48
52
|
**macOS Docker Desktop users:** If tests fail to connect:
|
|
@@ -50,12 +54,28 @@ pixi run -e test pytest tests/integration/test_blob.py -v # Specific file
|
|
|
50
54
|
export DOCKER_HOST=unix://$HOME/.docker/run/docker.sock
|
|
51
55
|
```
|
|
52
56
|
|
|
57
|
+
### PostgreSQL Backend
|
|
58
|
+
|
|
59
|
+
DataJoint supports PostgreSQL 15+ as an alternative to MySQL 8+. To install the PostgreSQL driver:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
pip install -e ".[postgres]" # Installs psycopg2-binary
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Tests automatically spin up both MySQL and PostgreSQL containers via testcontainers. Backend-parameterized tests (those using the `backend` fixture in `tests/conftest.py`) run against both backends to ensure feature parity.
|
|
66
|
+
|
|
53
67
|
### External Containers (for debugging)
|
|
54
68
|
|
|
55
69
|
```bash
|
|
70
|
+
# MySQL + MinIO
|
|
56
71
|
docker compose up -d db minio
|
|
57
72
|
DJ_USE_EXTERNAL_CONTAINERS=1 pixi run test
|
|
58
73
|
docker compose down
|
|
74
|
+
|
|
75
|
+
# MySQL + PostgreSQL + MinIO
|
|
76
|
+
docker compose up -d db postgres minio
|
|
77
|
+
DJ_USE_EXTERNAL_CONTAINERS=1 pixi run test
|
|
78
|
+
docker compose down
|
|
59
79
|
```
|
|
60
80
|
|
|
61
81
|
### Full Docker
|
|
@@ -91,12 +111,28 @@ Hooks include: **ruff** (lint/format), **codespell**, YAML/JSON/TOML validation.
|
|
|
91
111
|
|
|
92
112
|
For `DJ_USE_EXTERNAL_CONTAINERS=1`:
|
|
93
113
|
|
|
114
|
+
### MySQL
|
|
115
|
+
|
|
94
116
|
| Variable | Default | Description |
|
|
95
117
|
|----------|---------|-------------|
|
|
96
118
|
| `DJ_HOST` | `localhost` | MySQL hostname |
|
|
97
119
|
| `DJ_PORT` | `3306` | MySQL port |
|
|
98
120
|
| `DJ_USER` | `root` | MySQL username |
|
|
99
121
|
| `DJ_PASS` | `password` | MySQL password |
|
|
122
|
+
|
|
123
|
+
### PostgreSQL
|
|
124
|
+
|
|
125
|
+
| Variable | Default | Description |
|
|
126
|
+
|----------|---------|-------------|
|
|
127
|
+
| `DJ_PG_HOST` | `localhost` | PostgreSQL hostname |
|
|
128
|
+
| `DJ_PG_PORT` | `5432` | PostgreSQL port |
|
|
129
|
+
| `DJ_PG_USER` | `postgres` | PostgreSQL username |
|
|
130
|
+
| `DJ_PG_PASS` | `password` | PostgreSQL password |
|
|
131
|
+
|
|
132
|
+
### Object Storage
|
|
133
|
+
|
|
134
|
+
| Variable | Default | Description |
|
|
135
|
+
|----------|---------|-------------|
|
|
100
136
|
| `S3_ENDPOINT` | `localhost:9000` | MinIO endpoint |
|
|
101
137
|
|
|
102
138
|
---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: datajoint
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2.1
|
|
4
4
|
Summary: DataJoint for Python is a framework for scientific workflow management based on relational principles. DataJoint is built on the foundation of the relational data model and prescribes a consistent method for organizing, populating, computing, and querying data.
|
|
5
5
|
Project-URL: Homepage, https://docs.datajoint.com/
|
|
6
6
|
Project-URL: Documentation, https://docs.datajoint.com/
|
|
@@ -303,8 +303,8 @@ DataJoint is a framework for scientific data pipelines based on the **Relational
|
|
|
303
303
|
</td>
|
|
304
304
|
<td>Citation</td>
|
|
305
305
|
<td>
|
|
306
|
-
<a href="https://doi.org/10.
|
|
307
|
-
<img src="https://img.shields.io/badge/DOI-10.
|
|
306
|
+
<a href="https://doi.org/10.48550/arXiv.2602.16585">
|
|
307
|
+
<img src="https://img.shields.io/badge/DOI-10.48550/arXiv.2602.16585-blue.svg" alt="DOI" />
|
|
308
308
|
</a>
|
|
309
309
|
</td>
|
|
310
310
|
<td>Coverage</td>
|
|
@@ -341,9 +341,9 @@ conda install -c conda-forge datajoint
|
|
|
341
341
|
- [How-To Guides](https://docs.datajoint.com/how-to/) — Task-oriented guides
|
|
342
342
|
- [API Reference](https://docs.datajoint.com/api/) — Complete API documentation
|
|
343
343
|
- [Migration Guide](https://docs.datajoint.com/how-to/migrate-to-v20/) — Upgrade from legacy versions
|
|
344
|
-
- **[DataJoint Elements](https://datajoint.com/
|
|
344
|
+
- **[DataJoint Elements](https://docs.datajoint.com/elements/)** — Example pipelines for neuroscience
|
|
345
345
|
- **[GitHub Discussions](https://github.com/datajoint/datajoint-python/discussions)** — Community support
|
|
346
346
|
|
|
347
347
|
## Contributing
|
|
348
348
|
|
|
349
|
-
See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.
|
|
349
|
+
See [CONTRIBUTING.md](https://github.com/datajoint/datajoint-python/blob/master/CONTRIBUTING.md) for development setup and guidelines.
|
|
@@ -42,8 +42,8 @@ DataJoint is a framework for scientific data pipelines based on the **Relational
|
|
|
42
42
|
</td>
|
|
43
43
|
<td>Citation</td>
|
|
44
44
|
<td>
|
|
45
|
-
<a href="https://doi.org/10.
|
|
46
|
-
<img src="https://img.shields.io/badge/DOI-10.
|
|
45
|
+
<a href="https://doi.org/10.48550/arXiv.2602.16585">
|
|
46
|
+
<img src="https://img.shields.io/badge/DOI-10.48550/arXiv.2602.16585-blue.svg" alt="DOI" />
|
|
47
47
|
</a>
|
|
48
48
|
</td>
|
|
49
49
|
<td>Coverage</td>
|
|
@@ -80,9 +80,9 @@ conda install -c conda-forge datajoint
|
|
|
80
80
|
- [How-To Guides](https://docs.datajoint.com/how-to/) — Task-oriented guides
|
|
81
81
|
- [API Reference](https://docs.datajoint.com/api/) — Complete API documentation
|
|
82
82
|
- [Migration Guide](https://docs.datajoint.com/how-to/migrate-to-v20/) — Upgrade from legacy versions
|
|
83
|
-
- **[DataJoint Elements](https://datajoint.com/
|
|
83
|
+
- **[DataJoint Elements](https://docs.datajoint.com/elements/)** — Example pipelines for neuroscience
|
|
84
84
|
- **[GitHub Discussions](https://github.com/datajoint/datajoint-python/discussions)** — Community support
|
|
85
85
|
|
|
86
86
|
## Contributing
|
|
87
87
|
|
|
88
|
-
See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.
|
|
88
|
+
See [CONTRIBUTING.md](https://github.com/datajoint/datajoint-python/blob/master/CONTRIBUTING.md) for development setup and guidelines.
|