Skip to content

Commit 9bbd181

Browse files
NiklasRosensteinGitHub Action
andauthored
databind.core/: improvement: Support Python 3.12 by using importlib.metadata instead of pkg_resources in Python 3.10 and newer (#55)
* databind.core/: improvement: Support Python 3.12 by using `importlib.metadata` instead of `pkg_resources` in Python 3.10 and newer * Updated PR references in 1 changelogs. skip-checks: true * include 3.12 in tests * fix mypy --------- Co-authored-by: GitHub Action <[email protected]>
1 parent 83ef31f commit 9bbd181

File tree

4 files changed

+21
-5
lines changed

4 files changed

+21
-5
lines changed

.github/workflows/python.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
runs-on: ubuntu-20.04
1010
strategy:
1111
matrix:
12-
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.x"]
12+
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.x"]
1313
steps:
1414
- uses: actions/checkout@v2
1515
- uses: NiklasRosenstein/slap@gha/install/v1
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[[entries]]
2+
id = "765031c7-ffd8-4078-8e54-4e5e9154f036"
3+
type = "improvement"
4+
description = "Support Python 3.12 by using `importlib.metadata` instead of `pkg_resources` in Python 3.10 and newer"
5+
author = "@NiklasRosenstein"
6+
pr = "https://github.com/NiklasRosenstein/python-databind/pull/55"

databind.core/pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ python = "^3.6.3"
1818
Deprecated = "^1.2.12"
1919
nr-date = "^2.0.0"
2020
nr-stream = "^1.0.0"
21+
setuptools = { version = ">=40.8.0", markers = "python_version < '3.10'" }
2122
typeapi = "^2.0.1"
2223
typing-extensions = ">=3.10.0,<4.7" # See https://github.com/python/typing_extensions/issues/265#issuecomment-1616809112
2324

databind.core/src/databind/core/union.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,23 @@
33
import abc
44
import dataclasses
55
import importlib
6+
import sys
67
import types
78
import typing as t
89

9-
import pkg_resources
1010
from typeapi import ClassTypeHint, TypeHint
1111

1212
from databind.core.utils import T
1313

14+
if sys.version_info[:2] < (3, 10):
15+
from pkg_resources import EntryPoint, iter_entry_points
16+
else:
17+
from importlib.metadata import EntryPoint, entry_points
18+
19+
def iter_entry_points(group: str) -> t.Iterator[EntryPoint]:
20+
return iter(entry_points(group=group))
21+
22+
1423
__all__ = ["UnionMembers", "StaticUnionMembers", "EntrypointUnionMembers", "ImportUnionMembers", "ChainUnionMembers"]
1524

1625

@@ -126,13 +135,13 @@ class EntrypointUnionMembers(UnionMembers):
126135
group: str
127136

128137
def __post_init__(self) -> None:
129-
self._entrypoints_cache: t.Optional[t.Dict[str, pkg_resources.EntryPoint]] = None
138+
self._entrypoints_cache: t.Optional[t.Dict[str, EntryPoint]] = None
130139

131140
@property
132-
def _entrypoints(self) -> t.Dict[str, pkg_resources.EntryPoint]:
141+
def _entrypoints(self) -> t.Dict[str, EntryPoint]:
133142
if self._entrypoints_cache is None:
134143
self._entrypoints_cache = {}
135-
for ep in pkg_resources.iter_entry_points(self.group):
144+
for ep in iter_entry_points(self.group):
136145
self._entrypoints_cache[ep.name] = ep
137146
return self._entrypoints_cache
138147

0 commit comments

Comments
 (0)