From 290d6a2e991de477a3b06d4fc77f9ba8b04d5b5f Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Sat, 6 Dec 2025 19:51:22 -0500 Subject: [PATCH] Remove unnecessary backports dependency for recent python Using importlib_metadata conditionally means for the majority of users on recent python, fewer dependencies need be installed, speeding up distro package managers as well as pip install and reducing bandwidth used. Using sys.version_info checks is self-documenting and various tools can autoremove it when dropping support for old versions of python. This reduces maintenance burden / tech debt when the codebase includes legacy hacks that are anyways slated to be eventually removed. Fixes: d1d02c69891ddd5367903ea0bb11d260c3cac219 Fixes: fc7d69c2e1070886901bb4c02a792df911a0e384 Bug: https://github.com/Kozea/pygal/issues/545 --- pygal/__init__.py | 5 ++++- pygal/test/test_maps.py | 7 ++++++- setup.py | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/pygal/__init__.py b/pygal/__init__.py index 2b6f02fd..51d886e4 100644 --- a/pygal/__init__.py +++ b/pygal/__init__.py @@ -29,7 +29,10 @@ import traceback import warnings -from importlib_metadata import entry_points +if sys.version_info >= (3, 10): + from importlib.metadata import entry_points +else: + from importlib_metadata import entry_points from pygal import maps from pygal.config import Config diff --git a/pygal/test/test_maps.py b/pygal/test/test_maps.py index 1f6cf46d..79645387 100644 --- a/pygal/test/test_maps.py +++ b/pygal/test/test_maps.py @@ -18,7 +18,12 @@ # along with pygal. If not, see . """Map plugins tests are imported here""" -from importlib_metadata import entry_points +import sys + +if sys.version_info >= (3, 10): + from importlib.metadata import entry_points +else: + from importlib_metadata import entry_points # Load plugins tests for entry in entry_points(group="pygal.test.test_maps"): diff --git a/setup.py b/setup.py index c9cdfc4d..2401740b 100644 --- a/setup.py +++ b/setup.py @@ -63,7 +63,7 @@ keywords=[ "svg", "chart", "graph", "diagram", "plot", "histogram", "kiviat"], setup_requires=['pytest-runner'], - install_requires=['importlib-metadata'], # TODO: remove this (see #545, #546) + install_requires=['importlib-metadata; python_version < "3.10"'], package_data={'pygal': ['css/*', 'graph/maps/*.svg']}, extras_require={ 'lxml': ['lxml'],