diff --git a/pytools/__init__.py b/pytools/__init__.py index ec3325b3..5440d01d 100644 --- a/pytools/__init__.py +++ b/pytools/__init__.py @@ -29,6 +29,7 @@ import builtins import contextlib +import dataclasses import logging import operator import re @@ -3023,7 +3024,7 @@ def unique_union(*args: Iterable[T]) -> Collection[T]: # }}} -@dataclass_transform(frozen_default=True) +@dataclass_transform(frozen_default=True, field_specifiers=(dataclasses.field,)) def opt_frozen_dataclass( *, init: bool = True, diff --git a/pytools/persistent_dict.py b/pytools/persistent_dict.py index 4a639895..3f62425e 100644 --- a/pytools/persistent_dict.py +++ b/pytools/persistent_dict.py @@ -38,14 +38,12 @@ from collections.abc import Callable, Iterator, Mapping from dataclasses import fields as dc_fields, is_dataclass from enum import Enum -from typing import TYPE_CHECKING, Any, TypeVar, cast +from typing import Any, TypeVar, cast from warnings import warn from siphash24 import siphash13 - -if TYPE_CHECKING: - from pytools import Hash +from pytools import Hash # noqa: TC001 # Some places are importing it from here. class RecommendedHashNotFoundWarning(UserWarning): diff --git a/pytools/tag.py b/pytools/tag.py index be620365..70d15515 100644 --- a/pytools/tag.py +++ b/pytools/tag.py @@ -26,7 +26,7 @@ from __future__ import annotations from collections.abc import Iterable -from dataclasses import dataclass +from dataclasses import dataclass, field from typing import TYPE_CHECKING, Any, TypeVar from warnings import warn @@ -118,7 +118,7 @@ def __eq__(self, other: object) -> bool: T = TypeVar("T") -@dataclass_transform(eq_default=True, frozen_default=True) +@dataclass_transform(eq_default=True, frozen_default=True, field_specifiers=(field,)) def tag_dataclass(cls: type[T]) -> type[T]: return dataclass(init=True, frozen=True, eq=True, repr=True)(cls)