[Lldb-commits] [lldb] [lldb] Migrate distutils.version.LooseVersion to packaging.LooseVersion (PR #82066)

2024-02-16 Thread Jonas Devlieghere via lldb-commits

https://github.com/JDevlieghere updated 
https://github.com/llvm/llvm-project/pull/82066

>From dad7c2a49f118d11b213b9691c8b01733040a510 Mon Sep 17 00:00:00 2001
From: Jonas Devlieghere 
Date: Fri, 16 Feb 2024 14:59:15 -0800
Subject: [PATCH] [lldb] Migrate distutils.version.LooseVersion to packaging

The distutils package has been deprecated and was removed from Python
3.12. The migration page [1] advises to use the packaging module
instead. Since Python 3.6 that's vendored into pkg_resources.

[1] https://peps.python.org/pep-0632/#migration-advice
---
 .../Python/lldbsuite/test/decorators.py   | 12 ---
 .../Python/lldbsuite/test/lldbplatformutil.py | 18 ---
 lldb/test/API/sanity/TestSettingSkipping.py   | 32 +--
 .../lldb-server/TestAppleSimulatorOSType.py   |  4 +--
 lldb/test/Shell/helper/build.py   |  4 +--
 5 files changed, 40 insertions(+), 30 deletions(-)

diff --git a/lldb/packages/Python/lldbsuite/test/decorators.py 
b/lldb/packages/Python/lldbsuite/test/decorators.py
index a5d7a7a25879df..b691f82b90652c 100644
--- a/lldb/packages/Python/lldbsuite/test/decorators.py
+++ b/lldb/packages/Python/lldbsuite/test/decorators.py
@@ -1,6 +1,6 @@
 # System modules
-from distutils.version import LooseVersion
 from functools import wraps
+from pkg_resources import packaging
 import ctypes
 import locale
 import os
@@ -65,10 +65,10 @@ def fn_neq(x, y):
 ">=": fn_geq,
 "<=": fn_leq,
 }
-expected_str = ".".join([str(x) for x in expected])
-actual_str = ".".join([str(x) for x in actual])
 
-return op_lookup[comparison](LooseVersion(actual_str), 
LooseVersion(expected_str))
+return op_lookup[comparison](
+packaging.version.parse(actual), packaging.version.parse(expected)
+)
 
 
 def _match_decorator_property(expected, actual):
@@ -238,7 +238,9 @@ def fn(actual_debug_info=None):
 )
 )
 skip_for_py_version = (py_version is None) or _check_expected_version(
-py_version[0], py_version[1], sys.version_info
+py_version[0],
+py_version[1],
+"{}.{}".format(sys.version_info.major, sys.version_info.minor),
 )
 skip_for_macos_version = (macos_version is None) or (
 (platform.mac_ver()[0] != "")
diff --git a/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py 
b/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py
index bd92d03e0e2212..f159e53a98429e 100644
--- a/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py
+++ b/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py
@@ -7,8 +7,8 @@
 import subprocess
 import sys
 import os
-from distutils.version import LooseVersion
 from urllib.parse import urlparse
+from pkg_resources import packaging
 
 # LLDB modules
 import lldb
@@ -308,13 +308,21 @@ def expectedCompilerVersion(compiler_version):
 return operator in [">", ">=", "!", "!=", "not"]
 
 if operator == ">":
-return LooseVersion(test_compiler_version) > LooseVersion(version)
+return packaging.version.parse(test_compiler_version) > 
packaging.version.parse(
+version
+)
 if operator == ">=" or operator == "=>":
-return LooseVersion(test_compiler_version) >= LooseVersion(version)
+return packaging.version.parse(
+test_compiler_version
+) >= packaging.version.parse(version)
 if operator == "<":
-return LooseVersion(test_compiler_version) < LooseVersion(version)
+return packaging.version.parse(test_compiler_version) < 
packaging.version.parse(
+version
+)
 if operator == "<=" or operator == "=<":
-return LooseVersion(test_compiler_version) <= LooseVersion(version)
+return packaging.version.parse(
+test_compiler_version
+) <= packaging.version.parse(version)
 if operator == "!=" or operator == "!" or operator == "not":
 return str(version) not in str(test_compiler_version)
 return str(version) in str(test_compiler_version)
diff --git a/lldb/test/API/sanity/TestSettingSkipping.py 
b/lldb/test/API/sanity/TestSettingSkipping.py
index 5f58ec2638456d..369948b2b49463 100644
--- a/lldb/test/API/sanity/TestSettingSkipping.py
+++ b/lldb/test/API/sanity/TestSettingSkipping.py
@@ -1,8 +1,7 @@
 """
-This is a sanity check that verifies that test can be sklipped based on 
settings.
+This is a sanity check that verifies that test can be skipped based on 
settings.
 """
 
-
 import lldb
 from lldbsuite.test.lldbtest import *
 from lldbsuite.test.decorators import *
@@ -10,24 +9,25 @@
 
 class SettingSkipSanityTestCase(TestBase):
 NO_DEBUG_INFO_TESTCASE = True
+REAL_PYTHON_VERSION = "3.0"
+FUTURE_PYTHON_VERSION = "4.0"
 
-@skipIf(py_version=(">=", (3, 0)))
+@skipIf(py_version=(">=", REAL_PYTHON_VERSION))
 def testSkip(self):
-"""This setting is on by default"""
-self.assertTrue(False, "This test should not run!")
-

[Lldb-commits] [lldb] [lldb] Migrate distutils.version.LooseVersion to packaging.LooseVersion (PR #82066)

2024-02-16 Thread via lldb-commits

llvmbot wrote:




@llvm/pr-subscribers-lldb

Author: Jonas Devlieghere (JDevlieghere)


Changes

The distutils package has been deprecated and was removed from Python 3.12. The 
migration page [1] advises to use the packaging module instead. Since Python 
3.6 that's vendored into pkg_resources.

[1] https://peps.python.org/pep-0632/#migration-advice

---
Full diff: https://github.com/llvm/llvm-project/pull/82066.diff


5 Files Affected:

- (modified) lldb/packages/Python/lldbsuite/test/decorators.py (+7-5) 
- (modified) lldb/packages/Python/lldbsuite/test/lldbplatformutil.py (+13-5) 
- (modified) lldb/test/API/sanity/TestSettingSkipping.py (+16-16) 
- (modified) lldb/test/API/tools/lldb-server/TestAppleSimulatorOSType.py (+2-2) 
- (modified) lldb/test/Shell/helper/build.py (+2-2) 


``diff
diff --git a/lldb/packages/Python/lldbsuite/test/decorators.py 
b/lldb/packages/Python/lldbsuite/test/decorators.py
index a5d7a7a25879df..b691f82b90652c 100644
--- a/lldb/packages/Python/lldbsuite/test/decorators.py
+++ b/lldb/packages/Python/lldbsuite/test/decorators.py
@@ -1,6 +1,6 @@
 # System modules
-from distutils.version import LooseVersion
 from functools import wraps
+from pkg_resources import packaging
 import ctypes
 import locale
 import os
@@ -65,10 +65,10 @@ def fn_neq(x, y):
 ">=": fn_geq,
 "<=": fn_leq,
 }
-expected_str = ".".join([str(x) for x in expected])
-actual_str = ".".join([str(x) for x in actual])
 
-return op_lookup[comparison](LooseVersion(actual_str), 
LooseVersion(expected_str))
+return op_lookup[comparison](
+packaging.version.parse(actual), packaging.version.parse(expected)
+)
 
 
 def _match_decorator_property(expected, actual):
@@ -238,7 +238,9 @@ def fn(actual_debug_info=None):
 )
 )
 skip_for_py_version = (py_version is None) or _check_expected_version(
-py_version[0], py_version[1], sys.version_info
+py_version[0],
+py_version[1],
+"{}.{}".format(sys.version_info.major, sys.version_info.minor),
 )
 skip_for_macos_version = (macos_version is None) or (
 (platform.mac_ver()[0] != "")
diff --git a/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py 
b/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py
index bd92d03e0e2212..f159e53a98429e 100644
--- a/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py
+++ b/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py
@@ -7,8 +7,8 @@
 import subprocess
 import sys
 import os
-from distutils.version import LooseVersion
 from urllib.parse import urlparse
+from pkg_resources import packaging
 
 # LLDB modules
 import lldb
@@ -308,13 +308,21 @@ def expectedCompilerVersion(compiler_version):
 return operator in [">", ">=", "!", "!=", "not"]
 
 if operator == ">":
-return LooseVersion(test_compiler_version) > LooseVersion(version)
+return packaging.version.parse(test_compiler_version) > 
packaging.version.parse(
+version
+)
 if operator == ">=" or operator == "=>":
-return LooseVersion(test_compiler_version) >= LooseVersion(version)
+return packaging.version.parse(
+test_compiler_version
+) >= packaging.version.parse(version)
 if operator == "<":
-return LooseVersion(test_compiler_version) < LooseVersion(version)
+return packaging.version.parse(test_compiler_version) < 
packaging.version.parse(
+version
+)
 if operator == "<=" or operator == "=<":
-return LooseVersion(test_compiler_version) <= LooseVersion(version)
+return packaging.version.parse(
+test_compiler_version
+) <= packaging.version.parse(version)
 if operator == "!=" or operator == "!" or operator == "not":
 return str(version) not in str(test_compiler_version)
 return str(version) in str(test_compiler_version)
diff --git a/lldb/test/API/sanity/TestSettingSkipping.py 
b/lldb/test/API/sanity/TestSettingSkipping.py
index 5f58ec2638456d..369948b2b49463 100644
--- a/lldb/test/API/sanity/TestSettingSkipping.py
+++ b/lldb/test/API/sanity/TestSettingSkipping.py
@@ -1,8 +1,7 @@
 """
-This is a sanity check that verifies that test can be sklipped based on 
settings.
+This is a sanity check that verifies that test can be skipped based on 
settings.
 """
 
-
 import lldb
 from lldbsuite.test.lldbtest import *
 from lldbsuite.test.decorators import *
@@ -10,24 +9,25 @@
 
 class SettingSkipSanityTestCase(TestBase):
 NO_DEBUG_INFO_TESTCASE = True
+REAL_PYTHON_VERSION = "3.0"
+FUTURE_PYTHON_VERSION = "4.0"
 
-@skipIf(py_version=(">=", (3, 0)))
+@skipIf(py_version=(">=", REAL_PYTHON_VERSION))
 def testSkip(self):
-"""This setting is on by default"""
-self.assertTrue(False, "This test should not run!")
-
-@skipIf(py_version=("<", (3, 0)))
-def testNoMatch(self):
-self.assertTrue(True, "This test 

[Lldb-commits] [lldb] [lldb] Migrate distutils.version.LooseVersion to packaging.LooseVersion (PR #82066)

2024-02-16 Thread Jonas Devlieghere via lldb-commits

https://github.com/JDevlieghere created 
https://github.com/llvm/llvm-project/pull/82066

The distutils package has been deprecated and was removed from Python 3.12. The 
migration page [1] advises to use the packaging module instead. Since Python 
3.6 that's vendored into pkg_resources.

[1] https://peps.python.org/pep-0632/#migration-advice

>From ba71b5d70df8c3ba240a86f29f31a78c55ed91d1 Mon Sep 17 00:00:00 2001
From: Jonas Devlieghere 
Date: Fri, 16 Feb 2024 14:59:15 -0800
Subject: [PATCH] [lldb] Migrate distutils.version.LooseVersion to
 packaging.LooseVersion

The distutils package has been deprecated and was removed from Python
3.12. The migration page [1] advises to use the packaging module
instead. Since Python 3.6 that's vendored into pkg_resources.

[1] https://peps.python.org/pep-0632/#migration-advice
---
 .../Python/lldbsuite/test/decorators.py   | 12 ---
 .../Python/lldbsuite/test/lldbplatformutil.py | 18 ---
 lldb/test/API/sanity/TestSettingSkipping.py   | 32 +--
 .../lldb-server/TestAppleSimulatorOSType.py   |  4 +--
 lldb/test/Shell/helper/build.py   |  4 +--
 5 files changed, 40 insertions(+), 30 deletions(-)

diff --git a/lldb/packages/Python/lldbsuite/test/decorators.py 
b/lldb/packages/Python/lldbsuite/test/decorators.py
index a5d7a7a25879df..b691f82b90652c 100644
--- a/lldb/packages/Python/lldbsuite/test/decorators.py
+++ b/lldb/packages/Python/lldbsuite/test/decorators.py
@@ -1,6 +1,6 @@
 # System modules
-from distutils.version import LooseVersion
 from functools import wraps
+from pkg_resources import packaging
 import ctypes
 import locale
 import os
@@ -65,10 +65,10 @@ def fn_neq(x, y):
 ">=": fn_geq,
 "<=": fn_leq,
 }
-expected_str = ".".join([str(x) for x in expected])
-actual_str = ".".join([str(x) for x in actual])
 
-return op_lookup[comparison](LooseVersion(actual_str), 
LooseVersion(expected_str))
+return op_lookup[comparison](
+packaging.version.parse(actual), packaging.version.parse(expected)
+)
 
 
 def _match_decorator_property(expected, actual):
@@ -238,7 +238,9 @@ def fn(actual_debug_info=None):
 )
 )
 skip_for_py_version = (py_version is None) or _check_expected_version(
-py_version[0], py_version[1], sys.version_info
+py_version[0],
+py_version[1],
+"{}.{}".format(sys.version_info.major, sys.version_info.minor),
 )
 skip_for_macos_version = (macos_version is None) or (
 (platform.mac_ver()[0] != "")
diff --git a/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py 
b/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py
index bd92d03e0e2212..f159e53a98429e 100644
--- a/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py
+++ b/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py
@@ -7,8 +7,8 @@
 import subprocess
 import sys
 import os
-from distutils.version import LooseVersion
 from urllib.parse import urlparse
+from pkg_resources import packaging
 
 # LLDB modules
 import lldb
@@ -308,13 +308,21 @@ def expectedCompilerVersion(compiler_version):
 return operator in [">", ">=", "!", "!=", "not"]
 
 if operator == ">":
-return LooseVersion(test_compiler_version) > LooseVersion(version)
+return packaging.version.parse(test_compiler_version) > 
packaging.version.parse(
+version
+)
 if operator == ">=" or operator == "=>":
-return LooseVersion(test_compiler_version) >= LooseVersion(version)
+return packaging.version.parse(
+test_compiler_version
+) >= packaging.version.parse(version)
 if operator == "<":
-return LooseVersion(test_compiler_version) < LooseVersion(version)
+return packaging.version.parse(test_compiler_version) < 
packaging.version.parse(
+version
+)
 if operator == "<=" or operator == "=<":
-return LooseVersion(test_compiler_version) <= LooseVersion(version)
+return packaging.version.parse(
+test_compiler_version
+) <= packaging.version.parse(version)
 if operator == "!=" or operator == "!" or operator == "not":
 return str(version) not in str(test_compiler_version)
 return str(version) in str(test_compiler_version)
diff --git a/lldb/test/API/sanity/TestSettingSkipping.py 
b/lldb/test/API/sanity/TestSettingSkipping.py
index 5f58ec2638456d..369948b2b49463 100644
--- a/lldb/test/API/sanity/TestSettingSkipping.py
+++ b/lldb/test/API/sanity/TestSettingSkipping.py
@@ -1,8 +1,7 @@
 """
-This is a sanity check that verifies that test can be sklipped based on 
settings.
+This is a sanity check that verifies that test can be skipped based on 
settings.
 """
 
-
 import lldb
 from lldbsuite.test.lldbtest import *
 from lldbsuite.test.decorators import *
@@ -10,24 +9,25 @@
 
 class SettingSkipSanityTestCase(TestBase):
 NO_DEBUG_INFO_TESTCASE = True
+REAL_PYTHON_VERSION =