Skip to content

Commit f8e564c

Browse files
vidiyala99claude
andcommitted
[dagster-cloud-cli] Fix uv deployment: detect pip/uv for local package builds
Problem ------- In uv-managed virtualenvs (uv venv --no-pip), pip is absent from the interpreter. The PEX builder's _build_local_package hard-coded python -m pip install for pyproject.toml packages, causing these deployments to fail with a missing pip error. Changes ------- - Add package_manager.py with PackageManager (@record) and detect_package_manager(): probe pip first, fall back to uv, raise a clear error if neither is available - Detect package manager once per build (not per package) to avoid repeated 15-second subprocess probes on multi-package deploys - Store the shutil.which-resolved interpreter path in PackageManager so uv's --python flag always receives an absolute path, regardless of caller cwd - Align the upfront pyproject.toml scan with per-directory routing: exclude dirs that have a co-located setup.py (setup.py always wins in _build_local_package), removing the detection/routing inconsistency - Fix docker_utils.py shell injection: replace shell=True + f-string composition with subprocess.run(..., input=password.encode()) - Add unit tests (TestDetectPackageManager, TestPackageManagerCommands, TestBuildPexUsingSetupPy) and integration tests for real pip/uv envs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent d5988f1 commit f8e564c

555 files changed

Lines changed: 22053 additions & 6241 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.buildkite/buildkite-shared/buildkite_shared/context.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,11 @@ def get_package(self, name: str) -> "PythonPackage":
164164
norm_name = name.replace("_", "-")
165165
if norm_name not in self._packages:
166166
all_packages_str = "\n".join([pkg.name for pkg in sorted(self._packages.values())])
167-
raise Exception(f"Could not find {name} in package list. Packages:\n{all_packages_str}")
167+
raise Exception(
168+
f"Could not find {name} in package list. Packages are discovered via"
169+
" `git ls-files '**/tox.ini'` — ensure the package has a tox.ini file committed"
170+
f"and tracked by git.\nPackages:\n{all_packages_str}"
171+
)
168172
return self._packages[norm_name]
169173

170174
def has_package(self, name: str) -> bool:
@@ -267,8 +271,15 @@ def has_component_integration_changes(self) -> bool:
267271
for path in self.changed_files
268272
)
269273

270-
def has_dg_or_component_integration_changes(self) -> bool:
271-
return self.has_dg_changes() or self.has_component_integration_changes()
274+
def has_rest_resources_changes(self) -> bool:
275+
return any("dagster-rest-resources" in str(path) for path in self.changed_files)
276+
277+
def has_dg_or_component_integration_or_rest_resource_changes(self) -> bool:
278+
return (
279+
self.has_dg_changes()
280+
or self.has_component_integration_changes()
281+
or self.has_rest_resources_changes()
282+
)
272283

273284
def has_storage_test_fixture_changes(self) -> bool:
274285
return any(

.buildkite/dagster-buildkite/dagster_buildkite/steps/packages.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -826,12 +826,11 @@ def _library_packages_with_custom_config(ctx: BuildkiteContext) -> list[PackageS
826826
PackageSpec(
827827
oss_path("python_modules/libraries/dagster-dg-cli"),
828828
pytest_tox_factors=[
829-
ToxFactor("general", splits=3),
830-
ToxFactor("docs"),
829+
ToxFactor("general"),
831830
ToxFactor("plus"),
832831
],
833832
env_vars=["SHELL"],
834-
force_run_fn=BuildkiteContext.has_dg_or_component_integration_changes,
833+
force_run_fn=BuildkiteContext.has_dg_or_component_integration_or_rest_resource_changes,
835834
# general tests depend on dagster-dbt which does not support Python 3.14
836835
unsupported_python_versions=(
837836
lambda tox_factor: (
@@ -1000,6 +999,13 @@ def _library_packages_with_custom_config(ctx: BuildkiteContext) -> list[PackageS
1000999
],
10011000
force_run_fn=BuildkiteContext.has_storage_test_fixture_changes,
10021001
),
1002+
PackageSpec(
1003+
oss_path("python_modules/libraries/dagster-rest-resources"),
1004+
pytest_tox_factors=[
1005+
ToxFactor("default"),
1006+
],
1007+
force_run_fn=BuildkiteContext.has_rest_resources_changes,
1008+
),
10031009
PackageSpec(
10041010
oss_path("python_modules/libraries/dagster-twilio"),
10051011
env_vars=["TWILIO_TEST_ACCOUNT_SID", "TWILIO_TEST_AUTH_TOKEN"],

.claude/python_packages.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -111,13 +111,14 @@ Quick reference for Python packages in the Dagster repository.
111111

112112
## utilities
113113

114-
**dagster-shared**: `python_modules/libraries/dagster-shared`
115-
**dagster-ssh**: `python_modules/libraries/dagster-ssh`
116-
**dagster-github**: `python_modules/libraries/dagster-github`
117-
**dagster-datahub**: `python_modules/libraries/dagster-datahub`
118114
**dagster-census**: `python_modules/libraries/dagster-census`
115+
**dagster-datahub**: `python_modules/libraries/dagster-datahub`
116+
**dagster-github**: `python_modules/libraries/dagster-github`
119117
**dagster-hightouch**: `python_modules/libraries/dagster-hightouch`
120118
**dagster-managed-elements**: `python_modules/libraries/dagster-managed-elements`
119+
**dagster-rest-resources**: `python_modules/libraries/dagster-rest-resources`
120+
**dagster-shared**: `python_modules/libraries/dagster-shared`
121+
**dagster-ssh**: `python_modules/libraries/dagster-ssh`
121122

122123
## cli tools
123124

@@ -137,5 +138,5 @@ Quick reference for Python packages in the Dagster repository.
137138
All paths are relative to the repository root and follow these patterns:
138139

139140
- Core: `python_modules/{package-name}`
140-
- Libraries: `python_modules/libraries/{package-name}`
141+
- Libraries: `dagster-oss/python_modules/libraries/{package-name}`
141142
- Testing: Most packages have `{package-name}_tests/` subdirectories

.github/workflows/build-docs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ jobs:
5656
fi
5757
5858
- name: Checkout repository
59-
uses: actions/checkout@v4
59+
uses: actions/checkout@v6
6060
with:
6161
fetch-depth: ${{ env.FETCH_DEPTH }}
6262

.github/workflows/build-integration-registry.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
runs-on: ubuntu-latest
2424
steps:
2525
- name: Checkout repository
26-
uses: actions/checkout@v4
26+
uses: actions/checkout@v6
2727
with:
2828
fetch-depth: 1
2929

.github/workflows/check-docs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
check-frontmatter:
1313
runs-on: ubuntu-latest
1414
steps:
15-
- uses: actions/checkout@v4
15+
- uses: actions/checkout@v6
1616

1717
- name: Install uv
1818
uses: astral-sh/setup-uv@v5

.github/workflows/update-dagster-ui-yarn-lock.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
contents: write
1414
pull-requests: write
1515
steps:
16-
- uses: actions/checkout@v4
16+
- uses: actions/checkout@v6
1717

1818
- name: Enable Corepack
1919
run: corepack enable

CHANGES.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,61 @@
11
# Changelog
22

3+
## 1.13.0 (core) / 0.29.0 (libraries)
4+
5+
### Major Changes Since 1.12.0
6+
7+
- **AI-assisted development**: Released [dagster-io/skills](https://github.com/dagster-io/skills), a collection of Dagster-focused AI skills for coding agents like Claude Code, OpenAI Codex, and others. Expanded `dg api` commands for programmatic inspection of assets, runs, jobs, schedules, and more.
8+
- **Partitioned asset checks**: Asset checks can now target specific partitions of an upstream asset, aligning data quality logic with how partitioned data is produced and monitored.
9+
- **State-backed components enabled by default**: Integrations that depend on external metadata (dbt, Fivetran, Airbyte, Tableau, Looker, etc.) now use persisted local state by default, providing a more predictable code location loading experience.
10+
- **Virtual assets (preview)**: New `is_virtual` parameter on `@asset` and `AssetSpec` for modeling assets like database views that automatically reflect upstream changes without explicit materialization.
11+
- **20+ new components**: Added or expanded components for dbt Cloud, Spark, Azure (Blob Storage, ADLS2), GCP (BigQuery, GCS, Dataproc), Databricks, Tableau, Looker, Census, Polytomic, and more. Integrations gained richer observability, metadata, and operational support.
12+
- **Deeper integration support**: dbt Cloud supports partitioned assets; Databricks gained job-level subsetting and auto-cancel on run termination; Fivetran added polling sensors, retry-on-reschedule, and resync support; BI integrations auto-enrich assets with table metadata for cross-system lineage.
13+
- **Dagster+ improvements**: Organization-level timezone settings, service users for Pro accounts, more resilient code server redeploy behavior, improved agent failure recovery, and expanded insights and alerting workflows.
14+
15+
### Breaking Changes
16+
17+
- Removed deprecated `external_asset_from_spec` and `external_assets_from_specs`. Use `AssetSpec` inputs directly to `Definitions(...)` or `AssetsDefinition(specs=[...])` instead.
18+
- Removed deprecated single-`AssetKey` `deps` argument support from asset dependencies. Use a sequence of `AssetDep` objects instead.
19+
- Removed deprecated `get_all_asset_specs` from `Definitions`.
20+
- Removed deprecated `legacy_freshness_policy` parameter from `@observable_source_asset`.
21+
- Removed deprecated `auto_observe_interval_minutes` parameter from `@observable_source_asset`.
22+
- Removed deprecated `legacy_freshness_policies_by_output_name` parameter from `AssetsDefinition`.
23+
- Removed deprecated `load_component_at_path` from `ComponentLoadContext`. Use `context.load_component` instead.
24+
- Removed deprecated `build_defs_at_path` from `ComponentLoadContext`.
25+
- [dagster-airbyte] Removed deprecated `AirbyteState` enum (use `AirbyteJobStatusType` instead) and removed deprecated `legacy_freshness_policy` and `auto_materialize_policy` parameters from `build_airbyte_assets()`.
26+
- [dagster-looker] Removed deprecated `DagsterLookerResource.build_defs`, `get_asset_key`, `get_dashboard_asset_key`, `get_explore_asset_key`, `get_view_asset_key` methods, and `Type[DagsterLookerApiTranslator]` support from API helpers.
27+
- [dagster-powerbi] Removed deprecated `PowerBIWorkspace.build_defs()`, translator key helpers (use `get_asset_spec()` instead), and `Type[DagsterPowerBITranslator]` support in `load_powerbi_asset_specs()` (pass an instance instead).
28+
- [dagster-sigma] Removed deprecated `SigmaOrganization.build_defs()`, `DagsterSigmaTranslator.get_asset_key()` (use `get_asset_spec(...).key` instead), and `Type[DagsterSigmaTranslator]` support in `load_sigma_asset_specs()` (pass an instance instead).
29+
30+
### New
31+
32+
- (Preview) Added support for virtual assets. The `@asset` decorator and `AssetSpec` now accept an `is_virtual` parameter for defining assets that represent views or derived tables that don't need to be materialized. Virtual assets are supported in staleness calculations, execution planning, and declarative automation.
33+
- Job-level config defaults are now applied when partial config is provided to a run.
34+
- [dagster-dbt] Added `enable_dbt_views_as_virtual_assets` setting to `DbtTranslatorSettings` for automatically treating dbt views as virtual assets.
35+
36+
### Bugfixes
37+
38+
- Fixed an issue where a sensor targeting a job with `run_tags` and specifying an `asset_selection` in the `RunRequest` would not apply the job's `run_tags` to the resulting run.
39+
- Fixed a potential error in YAML config snapshot conversion when encountering `None` fields.
40+
- [dg] Fixed `dg plus deploy configure` generating a GitHub Action that used Docker instead of the PEX build strategy.
41+
- [dagster-cloud-cli] PR comments in CI are now scoped by deployment name, preventing overwrites across deployments.
42+
- [ui] Fixed "Missing" partition selection for time-based partitioned assets.
43+
- [ui] Fixed raw log display rendering after `ansi-to-react` library update.
44+
- [ui] "Terminate all runs" dialog now handles extremely large sets of runs more reliably.
45+
46+
### Documentation
47+
48+
- Added Dagster+ agent configuration page for serverless and hybrid deployments.
49+
- Added data portability documentation page.
50+
- Reorganized run isolation documentation for hybrid and serverless deployments.
51+
- Added ELT pipeline example with dlt and Sling.
52+
53+
### Dagster Plus
54+
55+
- Added SCIM Groups filter support for `members.value eq` queries.
56+
- Fixed an issue where the Dagster+ Kubernetes agent would emit log noise about `DAGSTER_CLOUD_RAW_GIT_URL` and `DAGSTER_CLOUD_GIT_URL` environment variables when `onlyAllowUserDefinedK8sConfigFields` was set.
57+
- Fixed incorrect alert type label for metrics alerts.
58+
359
## 1.12.22 (core) / 0.28.22 (libraries)
460

561
### New
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
**/*.mdx
2+
!index.md

docs/docs/api/api-lifecycle/filtering-api-lifecycle-warnings.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
description: Filter Dagster API lifecycle warnings using the Python warnings module.
3-
sidebar_position: 200
3+
sidebar_position: 100
44
title: Filtering API lifecycle warnings
55
---
66

0 commit comments

Comments
 (0)