More recent versions of immutables require typing_extensions

Signed-off-by: Pedro Algarvio <palgarvio@vmware.com>
This commit is contained in:
Pedro Algarvio 2023-05-31 05:34:52 +01:00 committed by Pedro Algarvio
parent 588cd703af
commit 723e7a66c7
2 changed files with 36 additions and 18 deletions

View file

@ -33,14 +33,16 @@ import salt.utils.stringutils
import salt.version
# This is needed until we drop support for python 3.6
has_immutables = False
try:
import immutables
has_immutables = True
except ImportError:
pass
immutables = None
try:
# typing_extensions is an immutables dependency on newer versions
import typing_extensions
except ImportError:
typing_extensions = None
try:
import zlib
@ -432,6 +434,7 @@ def get_tops(extra_mods="", so_mods=""):
backports_abc,
looseversion,
packaging,
immutables,
]
modules = find_site_modules("contextvars")
if modules:
@ -440,8 +443,8 @@ def get_tops(extra_mods="", so_mods=""):
contextvars = py_contextvars
log.debug("Using contextvars %r", contextvars)
mods.append(contextvars)
if has_immutables:
mods.append(immutables)
if typing_extensions is not None:
mods.append(typing_extensions)
for mod in mods:
if mod:
log.debug('Adding module to the tops: "%s"', mod.__name__)

View file

@ -446,11 +446,15 @@ class SSHThinTestCase(TestCase):
"salt.utils.thin.looseversion",
type("looseversion", (), {"__file__": "/site-packages/looseversion"}),
)
@patch_if(
salt.utils.thin.has_immutables,
@patch(
"salt.utils.thin.immutables",
type("immutables", (), {"__file__": "/site-packages/immutables"}),
)
@patch_if(
salt.utils.thin.typing_extensions is not None,
"salt.utils.thin.typing_extensions",
type("typing_extensions", (), {"__file__": "/site-packages/typing_extensions"}),
)
@patch("salt.utils.thin.log", MagicMock())
def test_get_tops(self):
"""
@ -474,9 +478,10 @@ class SSHThinTestCase(TestCase):
"contextvars",
"looseversion",
"packaging",
"immutables",
]
if salt.utils.thin.has_immutables:
base_tops.extend(["immutables"])
if salt.utils.thin.typing_extensions is not None:
base_tops.append("typing_extensions")
tops = []
for top in thin.get_tops(extra_mods="foo,bar"):
if top.find("/") != -1:
@ -551,11 +556,15 @@ class SSHThinTestCase(TestCase):
"salt.utils.thin.looseversion",
type("looseversion", (), {"__file__": "/site-packages/looseversion"}),
)
@patch_if(
salt.utils.thin.has_immutables,
@patch(
"salt.utils.thin.immutables",
type("immutables", (), {"__file__": "/site-packages/immutables"}),
)
@patch_if(
salt.utils.thin.typing_extensions is not None,
"salt.utils.thin.typing_extensions",
type("typing_extensions", (), {"__file__": "/site-packages/typing_extensions"}),
)
@patch("salt.utils.thin.log", MagicMock())
def test_get_tops_extra_mods(self):
"""
@ -579,11 +588,12 @@ class SSHThinTestCase(TestCase):
"contextvars",
"looseversion",
"packaging",
"immutables",
"foo",
"bar.py",
]
if salt.utils.thin.has_immutables:
base_tops.extend(["immutables"])
if salt.utils.thin.typing_extensions is not None:
base_tops.append("typing_extensions")
libs = salt.utils.thin.find_site_modules("contextvars")
foo = {"__file__": os.sep + os.path.join("custom", "foo", "__init__.py")}
bar = {"__file__": os.sep + os.path.join("custom", "bar")}
@ -666,11 +676,15 @@ class SSHThinTestCase(TestCase):
"salt.utils.thin.looseversion",
type("looseversion", (), {"__file__": "/site-packages/looseversion"}),
)
@patch_if(
salt.utils.thin.has_immutables,
@patch(
"salt.utils.thin.immutables",
type("immutables", (), {"__file__": "/site-packages/immutables"}),
)
@patch_if(
salt.utils.thin.typing_extensions is not None,
"salt.utils.thin.typing_extensions",
type("typing_extensions", (), {"__file__": "/site-packages/typing_extensions"}),
)
@patch("salt.utils.thin.log", MagicMock())
def test_get_tops_so_mods(self):
"""
@ -694,11 +708,12 @@ class SSHThinTestCase(TestCase):
"contextvars",
"looseversion",
"packaging",
"immutables",
"foo.so",
"bar.so",
]
if salt.utils.thin.has_immutables:
base_tops.extend(["immutables"])
if salt.utils.thin.typing_extensions is not None:
base_tops.append("typing_extensions")
libs = salt.utils.thin.find_site_modules("contextvars")
with patch("salt.utils.thin.find_site_modules", MagicMock(side_effect=[libs])):
with patch(