diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4f9f584d..93e36d1b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -20,7 +20,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python-version: [ '3.8', '3.9', '3.10', '3.11' ] + python-version: [ '3.8', '3.9', '3.10', '3.11', '3.12' ] steps: - name: Checkout diff --git a/jupyverse_api/jupyverse_api/cli.py b/jupyverse_api/jupyverse_api/cli.py index 3a10f5cc..b2246f5b 100644 --- a/jupyverse_api/jupyverse_api/cli.py +++ b/jupyverse_api/jupyverse_api/cli.py @@ -1,6 +1,11 @@ -import pkg_resources +import sys from typing import List, Tuple +if sys.version_info >= (3, 10): + from importlib.metadata import entry_points +else: + from importlib_metadata import entry_points + import rich_click as click from asphalt.core.cli import run @@ -70,11 +75,8 @@ def main( def get_config(disable: Tuple[str, ...]) -> str: - jupyverse_components = [ - ep.name - for ep in pkg_resources.iter_entry_points(group="jupyverse.components") - if ep.name not in disable - ] + group = entry_points().select(group="jupyverse.components") + jupyverse_components = [ep.name for ep in group if ep.name not in disable] config = ["component:\n type: jupyverse\n components:\n"] for component in jupyverse_components: diff --git a/jupyverse_api/pyproject.toml b/jupyverse_api/pyproject.toml index bb4d0e43..d0101033 100644 --- a/jupyverse_api/pyproject.toml +++ b/jupyverse_api/pyproject.toml @@ -29,6 +29,7 @@ dependencies = [ "rich-click >=1.6.1,<2", "asphalt >=4.11.0,<5", "asphalt-web[fastapi] >=1.1.0,<2", + "importlib_metadata >= 4.4; python_version < '3.10'", ] dynamic = ["version"] diff --git a/plugins/lab/fps_lab/routes.py b/plugins/lab/fps_lab/routes.py index 00aefc8d..46656df3 100644 --- a/plugins/lab/fps_lab/routes.py +++ b/plugins/lab/fps_lab/routes.py @@ -1,13 +1,18 @@ import json import logging import os +import sys from glob import glob from http import HTTPStatus from pathlib import Path from typing import List, Optional, Tuple import json5 # type: ignore -import pkg_resources + +if sys.version_info >= (3, 10): + from importlib.metadata import entry_points +else: + from importlib_metadata import entry_points from babel import Locale from fastapi import Response, status from fastapi.responses import FileResponse, RedirectResponse @@ -80,7 +85,8 @@ async def get_translations(self, user: User): "nativeName": native_name, } } - for ep in pkg_resources.iter_entry_points(group="jupyterlab.languagepack"): + group = entry_points().select(group="jupyterlab.languagepack") + for ep in group: locale = Locale.parse(ep.name) data[ep.name] = { "displayName": display_name, @@ -97,7 +103,8 @@ async def get_translation( self.locale = language return {} - for ep in pkg_resources.iter_entry_points(group="jupyterlab.languagepack"): + group = entry_points().select(group="jupyterlab.languagepack") + for ep in group: if ep.name == language: break else: diff --git a/plugins/lab/pyproject.toml b/plugins/lab/pyproject.toml index a68240be..2d447b26 100644 --- a/plugins/lab/pyproject.toml +++ b/plugins/lab/pyproject.toml @@ -11,6 +11,7 @@ dependencies = [ "babel", "json5", "jupyverse-api >=0.1.2,<1", + "importlib_metadata >= 4.4; python_version < '3.10'", ] dynamic = [ "version",] [[project.authors]]