Skip to content

v0.3.5 2026-01-16

Choose a tag to compare

@johnnygreco johnnygreco released this 16 Jan 22:47
· 210 commits to main since this release
d97d52c

🎨 NeMo Data Designer v0.3.5 Release Notes

##💥 Breaking Change: Plugins

We have made some updates to the task and column generation abstractions, which come with some breaking changes for plugin developers.

  1. No more GeneratorMetadata

We have completely removed the GeneratorMetadata object (as well as it's parent ConfigurableTaskMetadata object). This means you no longer need to define a metadata static method when creating a column generator implementation.

As part of this refactor, we have added two new subclasses to use for different generation strategies:

  • data_designer.engine.column_generators.generators.base.ColumnGeneratorFullColumn
  • data_designer.engine.column_generators.generators.base.ColumnGeneratorCellByCell

Before (v0.3.4)

from data_designer.engine.column_generators.generators.base import (
    ColumnGenerator,
    GenerationStrategy,
    GeneratorMetadata,
)

class IndexMultiplierColumnGenerator(ColumnGenerator[IndexMultiplierColumnConfig]):
    @staticmethod
    def metadata() -> GeneratorMetadata:
        """Define metadata about this generator."""
        return GeneratorMetadata(
            name="index-multiplier",
            description="Generates values by multiplying the row index by a user-specified multiplier",
            generation_strategy=GenerationStrategy.FULL_COLUMN,
        )
    
    # implementation below
   ...

After (v0.3.5)

from data_designer.engine.column_generators.generators.base import ColumnGeneratorFullColumn

class IndexMultiplierColumnGenerator(ColumnGeneratorFullColumn[IndexMultiplierColumnConfig]):

    # implementation below
    ...
  1. required_columns and side_effect_columns now must be explicitly defined on classes that inherit from SingleColumnConfig

Before (v0.3.4)

from data_defrom data_designer.config.column_configs import SingleColumnConfig

class IndexMultiplierColumnConfig(SingleColumnConfig):
    """Configuration for the index multiplier column generator."""

    # Configurable parameter for this plugin
    multiplier: int = 2

    # Required: discriminator field with a unique Literal type
    # This value identifies your plugin and becomes its column_type
    column_type: Literal["index-multiplier"] = "index-multiplier"

After (v0.3.5)

from data_designer.config.column_configs import SingleColumnConfig

class IndexMultiplierColumnConfig(SingleColumnConfig):
    """Configuration for the index multiplier column generator."""

    # Configurable parameter for this plugin
    multiplier: int = 2

    # Required: discriminator field with a unique Literal type
    # This value identifies your plugin and becomes its column_type
    column_type: Literal["index-multiplier"] = "index-multiplier"

    @property
    def required_columns(self) -> list[str]:
        return []

    @property
    def side_effect_columns(self) -> list[str]:
        return []

While the updated version is more verbose, it will ensure column generator developers are aware of these properties, which are essential for building a working generator.

  1. Removed emoji from the Plugin object

Now that plugins support more that column generators, the emoji field is not always applicable.

Before (v0.3.4)

from data_designer.plugins import Plugin, PluginType

# Plugin instance - this is what gets loaded via entry point
plugin = Plugin(
    impl_qualified_name="data_designer_index_multiplier.plugin.IndexMultiplierColumnGenerator",
    config_qualified_name="data_designer_index_multiplier.plugin.IndexMultiplierColumnConfig",
    plugin_type=PluginType.COLUMN_GENERATOR,
    emoji="🔌",
)

After (v0.3.5)

from data_designer.plugins import Plugin, PluginType

# Plugin instance - this is what gets loaded via entry point
plugin = Plugin(
    impl_qualified_name="data_designer_index_multiplier.plugin.IndexMultiplierColumnGenerator",
    config_qualified_name="data_designer_index_multiplier.plugin.IndexMultiplierColumnConfig",
    plugin_type=PluginType.COLUMN_GENERATOR,
)

What's Changed

Full Changelog: v0.3.4...v0.3.5