Notification time stamped 2022-12-31 14:43:43 UTC
From 44c30c16e6c05a7bc6fe131239fbf033409ea37f Mon Sep 17 00:00:00 2001
From: Miro Hrončok <miro(a)hroncok.cz>
Date: Dec 30 2022 16:53:10 +0000
Subject: Use tomllib (tomli) instated of deprecated python3-toml
https://fedoraproject.org/wiki/Changes/DeprecatePythonToml
---
diff --git a/gi-docgen-2022.2-tomllib.patch b/gi-docgen-2022.2-tomllib.patch
new file mode 100644
index 0000000..75f2bd6
--- /dev/null
+++ b/gi-docgen-2022.2-tomllib.patch
@@ -0,0 +1,340 @@
+From 298e37032ddec9a07e6cb396df3327200134230c Mon Sep 17 00:00:00 2001
+From: Seppo Yli-Olli <seppo.yliolli(a)gmail.com>
+Date: Sat, 8 Oct 2022 22:36:49 +0300
+Subject: [PATCH] Use tomllib in gi-docgen with fallback to tomli on older
+ Python
+
+---
+ .gitlab-ci.yml | 11 ++++++++++-
+ gidocgen/config.py | 15 ++++++++++-----
+ meson.build | 10 +++++++++-
+ pyproject.toml | 2 +-
+ setup.cfg | 2 +-
+ 5 files changed, 31 insertions(+), 9 deletions(-)
+
+diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
+index 780d46f..b55f150 100644
+--- a/.gitlab-ci.yml
++++ b/.gitlab-ci.yml
+@@ -33,7 +33,16 @@ pytest:
+ needs: []
+ image: fedora:latest
+ script:
+- - dnf install -y pytest python3-markdown python3-jinja2 python3-pygments
python3-toml python3-typogrify
++ - dnf install -y pytest python3-markdown python3-jinja2 python3-pygments
python3-typogrify
++ - pytest --verbose
++
++pytest-tomli:
++ # Validates that tomli configuration works correctly
++ stage: check
++ needs: []
++ image: fedora:36
++ script:
++ - dnf install -y pytest python3-markdown python3-jinja2 python3-pygments
python3-tomli python3-typogrify
+ - pytest --verbose
+
+ flake8:
+diff --git a/gidocgen/config.py b/gidocgen/config.py
+index 0047568..ca79428 100644
+--- a/gidocgen/config.py
++++ b/gidocgen/config.py
+@@ -3,7 +3,10 @@
+
+ import os
+ import re
+-import toml
++try:
++ import tomllib
++except ImportError:
++ import tomli as tomllib
+
+ from urllib.parse import urljoin
+
+@@ -19,8 +22,9 @@ class GIDocConfig:
+ if self._config_file is not None:
+ try:
+ log.debug(f"Reading configuration file: {self._config_file}")
+- self._config = toml.load(self._config_file)
+- except toml.TomlDecodeError as err:
++ with open(self._config_file, "rb") as f:
++ self._config = tomllib.load(f)
++ except tomllib.TOMLDecodeError as err:
+ log.error(f"Invalid configuration file: {self._config_file}:
{err}")
+
+ @property
+@@ -243,8 +247,9 @@ class GITemplateConfig:
+ self._config = {}
+ try:
+ log.debug(f"Reading template configuration file:
{self._config_file}")
+- self._config = toml.load(self._config_file)
+- except toml.TomlDecodeError as err:
++ with open(self._config_file, "rb") as f:
++ self._config = tomllib.load(f)
++ except tomllib.TOMLDecodeError as err:
+ log.error(f"Invalid template configuration file: {self._config_file}:
{err}")
+
+ @property
+diff --git a/meson.build b/meson.build
+index bee1558..d967fd3 100644
+--- a/meson.build
++++ b/meson.build
+@@ -13,7 +13,6 @@ py = import('python').find_installation('python3',
+ 'markdown',
+ 'markupsafe',
+ 'pygments',
+- 'toml',
+ 'typogrify',
+ ],
+ )
+@@ -27,6 +26,15 @@ if not markdown_version.version_compare('>=3.2')
+ error('gi-docgen requires at least markdown >= 3.2')
+ endif
+
++if py.language_version().version_compare('<3.11')
++ tomli_version = run_command(
++ py, '-c', 'import tomli; print(tomli.__version__)',
++ ).stdout().strip()
++ if not tomli_version.version_compare('>=1.0')
++ error('tomli 1.0 or newer required on Python 3.10 and older')
++ endif
++endif
++
+ configure_file(
+ input: 'gi-docgen.py',
+ output: 'gi-docgen',
+diff --git a/pyproject.toml b/pyproject.toml
+index 2b88735..b0b18e4 100644
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -39,7 +39,7 @@ Markdown = "^3.2"
+ MarkupSafe = "^1"
+ Pygments = "^2"
+ Jinja2 = "^2"
+-toml = "^0"
++tomli = { version = ">=1,<3" markers = "python_version <
'3.11'" }
+ typogrify = "^2"
+
+ [tool.poetry.dev-dependencies]
+diff --git a/setup.cfg b/setup.cfg
+index e7afae1..141d5e1 100644
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -56,7 +56,7 @@ install_requires =
+ MarkupSafe
+ Pygments
+ jinja2
+- toml
++ tomli; python_version < '3.11'
+ typogrify
+
+ [options.entry_points]
+--
+GitLab
+
+From 247818203cd948763349b42b9723d76ec637f91c Mon Sep 17 00:00:00 2001
+From: Emmanuele Bassi <ebassi(a)gnome.org>
+Date: Tue, 29 Nov 2022 12:11:49 +0000
+Subject: [PATCH] Add a fallback for the old toml module
+
+Even if it's deprecated, to ease the porting away from it inside CI
+pipelines.
+---
+ gidocgen/config.py | 49 +++++++++++++++++++++++++++++++++-------------
+ 1 file changed, 35 insertions(+), 14 deletions(-)
+
+diff --git a/gidocgen/config.py b/gidocgen/config.py
+index ca79428..8863ac1 100644
+--- a/gidocgen/config.py
++++ b/gidocgen/config.py
+@@ -3,16 +3,45 @@
+
+ import os
+ import re
++
++toml_module = None
+ try:
+- import tomllib
++ import tomllib as toml_lib
++ toml_module = 'tomlib'
+ except ImportError:
+- import tomli as tomllib
++ try:
++ import tomli as toml_lib
++ toml_module = 'tomli'
++ except ImportError:
++ import toml as toml_lib
++ toml_module = 'toml'
+
+ from urllib.parse import urljoin
+
+ from . import core, log, utils
+
+
++class TomlConfig:
++ """Wrapper class for TOML loading"""
++
++ @staticmethod
++ def load(toml):
++ log.debug(f"Using TOML module: {toml_module}")
++ if toml_module is None:
++ log.error("No toml module found")
++ elif toml_module in ['tomlib', 'tomli']:
++ try:
++ with open(toml, "rb") as f:
++ return toml_lib.load(f)
++ except toml_lib.TOMLDecodeError as err:
++ log.error(f"Invalid configuration file: {toml}: {err}")
++ elif toml_module in ['toml']:
++ try:
++ return toml_lib.load(toml)
++ except toml_lib.TomlDecodeError as err:
++ log.error(f"Invalid configuration file: {toml}: {err}")
++
++
+ class GIDocConfig:
+ """Load and represent the configuration for
gidocgen"""
+ def __init__(self, config_file=None):
+@@ -20,12 +49,8 @@ class GIDocConfig:
+
+ self._config = {}
+ if self._config_file is not None:
+- try:
+- log.debug(f"Reading configuration file: {self._config_file}")
+- with open(self._config_file, "rb") as f:
+- self._config = tomllib.load(f)
+- except tomllib.TOMLDecodeError as err:
+- log.error(f"Invalid configuration file: {self._config_file}:
{err}")
++ log.debug(f"Reading configuration file: {self._config_file}")
++ self._config = TomlConfig.load(self._config_file)
+
+ @property
+ def library(self):
+@@ -245,12 +270,8 @@ class GITemplateConfig:
+ self._config_file = os.path.join(templates_dir, template_name,
f"{template_name}.toml")
+
+ self._config = {}
+- try:
+- log.debug(f"Reading template configuration file:
{self._config_file}")
+- with open(self._config_file, "rb") as f:
+- self._config = tomllib.load(f)
+- except tomllib.TOMLDecodeError as err:
+- log.error(f"Invalid template configuration file: {self._config_file}:
{err}")
++ log.debug(f"Reading template configuration file:
{self._config_file}")
++ self._config = TomlConfig.load(self._config_file)
+
+ @property
+ def name(self):
+--
+GitLab
+
+From add62bee3df2418fc13543023c3c6eca3e025d65 Mon Sep 17 00:00:00 2001
+From: Emmanuele Bassi <ebassi(a)gnome.org>
+Date: Tue, 29 Nov 2022 12:43:09 +0000
+Subject: [PATCH 1/2] build: Check for toml fallback module
+
+Emit a message when using tomli, and a warning when using toml.
+---
+ meson.build | 15 +++++++++++++--
+ 1 file changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index d967fd3..f48f19e 100644
+--- a/meson.build
++++ b/meson.build
+@@ -29,9 +29,20 @@ endif
+ if py.language_version().version_compare('<3.11')
+ tomli_version = run_command(
+ py, '-c', 'import tomli; print(tomli.__version__)',
++ check: true,
+ ).stdout().strip()
+- if not tomli_version.version_compare('>=1.0')
+- error('tomli 1.0 or newer required on Python 3.10 and older')
++ if tomli_version.version_compare('>=1.0')
++ message('Falling back to toml on Python <3.11')
++ else
++ toml_version = run_command(
++ py, '-c', 'import toml; print(toml.__version__)',
++ check: true,
++ ).stdout().strip()
++ if toml_version.version_compare('>=0.10.2')
++ warning('Falling back to deprecated toml module; please update to tomli')
++ else
++ error('tomli 1.0 or newer required on Python 3.10 and older')
++ endif
+ endif
+ endif
+
+--
+GitLab
+
+
+From 40212aaab05ef4d211ced0b54b4fe358626392bc Mon Sep 17 00:00:00 2001
+From: Emmanuele Bassi <ebassi(a)gnome.org>
+Date: Tue, 29 Nov 2022 12:48:54 +0000
+Subject: [PATCH 2/2] ci: Add Meson build job to the pipeline
+
+---
+ .gitlab-ci.yml | 17 +++++++++--------
+ 1 file changed, 9 insertions(+), 8 deletions(-)
+
+diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
+index b55f150..1538424 100644
+--- a/.gitlab-ci.yml
++++ b/.gitlab-ci.yml
+@@ -7,14 +7,15 @@ stages:
+ - check
+ - deploy
+
+-#meson-build:
+-# stage: build
+-# needs: []
+-# script:
+-# - dnf install -y meson ninja-build pytest python3-flake8 python3-mypy
python3-markdown python3-jinja2 python3-toml python3-typogrify
+-# - meson _build .
+-# - meson test -C _build
+-#
++meson-build:
++ image: fedora:latest
++ stage: build
++ needs: []
++ script:
++ - dnf install -y meson ninja-build pytest python3-markdown python3-jinja2
python3-pygments python3-typogrify python3-flake8 python3-mypy
++ - meson _build .
++ - meson test -C _build
++
+ #pip-build:
+ # stage: build
+ # needs: []
+--
+GitLab
+
+From de9d716d8919f1f8434539b5974fc0b86b5aa5c3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro(a)hroncok.cz>
+Date: Fri, 30 Dec 2022 17:48:30 +0100
+Subject: [PATCH] Make pyproject.toml valid TOML
+
+This avoids:
+
+ TOMLDecodeError: Unclosed inline table (at line 42, column 30)
+
+When parsing the file with tomllib.
+---
+ pyproject.toml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pyproject.toml b/pyproject.toml
+index b0b18e4..4bf0712 100644
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -39,7 +39,7 @@ Markdown = "^3.2"
+ MarkupSafe = "^1"
+ Pygments = "^2"
+ Jinja2 = "^2"
+-tomli = { version = ">=1,<3" markers = "python_version <
'3.11'" }
++tomli = { version = ">=1,<3", markers = "python_version <
'3.11'" }
+ typogrify = "^2"
+
+ [tool.poetry.dev-dependencies]
+--
+GitLab
+
diff --git a/gi-docgen.spec b/gi-docgen.spec
index ccfe44f..bf0f66e 100644
--- a/gi-docgen.spec
+++ b/gi-docgen.spec
@@ -70,6 +70,18 @@ Source0:
%{url}/-/archive/%{version}/gi-docgen-%{version}.tar.bz2
# local system fonts.
Patch: gi-docgen-2022.2-no-web-fonts.patch
+# python3-toml is deprecated
+#
https://fedoraproject.org/wiki/Changes/DeprecatePythonToml
+# Backport upstream changes to migrate to tomllib and fallback to tomli and toml
+# We technically only need the following two:
+#
https://gitlab.gnome.org/GNOME/gi-docgen/-/merge_requests/168
+#
https://gitlab.gnome.org/GNOME/gi-docgen/-/merge_requests/174 (fixup of 168)
+# But the following two were deemed necessary upstream as well:
+#
https://gitlab.gnome.org/GNOME/gi-docgen/-/merge_requests/172
+#
https://gitlab.gnome.org/GNOME/gi-docgen/-/merge_requests/173
+# Patches trivially joined to one file with cat.
+Patch: gi-docgen-2022.2-tomllib.patch
+
BuildArch: noarch
BuildRequires: python3-devel
https://src.fedoraproject.org/rpms/gi-docgen/c/44c30c16e6c05a7bc6fe131239...