diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6901391fa..f342e9435 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,7 +24,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] - python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] steps: - uses: actions/checkout@v4 @@ -115,7 +115,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] steps: - uses: actions/checkout@v4 diff --git a/docs/how-to/environment/select-installer.md b/docs/how-to/environment/select-installer.md index e3d94b11a..4a2324774 100644 --- a/docs/how-to/environment/select-installer.md +++ b/docs/how-to/environment/select-installer.md @@ -45,7 +45,7 @@ tool = ["uv", "pip"] [tool.hatch.envs.example.overrides] matrix.tool.installer = { value = "{matrix:tool}" } matrix.tool.scripts = [ - { key = "pip", value = "{env:HATCH_UV} pip {args}", if = ["uv"] }, + { key = "pip", value = '"{env:HATCH_UV}" pip {args}', if = ["uv"] }, ] ``` @@ -53,5 +53,5 @@ Another common use case is to expose UV to all [test environments](../../config/ ```toml config-example [tool.hatch.envs.hatch-test.extra-scripts] -pip = "{env:HATCH_UV} pip {args}" +pip = '"{env:HATCH_UV}" pip {args}' ``` diff --git a/docs/plugins/environment/virtual.md b/docs/plugins/environment/virtual.md index 0e36fcb49..f78f52e4d 100644 --- a/docs/plugins/environment/virtual.md +++ b/docs/plugins/environment/virtual.md @@ -69,6 +69,7 @@ The following options are recognized for internal Python resolution. | `3.11` | | `3.12` | | `3.13` | +| `3.14` | The source of distributions is the [python-build-standalone](https://github.com/indygreg/python-build-standalone) project. diff --git a/hatch.toml b/hatch.toml index 13a053daf..2bab5bce3 100644 --- a/hatch.toml +++ b/hatch.toml @@ -23,7 +23,7 @@ post-install-commands = [ extra-args = ["--dist", "worksteal"] [envs.hatch-test.extra-scripts] -pip = "{env:HATCH_UV} pip {args}" +pip = '"{env:HATCH_UV}" pip {args}' [envs.coverage] detached = true @@ -118,7 +118,7 @@ update-hatch = [ ] update-distributions = "python scripts/update_distributions.py" update-ruff = [ - "{env:HATCH_UV} pip install --upgrade ruff", + '"{env:HATCH_UV}" pip install --upgrade ruff', "python scripts/update_ruff.py", ] diff --git a/src/hatch/template/files_feature_ci.py b/src/hatch/template/files_feature_ci.py index 126b681ce..0bd984fc7 100644 --- a/src/hatch/template/files_feature_ci.py +++ b/src/hatch/template/files_feature_ci.py @@ -28,7 +28,7 @@ class CommandLinePackage(File): fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] - python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] + python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] steps: - uses: actions/checkout@v3 diff --git a/tests/cli/env/test_show.py b/tests/cli/env/test_show.py index c43dee7bd..ae3069d66 100644 --- a/tests/cli/env/test_show.py +++ b/tests/cli/env/test_show.py @@ -71,6 +71,7 @@ def test_default_as_json(hatch, temp_dir, config_file): "default", "hatch-build", "hatch-static-analysis", + "hatch-test.py3.14", "hatch-test.py3.13", "hatch-test.py3.12", "hatch-test.py3.11", diff --git a/tests/helpers/templates/new/feature_ci.py b/tests/helpers/templates/new/feature_ci.py index bd6f22c82..15e8f04d7 100644 --- a/tests/helpers/templates/new/feature_ci.py +++ b/tests/helpers/templates/new/feature_ci.py @@ -34,7 +34,7 @@ def get_files(**kwargs): fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] - python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] + python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] steps: - uses: actions/checkout@v3