NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1684 most downloaded on PyPI
Web UI for dagster.
Last release 3 days ago
16 Sep 2026
Ships on a steady schedule
a new release about every 2 weeks
Nearly every release is documented
notes for 55 of the last 60 stable releases
2 versions withdrawn
withdrawn after publishing
3 years old
207 releases · first in 2023
One column per quarter.
Alert policies can now be set on assets + asset checks (currently experimental). Check out the alerting docs for more information.
--live-data-poll-rate that allows configuring how often the UI polls for new asset data when viewing the asset graph, asset catalog, or overview assets page. It defaults to 2000 ms.report_asset_materialization REST API endpoint for creating external asset materialization events. This is available in cloud as well.@dbt_assets decorator now accepts a backfill_policy argument, for controlling how the assets are backfilled.@dbt_assets decorator now accepts a op_tags argument, for passing tags to the op underlying the produced AssetsDefinition.get_materialize_result & get_asset_check_result to PipesClientCompletedInvocationacryl-datahub pin in the dagster-datahub package has been removed.PipesDatabricksClient now performs stdout/stderr forwarding from the Databricks master node to Dagster.dagster-dbt-cloud CLI.K8sRunLauncher. See the docs for more information.Previously, the asset backfill page would display negative counts if failed partitions were manually re-executed. This has been fixed.
Fixed an issue where the run list dialog for viewing the runs occupying global op concurrency slots did not expand to fit the content size.
Fixed an issue where selecting a partition would clear the launchpad and typing in the launchpad would clear the partition selection
Fixed various issues with the asset-graph displaying the wrong graph
The IO manager’s handle_output method is no longer invoked when observing an observable source asset.
[ui] Fixed an issue where the run config dialog could not be scrolled.
[pipes] Fixed an issue in the PipesDockerClient with parsing logs fetched via the docker client.
[external assets] Fixed an issue in external_assets_from_specs where providing multiple specs would error
[external assets] Correct copy in tooltip to explain why Materialize button is disabled on an external asset.
dagster-pipes version used in the external process.is_dagster_pipes_process has been removed from the dagster-pipes package.Previously, asset backfills targeting assets with multi-run backfill policies would raise a "did not submit all run requests" error. This has been fix
[dagster-dbt] Enabling asset checks using dbt project metadata has been deprecated.
EnvVar utility will now raise an exception if it is used outside of the context of a Dagster resource or config class. The get_value() utility will retrieve the value outside of this context.DbtCliResource, an explicit target_path can now be specified.DagsterDbtTranslator and DagsterDbtTranslatorSettings: see the docs for more information.Improved ergonomics for execution dependencies in assets - We introduced a set of APIs to simplify working with Dagster that don't use the I/O manager
Improved ergonomics for execution dependencies in assets - We introduced a set of APIs to simplify working with Dagster that don't use the I/O manager system for handling data between assets. I/O manager workflows will not be affected.
AssetDep type allows you to specify upstream dependencies with partition mappings when using the deps parameter of @asset and AssetSpec.MaterializeResult can be optionally returned from an asset to report metadata about the asset when the asset handles any storage requirements within the function body and does not use an I/O manager.AssetSpec has been added as a new way to declare the assets produced by @multi_asset. When using , the does not need to return any values to be stored by the I/O manager. Instead, the should handle any storage requirements in the body of the function.Asset checks (experimental) - You can now define, execute, and monitor data quality checks in Dagster [docs].
@asset_check decorator, as well as the check_specs argument to @asset and @multi_asset enable defining asset checks.Auto materialize customization (experimental) - AutoMaterializePolicies can now be customized [docs].
AutoMaterializeRules which determine if an asset should be materialized or skipped.PipesSubprocessClient, PipesDocketClient, PipesK8sClient, PipesDatabricksClientopen_pipes_session. One can augment existing invocations rather than replacing them wholesale.AssetExecutionContext is now a subclass of OpExecutionContext, not a type alias. The codedef my_helper_function(context: AssetExecutionContext):
...
@op
def my_op(context: OpExecutionContext):
my_helper_function(context)
will cause type checking errors. To migrate, update type hints to respect the new subclassing.
AssetExecutionContext cannot be used as the type annotation for @ops run in @jobs. To migrate, update the type hint in @op to OpExecutionContext. @ops that are used in @graph_assets may still use the AssetExecutionContext type hint.# old
@op
def my_op(context: AssetExecutionContext):
...
# correct
@op
def my_op(context: OpExecutionContext):
...
backfill_policy=BackfillPolicy.single_run() to your assets.has_dynamic_partition implementation has been optimized. Thanks @edvardlindelof!stream_to_asset_map argument to build_airbyte_assets to support the Airbyte prefix setting with special characters. Thanks @chollinger93!DatabricksPysparkStepLauncher fails to get logs when job_run doesn’t have cluster_id at root level. Thanks @PadenZach!dagster_cloud.dagster_insights module that contains utilities for capturing and submitting external metrics about data operations to Dagster Cloud via an api. Dagster Cloud Insights is a soon-to-be released feature that shows improves visibility into usage and cost metrics such as run duration and Snowflake credits in the Cloud UI.[dagster-dbt] DbtCliResource now enforces that the current installed version of dbt-core is at least version 1.4.0.
DbtCliResource now enforces that the current installed version of dbt-core is at least version 1.4.0.DbtCliResource now properly respects DBT_TARGET_PATH if it is set by the user. Artifacts from dbt invocations using DbtCliResource will now be placed in unique subdirectories of DBT_TARGET_PATH.partition_time_window attribute on OpExecutionContext and AssetExecutionContext now returns the time range, instead of raising an error.job_name property on the result object of build_hook_context.AssetSpec has been added as a new way to declare the assets produced by @multi_asset.AssetDep type allows you to specify upstream dependencies with partition mappings when using the deps parameter of @asset and AssetSpec.report_asset_check method added to ExtContext.yield from to forward reported materializations and asset check results to Dagster. Results reported from ext that are not yielded will raise an error.os.getenv() versus Dagster’s EnvVar.Deprecated ExpectationResult. This will be made irrelevant by upcoming data quality features.
ExpectationResult. This will be made irrelevant by upcoming data quality features.SensorResult.The deps parameter for @asset and @multi_asset now supports directly passing @multi_asset definitions. If an @multi_asset is passed to deps, dependenc
deps parameter for @asset and @multi_asset now supports directly passing @multi_asset definitions. If an @multi_asset is passed to deps, dependencies will be created on every asset produced by the @multi_asset.dagster instance migrate --bigint-migration.DbtCliResource now validates at definition time that its project_dir and profiles_dir arguments are directories that respectively contain a dbt_project.yml and profiles.yml.policy_id for new clusters when using the databricks_pyspark_step_launcher (thanks @zyd14!)dagster-webserver command was not indicating which port it was using in the command-line output.MaterializeResult has been added as a new return type to be used in @asset / @multi_asset materialization functionsAdded a new tooltip to asset runs to either view the asset list or lineage
dagster-ext module along with subprocess, docker, databricks, and k8s pod integrations are now available. Read more at https://github.com/dagster-io/dagster/discussions/16319. Note that the module is temporarily being published to PyPI under dagster-ext-process, but is available in python as import dagster_ext.@asset_check or AssetChecksDefinition.check_specs argument to @graph_multi_asset@graph_asset that would raise an error about nonexistant checksOpExecutionContext.add_output_metadata can now be called multiple times per output.
OpExecutionContext.add_output_metadata can now be called multiple times per output.@janosroden !)29 2 *) no longer cause exceptions in the UI or daemon.observable_source_assets with different partition definitions existed in the same code location, runs targeting those assets could fail to launch. This has been fixed.start_date of their underlying PartitionsDefinition could result in runs being launched for partitions that no longer existed. This has been fixed.@ldnicolasmay!)DagsterDbtTranslator did not properly invoke get_auto_materialize_policy and get_freshness_policy for load_assets_from_dbt_project.@graph_asset support. This can be used to implement blocking checks, by raising an exception if the check fails.@multi_asset subsetting, so only checks which target assets in the subset will execute.AssetCheckSpecs will now cause an error at definition time if they target an asset other than the one they’re defined on.run_monitoring > free_slots_after_run_end_secondsNothing published for this version
Nothing published for this version
The context object now has an asset_key property to get the AssetKey of the current asset.
context object now has an asset_key property to get the AssetKey of the current asset.dagster dev and dagster-daemon run commands now include a --log-level argument that allows you to customize the logger level threshold.AirbyteResource now includes a poll_interval key that allows you to configure how often it checks an Airbyte sync’s status.DatabricksStepLauncher to fail. Thanks @zyd14!workspace and volumes init scripts in the databricks client. Thanks @zyd14!Asset checks are now displayed in the asset graph and sidebar.
[Breaking] Asset check severity is now set at runtime on AssetCheckResult instead of in the @asset_check definition. Now you can define one check that either errors or warns depending on your check logic. ERROR severity no longer causes the run to fail. We plan to reintroduce this functionality with a different API.
[Breaking] @asset_check now requires the asset= argument, even if the asset is passed as an input to the decorated function. Example:
@asset_check(asset=my_asset)
def my_check(my_asset) -> AssetCheckResult:
...
[Breaking] AssetCheckSpec now takes asset= instead of asset_key=, and can accept either a key or an asset definition.
[Bugfix] Asset checks now work on assets with key_prefix set.
[Bugfix] Execution failure asset checks are now displayed correctly on the checks tab.
DbtCliResource in custom asset/op to API docs.Dagster code servers now wait to shut down until any calls that they are running have finished, preventing them from stopping while in the middle of e
dagster execute job cli now accepts —-op-selection (thanks @silent-lad!)AssetsDefinition instances.@graph and @job now work again, fixing a regression introduced in 1.4.5.ins argument to graph_asset is now respected correctly.dagster dev failed on startup when the DAGSTER_GRPC_PORT `environment variable was set in the environment.deps arguments for an asset can now be specified as an iterable instead of a sequence, allowing for sets to be passed.securityContext setting now applies correctly to all init containers (thanks @maowerner!)AutoMaterializeRule.skip_on_not_all_parents_updated that enforces that an asset can only be materialized if all parents have been materialized since the asset's last materialization.AutoMaterializeRule.skip_on_parent_missing –which is already part of the behavior of the default auto-materialize policy.dagster-dbt project scaffold.[dagster-webserver] Fixed an issue that broke loading static files on Windows.
Fixed an issue that caused some missing icons in the UI.
The ConfigurablePickledObjecS3IOManager will continue to be available but is considered deprecated in favor of S3PickleIOManager. There is no change i…
@partitioned_config decorator has been added for defined configuration for partitioned jobs. Thanks @danielgafni!ConfigurablePickledObjectS3IOManager has been renamed S3PickleIOManager for simplicity. The ConfigurablePickledObjecS3IOManager will continue to be available but is considered deprecated in favor of S3PickleIOManager. There is no change in the functionality of the I/O manager.ConfigurablePickledObjectADLS2IOManager has been renamed ADLS2PickleIOManager for simplicity. The ConfigurablePickledObjectADLS2IOManager will continue to be available but is considered deprecated in favor of ADLS2PickleIOManager. There is no change in the functionality of the I/O manager.DbtCliResource, the exception message now includes a link to the dbt.log produced. This log file can be inspected for debugging.ConfigurablePickledObjectGCSIOManager has been renamed GCSPickleIOManager for simplicity. The ConfigurablePickledObjecGCSIOManager will continue to be available but is considered deprecated in favor of GCSPickleIOManager. There is no change in the functionality of the I/O manager.DagsterInvariantViolationError when executing a multi-asset where both assets have self-dependencies on earlier partitions.--debug flag raised an exception in the Dagster framework.stderr which aligns with Python’s logging defaults.BackfillPolicy, thanks @ruizh22!timeout argument when constructing a DagsterGraphQLClient.DbtCliResource and DbtCliResource.cli(...).InputContext and OutputContext have been fixed. Thanks @Sergey Mezentsev!Added a respect_materialization_data_versions option to auto materialization. It can enabled in dagster.yaml with
Added a respect_materialization_data_versions option to auto materialization. It can enabled in dagster.yaml with
auto_materialize:
respect_materialization_data_versions: True
This flag may be changed or removed in the near future.
ops or assets with multiple outputs that are all required and return type None/ Nothing will interpret an explicitly or implicitly returned value None
None/ Nothing will interpret an explicitly or implicitly returned value None to indicate that all outputs were successful.skip_reason argument to the constructor of SensorResult now accepts a string in addition to a SkipReason.step_k8s_config field to k8s_job_executor that allows you to customize the raw Kubernetes config for each step in a job. See the docs for more information.dagster-dbt project scaffold now creates the scaffold in multiple files:
constants.py contains a reference to your manifest and dbt project directoryassets.py contains your initial dbt assets definitionsdefinitions.py contains the code to load your asset definitions into the Dagster UIschedules.py contains an optional schedule to add for your dbt assetsget_auto_materialize_policy and get_freshness_policy to DagsterDbtTranslator.load_assets_from_fivetran_instance.SSHResource would warn when allow_host_key_change was set. Now known hosts are always loaded from the system hosts file, and the allow_host_key_change parameter is ignored.@graph_multi_asset now has an API docs entry.GCSComputeLogManager example in the Dagster Instance reference is now correct.@dbt_assets for the following use-cases:
--vars@graph_asset now takes a config parameter equivalent to the parameter on @graph.
@graph_asset now takes a config parameter equivalent to the parameter on @graph.dynamic_partitions_store argument to DynamicPartitionsDefinition for multi-partition run properly with dynamic partitions (Thanks @elzzz!).partitionsByAssets`` to backfillParams`` for ranged partition backfill (Thanks @ruizh22!).dbt-core==1.6 has been added.DbtCliResource now supports configuring profiles_dir.restart_policy on k8s_job_op (Thanks @Taadas!).authenticator to SnowflakePandasIOManager, which allows specifying the authentication mechanism to use (Thanks @pengw0048!).AutoMaterializePolicy with assets that had at least one source asset parent and at least one non-source asset parent. This has been fixed.AutoMaterializePolicy to a time-partitioned asset downstream of an unpartitioned asset, the latest partition would only ever be materialized a single time, rather than updating in response to any parent updates. This has been fixed.StaticPartitionsDefinition containing many thousands of partitions could take a significant amount of time.Unexpected exception error would be raised when scaffolding a pull request on a repository with no profiles.yml. This behavior has been updated to raise a more descriptive error message on the repo selection page.agentReplicas config setting on the helm chart has been renamed to isolatedAgents. In order to use this config setting, your user code dagster version needs to be 1.4.3 or greater.[ui] When viewing a run for auto-materialized assets, show a tag with information about the assets that were materialized.
dagster-dbt project scaffold didn’t create a project directory with all the scaffolded files.SpecificPartitionsPartitionMapping with auto-materialization.max_materializations_per_minute on an AutoMaterializePolicy to a non-positive number. This will now result in an error.upath_io_manager from @harrylojames; thank you!dagster project scaffold and the new dagster-dbt APIs.[dagster-dbt] When invokingdagster-dbt project scaffold on a dbt project directory, if a profiles.yml exists in the root of the directory, its content
dagster-dbt project scaffold on a dbt project directory, if a profiles.yml exists in the root of the directory, its contents are used to add dbt adapter packages to the scaffolded setup.py.max_concurrent field has been changed from 0 to None to more clearly signal its intent. A value of 0 is still interpreted as the sentinel value which dynamically allocates max_concurrent based on detected CPU count.Definitions, so that jobs are able to override the IO manager used.EnvVars in a FivetranResource would not be evaluated when loading assets from the Fivetran instance.EnvVars in an AirbyteResource would not be evaluated when loading assets from the Airbyte resource.DbtCliResource, DbtCliInvocation, @dbt_assets, DagsterDbtTranslator, dagster-dbt project scaffoldFixes a bug in dagster-dbt that was preventing it from correctly materializing subselections of dbt asset.
dagster-dbt that was preventing it from correctly materializing subselections of dbt asset.Fixes a bug in dagster-dbt that was preventing it efficiently loading dbt projects from a manifest.
dagster-dbt that was preventing it efficiently loading dbt projects from a manifest.non_argument_deps → deps – We’ve deprecated the non_argument_deps parameter of @asset and @multi_asset in favor of a new deps parameter. The new param…
AutoMaterializePolicy. It’s located under Assets → Select an asset with an AutoMaterializePolicy → Auto-materialize history tab.non_argument_deps parameter of @asset and @multi_asset in favor of a new deps parameter. The new parameter makes it clear that this is a first-class way of defining dependencies, makes code more concise, and accepts AssetsDefinition and SourceAsset objects, in addition to the strs and AssetKeys that the previous parameter accepted.DynamicPartitionsDefinition and SensorResult are no longer marked experimental.@observable_source_asset decorator now accepts an auto_observe_interval_minutes parameter. If the asset daemon is turned on, then the observation function will automatically be run at this interval. Downstream assets with eager auto-materialize policies will automatically run if the observation function indicates that the source asset has changed. [docs]dagit package is deprecated in favor of the dagster-webserver package.@dbt_assets decorator allows much more control over how Dagster runs your dbt project. [docs]dagster-dbt project scaffold command line interface makes it easy to create files and directories for a Dagster project that wraps an existing dbt project.get_asset_key_for_model and get_asset_key_for_source utilities make it easy to specify dependencies between upstream dbt assets and downstream non-dbt assets. And you can now more easily specify dependencies between dbt models and upstream non-dbt assets by specifying Dagster asset keys in the dbt metadata for dbt sources.non_argument_deps parameter of @asset and @multi_asset in favor of a new deps parameter. The new parameter makes it clear that this is a first-class way of defining dependencies, makes code more concise, and accepts AssetsDefinition and SourceAsset objects, in addition to the strs and AssetKeys that the previous parameter accepted.UPathIOManager can now be extended to load multiple partitions asynchronously (Thanks Daniel Gafni!).dagster-user-deployments.deployments.[...].readinessProbe.enabled=false.non_argument_deps in favor of deps, build_airbyte_assets now accepts a deps parameter.non_argument_deps in favor of deps, define_dagstermill_asset now accepts a deps parameter.StaticPartitionsDefinition will now raise an error.AutoMaterializePolicy's to not materialize missing assets.--path-prefix.build_asset_reconciliation_sensor (Experimental) has been removed. It was deprecated in 1.3 in favor of AutoMaterializePolicy.asset_key(s) properties on AssetIn and AssetDefinition have been removed in favor of key(s). These APIs were deprecated in 1.0.root_input_manager and RootInputManagerDefinition have been removed in favor of input_manager and InputManagerDefinition. These APIs were deprecated in 1.0.event_metadata_fn parameter on create_dagster_pandas_dataframe_type has been removed in favor of metadata_fn.@dbt_assets and DbtCliResource. See the migration guide for details.
dbt-rpc has been removed.DbtCloudResourceV2 has been removed.DbtCli has been renamed to DbtCliResource. Previously, DbtCliResource was a class alias for DbtCliClientResource.load_assets_from_dbt_project and load_assets_from_dbt_manifest now default to use_build=True.load_assets_from_dbt_project and load_assets_from_dbt_manifest has changed. Rather than assigning a group name using the model’s subdirectory, a group name will be assigned using the dbt model’s dbt group.node_info_to_definition_metadata_fn for load_assets_from_dbt_project and load_assets_from_dbt_manifest now overrides metadata instead of adding to it.load_assets_from_dbt_project and load_assets_from_dbt_manifest now must be specified using keyword arguments.DbtCliResource with load_assets_from_dbt_project and load_assets_from_dbt_manifest, stdout logs from the dbt process will now appear in the compute logs instead of the event logs.dagit python package is deprecated and will be removed in 2.0 in favor of dagster-webserver. See the migration guide for details.dagit → dagsterWebserveringress.dagit → ingress.dagsterWebserveringress.readOnlyDagit → ingress.readOnlyDagsterWebservertag:DescribeResources. Without this policy, the ECS Agent will log a deprecation warning and fall back to its old behavior (listing all ECS services in the cluster and then listing each service's tags).DbtCliClientResource, dbt_cli_resource and DbtCliOutput are now being deprecated in favor of DbtCliResource.load_assets_from_dbt_project and load_assets_from_dbt_manifest are now deprecated in favor of other options. See the migration for details.[dbt] DbtCliResource has been deprecated in favor of DbtCli.
DynamicPartitionsDefinition and SensorResult are no longer marked experimentalDagsterInstance now has a get_status_by_partition method, which returns the status of each partition for a given asset. Thanks renzhe-brian!DagsterInstance now has a get_latest_materialization_code_versions method, which returns the code version of the latest materialization for each of the provided (non-partitioned) assets.build_asset_context has been added as an asset focused replacement for build_op_context.build_op_context now accepts a partition_key_range parameter.AssetSelection.upstream_source_assets method allows selecting source assets upstream of the current selection.AssetSelection.key_prefixes and AssetSelection.groups now accept an optional include_sources parameter.DbtCli resource is no longer marked experimental.global_config parameter of the DbtCli resource has been renamed to global_config_flagsload_assets_from_dbt_project and load_assets_from_dbt_manifest now work with the DbtCli resource.manifest argument of the @dbt_assets decorator now additionally can accept a Path argument representing a path to the manifest file or dictionary argument representing the raw manifest blob.DbtCli.cli from inside a @dbt_assets-decorated function, you no longer need to supply the manifest argument as long as you provide the context argument.DbtManifest object can now generate schedules using dbt selection syntax.dbt_manifest.build_schedule(
job_name="materialize_dbt_models",
cron_schedule="0 0 * * *",
dbt_select="fqn:*"
)
DbtCli.cli and the underlying command fails, an exception will now be raised. To suppress the exception, run the DbtCli.cli(..., raise_on_error=False).OutputContext when using with_attributes or AssetsDefinition.from_graph.max_materializations_per_minute parameter, those older partitions would not be properly discarded from consideration on subsequent ticks. This has been fixed.from __future__ import annotations) would cause errors in most cases when used with Dagster definitions. This has been fixed for the vast majority of cases.AssetExecutionContext has returned to being a type alias for OpExecutionContext.time_window_partition_scope_minutes parameter of the AutoMaterializePolicy class has been removed. Instead, max_materializations_per_minute should be used to limit the number of runs that may be kicked off for a partitioned asset.DbtCliResource has been deprecated in favor of DbtCli.dagit has been deprecated in favor of a new package dagster-webserver.OpExecutionContext.asset_partition_key_range has been deprecated in favor of partition_key_range.databricks_pyspark_step_launcher will no longer error when executing steps that target a single partition of a DynamicPartitionsDefinition (thanks @weberdavid!).@observable_source_asset decorator now accepts an auto_observe_interval_minutes parameter. If the asset daemon is turned on, then the observation function will automatically be run at this interval.DbtCliTask has been renamed to DbtCliInvocationget_asset_key_by_output_name and get_node_info_by_output_name methods of DbtManifest have been renamed toget_asset_key_for_output_name and get_node_info_for_output_name, respectively.DagsterInstance, *MetadataValue, DagsterType, and others.dagster-pandera now has an API docs page.Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →