Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

## [Unreleased]

- Changed the default Python version for new apps from 3.13 to 3.14. ([#1984](https://github.com/heroku/heroku-buildpack-python/pull/1984))

## [v322] - 2025-12-02

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ When using the package manager [uv](https://docs.astral.sh/uv/) a `.python-versi

We recommend that you specify a Python version for your app rather than relying on the buildpack's default Python version.

For example, to request the latest patch release of Python 3.13, create a `.python-version` file in
For example, to request the latest patch release of Python 3.14, create a `.python-version` file in
the root directory of your app containing:
`3.13`
`3.14`

We strongly recommend that you use the major version form instead of pinning to an exact version,
since it will allow your app to receive Python security updates.
Expand All @@ -43,7 +43,7 @@ If none of those are found, the buildpack will use a default Python version for
build of an app, and then subsequent builds of that app will be pinned to that version
unless the build cache is cleared or you request a different version.

The current default Python version is: 3.13
The current default Python version is: 3.14

The supported Python versions are:

Expand Down
4 changes: 2 additions & 2 deletions lib/pip.sh
Original file line number Diff line number Diff line change
Expand Up @@ -130,9 +130,9 @@ function pip::install_dependencies() {

# The sed usage is to reduce the verbosity of output lines like:
# ...when using Python 3.10 and older:
# "Requirement already satisfied: typing-extensions==4.12.2 in ./.heroku/python/lib/python3.10/site-packages (from -r requirements.txt (line 2)) (4.12.2)"
# "Requirement already satisfied: typing-extensions==4.15.0 in ./.heroku/python/lib/python3.10/site-packages (from -r requirements.txt (line 2)) (4.15.0)"
# ...when using Python 3.11+:
# "Requirement already satisfied: typing-extensions==4.12.2 in /app/.heroku/python/lib/python3.13/site-packages (from -r requirements.txt (line 5)) (4.12.2)"
# "Requirement already satisfied: typing-extensions==4.15.0 in /app/.heroku/python/lib/python3.14/site-packages (from -r requirements.txt (line 5)) (4.15.0)"
# shellcheck disable=SC2310 # This function is invoked in an 'if' condition so set -e will be disabled.
if ! {
"${pip_install_command[@]}" \
Expand Down
2 changes: 1 addition & 1 deletion lib/python_version.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ LATEST_PYTHON_3_14="3.14.1"
OLDEST_SUPPORTED_PYTHON_3_MINOR_VERSION=9
NEWEST_SUPPORTED_PYTHON_3_MINOR_VERSION=14

DEFAULT_PYTHON_FULL_VERSION="${LATEST_PYTHON_3_13}"
DEFAULT_PYTHON_FULL_VERSION="${LATEST_PYTHON_3_14}"
DEFAULT_PYTHON_MAJOR_VERSION="${DEFAULT_PYTHON_FULL_VERSION%.*}"

# Integer with no redundant leading zeros.
Expand Down
2 changes: 1 addition & 1 deletion spec/fixtures/ci_pip/.python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.13
3.14
2 changes: 1 addition & 1 deletion spec/fixtures/ci_pip/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# This package has been picked since it has no dependencies and is small/fast to install.
typing-extensions==4.12.2
typing-extensions==4.15.0
2 changes: 1 addition & 1 deletion spec/fixtures/ci_pipenv/.python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.13
3.14
44 changes: 26 additions & 18 deletions spec/fixtures/ci_pipenv/Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion spec/fixtures/ci_poetry/.python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.13
3.14
72 changes: 44 additions & 28 deletions spec/fixtures/ci_poetry/poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion spec/fixtures/ci_poetry/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[project]
name = "ci-poetry"
version = "0.0.0"
requires-python = ">=3.13"
requires-python = ">=3.14"
dependencies = [
"typing-extensions",
]
Expand Down
2 changes: 1 addition & 1 deletion spec/fixtures/ci_uv/.python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.13
3.14
2 changes: 1 addition & 1 deletion spec/fixtures/ci_uv/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[project]
name = "ci-uv"
version = "0.0.0"
requires-python = ">=3.13"
requires-python = ">=3.14"
dependencies = [
"typing-extensions",
]
Expand Down
38 changes: 24 additions & 14 deletions spec/fixtures/ci_uv/uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion spec/fixtures/multiple_package_managers/.python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.13
3.14
2 changes: 1 addition & 1 deletion spec/fixtures/pip_basic/.python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.13
3.14
2 changes: 1 addition & 1 deletion spec/fixtures/pip_basic/requirements/prod.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
# in order to test that symlinked requirements files work.

# This package has been picked since it has no dependencies and is small/fast to install.
typing-extensions==4.12.2
typing-extensions==4.15.0
2 changes: 1 addition & 1 deletion spec/fixtures/pip_oldest_python/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# This package has been picked since it has no dependencies and is small/fast to install.
typing-extensions==4.14.1
typing-extensions==4.15.0
2 changes: 1 addition & 1 deletion spec/fixtures/pipenv_basic/Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ typing-extensions = "*"
[dev-packages]

[requires]
python_version = "3.13"
python_version = "3.14"
Loading