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),

Reply via email to