This is an automated email from the ASF dual-hosted git repository.
akitouni pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/buildstream-plugins.git
The following commit(s) were added to refs/heads/master by this push:
new fb37d33 Port cargo plugin to tomli
new 8d0d038 Merge pull request #12 from nanonyme/tomli
fb37d33 is described below
commit fb37d33c61296c30041ffd0c9657c61c144684eb
Author: Seppo Yli-Olli <[email protected]>
AuthorDate: Fri Jul 1 21:11:21 2022 +0300
Port cargo plugin to tomli
Since tomli got into standard library with Python 3.11, accept
it as the de facto toml implementation. This way we get fully
functional cargo plugin starting from 3.11 without any additional
dependencies.
---
requirements/mypy-requirements.txt | 3 ---
requirements/plugin-requirements.txt | 2 +-
setup.py | 2 +-
src/buildstream_plugins/sources/cargo.py | 12 +++++++++---
4 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/requirements/mypy-requirements.txt
b/requirements/mypy-requirements.txt
index 20378a3..8f525b5 100644
--- a/requirements/mypy-requirements.txt
+++ b/requirements/mypy-requirements.txt
@@ -1,7 +1,4 @@
# Additional requirements for running mypy
-# For cargo plugin
-types-toml
-
# For docker plugin
types-requests
diff --git a/requirements/plugin-requirements.txt
b/requirements/plugin-requirements.txt
index b967ebb..e19c8c1 100644
--- a/requirements/plugin-requirements.txt
+++ b/requirements/plugin-requirements.txt
@@ -2,7 +2,7 @@
# aren't required for buildstream-plugins to be installed.
# Cargo source
-toml
+tomli
# Docker source
requests
diff --git a/setup.py b/setup.py
index feab341..5be97b9 100755
--- a/setup.py
+++ b/setup.py
@@ -86,7 +86,7 @@ setup(
],
},
extras_require={
- "cargo": ["toml"],
+ "cargo": ['tomli; python_version < "3.11"'],
},
zip_safe=False,
)
diff --git a/src/buildstream_plugins/sources/cargo.py
b/src/buildstream_plugins/sources/cargo.py
index 74b06ef..bcfb841 100644
--- a/src/buildstream_plugins/sources/cargo.py
+++ b/src/buildstream_plugins/sources/cargo.py
@@ -70,7 +70,13 @@ import tarfile
import urllib.error
import urllib.request
-import toml
+# We prefer tomli that was put into standard library as tomllib
+# starting from 3.11
+try:
+ import tomllib # type: ignore
+except ImportError:
+ import tomli as tomllib # type: ignore
+
from buildstream import Source, SourceFetcher, SourceError
from buildstream import utils
@@ -380,8 +386,8 @@ class CargoSource(Source):
try:
with open(lockfile, "r", encoding="utf-8") as f:
try:
- lock = toml.load(f)
- except toml.TomlDecodeError as e:
+ lock = tomllib.load(f)
+ except tomllib.TOMLDecodeError as e:
raise SourceError(
"Malformed Cargo.lock file at:
{}".format(self.cargo_lock),
detail="{}".format(e),