From 578b581f4fa3c738107b068a794982af2acd0d2f Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Fri, 23 Jan 2026 09:36:22 +0800 Subject: [PATCH] pybind: hardwire language_level to 3 Previously, to maintain backward compatibility with Python 2, we set 'language_level' to sys.version_info.major, so the value would be 2 when building with Python 2, and 3 with Python 3. Now that Python 2 support has been dropped, we can hardwire it to "3". This change also removes the comment about switching to `language_level=3str` in the future. According to the Cython 3.1+ documentation, > language_level=3 is now the default. language_level=3str has become a > legacy alias. see https://cython.readthedocs.io/en/3.1.x/src/changes.html. For context, in Cython < 3.1, language_level=3 and language_level=3str had different meanings: - 3 = unprefixed strings are unicode - 3str = unprefixed strings follow Python version (bytes in Py2, unicode in Py3) Since we no longer support Python 2, this distinction is irrelevant and the comment can be safely removed. Signed-off-by: Kefu Chai --- src/pybind/rados/rados.pyx | 1 + src/pybind/rados/setup.py | 2 -- src/pybind/rbd/rbd.pyx | 1 + src/pybind/rbd/setup.py | 2 +- src/pybind/rgw/rgw.pyx | 1 + src/pybind/rgw/setup.py | 1 - 6 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pybind/rados/rados.pyx b/src/pybind/rados/rados.pyx index 48e9746161f..6b3780f8dd9 100644 --- a/src/pybind/rados/rados.pyx +++ b/src/pybind/rados/rados.pyx @@ -1,3 +1,4 @@ +# cython: language_level=3 # cython: embedsignature=True, binding=True """ This module is a thin wrapper around librados. diff --git a/src/pybind/rados/setup.py b/src/pybind/rados/setup.py index 72cfe365dda..ec345f9718c 100755 --- a/src/pybind/rados/setup.py +++ b/src/pybind/rados/setup.py @@ -217,8 +217,6 @@ setup( **ext_args ) ], - # use "3str" when Cython 3.0 is available - compiler_directives={'language_level': sys.version_info.major}, compile_time_env=cython_constants, build_dir=os.environ.get("CYTHON_BUILD_DIR", None), ), diff --git a/src/pybind/rbd/rbd.pyx b/src/pybind/rbd/rbd.pyx index cd491213e7f..1a4c6ded18f 100644 --- a/src/pybind/rbd/rbd.pyx +++ b/src/pybind/rbd/rbd.pyx @@ -1,3 +1,4 @@ +# cython: language_level=3 # cython: embedsignature=True """ This module is a thin wrapper around librbd. diff --git a/src/pybind/rbd/setup.py b/src/pybind/rbd/setup.py index f5e654287c5..237385c4b3c 100755 --- a/src/pybind/rbd/setup.py +++ b/src/pybind/rbd/setup.py @@ -155,7 +155,7 @@ else: sys.exit(1) cmdclass = {} -compiler_directives={'language_level': sys.version_info.major} +compiler_directives = {} try: from Cython.Build import cythonize from Cython.Distutils import build_ext diff --git a/src/pybind/rgw/rgw.pyx b/src/pybind/rgw/rgw.pyx index a2689d93185..5b4b8fba627 100644 --- a/src/pybind/rgw/rgw.pyx +++ b/src/pybind/rgw/rgw.pyx @@ -1,3 +1,4 @@ +# cython: language_level=3 """ This module is a thin wrapper around rgw_file. """ diff --git a/src/pybind/rgw/setup.py b/src/pybind/rgw/setup.py index 8b9b9ac1fef..374167cbbca 100755 --- a/src/pybind/rgw/setup.py +++ b/src/pybind/rgw/setup.py @@ -226,7 +226,6 @@ setup( **ext_args ) ], - compiler_directives={'language_level': sys.version_info.major}, build_dir=os.environ.get("CYTHON_BUILD_DIR", None), **cythonize_args ), -- 2.47.3