New
-
Dagster is now tested on Python 3.11.
-
Users can now opt in to have resources provided to
Definitions
bind to their jobs. Opt in by wrapping your job definitions inBindResourcesToJobs
. This will become the default behavior in the future.@op(required_resource_keys={"foo") def my_op(context) print(context.foo) @job def my_job(): my_op() defs = Definitions( jobs=BindResourcesToJobs([my_job]) resources={"foo": foo_resource}
-
Added
dagster asset list
anddagster asset materialize
commands to Dagster’s command line interface, for listing and materializing software-defined assets. -
build_schedule_from_partitioned_job
now accepts jobs partitioned with aMultiPartitionsDefinition
that have a time-partitioned dimension. -
Added
SpecificPartitionsPartitionMapping
, which allows an asset, or all partitions of an asset, to depend on a specific subset of the partitions in an upstream asset. -
load_asset_value
now supportsSourceAsset
s. -
[ui] Ctrl+K has been added as a keyboard shortcut to open global search.
-
[ui] In the run logs table, the timestamp column has been moved to the far left, which will hopefully allow for better visual alignment with op names and tags.
-
[dagster-dbt] A new
node_info_to_definition_metadata_fn
toload_assets_from_dbt_project
andload_assets_from_dbt_manifest
allows custom metadata to be attached to the asset definitions generated from these methods. -
[dagster-celery-k8s] The Kubernetes namespace that runs using the
CeleryK8sRunLauncher
are launched in can now be configured by setting thejobNamespace
field in the Dagster Helm chart underceleryK8sRunLauncherConfig
. -
[dagster-gcp] The BigQuery I/O manager now accepts
timeout
configuration. Currently, this configuration will only be applied when working with Pandas DataFrames, and will set the number of seconds to wait for a request before using a retry. -
[dagster-gcp] [dagster-snowflake] [dagster-duckdb] The BigQuery, Snowflake, and DuckDB I/O managers now support self-dependent assets. When a partitioned asset depends on a prior partition of itself, the I/O managers will now load that partition as a DataFrame. For the first partition in the dependency sequence, an empty DataFrame will be returned.
-
[dagster-k8s]
k8s_job_op
now supports running Kubernetes jobs with more than one pod (Thanks @Taadas).
Bugfixes
- Fixed a bug that causes backfill tags that users set in the UI to not be included on the backfill runs, when launching an asset backfill.
- Fixed a bug that prevented resume from failure re-execution for jobs that contained assets and dynamic graphs.
- Fixed an issue where the asset reconciliation sensor would issue run requests for assets that were targeted by an active asset backfill, resulting in duplicate runs.
- Fixed an issue where the asset reconciliation sensor could issue runs more frequently than necessary for assets with FreshnessPolicies having intervals longer than 12 hours.
- Fixed an issue where
AssetValueLoader.load_asset_value()
didn’t load transitive resource dependencies correctly. - Fixed an issue where constructing a
RunConfig
object with optional config arguments would lead to an error. - Fixed the type annotation on
ScheduleEvaluationContext.scheduled_execution_time
to not beOptional
. - Fixed the type annotation on
OpExecutionContext.partition_time_window
****(thanks @elben10). InputContext.upstream_output.log
is no longerNone
when loading a source asset.- Pydantic type constraints are now supported by the Pythonic config API.
- An input resolution bug that occurred in certain conditions when composing graphs with same named ops has been fixed.
- Invoking an op with collisions between positional args and keyword args now throws an exception.
async def
ops are now invoked withasyncio.run
.TimeWindowPartitionDefinition
now throws an error at definition time when passed an invalid cron schedule instead of at runtime.- [ui] Previously, using dynamic partitions with assets that required config would raise an error in the launchpad. This has been fixed.
- [dagster-dbt] Previously, setting a
cron_schedule_timezone
inside of the config for a dbt model would not result in that property being set on the generatedFreshnessPolicy
. This has been fixed. - [dagster-gcp] Added a fallback download url for the
GCSComputeLogManager
when the session does not have permissions to generate signed urls. - [dagster-snowflake] In a previous release, functionality was added for the Snowflake I/O manager to attempt to create a schema if it did not already exist. This caused an issue when the schema already existed but the account did not have permission to create the schema. We now check if a schema exists before attempting to create it so that accounts with restricted permissions do not error, but schemas can still be created if they do not exist.
Breaking Changes
validate_run_config
no longer acceptspipeline_def
ormode
arguments. These arguments refer to legacy concepts that were removed in Dagster 1.0, and since then there have been no valid values for them.
Experimental
-
Added experimental support for resource requirements in sensors and schedules. Resources can be specified using
required_resource_keys
and accessed through the context or specified as parameters:@sensor(job=my_job, required_resource_keys={"my_resource"}) def my_sensor(context): files_to_process = context.my_resource.get_files() ... @sensor(job=my_job) def my_sensor(context, my_resource: MyResource): files_to_process = my_resource.get_files() ...
Documentation
- Added a page on asset selection syntax to the Concepts documentation.
All Changes
1.2.1...1.2.2
See All Contributors
[dagster-gcp-pandas] add timeout config (#12637)
by @jamiedemaria
[docs][tutorial-revamp] Basic tutorial revamp parts 1 through 4 (#12509)
by @tacastillo
feat(dbt): add support for
--debug (#12722)
by @rexledesma
Default useful Dagster helm chart features to on (#12737)
by @gibsondan
[For 1.2] Allow both protobuf 3 and 4 in dagster (#12466)
by @gibsondan
[toys repo] Export partitioned assets toys (#12733)
by @salazarm
[pythonic config] Allow using 'resource_defs' with resource args in assets (#12679)
by @benpankow
[refactor] Remove symbols deprecated until 1.2 (#12360)
by @smackesey
[dagster-snowflake] fix inconsistencies in snowflake resource (#12633)
by @jamiedemaria
[ui] Update permissions for launching jobs and materializing assets (#12681)
by @hellendag
[For 1.2] Change default run monitoring settings (#11512)
by @gibsondan
[For 1.2] Don't include run/job tags in k8s_job_ops k8s config computations (#12345)
by @gibsondan
Remove Partitioned Schedules from docs, fix dagit staleStatusCauses mocks (#12742)
by @smackesey
[Sensor Testing] Add "Test again" button (#12735)
by @salazarm
[1.2.0] [refactor] Delete DagsterTypeMaterializer (#12516)
by @smackesey
change DynamicPartitionsDefinition.__repr__ (#12754)
by @sryza
Recommended Project Structure Guide (#12656)
by @odette-elementl
[pythonic config] Add test showcasing use of Pydantic validators (#12536)
by @benpankow
fix serialization of TableRecord (#10731)
by @sryza
[dagster-gcp-pandas] revert flaky test (#12748)
by @jamiedemaria
[typing/static] PartitionsDefinition covariant type var (#12284)
by @smackesey
[rename] LogicalVersion -> DataVersion (#12500)
by @smackesey
[rename] LogicalVersion -> DataVersion in gql/dagit (#12501)
by @smackesey
[rename] Rename LogicalVersion -> DataVersion in docs (#12503)
by @smackesey
[dagster-airflow] add
make_persistent_airflow_db_resource (#12305)
by @Ramshackle-Jamathon
[ui] Remove usePermissionsDEPRECATED (#12771)
by @hellendag
[Asset Details Page] Auto-select partition in materialization dialog. (#12734)
by @salazarm
feat(databricks)!: remove
create_databricks_job_op (#12600)
by @rexledesma
Make permissions_for_location require keyword args (#12774)
by @gibsondan
Remove DynamicPartitionsDefinitions API methods (#12744)
by @clairelin135
Set default memory/CPU for new ECS tasks based on runtime platform (#12767)
by @gibsondan
cron_schedule validation for time window partitions (#12761)
by @prha
update some guide titles and descriptions (#12775)
by @sryza
add primary keys to all run tables (#12711)
by @prha
document PartitionMappings in partitions concepts page (#12768)
by @sryza
make sure kv/daemon_heartbeat queries explicitly enumerate columns (#12789)
by @prha
update API docs for freshness policies (#12788)
by @OwenKephart
[apidoc] asset_selection repository -> Definitions (#11303)
by @yuhan
Fix typing on mem_io_manager (#12791)
by @dpeng817
[docs] add note about biquery temp tables (#12747)
by @jamiedemaria
Remove deprecated MetadataEntry constructors, update
entry_data internal refs (#12724)
by @smackesey
[dagster-airflow] persistent db docs (#12485)
by @Ramshackle-Jamathon
[pythonic resources][fix] Fix inheriting attributes when extending Pythonic resources (#12781)
by @benpankow
MetadataEntryUnion (#12725)
by @smackesey
[docs] - Update RBAC docs for Cloud (#12752)
by @erinkcochran87
[dagit] Update the asset partitions / events view after run failures (#12798)
by @bengotow
[dagit] Asset node rendering tweaks (#12764, #12765) (#12794)
by @bengotow
Reflect dynamically-added partitions in asset sidebar immediately (#12778)
by @salazarm
[Create Partition Dialog] Autofocus input (#12777)
by @salazarm
Remove PartitionMetadataEntry (#12726)
by @smackesey
Maintain a separate cursor in the asset partition cache pointing back to the earliest in progress run (#12782)
by @johannkm
[ui] Run logs: make Timestamp the first column (#12805)
by @hellendag
[snowflake-pyspark] refactor spark session creation in tests (#12738)
by @jamiedemaria
[db io managers] refactor tests to test table creation (#12739)
by @jamiedemaria
[dagit] Fix yaml editor help context when indented on a new line (#12537) (#12804)
by @bengotow
make context.upstream_output.log work for source assets (#12787)
by @sryza
[typing/runtime] serdes (#12523)
by @smackesey
[dagit] Show “Observe” on source asset details pages, not “Materialize" (#12803)
by @bengotow
[ui] Disable "Open in launchpad" based on permissions (#12817)
by @hellendag
Add a way to cause partition health data to refetch without passing around refetch callbacks (#12822)
by @salazarm
[ui] Fix space oddities on Schedules overview table (#12810)
by @hellendag
[ESLint] Update missing graphql variable type rule to check mutations and subscriptions too (#12779)
by @salazarm
Test get and set new asset cache fields (#12820)
by @johannkm
[duckdb-polars] fix readme (#12499)
by @jamiedemaria
[freshness-refactor][1/n] Separate part of CachingInstanceQueryer into CachingDataTimeResolver (#12809)
by @OwenKephart
[ui] Affordance for copying asset key (#12829)
by @hellendag
[fix][dagit] Allow resources page to scroll (#12827)
by @benpankow
[async op] use asyncio.run (#12785)
by @alangenfeld
[dagster-airflow] remove double encoding of timezones (#12811)
by @Ramshackle-Jamathon
[ui] Support Ctrl+K to trigger search (#12840)
by @hellendag
Virtualize TagSelector component (#12841)
by @salazarm
[Launchpad] Allow adding new dynamic partition from launchpad UI (#12757)
by @salazarm
[tox] download latest pip (#12821)
by @alangenfeld
[dagster-snowflake] fix permissions issue when creating schemas (#12802)
by @jamiedemaria
[pythonic config] Special rendering for env vars in UI (#12446)
by @benpankow
nothing input toy (#12849)
by @sryza
latestRunForPartition gql (#12845)
by @johannkm
[dagster-dbt] add support for node_info_to_definition_metadata_fn (#12831)
by @OwenKephart
Remove nothing types from asset graph (#12848)
by @salazarm
[TagSelector] Allow filtering tags in dropdown (#12844)
by @salazarm
Add a tooltip on asset nodes in the graph (#12853)
by @salazarm
[pythonic resources] Keep track of utilized env vars in external repo data (#12557)
by @benpankow
Changelog 1.2.0 (#12851)
by @dpeng817
add a local download url fallback for GCS (#12815)
by @prha
[freshness-refactor][2/n] Reorganize/Rename/Remove/Document CachingInstanceQueryer methods (#12813)
by @OwenKephart
fix type annotation for partition_time_window (#12850)
by @sryza
Revert "fix type annotation for partition_time_window" (#12860)
by @sryza
Automation: versioned docs for 1.2.0
by @elementl-devtools
Add volatility property to CachingStaleStatusResolver (#12855)
by @smackesey
Update CHANGES.md (#12864)
by @Ramshackle-Jamathon
[docs] - Add doc checklist to PR template (#12861)
by @erinkcochran87
Fix partition_time_window type error (#12838)
by @elben10
Add 1.2.0 changes to migration.md (#12866)
by @clairelin135
Fix config w/ dynamic partitions error (#12710)
by @clairelin135
[1.2] make ScheduleEvaluationContext.scheduled_execution_time non-optional (#12623)
by @sryza
asset materialize CLI (#12691)
by @sryza
[refactor] serdes pack/deserialize APIs (#12524)
by @smackesey
[refactor] MayHaveInstanceWeakRef error on access non-existent _instance (#12553)
by @smackesey
asset list command (#12790)
by @sryza
fixups to config_schedule.py (#12874)
by @sryza
Fix some upcoming lint errors in docstrings (#12704)
by @charliermarsh
[db io managers] support self dependent assets in db io managers (#12700)
by @jamiedemaria
Fix markdown links in changelog (#12877)
by @johannkm
Fix dagster-k8s job execution when a job has more than 1 pod (#12731)
by @Taadas
take grpcio-health-checking pins out of backcompat suite (#12876)
by @gibsondan
Fix ruff (#12879)
by @gibsondan
need to explicitly return a known existing column for updates (#12883)
by @prha
Fix docs build (#12884)
by @smackesey
add 1.2.1 changelog (#12887)
by @prha
add SpecificPartitionsPartitionMapping (#12878)
by @sryza
Automation: versioned docs for 1.2.1
by @elementl-devtools
[docs] - Apply style guide to Asset versioning and caching guide (#12895)
by @erinkcochran87
[dagster-ui] Sync the search filter to the query string on most pages (#12899)
by @bengotow
on asset backfills, propagate backfill tags to runs (#12886)
by @sryza
Support SourceAssets in load_asset_value (#12859)
by @sryza
Fix transitive resource deps for asset value loader (#12872)
by @dpeng817
[typing/static] telemetry (#12714)
by @smackesey
add docs page on asset selection syntax (#12871)
by @sryza
Add dropdown for materializing using launchpad (#12852)
by @salazarm
[ui] Refactor permissions objects (#12903)
by @hellendag
avoid custom PartitionMapping on IO manager concept page (#12902)
by @sryza
[bk] Add changelog check step (#12865)
by @benpankow
tutorial intro tweaks (#12780)
by @sryza
Move docs style guidelines from pull request template to contribution guide (#12875)
by @sryza
remove support for legacy APIs from validate_run_config (#12881)
by @sryza
make reconciliation perf test names easier to scan, and turn them all on (#12908)
by @sryza
Make fetch_flattened_time_window_ranges support arbitrary statuses (#12863)
by @johannkm
Build schedule from multipartitioned job (#12907)
by @clairelin135
[ui] Clean up temporary permission code (#12923)
by @hellendag
[op] error on multiple values for argument (#12473)
by @alangenfeld
test assets in dynamic re-execution (#12651)
by @alangenfeld
Support requiring resources in sensors, experimentally (#12401)
by @benpankow
Support requiring resources in schedules, experimentally (#12697)
by @benpankow
[pythonic config] support Pydantic constrained types (#12703)
by @benpankow
[docs] Add env var docs to Pythonic config experimental docs (#12740)
by @benpankow
[pythonic resources] Surface utilized env vars in GraphQL (#12558)
by @benpankow
[dagit] Allow the lineage tab to appear before the asset definition has loaded (#12191) (#12814)
by @bengotow
Support defaulting to selected partitions for Multi-partitioned Assets (#12856)
by @salazarm
fix execution plan step output collisions (#12799)
by @alangenfeld
[pythonic config] Fix using RunConfig with optional config fields (#12933)
by @benpankow
[Partitions] Use OrdinalPartitionSelector for STATIC partitioned assets (#12919)
by @salazarm
fix ruff (#12936)
by @alangenfeld
Unpin grpcio on dagster for python 3.11 (#12917)
by @gibsondan
Allow setting the job_namespace for the celery k8s run launcher (#12911)
by @gibsondan
[dagster-dbt] add cron_schedule_timezone to set of properties parsed from dbt config (#12904)
by @OwenKephart
Redesign partition backfill modal (#12928)
by @salazarm
Fix error reporter infinite loop (#12941)
by @salazarm
Add Python 3.11 to dagster buildkite (#12723)
by @gibsondan
Bind top-level resources to jobs at Definitions-time (#12430)
by @benpankow
[asset-reconciliation] Do not reconcile partitions involved in active asset backfills (#12926)
by @OwenKephart
[asset-reconciliation] Fix behavior that could cause overly-aggressive updates (#12940)
by @OwenKephart
improve execution plan snapshot use in execute_run (#12660)
by @alangenfeld
open backfill options section by default (#12957)
by @salazarm
[Partition Backfill Dialog] Update backfill options spacing (#12959)
by @salazarm
Resolve transitive resource deps for schedules and sensors (#12946)
by @benpankow
changelog 1.2.2 (#12960)
by @yuhan
Fix pandera tests (#12947)
by @smackesey
[dagit] Use pure-asset backfills instead of hidden asset job backfills (#12948)
by @bengotow
1.2.2
by @elementl-devtools