Releases: emcd/python-frigid
v4.2
frigid v4.2 (2025-09-25)
Enhancements
- Internal simplification to reduce dependency on auxiliary functions from
classcorepackage.
Repairs
- Fix runtime compatibility issues with PyPy interpreter by ensuring proper mutability
of internal attributes for exceptions, protocol classes, and dictionaries.
v4.1
Frigid v4.1 (2025-07-02)
Enhancements
- Add
finalize_modulefunction that combines Dynadoc docstring assignment and module reclassification.
Notices
- Deprecate
reclassify_modulesfunction. Usefinalize_moduleinstead.
v4.0
Frigid v4.0 (2025-06-14)
Enhancements
- Add concealment of non-public attributes to standard behaviors of classes and
objects. - Documentation: Add comprehensive examples for classes and update all examples
for the new architecture.
Removals
-
Exceptions: Rename exception classes for better consistency.
AttributeImmutabilityErroris nowAttributeImmutabilityEntryImmutabilityErroris nowEntryImmutabilityEntryValidityErroris nowEntryInvalidity
This is a breaking change - the old exception names are no longer available.
-
Merge
dataclassesandobjectsmodules intoclassesmodule.
Removeqaliasesmodule. -
Replace
@immutabledecorator with@with_standard_behaviors.
Replace@immutable_dataclassdecorator with
@dataclass_with_standard_behaviors.
v4.0rc0
Frigid v4.0rc0 (2025-06-14)
Enhancements
- Add concealment of non-public attributes to standard behaviors of classes and
objects. - Documentation: Add comprehensive examples for classes and update all examples
for the new architecture.
Removals
-
Exceptions: Rename exception classes for better consistency.
AttributeImmutabilityErroris nowAttributeImmutabilityEntryImmutabilityErroris nowEntryImmutabilityEntryValidityErroris nowEntryInvalidity
This is a breaking change - the old exception names are no longer available.
-
Merge
dataclassesandobjectsmodules intoclassesmodule.
Removeqaliasesmodule. -
Replace
@immutabledecorator with@with_standard_behaviors.
Replace@immutable_dataclassdecorator with
@dataclass_with_standard_behaviors.
v3.0
Frigid v3.0 (2025-03-05)
Documentation Improvements
- Improve organization of examples. Improve wording in various places.
Features
- Add metaclasses for immutable dataclasses including
Dataclass,
CompleteDataclass,ProtocolDataclass, and
CompleteProtocolDataclass. These factory classes combine Python's dataclass
functionality with immutable behavior for type-safe, attribute-stable data
containers. - Enhance the
immutabledecorator to accept optional parameters including
docstringfor setting or overriding class documentation andmutables
for specifying attributes that should remain modifiable after initial
assignment.
v3.0rc0
Frigid v3.0rc0 (2025-03-05)
Documentation Improvements
- Improve organization of examples. Improve wording in various places.
Features
- Add metaclasses for immutable dataclasses including
Dataclass,
CompleteDataclass,ProtocolDataclass, and
CompleteProtocolDataclass. These factory classes combine Python's dataclass
functionality with immutable behavior for type-safe, attribute-stable data
containers. - Enhance the
immutabledecorator to accept optional parameters including
docstringfor setting or overriding class documentation andmutables
for specifying attributes that should remain modifiable after initial
assignment.
v2.0
Frigid v2.0 (2025-01-24)
Features
- Add
onefunction which produces 1-element tuples. Cleaner to read than the
1-element tuple syntax and is useful for some functional programming contexts.
Also, addinstallfunction to installoneas a Python, if desired. - Support
mutablesargument when using metaclasses fromfrigid.classes.
Allows for selective mutability of class attributes. ⚠️ BREAKING CHANGES!⚠️ Improvereclassify_modulesto constrain
reclassification to only package modules and not other modules outside of
package. Alter interface to make recursion through subpackages optional. Accept
module objects and module names in addition to module attributes dictionaries.
Attributes dictionaries must contain__package__or__name__attribute
now.
v2.0rc0
Frigid v2.0rc0 (2025-01-24)
Features
- Add
onefunction which produces 1-element tuples. Cleaner to read than the
1-element tuple syntax and is useful for some functional programming contexts.
Also, addinstallfunction to installoneas a Python, if desired. - Support
mutablesargument when using metaclasses fromfrigid.classes.
Allows for selective mutability of class attributes. ⚠️ BREAKING CHANGES!⚠️ Improvereclassify_modulesto constrain
reclassification to only package modules and not other modules outside of
package. Alter interface to make recursion through subpackages optional. Accept
module objects and module names in addition to module attributes dictionaries.
Attributes dictionaries must contain__package__or__name__attribute
now.
v1.0
Frigid v1.0 (2024-12-05)
Features
-
Add
@immutabledecorator for making instances of existing classes immutable
after initialization. Compatible with most classes except those defining their
own__setattr__or__delattr__methods. -
Add
Moduleclass andreclassify_modulesfunction for creating and
converting to immutable modules. This prevents runtime modification of module
attributes, helping ensure interface stability. -
Add
Namespaceclass providing a completely immutable alternative to
types.SimpleNamespace. All attributes must be set during initialization
and cannot be modified afterward. -
Add
Objectbase class for creating objects with immutable attributes.
Derived classes must set attributes in__init__before calling
super().__init__(). -
Add immutable dictionaries, which have additional methods, such as
copyand
with_data, additional operations, such as union (|) and intersection
(&):Dictionaryfor simple immutable mappingsValidatorDictionarywhich uses a provided validator function
-
Add metaclasses for creating classes with immutable class attributes:
Classfor standard classesABCFactoryfor abstract base classesProtocolClassfor protocol classes
-
Add qualified aliases in
qaliasesmodule with "Immutable" prefix for all
core classes, helping avoid namespace conflicts.
Supported Platforms
- Add support for CPython 3.10 to 3.13.
- Add support for PyPy 3.10.
v1.1a0
Frigid v1.1a0 (2024-12-05)
Features
-
Add
@immutabledecorator for making instances of existing classes immutable
after initialization. Compatible with most classes except those defining their
own__setattr__or__delattr__methods. -
Add
Moduleclass andreclassify_modulesfunction for creating and
converting to immutable modules. This prevents runtime modification of module
attributes, helping ensure interface stability. -
Add
Namespaceclass providing a completely immutable alternative to
types.SimpleNamespace. All attributes must be set during initialization
and cannot be modified afterward. -
Add
Objectbase class for creating objects with immutable attributes.
Derived classes must set attributes in__init__before calling
super().__init__(). -
Add immutable dictionaries, which have additional methods, such as
copyand
with_data, additional operations, such as union (|) and intersection
(&):Dictionaryfor simple immutable mappingsValidatorDictionarywhich uses a provided validator function
-
Add metaclasses for creating classes with immutable class attributes:
Classfor standard classesABCFactoryfor abstract base classesProtocolClassfor protocol classes
-
Add qualified aliases in
qaliasesmodule with "Immutable" prefix for all
core classes, helping avoid namespace conflicts.
Supported Platforms
- Add support for CPython 3.10 to 3.13.
- Add support for PyPy 3.10.