Use tomllib from the standard library on Python 3.11+
Related: rhbz#2117571
This commit is contained in:
parent
295b331296
commit
07598e61d1
@ -143,7 +143,13 @@ echo 'python%{python3_pkgversion}-devel'
|
|||||||
echo 'python%{python3_pkgversion}dist(pip) >= 19'
|
echo 'python%{python3_pkgversion}dist(pip) >= 19'
|
||||||
echo 'python%{python3_pkgversion}dist(packaging)'
|
echo 'python%{python3_pkgversion}dist(packaging)'
|
||||||
%{!-N:if [ -f pyproject.toml ]; then
|
%{!-N:if [ -f pyproject.toml ]; then
|
||||||
echo 'python%{python3_pkgversion}dist(toml)'
|
%["%{python3_pkgversion}" == "3"
|
||||||
|
? "echo '(python%{python3_pkgversion}dist(toml) if python%{python3_pkgversion}-devel < 3.11)'"
|
||||||
|
: "%[v"%{python3_pkgversion}" < v"3.11"
|
||||||
|
? "echo 'python%{python3_pkgversion}dist(toml)'"
|
||||||
|
: "true # will use tomllib, echo nothing"
|
||||||
|
]"
|
||||||
|
]
|
||||||
elif [ -f setup.py ]; then
|
elif [ -f setup.py ]; then
|
||||||
# Note: If the default requirements change, also change them in the script!
|
# Note: If the default requirements change, also change them in the script!
|
||||||
echo 'python%{python3_pkgversion}dist(setuptools) >= 40.8'
|
echo 'python%{python3_pkgversion}dist(setuptools) >= 40.8'
|
||||||
|
@ -12,7 +12,7 @@ License: MIT
|
|||||||
# Increment Y and reset Z when new macros or features are added
|
# Increment Y and reset Z when new macros or features are added
|
||||||
# Increment Z when this is a bugfix or a cosmetic change
|
# Increment Z when this is a bugfix or a cosmetic change
|
||||||
# Dropping support for EOL Fedoras is *not* considered a breaking change
|
# Dropping support for EOL Fedoras is *not* considered a breaking change
|
||||||
Version: 1.2.0
|
Version: 1.3.0
|
||||||
Release: 1%{?dist}
|
Release: 1%{?dist}
|
||||||
|
|
||||||
# Macro files
|
# Macro files
|
||||||
@ -52,9 +52,9 @@ BuildRequires: python3dist(pyyaml)
|
|||||||
BuildRequires: python3dist(packaging)
|
BuildRequires: python3dist(packaging)
|
||||||
BuildRequires: python3dist(pip)
|
BuildRequires: python3dist(pip)
|
||||||
BuildRequires: python3dist(setuptools)
|
BuildRequires: python3dist(setuptools)
|
||||||
BuildRequires: python3dist(toml)
|
|
||||||
BuildRequires: python3dist(tox-current-env) >= 0.0.6
|
BuildRequires: python3dist(tox-current-env) >= 0.0.6
|
||||||
BuildRequires: python3dist(wheel)
|
BuildRequires: python3dist(wheel)
|
||||||
|
BuildRequires: (python3dist(toml) if python3-devel < 3.11)
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# We build on top of those:
|
# We build on top of those:
|
||||||
@ -126,6 +126,9 @@ export HOSTNAME="rpmbuild" # to speedup tox in network-less mock, see rhbz#1856
|
|||||||
%license LICENSE
|
%license LICENSE
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu May 12 2022 Miro Hrončok <mhroncok@redhat.com> - 1.3.0-1
|
||||||
|
- Use tomllib from the standard library on Python 3.11+
|
||||||
|
|
||||||
* Wed Apr 27 2022 Miro Hrončok <mhroncok@redhat.com> - 1.2.0-1
|
* Wed Apr 27 2022 Miro Hrončok <mhroncok@redhat.com> - 1.2.0-1
|
||||||
- %%pyproject_buildrequires: Add provisional -w flag for build backends without
|
- %%pyproject_buildrequires: Add provisional -w flag for build backends without
|
||||||
prepare_metadata_for_build_wheel hook
|
prepare_metadata_for_build_wheel hook
|
||||||
|
@ -187,21 +187,32 @@ class Requirements:
|
|||||||
self.add(req_str, **kwargs)
|
self.add(req_str, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def get_backend(requirements):
|
def toml_load(opened_binary_file):
|
||||||
try:
|
try:
|
||||||
f = open('pyproject.toml')
|
# tomllib is in the standard library since 3.11.0b1
|
||||||
except FileNotFoundError:
|
import tomllib as toml_module
|
||||||
pyproject_data = {}
|
load_from = opened_binary_file
|
||||||
else:
|
except ImportError:
|
||||||
try:
|
try:
|
||||||
# lazy import toml here, not needed without pyproject.toml
|
# note: we could use tomli here,
|
||||||
import toml
|
# but for backwards compatibility with RHEL 9, we use toml instead
|
||||||
|
import toml as toml_module
|
||||||
|
load_from = io.TextIOWrapper(opened_binary_file, encoding='utf-8')
|
||||||
except ImportError as e:
|
except ImportError as e:
|
||||||
print_err('Import error:', e)
|
print_err('Import error:', e)
|
||||||
# already echoed by the %pyproject_buildrequires macro
|
# already echoed by the %pyproject_buildrequires macro
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
return toml_module.load(load_from)
|
||||||
|
|
||||||
|
|
||||||
|
def get_backend(requirements):
|
||||||
|
try:
|
||||||
|
f = open('pyproject.toml', 'rb')
|
||||||
|
except FileNotFoundError:
|
||||||
|
pyproject_data = {}
|
||||||
|
else:
|
||||||
with f:
|
with f:
|
||||||
pyproject_data = toml.load(f)
|
pyproject_data = toml_load(f)
|
||||||
|
|
||||||
buildsystem_data = pyproject_data.get('build-system', {})
|
buildsystem_data = pyproject_data.get('build-system', {})
|
||||||
requirements.extend(
|
requirements.extend(
|
||||||
|
Loading…
Reference in New Issue
Block a user