Fix entrypoint bug in py3.8/3.9
This commit is contained in:
@@ -16,12 +16,21 @@ if sys.version_info >= (3,10,0):
|
|||||||
def _get_name_from_dist(dist: 'Distribution') -> str:
|
def _get_name_from_dist(dist: 'Distribution') -> str:
|
||||||
return dist.name
|
return dist.name
|
||||||
|
|
||||||
elif sys.version_info >= (3,8,0):
|
elif sys.version_info >= (3,8,0): # pragma: no cover
|
||||||
from importlib import metadata
|
from importlib import metadata
|
||||||
|
|
||||||
def _get_entry_points(group_name: str) -> List[Tuple['EntryPoint', 'Distribution']]:
|
def _get_entry_points(group_name: str) -> List[Tuple['EntryPoint', 'Distribution']]:
|
||||||
eps = []
|
eps = []
|
||||||
|
dist_names = set()
|
||||||
for dist in metadata.distributions():
|
for dist in metadata.distributions():
|
||||||
|
# Due to a bug in importlib.metadata's distributions iterator, in
|
||||||
|
# some cases editable installs will cause duplicate dist entries.
|
||||||
|
# Filter this out.
|
||||||
|
dist_name = get_name_from_dist(dist)
|
||||||
|
if dist_name in dist_names:
|
||||||
|
continue
|
||||||
|
dist_names.add(dist_name)
|
||||||
|
|
||||||
for ep in dist.entry_points:
|
for ep in dist.entry_points:
|
||||||
if ep.group == group_name:
|
if ep.group == group_name:
|
||||||
eps.append((ep, dist))
|
eps.append((ep, dist))
|
||||||
@@ -30,7 +39,7 @@ elif sys.version_info >= (3,8,0):
|
|||||||
def _get_name_from_dist(dist: 'Distribution') -> str:
|
def _get_name_from_dist(dist: 'Distribution') -> str:
|
||||||
return dist.metadata["Name"]
|
return dist.metadata["Name"]
|
||||||
|
|
||||||
else:
|
else: # pragma: no cover
|
||||||
import pkg_resources # type: ignore
|
import pkg_resources # type: ignore
|
||||||
|
|
||||||
def _get_entry_points(group_name: str) -> List[Tuple['EntryPoint', 'Distribution']]:
|
def _get_entry_points(group_name: str) -> List[Tuple['EntryPoint', 'Distribution']]:
|
||||||
|
|||||||
Reference in New Issue
Block a user