Skip to content

Releases: AIDASoft/podio

v00-16-06

14 Jul 06:50
Compare
Choose a tag to compare

v00-16-06

  • 2023-07-14 Thomas Madlener (PR#453)

  • 2023-07-13 Thomas Madlener (PR#451)

    • Backport some bug fixes to make a v00-16-06 patch release
      • #422
      • #423 (fixes only, no additional tests)
      • #434 (fixes only, not the additional tests)

v00-16-05

23 May 16:25
Compare
Choose a tag to compare

v00-16-05

  • 2023-05-23 tmadlener (PR#420)
    • Fix a version check inside the ROOTReader to avoid segmentation violations

v00-16-04

23 May 12:51
Compare
Choose a tag to compare

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
  • 2023-05-22 tmadlener (PR#418)

    • Bring back the public templated getMap functionality for podio::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.
  • 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.
  • 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 and createSchemaEvolvableBuffers from podio::CollectionBase interface
    • Make the minimum allowed schema_version 1 in the yaml definition files. Default to 1 if no schema_version is provided
    • Add a schemaVersion to the DatamodelDefinition.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.
  • 2023-04-22 Christopher Dilks (PR#408)

    • fix type inconsistency between Collection::size() and index for const object accessors
  • 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
  • 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).
  • 2023-04-05 Thomas Madlener (PR#399)

    • Add PODIO_ENABLE_SIO=1 to the public target_compile_definitions for podioSioIO 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.
  • 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 the clean target. Fixes #396
  • 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

14 Mar 15:53
Compare
Choose a tag to compare

v00-16-03

  • 2023-03-14 jmcarcell (PR#391)

    • Catch an exception when a clang-format flag is not found
  • 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
  • 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
    • 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 FrameWriters
    • 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.
  • 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
  • 2023-03-01 Thomas Madlener (PR#372)

    • Make double a supported type of GenericParameters. 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.
  • 2023-02-27 Thomas Madlener (PR#380)

    • Add getParameters method to the Frame and deprecate getGenericParametersForWrite 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.
  • 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 as PODIO_BUILD_VERSION
    • Add test that ensures that the macro and the constant are actually used in a preprocessor context.
  • 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 and Frame::putParameters as inline to fix linker errors.
  • 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 private sioUtils.h header and use it also in the legacy SIOWriter.
    • Fix cmake configure dependencies (missed in #343) for datamodel generation macro.
    • Use defaultdict instead of hand rolling one in class generator.
  • 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

v00-16-02

19 Dec 12:50
Compare
Choose a tag to compare

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 using PODIO_SET_RPATH, to set RPATH and not RUNPATH 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).

v00-16-01

14 Dec 10:56
Compare
Choose a tag to compare

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 onto PATH in order to make podio-dump available from environments created with env.sh
  • 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 to ROOT_INCLUDE_PATH (as it is required since #343)
  • 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.
  • 2022-11-14 Thomas Madlener (PR#344)

    • Make podio-dump work with new Frame based I/O (fixes #339)
    • Keep existing functionality intact by using the legacy readers introduced in #345.
  • 2022-11-11 Thomas Madlener (PR#345)

    • Add a ROOTLegacyReader and a SIOLegacyReader that read files that have been written prior to #287 into podio::Frames and offers the same interface as the frame readers
      • Also including python bindings for it
  • 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.
  • 2022-11-10 Thomas Madlener (PR#343)

    • Add python bindings for Frame based I/O
      • Available from podio.root_io and podio.sio_io, where a Reader and a Writer is implemented for each.
      • Wrapper around podio::Frame. Requires that the podio/Frame.h header is available somewhere on the ROOT_INCLUDE_PATH.
    • 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
    • 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 an EventStore wrapper to not break existing code.
    • Refactor the CMakeLists.txt that is responsible for building the core and all required I/O libraries
      • Build more dictionaries for more python bindings.
  • 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
  • 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 and run-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

v00-16

06 Oct 12:05
Compare
Choose a tag to compare

v00-16

  • 2022-10-04 Thomas Madlener (PR#337)

    • Make the notebook pattern functionality return std::vectors instead of std::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.
  • 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 of GenericParameters by marking them as transient for the dictionary generation.
  • 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 the PythonEventStore.
      • Split off the necessary c++ functionality into a separate podioPythonStore library (+ necessary ROOT dictionaries).
    • Add a print function to the collections for easier dumping from the python side.
    • Add a print function to the GenericParameters
    • Make goToEvent is a part of the IReader interface and correctly implemented it for the SIOReader.
  • 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

v00-15

11 Aug 14:37
Compare
Choose a tag to compare

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.
  • 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 to OUTPUT_FOLDER.
  • 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
  • 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.
    • Remove some of the python2 compatibility and do some cleanup
  • 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 of clang-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 suitable clang-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 whether clang-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 suitable clang-format version and the presence of a .clang-format file and will fail at the cmake stage if not present.
  • 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 and version::Version members from the SIOCollectionIDTableBlock to make it easier to use in the Frame context
    • Move the podio:version::build_version into its own SIOVersionBlock
    • 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

v00-14-03

24 Jun 10:24
Compare
Choose a tag to compare

v00-14-03

  • 2022-06-24 Valentin Volkl (PR#309)

  • 2022-06-24 Thomas Madlener (PR#308)

v00-14-02

16 Jun 07:45
Compare
Choose a tag to compare

v00-14-02

  • 2022-06-15 Thomas Madlener (PR#304)

    • Use the releases v3.0.1 version of Catch2 instead of an unreleased commit
  • 2022-06-15 Thomas Madlener (PR#303)

    • Default initialize the array for the vectorized access.
  • 2022-06-14 soumil (PR#296)

    • Add instructions on how to run pre-commit locally to the documentation
  • 2022-06-14 Thomas Madlener (PR#295)

    • Mark CollectionBase::prepareForWrite as const and make sure that the generated implementations are thread safe.
  • 2022-06-14 Thomas Madlener (PR#286)

    • Make sure that vector member buffers for writing point to the correct place even if a collection has been moved, by resetting them when the buffers are requested.
    • Add checks for this to the unittests, as this is sort of an interface for I/O backends.
  • 2022-06-13 Kalina Stoimenova (PR#301)

    • Fixed the text in the cmake message for code generation to point to the correct readme file
  • 2022-06-13 Thomas Madlener (PR#300)

    • Newer versions of pylint have removed a few options and a few checks that aimed at python2-python3 compatibility.
  • 2022-06-13 Thomas Madlener (PR#299)

    • Explicitly add constructors to CollectionBase
    • Make sure to not use an unset LD_LIBRARY_PATH for detecting sio blocks shared libraries.
  • 2022-06-02 soumil (PR#293)

    • Removing python2 compatibility imports
    • Removing ordered loading (obsolete) function
  • 2022-06-01 Thomas Madlener (PR#285)

    • Fix potential bug in setting the collection ID for subset collections
  • 2022-05-30 soumil (PR#291)

    • Replace the obj_needs_destructor flag in the generator code and templates with the is_trivial_type flag, since that is the more appropriate name. (Fixes #288)
  • 2022-05-27 Thomas Madlener (PR#274)

    • Add documentation for the Jinja2 templates and the code generation process in general to make working with these parts of PODIO easier.
  • 2022-05-23 Thomas Madlener (PR#262)

    • Make the getters and setters for the GenericParameters templated functions and add a deprecation warning for the untemplated ones.
    • Define a SupportedGenericDataTypes tuple defining the types (and vectors of those) that can be stored in GenericParameters
    • Add a podio/utilities/TypeHelpers.h header with some type handling helpers.
  • 2022-05-20 Thomas Madlener (PR#277)

    • Avoid fetching the (remote) legacy input file for tests unnecessarily every time cmake is run.
  • 2022-05-17 Thomas Madlener (PR#284)

    • Make sure the EventStore doesn't try to read event meta data multiple times per event
    • Add a empty method to GenericParameters to check if any parameters are stored.
  • 2022-04-04 Thomas Madlener (PR#280)

    • Only use --color option for diff in clang-format wrapper script if it is supported by the underlying diffutils.
  • 2022-04-02 Thomas Madlener (PR#254)

    • Add a .clang-format and .clang-tidy config file for consistent formatting and following a few coding guidelines.
    • Add pre-commit hooks that run clang-tidy and clang-format
    • Make all currently present files follow the formatting and guidelines of the present configuration.
    • Make the PODIO_GENERATE_DATAMODEL macro look for a .clang-format file and the presence of clang-formatand automatically format all the generated files if both are there.
  • 2022-04-01 Thomas Madlener (PR#279)

    • Fix test environment to work again in newest Key4hep release by unsetting ROOT_INCLUDE_PATH in the test environment to avoid potential clashes with existing other installations in the environment.
    • Add CI build against the Key4hep nightlies.
    • Switch to use the Catch2 installation from Key4hep for the workflows.
  • 2022-03-31 Thomas Madlener (PR#253)

    • Add a basic setup for pre-commit and replace the python linting github workflow with one that is run via pre-commit.
      • Add additional checks for consistent line-endings and removal of trailing whitespaces.
    • Update pylint and flake8 config to no longer check for python2/python3 compatibility but instead follow the same guidelines as e.g. in ILCDirac.
    • Fix all issues that were uncovered.
  • 2022-03-23 Thomas Madlener (PR#270)

    • Remove duplicated printing of component members in the std::ostream& operator<< overloads of the datatypes. Fixes #269
    • Add an example datatype that broke compilation before these fixes.
  • 2022-03-18 Andre Sailer (PR#265)

    • CI: use clang12 and gcc11 for tests based on dev stacks