Use importlib_metadata for Python 3.8, refs #2057

This commit is contained in:
Simon Willison 2023-09-21 13:26:13 -07:00
commit 2da1a6acec
2 changed files with 7 additions and 4 deletions

View file

@ -1,4 +1,4 @@
import importlib.metadata import importlib
import os import os
import pluggy import pluggy
import sys import sys
@ -6,8 +6,10 @@ from . import hookspecs
if sys.version_info >= (3, 9): if sys.version_info >= (3, 9):
import importlib.resources as importlib_resources import importlib.resources as importlib_resources
import importlib.metadata as importlib_metadata
else: else:
import importlib_resources import importlib_resources
import importlib_metadata
DEFAULT_PLUGINS = ( DEFAULT_PLUGINS = (
@ -40,7 +42,7 @@ if DATASETTE_LOAD_PLUGINS is not None:
name for name in DATASETTE_LOAD_PLUGINS.split(",") if name.strip() name for name in DATASETTE_LOAD_PLUGINS.split(",") if name.strip()
]: ]:
try: try:
distribution = importlib.metadata.distribution(package_name) distribution = importlib_metadata.distribution(package_name)
entry_points = distribution.entry_points entry_points = distribution.entry_points
for entry_point in entry_points: for entry_point in entry_points:
if entry_point.group == "datasette": if entry_point.group == "datasette":
@ -48,7 +50,7 @@ if DATASETTE_LOAD_PLUGINS is not None:
pm.register(mod, name=entry_point.name) pm.register(mod, name=entry_point.name)
# Ensure name can be found in plugin_to_distinfo later: # Ensure name can be found in plugin_to_distinfo later:
pm._plugin_distinfo.append((mod, distribution)) pm._plugin_distinfo.append((mod, distribution))
except importlib.metadata.PackageNotFoundError: except importlib_metadata.PackageNotFoundError:
sys.stderr.write("Plugin {} could not be found\n".format(package_name)) sys.stderr.write("Plugin {} could not be found\n".format(package_name))
@ -86,6 +88,6 @@ def get_plugins():
distinfo = plugin_to_distinfo.get(plugin) distinfo = plugin_to_distinfo.get(plugin)
if distinfo: if distinfo:
plugin_info["version"] = distinfo.version plugin_info["version"] = distinfo.version
plugin_info["name"] = distinfo.name plugin_info["name"] = distinfo.name or distinfo.project_name
plugins.append(plugin_info) plugins.append(plugin_info)
return plugins return plugins

View file

@ -49,6 +49,7 @@ setup(
"hupper>=1.9", "hupper>=1.9",
"httpx>=0.20", "httpx>=0.20",
'importlib_resources>=1.3.1; python_version < "3.9"', 'importlib_resources>=1.3.1; python_version < "3.9"',
'importlib_metadata>=4.6; python_version < "3.9"',
"pint>=0.9", "pint>=0.9",
"pluggy>=1.0", "pluggy>=1.0",
"uvicorn>=0.11", "uvicorn>=0.11",