🩹(backend) get current release from pyproject.toml

"get_release" was returning NA, we fixed it by
getting the version from pyproject.toml, to do so we
use tomllib
Since tomllib is a native library from Python 3.11,
we bump the required version to 3.11 on the pyproject.toml.
This commit is contained in:
Anthony LC
2024-11-18 12:31:49 +01:00
committed by Anthony LC
parent c8edbd285b
commit 9623ac4141
2 changed files with 8 additions and 14 deletions

View File

@@ -10,8 +10,8 @@ For the full list of settings and their values, see
https://docs.djangoproject.com/en/3.1/ref/settings/ https://docs.djangoproject.com/en/3.1/ref/settings/
""" """
import json
import os import os
import tomllib
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
@@ -27,19 +27,12 @@ DATA_DIR = os.path.join("/", "data")
def get_release(): def get_release():
""" """
Get the current release of the application Get the current release of the application
By release, we mean the release from the version.json file à la Mozilla [1]
(if any). If this file has not been found, it defaults to "NA".
[1]
https://github.com/mozilla-services/Dockerflow/blob/master/docs/version_object.md
""" """
# Try to get the current release from the version.json file generated by the
# CI during the Docker image build
try: try:
with open(os.path.join(BASE_DIR, "version.json"), encoding="utf8") as version: with open(os.path.join(BASE_DIR, "pyproject.toml"), "rb") as f:
return json.load(version)["version"] pyproject_data = tomllib.load(f)
except FileNotFoundError: return pyproject_data["project"]["version"]
except (FileNotFoundError, KeyError):
return "NA" # Default: not available return "NA" # Default: not available

View File

@@ -17,13 +17,13 @@ classifiers = [
"License :: OSI Approved :: MIT License", "License :: OSI Approved :: MIT License",
"Natural Language :: English", "Natural Language :: English",
"Programming Language :: Python :: 3", "Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.12",
] ]
description = "An application to print markdown to pdf from a set of managed templates." description = "An application to print markdown to pdf from a set of managed templates."
keywords = ["Django", "Contacts", "Templates", "RBAC"] keywords = ["Django", "Contacts", "Templates", "RBAC"]
license = { file = "LICENSE" } license = { file = "LICENSE" }
readme = "README.md" readme = "README.md"
requires-python = ">=3.10" requires-python = ">=3.12"
dependencies = [ dependencies = [
"boto3==1.35.44", "boto3==1.35.44",
"Brotli==1.1.0", "Brotli==1.1.0",
@@ -127,6 +127,7 @@ select = [
[tool.ruff.lint.isort] [tool.ruff.lint.isort]
section-order = ["future","standard-library","django","third-party","impress","first-party","local-folder"] section-order = ["future","standard-library","django","third-party","impress","first-party","local-folder"]
sections = { impress=["core"], django=["django"] } sections = { impress=["core"], django=["django"] }
extra-standard-library = ["tomllib"]
[tool.ruff.lint.per-file-ignores] [tool.ruff.lint.per-file-ignores]
"**/tests/*" = ["S", "SLF"] "**/tests/*" = ["S", "SLF"]