Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Add versions table to docs #1293

Draft
wants to merge 1 commit into
base: dev
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ breaking down the barriers to data sharing in neuroscience.
extensions
building_api
validation
versions
api_docs
software_process
make_roundtrip_test
Expand Down
91 changes: 91 additions & 0 deletions docs/source/versions.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
.. _versions:

PyNWB Versions and HDMF Versions
==========================================

PyNWB relies heavily on the HDMF package which is developed in tandem with PyNWB. Each release of PyNWB is
compatible with particular versions of HDMF.

+----------------+-------------------------+
| PyNWB Version | Compatible HDMF Version |
+================+=========================+
| 1.4.0 | >=2.1.0, <3 |
+----------------+-------------------------+
| 1.3.3 | >=1.6.4, <2 |
+----------------+-------------------------+
| 1.3.1 to 1.3.2 | >=1.6.2, <2 |
+----------------+-------------------------+
| 1.3.0 | >=1.6.1, <2 |
+----------------+-------------------------+
| 1.2.0 to 1.2.1 | >=1.5.4, <2 |
+----------------+-------------------------+
| 1.1.2 | 1.3.3 |
+----------------+-------------------------+
| 1.1.1 | 1.3.2 |
+----------------+-------------------------+
| 1.1.0 | 1.2.0 |
+----------------+-------------------------+
| 1.0.3 | 1.0.4 |
+----------------+-------------------------+

PyNWB Versions and NWB Schema Versions
==========================================

Each release of PyNWB is bundled with the latest version of the NWB schema at the time of release (referred to here as
version X). Each release of PyWNB can read any data written with NWB version 2.0.0 to version X and writes data only
in version X.

When modifying existing NWB data, if data written with an NWB version (at least 2.0.0) that is older than X is loaded
by PyNWB and then the data is modified by PyNWB (i.e., calls ``write`` on the IO object), then NWB version X will be
added to the file and the data will be (in most cases) transformed to comply with the newer schema version X.

+----------------+--------------------------+---------------------------+
| PyNWB Version | Reads NWB Schema Version | Writes NWB Schema Version |
+================+==========================+===========================+
| 1.4.0 | 2.0.0 to 2.2.5 | 2.2.5 |
+----------------+--------------------------+---------------------------+
| 1.3.2 to 1.3.3 | 2.0.0 to 2.2.5 | 2.2.5 |
+----------------+--------------------------+---------------------------+
| 1.3.1 | 2.0.0 to 2.2.4 | 2.2.4 |
+----------------+--------------------------+---------------------------+
| 1.3.0 | 2.0.0 to 2.2.2 | 2.2.2 |
+----------------+--------------------------+---------------------------+
| 1.2.0 to 1.2.1 | 2.0.0 to 2.2.1 | 2.2.1 |
+----------------+--------------------------+---------------------------+
| 1.1.0 to 1.1.2 | 2.0.0 to 2.1.0 | 2.1.0 |
+----------------+--------------------------+---------------------------+
| 1.0.3 | 2.0.0 to 2.0.2 | 2.0.2 |
+----------------+--------------------------+---------------------------+

For details about changes between NWB schema versions, see the `NWB format release notes
<https://nwb-schema.readthedocs.io/en/latest/format_release_notes.html>`_.

NWB Schema and hdmf-common Schema Versions
=================================================

Each release of the NWB schema is bundled with a particular release of the hdmf-common schema.

Only releases of NWB schema that are used by PyNWB are listed below.

+--------------------+----------------------------+
| NWB Schema Version | hdmf-common Schema Version |
+====================+============================+
| 2.2.2 to 2.2.5 | 1.1.3 |
+--------------------+----------------------------+
| 2.2.1 | 1.1.2 |
+--------------------+----------------------------+
| <=2.1.0 | None |
+--------------------+----------------------------+

For details about changes between hdmf-common schema versions, see the `hdmf-common release notes
<https://hdmf-common-schema.readthedocs.io/en/latest/format_release_notes.html>`_.

PyNWB Versions and hdmf-common Schema Versions
=================================================

Each release of PyNWB is bundled with a release of the NWB schema, which itself is bundled with a particular
release of the hdmf-common schema. However, PyNWB loads the release of the hdmf-common schema available from the
HDMF package installed locally rather than the bundled release of the hdmf-common schema within the bundled NWB schema.

In PyNWB version 1.4.0, this could lead to an incompatibility between the version of hdmf-common schema (1.1.3)
that is bundled with PyNWB and the version of hdmf-common schema (1.2.0+) used by HDMF.