From fb86f374848f31a842df36eb74a1cf2254e00acd Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Thu, 8 May 2025 18:48:30 -0500 Subject: [PATCH 1/2] Make Hash importable again from persistent_dict --- pytools/persistent_dict.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) 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): From 41cd9c67c9702b29de15c1fb2074112a75f28293 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Fri, 9 May 2025 09:31:47 -0500 Subject: [PATCH 2/2] Add missing field_specifiers to @dataclass_transform --- pytools/__init__.py | 3 ++- pytools/tag.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) 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/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)