Releases: AIDASoft/podio
v00-16-07
v00-16-06
v00-16-05
v00-16-04
v00-16-04
WARNING: The ROOTReader
(deprecated) is broken in this release, please use v00-16-05 that has a fix for the issue.
-
2023-05-23 tmadlener (PR#417)
- Fix an issue with reading multiple files via the
ROOTFrameReader
(#411)- Add documentation for API of opening file(s)
- Add tests for reading multiple files
- Fix an issue with reading multiple files via the
-
2023-05-22 tmadlener (PR#418)
- Bring back the public templated
getMap
functionality forpodio::GenericParameters
as they are already used in DD4hep (see AIDASoft/DD4hep#1112).- Mark the existing
getXYZMap
as deprecated but keep them for a brief transition period. - These have been removed in #415.
- Mark the existing
- Bring back the public templated
-
2023-05-19 jmcarcell (PR#416)
- Remove selection rules for classes that don't exist anymore
-
2023-05-15 jmcarcell (PR#415)
- Remove the deprecated getters and setters from the generic parameters
-
2023-05-15 jmcarcell (PR#410)
- Remove the square that is run when cmake runs
-
2023-05-09 tmadlener (PR#414)
- Fix off-by-one error in
UserDataCollection::print
that caused the first element to be printed twice.
- Fix off-by-one error in
-
2023-05-09 Thomas Madlener (PR#394)
- Introduce a
CollectionBufferFactory
that can create the necessary buffers from a collection type, a schema version and a subset collection flag.- Use this factory throughout all existing Readers
- Remove
createBuffers
andcreateSchemaEvolvableBuffers
frompodio::CollectionBase
interface
- Make the minimum allowed
schema_version
1 in the yaml definition files. Default to 1 if noschema_version
is provided - Add a
schemaVersion
to theDatamodelDefinition.h
header that is generated and that can be accessed via{{ package_name }}::meta::schemaVersion
. Use this to propagate schema information to the necessary places. - Make
SIOBlocks
write the current schema version, such that on reading they can generate the appropriate buffers for the version on file.
- Introduce a
-
2023-04-22 Christopher Dilks (PR#408)
- fix type inconsistency between
Collection::size()
and index for const object accessors
- fix type inconsistency between
-
2023-04-21 jmcarcell (PR#387)
- Make sure that the dump model round trip tests work without
ENABLE_SIO
- Actually test the extension model dumping
- Make sure that the dump model round trip tests work without
-
2023-04-12 Thomas Madlener (PR#400)
- Fix a bug in
SIOFrameData::getAvailableCollections
to also work with Frames where some of the collections have not been written and that could lead to a seg fault. - Add a test for this in c++ (previously only covered in python unittests of Frame).
- Fix a bug in
-
2023-04-05 Thomas Madlener (PR#399)
- Add
PODIO_ENABLE_SIO=1
to the publictarget_compile_definitions
forpodioSioIO
so that all dependent targets automatically get it as well. This should make it easier to use SIO dependent features in dependencies. - Consistently use a scope for
target_link_libraries
in tests.
- Add
-
2023-04-03 Paul Gessinger-Befurt (PR#398)
- Do not reject building if ROOT was built with C++20 (instead of C++17).
-
2023-04-03 Thomas Madlener (PR#397)
- Remove the
GENERATED
property from generated files in CMake to avoid inconsistent removal of headers and source files with theclean
target. Fixes #396
- Remove the
-
2023-03-15 Benedikt Hegner (PR#341)
- Adding infrastructure for schema evolution
- Added explicit version tracking to the metadata
- Data model comparison tool w/ simple heuristics to identify potential omissions / mistakes (e.g. checking for the limits of the ROOT backend)
- Changed handling of backwards compatibility for the collection info metadata
v00-16-03
v00-16-03
-
2023-03-14 jmcarcell (PR#391)
- Catch an exception when a
clang-format
flag is not found
- Catch an exception when a
-
2023-03-14 jmcarcell (PR#390)
- Modify the initial
clang-format
check to try to run with all the arguments that will be used later
- Modify the initial
-
2023-03-13 jmcarcell (PR#389)
- Add .cache to the gitignore
-
2023-03-07 Thomas Madlener (PR#358)
- Embed the EDM definition in JSON format into the shared core datamodel libraries
- Generate an additional
DatamodelDefinition.h
header file containing the string literal json encoded definition - Statically register this to the newly introduced
DatamodelRegistry
and make collections aware of which datamodel they belong to
- Generate an additional
- Collect all EDM definitions from all collections that are written with a writer and write all these definitions to the resulting file
- Currently only done for the
FrameWriter
s
- Currently only done for the
- Give
podio-dump
the necessary functionality to retrieve the stored models and dump them in YAML format again- Add roundtrip tests that compare the generated code from the original model and the one that has been dumped from a data file to ensure that all components work as intended.
- See the advanced topics documentation for more details.
- Embed the EDM definition in JSON format into the shared core datamodel libraries
-
2023-03-06 Dmitry Kalinkin (PR#384)
- Added an operator for conversion to std::string for podio::version::Version
-
2023-03-01 Thomas Madlener (PR#378)
- Introduce deprecation warnings for the EventStore based I/O model as it will be removed in favor of the
Frame
based one
- Introduce deprecation warnings for the EventStore based I/O model as it will be removed in favor of the
-
2023-03-01 Thomas Madlener (PR#372)
- Make
double
a supported type ofGenericParameters
. A similar thing has been added to LCIO in iLCSoft/LCIO#143 to support storing event weights that need double precision. - Add more unittests to the
GenericParameters
covering also the available constructors.
- Make
-
2023-02-27 Thomas Madlener (PR#380)
- Add
getParameters
method to theFrame
and deprecategetGenericParametersForWrite
which offered the exact same functionality.- Make it easily possible to get all parameters that are currently stored in a Frame via an "official" channel
- Replace all internal usages.
- Add a
getParameterKeys
templated method to get the keys for different parameter types that are currently stored in the Frame.
- Add
-
2023-02-22 jmcarcell (PR#377)
- Add a visualization tool that converts a YAML description to a graph
-
2023-02-21 jmcarcell (PR#376)
- Fix tests without SIO
-
2023-02-14 Thomas Madlener (PR#375)
- Fix the
PODIO_VERSION
preprocessor macro to be actually usable in a preprocessor context. Fixes #374 - Make
podio_VERSION
preprocessor constant something that can be used in a preprocessor context (now the same asPODIO_BUILD_VERSION
- Add test that ensures that the macro and the constant are actually used in a preprocessor context.
- Fix the
-
2023-02-13 Juraj Smiesko (PR#373)
- Adding ID to the short podio-dump output
-
2023-02-06 Nathan Brei (PR#369)
- Mark non-templated definitions of
Frame::Frame
,Frame::get
,Frame::put
andFrame::putParameters
asinline
to fix linker errors.
- Mark non-templated definitions of
-
2023-02-02 jmcarcell (PR#364)
- Make workflows not trigger twice on pushes to PRs
-
2023-01-26 jmcarcell (PR#368)
- CMAKE: Add option PODIO_RELAX_PYVER to allow relaxing the required match of python version with the one that ROOT has been built with to only check major and minor versions
-
2023-01-16 Thomas Madlener (PR#363)
- Move sio utility functionality defined in
SIOFrameWriter.cc
to privatesioUtils.h
header and use it also in the legacySIOWriter
. - Fix cmake configure dependencies (missed in #343) for datamodel generation macro.
- Use
defaultdict
instead of hand rolling one in class generator.
- Move sio utility functionality defined in
-
2023-01-16 Thomas Madlener (PR#361)
- Add basic I/O tests for datatypes defined in the extension datamodel. Fixes #319
-
2023-01-11 jmcarcell (PR#355)
- Change the readers so that when the file is missing they won't crash
-
2023-01-10 jmcarcell (PR#365)
- Fix the pre-commit workflow
-
2022-12-23 jmcarcell (PR#362)
- Rename the variable
match
to avoid collisions with a python keyword from Python 3.10 onwards
- Rename the variable
v00-16-02
v00-16-02
-
2022-12-19 Thomas Madlener (PR#360)
- Make the log output of loading the SIOBlock libraries more informative by also providing the absolute paths to the loaded (and rejected) shared libraries.
-
2022-12-16 Thomas Madlener (PR#333)
- Initialize the
unique_ptr<mutex>
in the constructor initializer list instead of in the member variable declaration. This is more likely a bug in nvcc (or maybe a c++17 feature not yet supported by nvcc). Fixes key4hep/k4Clue#34 - Pass
--disable-new-dtags
to the linker when usingPODIO_SET_RPATH
, to setRPATH
and notRUNPATH
in the binaries. - Pin the ubuntu version for runners that build on ubuntu to not accidentally go out of sync with the underlying LCG releases.
- Disable the podio tests in the edm4hep workflows (see #359).
- Initialize the
v00-16-01
v00-16-01
-
2022-12-06 jmcarcell (PR#356)
- Fix path in the README
- Use the functionality in argparse to choose between options
-
2022-12-06 Benedikt Hegner (PR#346)
- Switched tp Apache 2.0 license to facilitate integration in experiment stacks.
-
2022-12-05 Thomas Madlener (PR#357)
- Put
<prefix>/bin
ontoPATH
in order to makepodio-dump
available from environments created withenv.sh
- Put
-
2022-12-02 jmcarcell (PR#354)
- Make
env.sh
setup script POSIX compliant to run in shells other than bash- Change
==
to=
- Change tabs to spaces (two) to avoid mix of spaces and tabs for indenting
- Add
<prefix>/include
toROOT_INCLUDE_PATH
(as it is required since #343)
- Change
- Make
-
2022-11-16 Thomas Madlener (PR#351)
- Fix bug in Frame python bindings where empty collections were considered as non-existing. Replacing the original check relying on some implicit boolean conversions (which also caught empty collections) to an explicit check against
nullptr
. - Make
podio-dump
more robust in installations without SIO support, by guarding the corresponding import.
- Fix bug in Frame python bindings where empty collections were considered as non-existing. Replacing the original check relying on some implicit boolean conversions (which also caught empty collections) to an explicit check against
-
2022-11-14 Thomas Madlener (PR#344)
-
2022-11-11 Thomas Madlener (PR#345)
- Add a
ROOTLegacyReader
and aSIOLegacyReader
that read files that have been written prior to #287 intopodio::Frame
s and offers the same interface as the frame readers- Also including python bindings for it
- Add a
-
2022-11-10 Thomas Madlener (PR#349)
- Fix bug in setting relations in nested get calls in
podio::Frame
. Fixes #348 - Adapt the read test to actually check this. Previously this went unnoticed, because the necessary relations were already set in a previous call.
- Fix bug in setting relations in nested get calls in
-
2022-11-10 Thomas Madlener (PR#343)
- Add python bindings for
Frame
based I/O- Available from
podio.root_io
andpodio.sio_io
, where aReader
and aWriter
is implemented for each. - Wrapper around
podio::Frame
. Requires that thepodio/Frame.h
header is available somewhere on theROOT_INCLUDE_PATH
.
- Available from
- Add necessary functionality for python bindings to C++ API
- untyped
Frame::get
method for getting collections - New constructor from
FrameDataT&&
- functionality to inspect file and
Frame
contents more easily
- untyped
- Reorganize python code into structure that follows the usual python packaging conventions a bit more closely
- Introduce the
podio
module. Make CMake generate the__init__.py
with the correct version - Move everything except the generator script into
module
. Additionally also keep anEventStore
wrapper to not break existing code.
- Introduce the
- Refactor the
CMakeLists.txt
that is responsible for building the core and all required I/O libraries- Build more dictionaries for more python bindings.
- Add python bindings for
-
2022-11-02 Thomas Madlener (PR#342)
- Migrate to
actions/checkout@v3
as advised by github - Use the checkout action to clone the dependencies in the edm4hep workflow instead of doing an explicit clone in the body of the action
- Migrate to
-
2022-11-02 Dmitry Kalinkin (PR#327)
- fix typo in documentation
-
2022-10-24 Juraj Smiesko (PR#340)
- Adding reading of specific entry from frame
-
2022-10-21 Thomas Madlener (PR#335)
- Update the
github-action-cvmfs
andrun-lcg-view
actions to their latest available version to pick up the latest improvements (caching of dependencies, log groups) - Introduce log groups in github actions for easier to interpret outputs
- Switch to LCG_102 for lcg based build environments
- Add a workflow that builds and tests EDM4hep after building podio
- Update the
v00-16
v00-16
-
2022-10-04 Thomas Madlener (PR#337)
- Make the notebook pattern functionality return
std::vector
s instead ofstd::array
to avoid having to specify a static size. Fixes #332 - Backwards incompatible change as the return type as well as the call signature for the notebook pattern change.
- Make the notebook pattern functionality return
-
2022-09-27 Andre Sailer (PR#336)
- podioConfig.cmake: silence warning about cmake policy CMP00012
- CMake: explicitly look for catch2 version 3 and fail at cmake instead of compile step
-
2022-09-27 Thomas Madlener (PR#334)
- Fix a warning/error message from ROOT from attempts to stream the
std::mutex
members ofGenericParameters
by marking them as transient for the dictionary generation.
- Fix a warning/error message from ROOT from attempts to stream the
-
2022-09-16 Thomas Madlener (PR#323)
- Add a
podio-dump
python script (installed to<prefix>/bin
that can be used to dump event contents to stdout. By default prints an overview over the collections and their types, but can also be used to dump full events, via the-d
or--detailed
flag. Use--help
to get all available options and their descriptions. - To allow
podio-dump
to work with all available backends also add support for reading SIO via thePythonEventStore
.- Split off the necessary c++ functionality into a separate
podioPythonStore
library (+ necessary ROOT dictionaries).
- Split off the necessary c++ functionality into a separate
- Add a
print
function to the collections for easier dumping from the python side. - Add a
print
function to theGenericParameters
- Make
goToEvent
is a part of theIReader
interface and correctly implemented it for theSIOReader
.
- Add a
-
2022-09-16 Thomas Madlener (PR#287)
- Introduce the
podio::Frame
as a generalized, thread-safe (event) data container.- This first version offers all necessary functionality and an almost finalized interface, i.e. we plan to keep this as stable as possible, but we might still change things if it turns out that there are better ways to do some things
- For details about the basic interface and the underlying design considerations please consult the corresponding documentation
- This will be the only way to work with podio data starting from version 1.0
- For now the current I/O implementations remain in place unchanged, but they will be deprecated (and removed) in the not too distant future
- Introduce the
v00-15
v00-15
-
2022-08-09 Thomas Madlener (PR#312)
- Add support for converting objects and collections to JSON using nlohmann/json.
- To enable JSON support it is necessary to build the datamodel with
PODIO_JSON_OUTPUT
and to link against the nlohmann/json library.
- To enable JSON support it is necessary to build the datamodel with
- Add support for converting objects and collections to JSON using nlohmann/json.
-
2022-08-05 Wouter Deconinck (PR#318)
- CMake: PODIO_ADD_ROOT_IO_DICT: Bugfix for data models in
OUTPUT_FOLDER
not equal to source dir in root dictionary generation cmake macro.- Now
SELECTION_XML
can be passed either as absolute path or relative toOUTPUT_FOLDER
.
- Now
- CMake: PODIO_ADD_ROOT_IO_DICT: Bugfix for data models in
-
2022-08-03 Thomas Madlener (PR#317)
- Make it possible to pass an upstream datamodel to the class generator such that datatypes and components defined there can be used in an unrelated datamodel. This makes it possible to extend datamodels and to prototype new datatypes with the aim of upstreaming them eventually without having to redefine all the necessary components.
- Refactor the internals of the config reader / class generator slightly to make it possible to hold multiple datamodels in memory
-
2022-08-02 Thomas Madlener (PR#316)
- Remove macOS CI workflows because github hosted runners will deprecate macOS 10.15 (announcement) and later versions of macOS no longer support fuse and as a consequence CVMFS.
-
2022-07-27 Thomas Madlener (PR#315)
- Make the
is_trivial_type
flag available in the template engine behave as expected (it behaved exactly oppositely to what was documented and what one would intuitively expect). The flag was originally introduced in #288
- Make the
-
2022-07-27 Thomas Madlener (PR#283)
- Allow users to define default values for member variables, instead of default initializing all of them.
- The syntax for specifying a default value is
- <type> <name>{<init-value>} // <description>
. - The passed value is not validated in any way. Apart from a very basic syntax check, there is no validation that the provided default initialization values are actually valid. This means that generated code might not compile.
- The syntax for specifying a default value is
- Remove some of the python2 compatibility and do some cleanup
- Allow users to define default values for member variables, instead of default initializing all of them.
-
2022-07-27 Thomas Madlener (PR#276)
- Remove support for having std::string members in datatypes and components, as they break PODness and it seems that this feature was not in use in any case.
- Make ROOTReader slightly more robust against missing datatypes in dictionaries when reading files.
-
2022-06-22 Valentin Volkl (PR#307)
- hotfix for #290: revert a clang-tidy change to make sure that there are no unknown symbols in podioDict
-
2022-06-21 Thomas Madlener (PR#282)
- Add a
PODIO_USE_CLANG_FORMAT
option to the cmake configuration to toggle the autodiscovery ofclang-format
and a.clang-format
configuration file. This option is also available for downstream packages that use podio to generate their EDM.- The default is
AUTO
, where we try to discover a suitableclang-format
version as well as a.clang-format
file and use it if we find it. - If set to
OFF
podio will not try to see whetherclang-format
and a.clang-format
file are available and will also not try to format the code accordingly. - If set to
ON
podio will actually require a suitableclang-format
version and the presence of a.clang-format
file and will fail at the cmake stage if not present.
- The default is
- Add a
-
2022-06-16 Thomas Madlener (PR#305)
- Make sure generator warnings are printed
- Add a deprecation warning for the upcoming removal of support of
std::string
in data types. (See also #276)
-
2022-06-16 Thomas Madlener (PR#294)
- Remove the
EventStore
,CollectionIDTable
andversion::Version
members from theSIOCollectionIDTableBlock
to make it easier to use in theFrame
context - Move the
podio:version::build_version
into its ownSIOVersionBlock
- This is a breaking change for the SIO backend and it will not be able to read files that have been written prior to this
- Remove the