Skip to content

Commit c1197ca

Browse files
committed
Avoid using slots with `dataclasses in Python earlier than 3.11
1 parent 1b2b923 commit c1197ca

File tree

4 files changed

+14
-8
lines changed

4 files changed

+14
-8
lines changed

pronto/entity/__init__.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
import operator
44
import typing
55
import weakref
6-
from dataclasses import dataclass, field
6+
from dataclasses import field
77
from typing import AbstractSet, Any, Dict, FrozenSet, Iterable, Iterator, Optional, Set
88

99
from ..definition import Definition
1010
from ..pv import PropertyValue
1111
from ..synonym import Synonym, SynonymData, SynonymType
12-
from ..utils.meta import roundrepr, typechecked
12+
from ..utils.meta import dataclass, roundrepr, typechecked
1313
from ..xref import Xref
1414

1515
if typing.TYPE_CHECKING:
@@ -51,8 +51,6 @@ class EntityData:
5151
if typing.TYPE_CHECKING:
5252
__annotations__: Dict[str, str]
5353

54-
#__slots__ = ("__weakref__",) + tuple(__annotations__) # noqa: E0602
55-
5654

5755
class Entity(typing.Generic[_D, _S]):
5856
"""An entity in the ontology graph.

pronto/relationship.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import datetime
22
import operator
33
import typing
4-
from dataclasses import dataclass, field
4+
from dataclasses import field
55
from typing import Dict, Iterable, FrozenSet, Optional, Set, Tuple, Iterator
66

77
from .definition import Definition
@@ -10,7 +10,7 @@
1010
from .logic.lineage import SubpropertiesHandler, SuperpropertiesHandler
1111
from .pv import PropertyValue
1212
from .synonym import SynonymData
13-
from .utils.meta import typechecked
13+
from .utils.meta import typechecked, dataclass
1414
from .xref import Xref
1515

1616
if typing.TYPE_CHECKING:

pronto/term.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import operator
55
import typing
66
import warnings
7-
from dataclasses import dataclass, field
7+
from dataclasses import field
88
from typing import (
99
Dict,
1010
FrozenSet,
@@ -25,7 +25,7 @@
2525
from .pv import PropertyValue
2626
from .relationship import Relationship
2727
from .synonym import SynonymData
28-
from .utils.meta import typechecked
28+
from .utils.meta import dataclass, typechecked
2929
from .utils.warnings import NotImplementedWarning
3030
from .xref import Xref
3131

pronto/utils/meta.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,20 @@
55
import itertools
66
import sys
77
import typing
8+
from dataclasses import dataclass as _dataclass
89
from typing import Callable, Iterator, List, Tuple, Type
910

1011
T = typing.TypeVar("T")
1112
F = typing.TypeVar("F", bound=Callable[..., object])
1213

1314

15+
def dataclass(init: bool = True, slots: bool = False, weakref_slot: bool = False):
16+
if sys.version_info >= (3, 11):
17+
return _dataclass(init=init, slots=slots, weakref_slot=weakref_slot)
18+
else:
19+
return _dataclass(init=init)
20+
21+
1422
class typechecked(object):
1523

1624
_disable = 0

0 commit comments

Comments
 (0)