Skip to content

Make data containers frozen #461

@psomhorst

Description

@psomhorst

For several reasons, it would be beneficial to have data containers be frozen.

  • Caching: it is not possible to reliably cache objects that can be changed after creation. Frozen objects allows for caching in memory or on disk, potentially resulting in major speed improvements.
  • Provenance tracking: for provenance tracking (i.e., what steps and objects resulted in the creation of the current object?) it is necessary that all intermediate objects are frozen. Otherwise, the tracking is incomplete/unreliable.
  • Predictability of code: some commands can unintentionally alter objects. This can result in unpredictable and difficult to reproduce results.

For many workflows, this will not have any major implications. Many objects are created, and then never changed. There is a pattern, however, where a copy of an object is made, which is then edited to be a new version, e.g., with edited data and a different label. There should be an easy way to do this in a single command, using a method similar to dataclasses.replace().

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions