Skip to content

Releases: emcd/python-frigid

v4.2

25 Sep 23:18
v4.2
684ed53

Choose a tag to compare

frigid v4.2 (2025-09-25)

Enhancements

  • Internal simplification to reduce dependency on auxiliary functions from
    classcore package.

Repairs

  • Fix runtime compatibility issues with PyPy interpreter by ensuring proper mutability
    of internal attributes for exceptions, protocol classes, and dictionaries.

v4.1

02 Jul 16:26
v4.1
7cc0b49

Choose a tag to compare

Frigid v4.1 (2025-07-02)

Enhancements

  • Add finalize_module function that combines Dynadoc docstring assignment and module reclassification.

Notices

  • Deprecate reclassify_modules function. Use finalize_module instead.

v4.0

14 Jun 22:26
v4.0
4dfd2fc

Choose a tag to compare

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.

    • AttributeImmutabilityError is now AttributeImmutability
    • EntryImmutabilityError is now EntryImmutability
    • EntryValidityError is now EntryInvalidity

    This is a breaking change - the old exception names are no longer available.

  • Merge dataclasses and objects modules into classes module.
    Remove qaliases module.

  • Replace @immutable decorator with @with_standard_behaviors.
    Replace @immutable_dataclass decorator with
    @dataclass_with_standard_behaviors.

v4.0rc0

14 Jun 21:54
v4.0rc0
8e332c1

Choose a tag to compare

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.

    • AttributeImmutabilityError is now AttributeImmutability
    • EntryImmutabilityError is now EntryImmutability
    • EntryValidityError is now EntryInvalidity

    This is a breaking change - the old exception names are no longer available.

  • Merge dataclasses and objects modules into classes module.
    Remove qaliases module.

  • Replace @immutable decorator with @with_standard_behaviors.
    Replace @immutable_dataclass decorator with
    @dataclass_with_standard_behaviors.

v3.0

05 Mar 03:37
v3.0
baa16f2

Choose a tag to compare

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 immutable decorator to accept optional parameters including
    docstring for setting or overriding class documentation and mutables
    for specifying attributes that should remain modifiable after initial
    assignment.

v3.0rc0

05 Mar 02:50
v3.0rc0
bb2ede4

Choose a tag to compare

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 immutable decorator to accept optional parameters including
    docstring for setting or overriding class documentation and mutables
    for specifying attributes that should remain modifiable after initial
    assignment.

v2.0

24 Jan 04:13
v2.0
8aebc5a

Choose a tag to compare

Frigid v2.0 (2025-01-24)

Features

  • Add one function which produces 1-element tuples. Cleaner to read than the
    1-element tuple syntax and is useful for some functional programming contexts.
    Also, add install function to install one as a Python, if desired.
  • Support mutables argument when using metaclasses from frigid.classes.
    Allows for selective mutability of class attributes.
  • ⚠️ BREAKING CHANGES! ⚠️ Improve reclassify_modules to 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

24 Jan 03:42
v2.0rc0
37f499b

Choose a tag to compare

Frigid v2.0rc0 (2025-01-24)

Features

  • Add one function which produces 1-element tuples. Cleaner to read than the
    1-element tuple syntax and is useful for some functional programming contexts.
    Also, add install function to install one as a Python, if desired.
  • Support mutables argument when using metaclasses from frigid.classes.
    Allows for selective mutability of class attributes.
  • ⚠️ BREAKING CHANGES! ⚠️ Improve reclassify_modules to 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

05 Dec 03:50
v1.0
b0cde28

Choose a tag to compare

Frigid v1.0 (2024-12-05)

Features

  • Add @immutable decorator for making instances of existing classes immutable
    after initialization. Compatible with most classes except those defining their
    own __setattr__ or __delattr__ methods.

  • Add Module class and reclassify_modules function for creating and
    converting to immutable modules. This prevents runtime modification of module
    attributes, helping ensure interface stability.

  • Add Namespace class providing a completely immutable alternative to
    types.SimpleNamespace. All attributes must be set during initialization
    and cannot be modified afterward.

  • Add Object base 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 copy and
    with_data, additional operations, such as union (|) and intersection
    (&):

    • Dictionary for simple immutable mappings
    • ValidatorDictionary which uses a provided validator function
  • Add metaclasses for creating classes with immutable class attributes:

    • Class for standard classes
    • ABCFactory for abstract base classes
    • ProtocolClass for protocol classes
  • Add qualified aliases in qaliases module 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

05 Dec 03:29
v1.1a0
41922b2

Choose a tag to compare

Frigid v1.1a0 (2024-12-05)

Features

  • Add @immutable decorator for making instances of existing classes immutable
    after initialization. Compatible with most classes except those defining their
    own __setattr__ or __delattr__ methods.

  • Add Module class and reclassify_modules function for creating and
    converting to immutable modules. This prevents runtime modification of module
    attributes, helping ensure interface stability.

  • Add Namespace class providing a completely immutable alternative to
    types.SimpleNamespace. All attributes must be set during initialization
    and cannot be modified afterward.

  • Add Object base 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 copy and
    with_data, additional operations, such as union (|) and intersection
    (&):

    • Dictionary for simple immutable mappings
    • ValidatorDictionary which uses a provided validator function
  • Add metaclasses for creating classes with immutable class attributes:

    • Class for standard classes
    • ABCFactory for abstract base classes
    • ProtocolClass for protocol classes
  • Add qualified aliases in qaliases module 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.