Created
December 9, 2025 20:39
-
-
Save cmpadden/fe6fd88b6c7cd4961d6fe17221fe7847 to your computer and use it in GitHub Desktop.
git diff colton/python-3-14 "12-08-support_3.14" | pbcopy
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/docs/docs/getting-started/installation.md b/docs/docs/getting-started/installation.md | |
| index ec6171f82d..88ec13bfcf 100644 | |
| --- a/docs/docs/getting-started/installation.md | |
| +++ b/docs/docs/getting-started/installation.md | |
| @@ -8,7 +8,7 @@ import InstallUv from '@site/docs/partials/\_InstallUv.md'; | |
| :::note | |
| -To follow the steps in this guide, you'll need to install [Python 3.10](https://www.python.org/downloads/) or higher. **Python 3.14 is recommended**. | |
| +To follow the steps in this guide, you'll need to install [Python 3.10](https://www.python.org/downloads/) or higher. **Python 3.13 is recommended**. | |
| ::: | |
| diff --git a/docs/sphinx/_ext/sphinx-click/tox.ini b/docs/sphinx/_ext/sphinx-click/tox.ini | |
| index 6922d8b16c..21d9c2f79c 100644 | |
| --- a/docs/sphinx/_ext/sphinx-click/tox.ini | |
| +++ b/docs/sphinx/_ext/sphinx-click/tox.ini | |
| @@ -1,6 +1,6 @@ | |
| [tox] | |
| minversion = 2.0 | |
| -envlist = py{310,311,312,313}-click{8,8-async},style,docs | |
| +envlist = py{310,311,312,313,314}-click{8,8-async},style,docs | |
| [testenv] | |
| passenv = | |
| @@ -47,6 +47,7 @@ python = | |
| 3.11: py311 | |
| 3.12: py312 | |
| 3.13: py313 | |
| + 3.14: py314 | |
| [coverage:run] | |
| branch = True | |
| diff --git a/docs/sphinx/_ext/sphinx-mdx-builder/tox.ini b/docs/sphinx/_ext/sphinx-mdx-builder/tox.ini | |
| index 201f0727fd..0b996e6fee 100644 | |
| --- a/docs/sphinx/_ext/sphinx-mdx-builder/tox.ini | |
| +++ b/docs/sphinx/_ext/sphinx-mdx-builder/tox.ini | |
| @@ -1,11 +1,12 @@ | |
| [tox] | |
| minversion = 4 | |
| -envlist = | |
| +envlist = | |
| python3.9-sphinx{7,8} | |
| python3.10-sphinx{7,8} | |
| python3.11-sphinx{7,8} | |
| python3.12-sphinx{7,8} | |
| python3.13-sphinx{7,8} | |
| + python3.14-sphinx{7,8} | |
| [testenv] | |
| @@ -21,6 +22,7 @@ basepython = | |
| python3.11: python3.11 | |
| python3.12: python3.12 | |
| python3.13: python3.13 | |
| + python3.14: python3.14 | |
| deps = | |
| pytest | |
| diff --git a/examples/components_yaml_checks_dsl/uv.lock b/examples/components_yaml_checks_dsl/uv.lock | |
| index 67d109a447..f41891fd7d 100644 | |
| --- a/examples/components_yaml_checks_dsl/uv.lock | |
| +++ b/examples/components_yaml_checks_dsl/uv.lock | |
| @@ -1,6 +1,6 @@ | |
| version = 1 | |
| revision = 1 | |
| -requires-python = ">=3.9, <3.15" | |
| +requires-python = ">=3.9, <3.13" | |
| resolution-markers = [ | |
| "python_full_version >= '3.12'", | |
| "python_full_version == '3.11.*'", | |
| diff --git a/examples/docs_projects/project_ask_ai_dagster/uv.lock b/examples/docs_projects/project_ask_ai_dagster/uv.lock | |
| index 9d1ac3471c..886e888613 100644 | |
| --- a/examples/docs_projects/project_ask_ai_dagster/uv.lock | |
| +++ b/examples/docs_projects/project_ask_ai_dagster/uv.lock | |
| @@ -1,5 +1,5 @@ | |
| version = 1 | |
| -requires-python = ">=3.9, <3.15" | |
| +requires-python = ">=3.9, <3.14" | |
| resolution-markers = [ | |
| "python_full_version < '3.11'", | |
| "python_full_version == '3.11.*'", | |
| diff --git a/examples/docs_projects/project_atproto_dashboard/uv.lock b/examples/docs_projects/project_atproto_dashboard/uv.lock | |
| index c363025be6..7e95e016dc 100644 | |
| --- a/examples/docs_projects/project_atproto_dashboard/uv.lock | |
| +++ b/examples/docs_projects/project_atproto_dashboard/uv.lock | |
| @@ -1,5 +1,5 @@ | |
| version = 1 | |
| -requires-python = ">=3.9, <3.15" | |
| +requires-python = ">=3.9, <3.14" | |
| resolution-markers = [ | |
| "python_full_version < '3.10'", | |
| "python_full_version == '3.10.*'", | |
| diff --git a/examples/docs_projects/project_components_pdf_extraction/uv.lock b/examples/docs_projects/project_components_pdf_extraction/uv.lock | |
| index d28636c481..38f888fe26 100644 | |
| --- a/examples/docs_projects/project_components_pdf_extraction/uv.lock | |
| +++ b/examples/docs_projects/project_components_pdf_extraction/uv.lock | |
| @@ -1,5 +1,5 @@ | |
| version = 1 | |
| -requires-python = ">=3.9, <3.15" | |
| +requires-python = ">=3.9, <3.13" | |
| resolution-markers = [ | |
| "python_full_version < '3.10' and platform_machine == 'arm64' and platform_system == 'Darwin' and sys_platform == 'darwin'", | |
| "python_full_version < '3.10' and platform_machine == 'arm64' and platform_system != 'Darwin' and sys_platform == 'darwin'", | |
| diff --git a/examples/docs_projects/project_dbt/pyproject.toml b/examples/docs_projects/project_dbt/pyproject.toml | |
| index 64a13e6beb..2f444290bd 100644 | |
| --- a/examples/docs_projects/project_dbt/pyproject.toml | |
| +++ b/examples/docs_projects/project_dbt/pyproject.toml | |
| @@ -33,3 +33,4 @@ registry_modules = [ | |
| "project_dbt.components.*", | |
| ] | |
| + | |
| diff --git a/examples/docs_projects/project_dbt/uv.lock b/examples/docs_projects/project_dbt/uv.lock | |
| index 74b2ef2415..40f81282e1 100644 | |
| --- a/examples/docs_projects/project_dbt/uv.lock | |
| +++ b/examples/docs_projects/project_dbt/uv.lock | |
| @@ -1,5 +1,5 @@ | |
| version = 1 | |
| -requires-python = ">=3.9, <3.15" | |
| +requires-python = ">=3.9, <3.14" | |
| resolution-markers = [ | |
| "python_full_version < '3.10'", | |
| "python_full_version == '3.10.*'", | |
| diff --git a/examples/docs_projects/project_dspy/pyproject.toml b/examples/docs_projects/project_dspy/pyproject.toml | |
| index 3294220299..149ee40473 100644 | |
| --- a/examples/docs_projects/project_dspy/pyproject.toml | |
| +++ b/examples/docs_projects/project_dspy/pyproject.toml | |
| @@ -35,4 +35,4 @@ registry_modules = ["project_dspy.components.*"] | |
| # Enable additional lint rule set: "I" = isort (import sorting) rules. | |
| lint.extend-select = ["I"] | |
| -extend-exclude = ["*.ipynb"] # Ignore Jupyter notebooks | |
| +extend-exclude = ["*.ipynb"] # Ignore Jupyter notebooks | |
| \ No newline at end of file | |
| diff --git a/examples/docs_projects/project_dspy/uv.lock b/examples/docs_projects/project_dspy/uv.lock | |
| index 1117874d0d..6c41cc0a54 100644 | |
| --- a/examples/docs_projects/project_dspy/uv.lock | |
| +++ b/examples/docs_projects/project_dspy/uv.lock | |
| @@ -1,5 +1,5 @@ | |
| version = 1 | |
| -requires-python = ">=3.9, <3.15" | |
| +requires-python = ">=3.9, <3.14" | |
| resolution-markers = [ | |
| "python_full_version < '3.10'", | |
| "python_full_version == '3.10.*'", | |
| diff --git a/examples/docs_projects/project_etl_tutorial/uv.lock b/examples/docs_projects/project_etl_tutorial/uv.lock | |
| index f31ef7d85e..eacb258809 100644 | |
| --- a/examples/docs_projects/project_etl_tutorial/uv.lock | |
| +++ b/examples/docs_projects/project_etl_tutorial/uv.lock | |
| @@ -1,5 +1,5 @@ | |
| version = 1 | |
| -requires-python = ">=3.9, <3.15" | |
| +requires-python = ">=3.9, <3.14" | |
| resolution-markers = [ | |
| "python_full_version < '3.11'", | |
| "python_full_version == '3.11.*'", | |
| diff --git a/examples/docs_projects/project_mini/uv.lock b/examples/docs_projects/project_mini/uv.lock | |
| index f7bfe599a7..c9c319bfb8 100644 | |
| --- a/examples/docs_projects/project_mini/uv.lock | |
| +++ b/examples/docs_projects/project_mini/uv.lock | |
| @@ -1,5 +1,5 @@ | |
| version = 1 | |
| -requires-python = ">=3.9, <3.15" | |
| +requires-python = ">=3.9, <3.14" | |
| resolution-markers = [ | |
| "python_full_version < '3.10'", | |
| "python_full_version == '3.10.*'", | |
| diff --git a/examples/docs_projects/project_ml/pyproject.toml b/examples/docs_projects/project_ml/pyproject.toml | |
| index 57c0395115..21cb9f21fe 100644 | |
| --- a/examples/docs_projects/project_ml/pyproject.toml | |
| +++ b/examples/docs_projects/project_ml/pyproject.toml | |
| @@ -28,4 +28,4 @@ directory_type = "project" | |
| [tool.dg.project] | |
| root_module = "project_ml" | |
| -registry_modules = ["project_ml.components.*"] | |
| +registry_modules = ["project_ml.components.*"] | |
| \ No newline at end of file | |
| diff --git a/examples/docs_projects/project_ml/uv.lock b/examples/docs_projects/project_ml/uv.lock | |
| index a813d31509..3270e8701e 100644 | |
| --- a/examples/docs_projects/project_ml/uv.lock | |
| +++ b/examples/docs_projects/project_ml/uv.lock | |
| @@ -1,5 +1,5 @@ | |
| version = 1 | |
| -requires-python = ">=3.9, <3.15" | |
| +requires-python = ">=3.9, <3.14" | |
| resolution-markers = [ | |
| "python_full_version < '3.10'", | |
| "python_full_version == '3.10.*'", | |
| diff --git a/examples/docs_snippets/docs_snippets/guides/tutorials/dagster_tutorial/uv.lock b/examples/docs_snippets/docs_snippets/guides/tutorials/dagster_tutorial/uv.lock | |
| index cb63e5d17e..dad7d1f41b 100644 | |
| --- a/examples/docs_snippets/docs_snippets/guides/tutorials/dagster_tutorial/uv.lock | |
| +++ b/examples/docs_snippets/docs_snippets/guides/tutorials/dagster_tutorial/uv.lock | |
| @@ -1,5 +1,5 @@ | |
| version = 1 | |
| -requires-python = ">=3.9, <3.15" | |
| +requires-python = ">=3.9, <3.14" | |
| resolution-markers = [ | |
| "python_full_version < '3.10'", | |
| "python_full_version == '3.10.*'", | |
| diff --git a/examples/docs_snippets/docs_snippets_tests/snippet_checks/guides/dg/test_migrating_project/my-existing-project-uv/uv.lock b/examples/docs_snippets/docs_snippets_tests/snippet_checks/guides/dg/test_migrating_project/my-existing-project-uv/uv.lock | |
| index 71f22455f7..6693c5f5b0 100644 | |
| --- a/examples/docs_snippets/docs_snippets_tests/snippet_checks/guides/dg/test_migrating_project/my-existing-project-uv/uv.lock | |
| +++ b/examples/docs_snippets/docs_snippets_tests/snippet_checks/guides/dg/test_migrating_project/my-existing-project-uv/uv.lock | |
| @@ -1,6 +1,6 @@ | |
| version = 1 | |
| revision = 1 | |
| -requires-python = ">=3.9, <3.15" | |
| +requires-python = ">=3.9, <3.13" | |
| resolution-markers = [ | |
| "python_full_version >= '3.12'", | |
| "python_full_version == '3.11.*'", | |
| diff --git a/examples/quickstart_etl/pyproject.toml b/examples/quickstart_etl/pyproject.toml | |
| index 3d582303a4..64aa607a98 100644 | |
| --- a/examples/quickstart_etl/pyproject.toml | |
| +++ b/examples/quickstart_etl/pyproject.toml | |
| @@ -1,6 +1,6 @@ | |
| [project] | |
| name = "quickstart_etl" | |
| -requires-python = ">=3.10,<3.14" | |
| +requires-python = ">=3.10,<3.15" | |
| version = "0.1.0" | |
| dependencies = [ | |
| "dagster", | |
| diff --git a/js_modules/dagster-ui/packages/ui-core/src/assets/LaunchAssetExecutionButton.tsx b/js_modules/dagster-ui/packages/ui-core/src/assets/LaunchAssetExecutionButton.tsx | |
| index 276b0ec691..e7ca007dec 100644 | |
| --- a/js_modules/dagster-ui/packages/ui-core/src/assets/LaunchAssetExecutionButton.tsx | |
| +++ b/js_modules/dagster-ui/packages/ui-core/src/assets/LaunchAssetExecutionButton.tsx | |
| @@ -14,6 +14,7 @@ import uniq from 'lodash/uniq'; | |
| import React, {useContext, useMemo, useState} from 'react'; | |
| import {Link} from 'react-router-dom'; | |
| import {observeEnabled} from 'shared/app/observeEnabled.oss'; | |
| +import {MaterializeButton} from 'shared/assets/MaterializeButton.oss'; | |
| import {useLaunchWithTelemetry} from 'shared/launchpad/useLaunchWithTelemetry.oss'; | |
| import {ASSET_NODE_CONFIG_FRAGMENT} from './AssetConfig'; | |
| @@ -318,7 +319,7 @@ export const LaunchAssetExecutionButton = ({ | |
| {firstOption.icon} | |
| </UnstyledButton> | |
| ) : ( | |
| - <Button | |
| + <MaterializeButton | |
| intent={primary ? 'primary' : undefined} | |
| data-testid={testId('materialize-button')} | |
| onClick={(e) => firstAction(firstOption.assetKeys, e)} | |
| @@ -337,7 +338,7 @@ export const LaunchAssetExecutionButton = ({ | |
| } | |
| > | |
| {firstOption.label} | |
| - </Button> | |
| + </MaterializeButton> | |
| )} | |
| </Tooltip> | |
| diff --git a/js_modules/dagster-ui/packages/ui-core/src/assets/MaterializeButton.oss.tsx b/js_modules/dagster-ui/packages/ui-core/src/assets/MaterializeButton.oss.tsx | |
| new file mode 100644 | |
| index 0000000000..67c9bfb21c | |
| --- /dev/null | |
| +++ b/js_modules/dagster-ui/packages/ui-core/src/assets/MaterializeButton.oss.tsx | |
| @@ -0,0 +1,3 @@ | |
| +import {Button} from '@dagster-io/ui-components'; | |
| + | |
| +export const MaterializeButton = Button; | |
| diff --git a/python_modules/automation/automation/docker/images/buildkite-test/Dockerfile b/python_modules/automation/automation/docker/images/buildkite-test/Dockerfile | |
| index 0fdf60523f..b3ead77d2a 100644 | |
| --- a/python_modules/automation/automation/docker/images/buildkite-test/Dockerfile | |
| +++ b/python_modules/automation/automation/docker/images/buildkite-test/Dockerfile | |
| @@ -56,9 +56,9 @@ RUN apt-get update -yqq \ | |
| pkg-config | |
| # Install Java (required by pyspark) - Java 17 for compatibility with both Spark 3 and 4 | |
| -COPY --from=openjdk:17-slim-buster /usr/local/openjdk-17 /usr/local/openjdk-17 | |
| -ENV JAVA_HOME /usr/local/openjdk-17 | |
| -RUN update-alternatives --install /usr/bin/java java /usr/local/openjdk-17/bin/java 1 | |
| +COPY --from=eclipse-temurin:17-jdk-jammy /opt/java/openjdk /opt/java/openjdk | |
| +ENV JAVA_HOME /opt/java/openjdk | |
| +RUN update-alternatives --install /usr/bin/java java /opt/java/openjdk/bin/java 1 | |
| # Install various packages used in running/installing/testing Dagster: | |
| # - git/make (cloning dagster, running checks defined in Makefile) | |
| @@ -66,7 +66,7 @@ RUN update-alternatives --install /usr/bin/java java /usr/local/openjdk-17/bin/j | |
| # - assorted others-- some may no longer be required, but leaving in place for now | |
| # | |
| # deb.nodesource script adds node source to apt | |
| -RUN curl -sL https://deb.nodesource.com/setup_21.x | bash - \ | |
| +RUN curl -sL https://deb.nodesource.com/setup_22.x | bash - \ | |
| # Add yarn GPG key and apt source | |
| && curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | \ | |
| gpg --dearmor -o /usr/share/keyrings/yarnkey.gpg \ | |
| @@ -90,7 +90,6 @@ RUN curl -sL https://deb.nodesource.com/setup_21.x | bash - \ | |
| rabbitmq-server \ | |
| rsync \ | |
| ssh \ | |
| - software-properties-common \ | |
| unzip \ | |
| wget \ | |
| xz-utils \ | |
| @@ -107,8 +106,9 @@ RUN wget https://github.com/fossas/fossa-cli/releases/download/v${FOSSA_VERSION} | |
| # Install Google Cloud SDK | |
| # https://cloud.google.com/sdk/docs/install#deb | |
| -# Add Google Cloud GPG key and apt source | |
| -RUN curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - \ | |
| +# Add Google Cloud GPG key and apt source (using modern method without deprecated apt-key) | |
| +RUN curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | \ | |
| + gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg \ | |
| && echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | \ | |
| tee -a /etc/apt/sources.list.d/google-cloud-sdk.list > /dev/null \ | |
| && apt-get -yqq update \ | |
| diff --git a/python_modules/automation/automation/docker/images/buildkite-test/last_updated.yaml b/python_modules/automation/automation/docker/images/buildkite-test/last_updated.yaml | |
| index 7ae3425e87..e9cd6c505c 100644 | |
| --- a/python_modules/automation/automation/docker/images/buildkite-test/last_updated.yaml | |
| +++ b/python_modules/automation/automation/docker/images/buildkite-test/last_updated.yaml | |
| @@ -1,6 +1,6 @@ | |
| -"3.10": 2025-07-23T160819 | |
| -"3.11": 2025-07-23T160819 | |
| -"3.12": 2025-07-23T160819 | |
| -"3.13": 2025-07-23T160819 | |
| -"3.14": 2025-07-23T160819 | |
| -"3.9": 2025-07-23T160819 | |
| +'3.10': 2025-07-23T160819 | |
| +'3.11': 2025-07-23T160819 | |
| +'3.12': 2025-07-23T160819 | |
| +'3.13': 2025-07-23T160819 | |
| +'3.14': 2025-12-09T171311 | |
| +'3.9': 2025-07-23T160819 | |
| diff --git a/python_modules/automation/automation/docker/images/test-project-base/last_updated.yaml b/python_modules/automation/automation/docker/images/test-project-base/last_updated.yaml | |
| index f1a601643d..cbf92135fc 100644 | |
| --- a/python_modules/automation/automation/docker/images/test-project-base/last_updated.yaml | |
| +++ b/python_modules/automation/automation/docker/images/test-project-base/last_updated.yaml | |
| @@ -1,6 +1,6 @@ | |
| -"3.10": 2025-07-02T150642 | |
| -"3.11": 2025-07-02T150642 | |
| -"3.12": 2025-07-02T150642 | |
| -"3.13": 2025-07-02T150642 | |
| -"3.14": 2025-07-02T150642 | |
| -"3.9": 2025-07-02T150642 | |
| +'3.10': 2025-07-02T150642 | |
| +'3.11': 2025-07-02T150642 | |
| +'3.12': 2025-07-02T150642 | |
| +'3.13': 2025-07-02T150642 | |
| +'3.14': 2025-12-09T171541 | |
| +'3.9': 2025-07-02T150642 | |
| diff --git a/python_modules/dagster/README.md b/python_modules/dagster/README.md | |
| index 1a4da609fe..fdde743306 100644 | |
| --- a/python_modules/dagster/README.md | |
| +++ b/python_modules/dagster/README.md | |
| @@ -71,7 +71,7 @@ Dagster is built to be used at every stage of the data development lifecycle - l | |
| If you're new to Dagster, we recommend checking out the [docs](https://docs.dagster.io) or following the hands-on [tutorial](https://docs.dagster.io/etl-pipeline-tutorial/). | |
| -Dagster is available on PyPI and officially supports Python 3.9 through Python 3.13. | |
| +Dagster is available on PyPI and officially supports Python 3.9 through Python 3.14. | |
| ```bash | |
| pip install dagster dagster-webserver | |
| diff --git a/python_modules/libraries/create-dagster/setup.py b/python_modules/libraries/create-dagster/setup.py | |
| index 057190812d..a351721b1e 100644 | |
| --- a/python_modules/libraries/create-dagster/setup.py | |
| +++ b/python_modules/libraries/create-dagster/setup.py | |
| @@ -29,6 +29,7 @@ def get_version() -> str: | |
| "Programming Language :: Python :: 3.11", | |
| "Programming Language :: Python :: 3.12", | |
| "Programming Language :: Python :: 3.13", | |
| + "Programming Language :: Python :: 3.14", | |
| "License :: OSI Approved :: Apache Software License", | |
| "Operating System :: OS Independent", | |
| ], | |
| diff --git a/python_modules/libraries/dagster-cloud-cli/dagster_cloud_cli_tests/test_pyproject_toml_support.py b/python_modules/libraries/dagster-cloud-cli/dagster_cloud_cli_tests/test_pyproject_toml_support.py | |
| index 900984066e..90a4fd059f 100644 | |
| --- a/python_modules/libraries/dagster-cloud-cli/dagster_cloud_cli_tests/test_pyproject_toml_support.py | |
| +++ b/python_modules/libraries/dagster-cloud-cli/dagster_cloud_cli_tests/test_pyproject_toml_support.py | |
| @@ -580,7 +580,7 @@ def test_get_pyproject_deps_requirements_multi_location_scenario() -> None: | |
| pyproject_content = """ | |
| [project] | |
| name = "location1" | |
| - requires-python = ">=3.9,<3.14" | |
| + requires-python = ">=3.9,<3.15" | |
| version = "0.1.0" | |
| dependencies = [ | |
| "dagster>=1.0.0", | |
| diff --git a/python_modules/libraries/dagster-cloud-cli/setup.py b/python_modules/libraries/dagster-cloud-cli/setup.py | |
| index dde0eaed65..4b6b9d51aa 100644 | |
| --- a/python_modules/libraries/dagster-cloud-cli/setup.py | |
| +++ b/python_modules/libraries/dagster-cloud-cli/setup.py | |
| @@ -29,6 +29,7 @@ def get_version() -> str: | |
| "Programming Language :: Python :: 3.11", | |
| "Programming Language :: Python :: 3.12", | |
| "Programming Language :: Python :: 3.13", | |
| + "Programming Language :: Python :: 3.14", | |
| "License :: OSI Approved :: Apache Software License", | |
| "Operating System :: OS Independent", | |
| ], | |
| diff --git a/python_modules/libraries/dagster-dg-cli/setup.py b/python_modules/libraries/dagster-dg-cli/setup.py | |
| index 3f7f7f1d29..f709c9cba9 100644 | |
| --- a/python_modules/libraries/dagster-dg-cli/setup.py | |
| +++ b/python_modules/libraries/dagster-dg-cli/setup.py | |
| @@ -29,6 +29,7 @@ def get_version() -> str: | |
| "Programming Language :: Python :: 3.11", | |
| "Programming Language :: Python :: 3.12", | |
| "Programming Language :: Python :: 3.13", | |
| + "Programming Language :: Python :: 3.14", | |
| "License :: OSI Approved :: Apache Software License", | |
| "Operating System :: OS Independent", | |
| ], | |
| diff --git a/scripts/install_dev_python_modules.py b/scripts/install_dev_python_modules.py | |
| index 0e706cb586..79e4b76778 100644 | |
| --- a/scripts/install_dev_python_modules.py | |
| +++ b/scripts/install_dev_python_modules.py | |
| @@ -127,6 +127,50 @@ def main( | |
| "python_modules/libraries/dagster-airflow", | |
| ] | |
| + # Python 3.14 exclusions - packages that depend on libraries without 3.14 wheels yet | |
| + if sys.version_info >= (3, 14): | |
| + # Many packages with native dependencies don't have Python 3.14 wheels yet | |
| + # This list should be reduced as more packages add 3.14 support | |
| + python_314_exclusions = [ | |
| + # Polars doesn't have Python 3.14 wheels yet | |
| + "dagster-deltalake-polars", | |
| + "dagster-snowflake-polars", | |
| + # Delta-rs/deltalake doesn't have Python 3.14 wheels yet | |
| + "dagster-deltalake", | |
| + # Great Expectations doesn't have Python 3.14 wheels yet | |
| + "dagster-ge", | |
| + # MLflow doesn't have Python 3.14 wheels yet | |
| + "dagster-mlflow", | |
| + # Pandera doesn't have Python 3.14 wheels yet | |
| + "dagster-pandera", | |
| + # Sling doesn't have Python 3.14 wheels yet | |
| + "dagster-sling", | |
| + "dagster-embedded-elt", # depends on sling | |
| + # PySpark doesn't have Python 3.14 wheels yet | |
| + "dagster-pyspark", | |
| + "dagster-gcp-pyspark", | |
| + "dagster-spark", # might pull in pyspark | |
| + # Datahub doesn't have Python 3.14 wheels yet | |
| + "dagster-datahub", | |
| + # Papermill/dagstermill has issues on Python 3.14 | |
| + "dagstermill", | |
| + # Airflow-based packages (airflow doesn't support 3.14 yet) | |
| + "dagster-airlift", | |
| + # Dask might not have Python 3.14 wheels yet | |
| + "dagster-dask", | |
| + # Databricks SDK might not have Python 3.14 wheels yet | |
| + "dagster-databricks", | |
| + # DLT might not have Python 3.14 wheels yet | |
| + "dagster-dlt", | |
| + # Snowflake connector doesn't have Python 3.14 wheels yet | |
| + "dagster-snowflake", | |
| + ] | |
| + editable_target_paths = [ | |
| + p | |
| + for p in editable_target_paths | |
| + if not any(exclude in p for exclude in python_314_exclusions) | |
| + ] | |
| + | |
| install_targets += list( | |
| itertools.chain.from_iterable( | |
| zip(["-e"] * len(editable_target_paths), editable_target_paths) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment