summaryrefslogtreecommitdiff
blob: 7e30d7687a66b93654d3f88181d4b1d848df4b55 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
From a58bbbe058df8f45872c43a95992f6a7a7914ab9 Mon Sep 17 00:00:00 2001
From: piterpunk <piterpunk@slackware.com>
Date: Fri, 15 Oct 2021 11:03:20 -0300
Subject: [PATCH] Fix _compat.py importlib logic for Python 3.10

Use the same logic in _compat.py and entrypoints.py to load
the same importlib.metadata. Python's built in implementation for
Python >= 3.10 and the Salt one for others.
---
 salt/_compat.py | 30 +++++++++++++++++-------------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/salt/_compat.py b/salt/_compat.py
index 8149657bea61..a402f17a3c71 100644
--- a/salt/_compat.py
+++ b/salt/_compat.py
@@ -11,19 +11,23 @@
 else:
     import salt.ext.ipaddress as ipaddress
 
+if sys.version_info >= (3, 10):
+    # Python 3.10 will include a fix in importlib.metadata which allows us to
+    # get the distribution of a loaded entry-point
+    import importlib.metadata  # pylint: disable=no-member,no-name-in-module
+else:
+    # importlib_metadata before version 3.3.0 does not include the functionality we need.
+    try:
+        import importlib_metadata
 
-# importlib_metadata before version 3.3.0 does not include the functionality we need.
-try:
-    import importlib_metadata
-
-    importlib_metadata_version = [
-        int(part)
-        for part in importlib_metadata.version("importlib_metadata").split(".")
-        if part.isdigit()
-    ]
-    if tuple(importlib_metadata_version) < (3, 3, 0):
+        importlib_metadata_version = [
+            int(part)
+            for part in importlib_metadata.version("importlib_metadata").split(".")
+            if part.isdigit()
+        ]
+        if tuple(importlib_metadata_version) < (3, 3, 0):
+            # Use the vendored importlib_metadata
+            import salt.ext.importlib_metadata as importlib_metadata
+    except ImportError:
         # Use the vendored importlib_metadata
         import salt.ext.importlib_metadata as importlib_metadata
-except ImportError:
-    # Use the vendored importlib_metadata
-    import salt.ext.importlib_metadata as importlib_metadata