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

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


The following commit(s) were added to refs/heads/master by this push:
     new c72f40e58c5 [FLINK-39052][python] Remove usage of pkg_resources 
(#27556)
c72f40e58c5 is described below

commit c72f40e58c5a049af609f4e72e434a5d3176698c
Author: Dian Fu <[email protected]>
AuthorDate: Mon Feb 9 19:52:13 2026 +0800

    [FLINK-39052][python] Remove usage of pkg_resources (#27556)
---
 flink-python/pyflink/gen_protos.py | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/flink-python/pyflink/gen_protos.py 
b/flink-python/pyflink/gen_protos.py
index 021023616cd..6bee23ee713 100644
--- a/flink-python/pyflink/gen_protos.py
+++ b/flink-python/pyflink/gen_protos.py
@@ -30,7 +30,9 @@ import sys
 import time
 import warnings
 
-import pkg_resources
+from importlib import metadata as importlib_metadata
+from importlib import resources as importlib_resources
+from packaging.version import parse as parse_version
 
 GRPC_TOOLS = 'grpcio-tools>=1.29.0,<=1.71.0'
 PROTO_PATHS = ['proto']
@@ -87,7 +89,9 @@ def generate_proto_files(force=True, 
output_dir=DEFAULT_PYTHON_OUTPUT_PATH):
         else:
             _check_grpcio_tools_version()
             logging.info('Regenerating out-of-date Python proto definitions.')
-            builtin_protos = pkg_resources.resource_filename('grpc_tools', 
'_proto')
+            # Get the grpc_tools _proto directory path
+            grpc_tools_files = importlib_resources.files('grpc_tools')
+            builtin_protos = str(grpc_tools_files.joinpath('_proto'))
             args = (
                 [sys.executable] +  # expecting to be called from command line
                 ['--proto_path=%s' % builtin_protos] +
@@ -122,8 +126,7 @@ def _install_grpcio_tools_and_generate_proto_files(force, 
output_dir):
         start = time.time()
         # since '--prefix' option is only supported for pip 8.0+, so here we 
fallback to
         # use '--install-option' when the pip version is lower than 8.0.0.
-        pip_version = pkg_resources.get_distribution("pip").version
-        from pkg_resources import parse_version
+        pip_version = importlib_metadata.version("pip")
         if parse_version(pip_version) >= parse_version('8.0.0'):
             subprocess.check_call(
                 [sys.executable, '-m', 'pip', 'install',
@@ -144,10 +147,8 @@ def _install_grpcio_tools_and_generate_proto_files(force, 
output_dir):
         sys.stderr.flush()
         shutil.rmtree(build_path, ignore_errors=True)
     sys.path.append(install_obj.install_purelib)
-    pkg_resources.working_set.add_entry(install_obj.install_purelib)
     if install_obj.install_purelib != install_obj.install_platlib:
         sys.path.append(install_obj.install_platlib)
-        pkg_resources.working_set.add_entry(install_obj.install_platlib)
     try:
         generate_proto_files(force, output_dir)
     finally:
@@ -185,11 +186,11 @@ def _add_license_header(dir, file_name):
 
 
 def _check_grpcio_tools_version():
-    version = pkg_resources.get_distribution("grpcio-tools").parsed_version
-    from pkg_resources import parse_version
+    version_str = importlib_metadata.version("grpcio-tools")
+    version = parse_version(version_str)
     if version < parse_version('1.29.0') or version > parse_version('1.71.0'):
         raise RuntimeError(
-            "Version of grpcio-tools must be between 1.29.0 and 1.71.0, got 
%s" % version)
+            "Version of grpcio-tools must be between 1.29.0 and 1.71.0, got 
%s" % version_str)
 
 
 if __name__ == '__main__':

Reply via email to