python-immutable
Advanced tools
@@ -20,3 +20,3 @@ # file generated by setuptools-scm | ||
| __version__ = version = '1.1.2.dev125051810399485410' | ||
| __version_tuple__ = version_tuple = (1, 1, 2, 'dev125051810399485410') | ||
| __version__ = version = '1.1.2.dev225051810399574810' | ||
| __version_tuple__ = version_tuple = (1, 1, 2, 'dev225051810399574810') |
+14
-5
@@ -5,4 +5,4 @@ # ruff: noqa: A003, D100, D101, D102, D103, D104, D105, D107 | ||
| import sys | ||
| from dataclasses import dataclass, make_dataclass | ||
| from typing import TYPE_CHECKING, Any, TypeVar | ||
| from dataclasses import dataclass, make_dataclass, replace | ||
| from typing import TYPE_CHECKING, Any, Self, TypeVar, cast | ||
@@ -14,5 +14,7 @@ from typing_extensions import TypeGuard, dataclass_transform | ||
| from _typeshed import DataclassInstance | ||
| _T = TypeVar('_T') | ||
| dataclass_kwargs = {'frozen': True, 'eq': False} | ||
| dataclass_kwargs = {'frozen': True, 'eq': False, 'unsafe_hash': True} | ||
| if sys.version_info >= (3, 10): | ||
@@ -22,3 +24,3 @@ dataclass_kwargs = {**dataclass_kwargs, 'kw_only': True} | ||
| @dataclass_transform(kw_only_default=True, frozen_default=True) | ||
| @dataclass_transform(kw_only_default=True, frozen_default=True, eq_default=False) | ||
| def immutable(cls: type[_T]) -> type[_T]: | ||
@@ -46,3 +48,6 @@ return dataclass(**dataclass_kwargs)(cls) | ||
| def __call__(self, **kwrags: object) -> Self: | ||
| return cast('Self', replace(cast('DataclassInstance', self), **kwrags)) | ||
| class _Immutable(Immutable): | ||
@@ -60,3 +65,7 @@ def __init_subclass__( | ||
| and hasattr(obj, '__dataclass_params__') | ||
| and getattr(getattr(obj, '__dataclass_params__', None), 'frozen', False) | ||
| and all( | ||
| getattr(getattr(obj, '__dataclass_params__', None), key, None) | ||
| is dataclass_kwargs[key] | ||
| for key in dataclass_kwargs | ||
| ) | ||
| ) | ||
@@ -63,0 +72,0 @@ |
+1
-1
| Metadata-Version: 2.4 | ||
| Name: python-immutable | ||
| Version: 1.1.2.dev125051810399485410 | ||
| Version: 1.1.2.dev225051810399574810 | ||
| Summary: Immutable implementation for Python using dataclasses | ||
@@ -5,0 +5,0 @@ Author-email: Sassan Haradji <me@sassanh.com> |
Alert delta unavailable
Currently unable to show alert delta for PyPI packages.
20434
1.66%80
9.59%