Skip to content

Commit bb82a73

Browse files
authored
Use 'selectable' interface for entry points only when available (#2246)
1 parent 12a1fc2 commit bb82a73

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

docs/changelog/2246.feature.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Drop the runtime dependency of ``backports.entry-points-selectable`` - by :user:`hroncok`.

setup.cfg

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ project_urls =
4040
[options]
4141
packages = find:
4242
install_requires =
43-
backports.entry-points-selectable>=1.0.4
4443
distlib>=0.3.1,<1
4544
filelock>=3.2,<4
4645
platformdirs>=2,<3

src/virtualenv/run/plugin/base.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
11
from __future__ import absolute_import, unicode_literals
22

3+
import sys
34
from collections import OrderedDict
45

5-
from backports.entry_points_selectable import entry_points
6+
if sys.version_info >= (3, 8):
7+
from importlib.metadata import entry_points
8+
9+
importlib_metadata_version = ()
10+
else:
11+
from importlib_metadata import entry_points, version
12+
13+
importlib_metadata_version = tuple(int(i) for i in version("importlib_metadata").split(".")[:2])
614

715

816
class PluginLoader(object):
@@ -11,7 +19,10 @@ class PluginLoader(object):
1119

1220
@classmethod
1321
def entry_points_for(cls, key):
14-
return OrderedDict((e.name, e.load()) for e in cls.entry_points().select(group=key))
22+
if sys.version_info >= (3, 10) or importlib_metadata_version >= (3, 6):
23+
return OrderedDict((e.name, e.load()) for e in cls.entry_points().select(group=key))
24+
else:
25+
return OrderedDict((e.name, e.load()) for e in cls.entry_points().get(key, {}))
1526

1627
@staticmethod
1728
def entry_points():

0 commit comments

Comments
 (0)