This is an automated email from the ASF dual-hosted git repository.

JingsongLi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/paimon.git


The following commit(s) were added to refs/heads/master by this push:
     new 405d6d699e [python] Fix readerwriterlock compatibility on Python 
3.6/3.7 (#10532)
405d6d699e is described below

commit 405d6d699efb03c0ee1f411808b6e7967d2d7b7d
Author: QuakeWang <[email protected]>
AuthorDate: Tue Oct 13 13:46:10 2026 +0800

    [python] Fix readerwriterlock compatibility on Python 3.6/3.7 (#10532)
---
 paimon-python/dev/test_packaging.py | 17 +++++++++++++++++
 paimon-python/pyproject.toml        |  4 +++-
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/paimon-python/dev/test_packaging.py 
b/paimon-python/dev/test_packaging.py
index e9d0e5ea52..6c98a36af2 100644
--- a/paimon-python/dev/test_packaging.py
+++ b/paimon-python/dev/test_packaging.py
@@ -163,6 +163,23 @@ class PackagingTest(unittest.TestCase):
                                          self.active_requirements(
                                              
metadata.get_all("Requires-Dist"), environment))
 
+    def test_readerwriterlock_python_compatibility(self):
+        _, metadata, _ = wheel_contents(self.wheel)
+        requirements = [Requirement(value) for value in 
metadata.get_all("Requires-Dist")]
+        locks = [requirement for requirement in requirements
+                 if canonicalize_name(requirement.name) == "readerwriterlock"]
+        for python_version, supports_1_0_10 in (("3.6", False), ("3.7", 
False), ("3.8", True), ("3.13", True)):
+            with self.subTest(python=python_version):
+                environment = default_environment()
+                environment.update(python_version=python_version,
+                                   python_full_version=python_version + ".0", 
extra="")
+                active = [requirement for requirement in locks
+                          if requirement.marker is None or 
requirement.marker.evaluate(environment)]
+                self.assertEqual(1, len(active))
+                self.assertIn("1.0.9", active[0].specifier)
+                self.assertEqual(supports_1_0_10, "1.0.10" in 
active[0].specifier)
+                self.assertNotIn("2.0", active[0].specifier)
+
     def test_dev_group_reuses_product_extras(self):
         resolve = runpy.run_path(str(self.source / 
"dev/install.py"))["resolve_group"]
         requirements = [Requirement(value) for value in resolve(
diff --git a/paimon-python/pyproject.toml b/paimon-python/pyproject.toml
index 7340f7a061..2f7d40b539 100644
--- a/paimon-python/pyproject.toml
+++ b/paimon-python/pyproject.toml
@@ -68,7 +68,9 @@ dependencies = [
     "pyroaring<=0.4.5; python_version == '3.7'",
     "pyroaring>=1.0.0,<=1.0.3; python_version == '3.8'",
     "pyroaring>=1.0.0; python_version >= '3.9'",
-    "readerwriterlock>=1,<2",
+    # readerwriterlock 1.0.10 uses positional-only syntax requiring Python 3.8.
+    "readerwriterlock>=1,<1.0.10; python_version < '3.8'",
+    "readerwriterlock>=1,<2; python_version >= '3.8'",
     "requests>=2.21.0,<3",
     "urllib3>=1.26,<3",
     "zstandard>=0.19,<1",

Reply via email to