From 665e3e25787d8e2d8ff9cc02731f5b92e92e82e1 Mon Sep 17 00:00:00 2001 From: Ed Morley <501702+edmorley@users.noreply.github.com> Date: Wed, 22 Jan 2025 22:05:06 +0000 Subject: [PATCH] Migrate generated project from `runtime.txt` to `.python-version` Heroku now supports the `.python-version` file as an alternative to the Heroku-specific (and now deprecated) `runtime.txt` file, and recommends apps switch to using the former since it's more widely supported by other tooling. The `.python-version` file is supported by pyenv, uv, the GitHub Actions `setup-python` action and many others. In addition, the `.python-version` file supports the version being specified as just the major version (eg `3.12` vs `3.12.N`) which means will pick up Python patch updates automatically (which is the recommended usage on Heroku). See: https://devcenter.heroku.com/changelog-items/3005 https://github.com/heroku/heroku-buildpack-python/issues/1642 https://github.com/actions/setup-python/blob/main/docs/advanced-usage.md#using-the-python-version-file-input --- hooks/post_gen_project.py | 2 +- {{cookiecutter.project_slug}}/.github/dependabot.yml | 2 +- {{cookiecutter.project_slug}}/.github/workflows/ci.yml | 6 +++--- {{cookiecutter.project_slug}}/.gitignore | 3 --- {{cookiecutter.project_slug}}/.python-version | 1 + {{cookiecutter.project_slug}}/runtime.txt | 1 - 6 files changed, 6 insertions(+), 9 deletions(-) create mode 100644 {{cookiecutter.project_slug}}/.python-version delete mode 100644 {{cookiecutter.project_slug}}/runtime.txt diff --git a/hooks/post_gen_project.py b/hooks/post_gen_project.py index e38d59b4..318c5beb 100644 --- a/hooks/post_gen_project.py +++ b/hooks/post_gen_project.py @@ -76,7 +76,7 @@ def remove_utility_files(): def remove_heroku_files(): - file_names = ["Procfile", "runtime.txt", "requirements.txt"] + file_names = ["Procfile", "requirements.txt"] for file_name in file_names: if file_name == "requirements.txt" and "{{ cookiecutter.ci_tool }}".lower() == "travis": # don't remove the file if we are using travisci but not using heroku diff --git a/{{cookiecutter.project_slug}}/.github/dependabot.yml b/{{cookiecutter.project_slug}}/.github/dependabot.yml index 4b897355..4ea47bd2 100644 --- a/{{cookiecutter.project_slug}}/.github/dependabot.yml +++ b/{{cookiecutter.project_slug}}/.github/dependabot.yml @@ -98,7 +98,7 @@ updates: # Enable version updates for Python/Pip - Production - package-ecosystem: 'pip' # Look for a `requirements.txt` in the `root` directory - # also 'setup.cfg', 'runtime.txt' and 'requirements/*.txt' + # also 'setup.cfg', '.python-version' and 'requirements/*.txt' directory: '/' # Every weekday schedule: diff --git a/{{cookiecutter.project_slug}}/.github/workflows/ci.yml b/{{cookiecutter.project_slug}}/.github/workflows/ci.yml index 6bb55506..83625e48 100644 --- a/{{cookiecutter.project_slug}}/.github/workflows/ci.yml +++ b/{{cookiecutter.project_slug}}/.github/workflows/ci.yml @@ -28,7 +28,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: '3.12' + python-version-file: '.python-version' {%- if cookiecutter.open_source_license != 'Not open source' %} # Consider using pre-commit.ci for open source project @@ -88,9 +88,9 @@ jobs: {%- else %} - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: - python-version: '3.12' + python-version-file: '.python-version' cache: pip cache-dependency-path: | requirements/base.txt diff --git a/{{cookiecutter.project_slug}}/.gitignore b/{{cookiecutter.project_slug}}/.gitignore index 0bb32218..1bd36b92 100644 --- a/{{cookiecutter.project_slug}}/.gitignore +++ b/{{cookiecutter.project_slug}}/.gitignore @@ -59,9 +59,6 @@ docs/_build/ # PyBuilder target/ -# pyenv -.python-version - {% if cookiecutter.use_celery == 'y' -%} # celery beat schedule file celerybeat-schedule diff --git a/{{cookiecutter.project_slug}}/.python-version b/{{cookiecutter.project_slug}}/.python-version new file mode 100644 index 00000000..e4fba218 --- /dev/null +++ b/{{cookiecutter.project_slug}}/.python-version @@ -0,0 +1 @@ +3.12 diff --git a/{{cookiecutter.project_slug}}/runtime.txt b/{{cookiecutter.project_slug}}/runtime.txt deleted file mode 100644 index 32905d6e..00000000 --- a/{{cookiecutter.project_slug}}/runtime.txt +++ /dev/null @@ -1 +0,0 @@ -python-3.12.7