From 36c8773d17eeb5fd43ccd4091854367e6c848de9 Mon Sep 17 00:00:00 2001 From: Xuan Hu Date: Wed, 6 Mar 2024 11:17:12 +0800 Subject: [PATCH 1/4] chore: fix Python 3.8 compatibility issue --- .devcontainer/Dockerfile | 2 +- .renovaterc.json | 7 +++++++ template/.devcontainer/Dockerfile.jinja | 5 +++++ template/.renovaterc.json.jinja | 10 ++++++++++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 971d8b2a..abb642e1 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -22,7 +22,7 @@ ENV PIPX_DEFAULT_PYTHON=/usr/local/bin/python RUN pipx install pdm==2.12.4 # Install pre-commit -RUN pipx install pre-commit==3.6.2 +RUN pipx install pre-commit==3.5.0 # Create a non-root user with sudo permission ARG USERNAME=ss-python diff --git a/.renovaterc.json b/.renovaterc.json index 03320258..9ab04ab4 100644 --- a/.renovaterc.json +++ b/.renovaterc.json @@ -59,6 +59,13 @@ ] }, "semanticCommitScope": "copier-template" + }, + { + "enabled": false, + "matchCurrentVersion": "==3.5.0", + "matchPackageNames": [ + "pre-commit" + ] } ] } diff --git a/template/.devcontainer/Dockerfile.jinja b/template/.devcontainer/Dockerfile.jinja index 08d4fc48..1008dab3 100644 --- a/template/.devcontainer/Dockerfile.jinja +++ b/template/.devcontainer/Dockerfile.jinja @@ -1,3 +1,4 @@ +[% from pathjoin("includes", "version_compare.jinja") import version_higher_than -%] ARG PYTHON_VERSION={{ default_py }} ######################################################################################## @@ -22,7 +23,11 @@ ENV PIPX_DEFAULT_PYTHON=/usr/local/bin/python RUN pipx install pdm==2.12.4 # Install pre-commit +[%- if not version_higher_than(min_py, "3.9") %] +RUN pipx install pre-commit==3.5.0 +[%- else %] RUN pipx install pre-commit==3.6.2 +[%- endif %] # Create a non-root user with sudo permission ARG USERNAME={{ repo_name }} diff --git a/template/.renovaterc.json.jinja b/template/.renovaterc.json.jinja index bc543c6f..484c0886 100644 --- a/template/.renovaterc.json.jinja +++ b/template/.renovaterc.json.jinja @@ -1,3 +1,4 @@ +[% from pathjoin("includes", "version_compare.jinja") import version_higher_than -%] { "$schema": "https://docs.renovatebot.com/renovate-schema.json", "customManagers": [ @@ -66,5 +67,14 @@ }, "semanticCommitScope": "copier-template" } +[%- if not version_higher_than(min_py, "3.9") %], + { + "enabled": false, + "matchCurrentVersion": "==3.5.0", + "matchPackageNames": [ + "pre-commit" + ] + } +[%- endif %] ] } From b6ae591c015442f0a59e3c579b24d75ecd1e4c05 Mon Sep 17 00:00:00 2001 From: Xuan Hu Date: Wed, 6 Mar 2024 19:29:27 +0800 Subject: [PATCH 2/4] better RUN instruction --- .devcontainer/Dockerfile | 12 ++++++++++-- .renovaterc.json | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index abb642e1..9cd5a56a 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -6,6 +6,10 @@ ARG PYTHON_VERSION=3.12 FROM python:${PYTHON_VERSION} as dev +# NOTE: python docker image has env `PYTHON_VERSION` but with patch version. +# ARG is used here for temporary override without changing the original env. +ARG PYTHON_VERSION + RUN apt-get update && apt-get install -y --no-install-recommends \ # pipx: To install Python applications. pipx \ @@ -22,7 +26,11 @@ ENV PIPX_DEFAULT_PYTHON=/usr/local/bin/python RUN pipx install pdm==2.12.4 # Install pre-commit -RUN pipx install pre-commit==3.5.0 +RUN if [ "${PYTHON_VERSION}" = "3.8" ]; then \ + pipx install pre-commit==3.5.0; \ + else \ + pipx install pre-commit==3.6.2; \ + fi # Create a non-root user with sudo permission ARG USERNAME=ss-python @@ -60,7 +68,7 @@ FROM python:${PYTHON_VERSION}-slim as prod # NOTE: python docker image has env `PYTHON_VERSION` but with patch version. # ARG is used here for temporary override without changing the original env. -ARG PYTHON_VERSION=3.12 +ARG PYTHON_VERSION # Retrieve packages from build stage. ENV PYTHONPATH=/workspace/pkgs diff --git a/.renovaterc.json b/.renovaterc.json index 9ab04ab4..6e289afa 100644 --- a/.renovaterc.json +++ b/.renovaterc.json @@ -9,7 +9,7 @@ "^template\\/\\.devcontainer/Dockerfile\\.jinja$" ], "matchStrings": [ - "RUN pipx install (?.*?)==(?.*?)\n" + "pipx install (?.*?)==(?.*?)[;\n]" ] }, { From 2eea397c88a0c43f2417a7b59c03a9254a8e036c Mon Sep 17 00:00:00 2001 From: Xuan Hu Date: Wed, 6 Mar 2024 19:31:14 +0800 Subject: [PATCH 3/4] update template --- template/.devcontainer/Dockerfile.jinja | 17 ++++++++++------- template/.renovaterc.json.jinja | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/template/.devcontainer/Dockerfile.jinja b/template/.devcontainer/Dockerfile.jinja index 1008dab3..16a3be4b 100644 --- a/template/.devcontainer/Dockerfile.jinja +++ b/template/.devcontainer/Dockerfile.jinja @@ -1,4 +1,3 @@ -[% from pathjoin("includes", "version_compare.jinja") import version_higher_than -%] ARG PYTHON_VERSION={{ default_py }} ######################################################################################## @@ -7,6 +6,10 @@ ARG PYTHON_VERSION={{ default_py }} FROM python:${PYTHON_VERSION} as dev +# NOTE: python docker image has env `PYTHON_VERSION` but with patch version. +# ARG is used here for temporary override without changing the original env. +ARG PYTHON_VERSION + RUN apt-get update && apt-get install -y --no-install-recommends \ # pipx: To install Python applications. pipx \ @@ -23,11 +26,11 @@ ENV PIPX_DEFAULT_PYTHON=/usr/local/bin/python RUN pipx install pdm==2.12.4 # Install pre-commit -[%- if not version_higher_than(min_py, "3.9") %] -RUN pipx install pre-commit==3.5.0 -[%- else %] -RUN pipx install pre-commit==3.6.2 -[%- endif %] +RUN if [ "${PYTHON_VERSION}" = "3.8" ]; then \ + pipx install pre-commit==3.5.0; \ + else \ + pipx install pre-commit==3.6.2; \ + fi # Create a non-root user with sudo permission ARG USERNAME={{ repo_name }} @@ -65,7 +68,7 @@ FROM python:${PYTHON_VERSION}-slim as prod # NOTE: python docker image has env `PYTHON_VERSION` but with patch version. # ARG is used here for temporary override without changing the original env. -ARG PYTHON_VERSION={{ default_py }} +ARG PYTHON_VERSION # Retrieve packages from build stage. ENV PYTHONPATH=/workspace/pkgs diff --git a/template/.renovaterc.json.jinja b/template/.renovaterc.json.jinja index 484c0886..618905cf 100644 --- a/template/.renovaterc.json.jinja +++ b/template/.renovaterc.json.jinja @@ -12,7 +12,7 @@ [%- endif %] ], "matchStrings": [ - "RUN pipx install (?.*?)==(?.*?)\n" + "pipx install (?.*?)==(?.*?)[;\n]" ] }, { From 3fe244e30b097d13f92d7f6b022a803e369b6914 Mon Sep 17 00:00:00 2001 From: Xuan Hu Date: Wed, 6 Mar 2024 19:48:01 +0800 Subject: [PATCH 4/4] pre-commit need to be pinned for all python versions --- .renovaterc.json | 1 + template/.renovaterc.json.jinja | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.renovaterc.json b/.renovaterc.json index 6e289afa..b4197662 100644 --- a/.renovaterc.json +++ b/.renovaterc.json @@ -61,6 +61,7 @@ "semanticCommitScope": "copier-template" }, { + "description": "Pre-commit 3.5.0 is pinned as the last version supporting Python 3.8.", "enabled": false, "matchCurrentVersion": "==3.5.0", "matchPackageNames": [ diff --git a/template/.renovaterc.json.jinja b/template/.renovaterc.json.jinja index 618905cf..af3b0ac7 100644 --- a/template/.renovaterc.json.jinja +++ b/template/.renovaterc.json.jinja @@ -66,15 +66,14 @@ ] }, "semanticCommitScope": "copier-template" - } -[%- if not version_higher_than(min_py, "3.9") %], + }, { + "description": "Pre-commit 3.5.0 is pinned as the last version supporting Python 3.8.", "enabled": false, "matchCurrentVersion": "==3.5.0", "matchPackageNames": [ "pre-commit" ] } -[%- endif %] ] }