diff --git a/event_model/__init__.py b/event_model/__init__.py index 86792a59..278c49ef 100644 --- a/event_model/__init__.py +++ b/event_model/__init__.py @@ -15,6 +15,8 @@ from dataclasses import dataclass from enum import Enum from functools import partial +from importlib.metadata import metadata +from importlib.metadata import version as importlib_version from typing import ( Any, Callable, @@ -34,7 +36,6 @@ import jsonschema import numpy from packaging import version -from pkg_resources import resource_filename as rs_fn from typing_extensions import Literal from .documents.datum import Datum @@ -53,12 +54,10 @@ from .documents.stream_datum import StreamDatum from .documents.stream_resource import StreamResource -if sys.version_info < (3, 8): - from importlib_metadata import metadata - from importlib_metadata import version as importlib_version +if sys.version_info < (3, 9): + import importlib_resources else: - from importlib.metadata import metadata - from importlib.metadata import version as importlib_version + import importlib.resources as importlib_resources __version__ = importlib_version("event-model") @@ -1803,8 +1802,9 @@ class MismatchedDataKeys(InvalidData): } schemas = {} for name, filename in SCHEMA_NAMES.items(): - with open(rs_fn("event_model", filename)) as fin: - schemas[name] = json.load(fin) + ref = importlib_resources.files("event_model") / filename + with ref.open() as f: + schemas[name] = json.load(f) # We pin jsonschema >=3.0.0 in requirements.txt but due to pip's dependency # resolution it is easy to end up with an environment where that pin is not diff --git a/pyproject.toml b/pyproject.toml index 48a3dcb6..ac2d053a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ classifiers = [ ] description = "Data model used by the bluesky ecosystem" dependencies = [ - "importlib-metadata", + "importlib-resources", "jsonschema", "numpy", "packaging",