Openpmd-api

Latest version: v0.16.1

Safety actively analyzes 706487 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 7

0.16.0

------

The ADIOS1 library is no longer developed in favor of ADIOS2.
Consequently, ADIOS1 support was removed in openPMD-api 0.16.0 and newer.
Please transition to ADIOS2.

For reading legacy ADIOS1 BP3 files, either use an older version of openPMD-api or the BP3 backend in ADIOS2.
Note that ADIOS2 does not support compression in BP3 files.

For converting ADIOS1 BP3 files to ADIOS2, use a version of the openPMD-api that still supports ADIOS1 and run the conversion with ``openpmd-pipe``, e.g. ``openpmd-pipe --infile adios1_data_%T.bp --inconfig '{"backend": "adios1"}' --outfile adios2_data_%T.bp --outconfig '{"backend": "adios2"}'``.

Group-Based encoding is deprecated in ADIOS2 due to performance considerations. As alternatives, consider file-based encoding for regular file I/O or variable-based encoding (currently restricted to streaming and streaming-like workflows).

CMake 3.22.0 is now the minimally supported version for CMake.
pybind11 2.13.0 is now the minimally supported version for Python support.
Python 3.12 & 3.13 are now supported, Python 3.7 is removed.

The ``len(...)`` of many classes has been reworked for consistency and returns now the number of entries (iterations, record components, etc.).
Previously, this sporadically returned the number of attributes, which is better queried via ``len(<object>.attributes)``.

0.15.2

------
**Date:** 2023-08-18

Python, ADIOS2 and HDF5 Fixes

This release fixed regressions in the Python frontend as well as the ADIOS2 and HDF5 backends.
Supported macOS versions are now 11.0+ and Python versions are 3.8+.

0.15.1

------
**Date:** 2023-04-02

Build Regressions

This release fixes build regressions and minor documentation updates for the 0.15.0 release.

0.15.0

------

Building openPMD-api now requires a compiler that supports C++17 or newer.
``MPark.Variant`` is not a dependency anymore (kudos and thanks for the great time!).

Python 3.10 & 3.11 are now supported, Python 3.6 is removed.
openPMD-api now depends on `toml11 <https://github.com/ToruNiina/toml11>`__ 3.7.1+.
pybind11 2.10.1 is now the minimally supported version for Python support.
Catch2 2.13.10 is now the minimally supported version for tests.

The following backend-specific members of the ``Dataset`` class have been removed: ``Dataset::setChunkSize()``, ``Dataset::setCompression()``, ``Dataset::setCustomTransform()``, ``Dataset::chunkSize``, ``Dataset::compression``, ``Dataset::transform``.
They are replaced by backend-specific options in the JSON-based backend configuration.
This can be passed in ``Dataset::options``.
The following configuration shows a compression configuration for ADIOS1 and ADIOS2:

.. code-block:: json

{
"adios1": {
"dataset": {
"transform": "blosc:compressor=zlib,shuffle=bit,lvl=1;nometa"
}
},
"adios2": {
"dataset": {
"operators": [
{
"type": "zlib",
"parameters": {
"clevel": 9
}
}
]
}
}
}

Or alternatively, in TOML:

.. code-block:: toml

[adios1.dataset]
transform = "blosc:compressor=zlib,shuffle=bit,lvl=1;nometa"

[[adios2.dataset.operators]]
type = "zlib"
parameters.clevel = 9


The helper function ``shareRaw`` of the C++ API has been deprecated.
In its stead, there are now new API calls ``RecordComponent::storeChunkRaw()`` and ``RecordComponent::loadChunkRaw``.

The **ADIOS1 backend** is now deprecated, to be replaced fully with ADIOS2.
Now is a good time to check if ADIOS2 is able to read old ADIOS1 datasets that you might have. Otherwise, ``openpmd-pipe`` can be used for conversion:

.. code-block:: bash

openpmd-pipe --infile adios1_dataset_%T.bp --inconfig 'backend = "adios1"' --outfile adios2_dataset_%T.bp --outconfig 'backend = "adios2"'

The class structure of ``Container`` and deriving classes has been reworked.
Usage of the API generally stays the same, but code that relies on the concrete class structure might break.

The ``Iteration::closedByWriter()`` attribute has been deprecated as a leftover from the early streaming implementation.

Old:

.. code-block:: cpp

double const * data;
recordComponent.storeChunk(shareRaw(data), offset, extent);

New:

.. code-block:: cpp

double const * data;
recordComponent.storeChunkRaw(data, offset, extent);

Additionally, ``determineDatatype`` now accepts pointer types (raw and smart pointers):

Old:

.. code-block:: cpp

std::vector<double> data;
Datatype dt = determineDatatype(shareRaw(data));

New:

.. code-block:: cpp

std::vector<double> data;
Datatype dt = determineDatatype(data.data());

.. note::

``determineDatatype`` does not directly accept ``determineDatatype(data)``, since it's unclear if the result from that call would be ``Datatype::DOUBLE`` or ``Datatype::VEC_DOUBLE``.

In order to get the direct mapping between C++ type and openPMD datatype, use the template parameter of ``determineDatatype``: ``determineDatatype<decltype(data)>()`` or ``determineDatatype<std::vector<double>>()``.

0.14.5

------
**Date:** 2022-06-07

Improve Series Parsing, Python & Fix Backend Bugs

This release improves reading back iterations that overflow the specified zero-pattern.
ADIOS1, ADIOS2 and HDF5 backend stability and performance were improved.
Python bindings got additional wheel platform support and various smaller issues were fixed.

0.14.4

------
**Date:** 2022-01-21

Increased Compatibility & Python Install Bug

This release fixes various read/parsing bugs and increases compatibility with upcoming versions of ADIOS and old releases of Intel ``icpc``.
An installation issue for pip-based installs from source in the last release was fixed and Python 3.10 support added.
Various documentation and installation warnings have been fixed.

Page 1 of 7

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.