Skip to main content

Dynamically immutable objects

Project description

PyPI version Documentation Status GitHub license

Freezable: Dynamically Immutable Objects

NOTICE: This project is in Alpha; expect bugs! API is also subject to change.

Freezable is a package that allows you to implement "freezable" types in Python, which can either be "frozen" or "unfrozen." When frozen, all operations and methods that mutate the object are disabled.

Here is one example:

from freezable import Freezable, FrozenError, enabled_when_unfrozen

class FreezableStack(Freezable):
    
    def __init__(self):
        self._data = []
    
    @enabled_when_unfrozen
    def push(self, x):
        self._data.append(x)

    def top(self):
        return self._data[-1] if self._data else None

stk = FreezableStack()
assert stk.top() is None

stk.push(1)
assert stk.top() == 1
stk.push(2)
assert stk.top() == 2

stk.freeze()

try:
    stk.push(3)  # error because stk is frozen
except FrozenError:
    pass

assert stk.top() == 2  # operation did not proceed

stk.unfreeze()
stk.push(3)
assert stk.top() == 3

This package can be useful in finding logical errors in which objects are mutated when they are not supposed to.

See the documentation for more information on how to use this project.

Links

Documentation @ReadTheDocs

PyPI Page

Installation

This package can be installed using Pip:

pip install freezable

Bug Reports and Feature Requests

You can report a bug or suggest a feature on the Github repo.

Contributions

Contributions to this project are welcome. :)

See the pull requests page on Github.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

freezable-0.1.4.tar.gz (5.1 kB view hashes)

Uploaded Source

Built Distribution

freezable-0.1.4-py3-none-any.whl (5.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page