Skip to main content

object-freezer

Python module for freezing objects.

Installation

$ pip install object-freezer

Then import this module as:

import object_freezer as of

Examples

A list is frozen into a tuple:

>>> l = [1, 2, 3]
>>> hash(l)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> fl = of.freeze(l)
>>> hash(fl)
2528502973977326415
>>> fl
(1, 2, 3)

A dictionary is frozen into a deepfrozendict instance:

>>> import object_freezer as of
>>> d = {'a': 'A', 'b': 'B'}
>>> hash(d)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
>>> fd = of.freeze(d)
>>> hash(fd)
3871628092596788623
>>> fd
<deepfrozendict {'a': 'A', 'b': 'B'}>

If an element of a list is not hashable, it will also be frozen:

>>> l = [[1, 2], {3: 4}]
>>> hash(l)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> fl = of.freeze(l)
>>> hash(fl)
5879964472677921951
>>> fl
((1, 2), <deepfrozendict {3: 4}>)

If a value of a dictionary is not hashable, it will be frozen:

>>> import object_freezer as of
>>> d = {'a': ['A', 0], 'b': {'B': 1}}
>>> hash(d)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
>>> fd = of.freeze(d)
>>> hash(fd)
6230706721132225338
>>> fd
<deepfrozendict {'a': ('A', 0), 'b': <deepfrozendict {'B': 1}>}>

Known issues & notes

A dict with one (key, value) pair has the same hash value as a tuple (key, value)

Since a list is frozen into a tuple, it is obvious that of.freeze([key, value]) and of.freeze((key, value)) are the same and thus have the same hash value. However, of.freeze({key: value}) also always has the same hash value.

>>> d = {1: 2}
>>> t = (1, 2)
>>> fd = of.freeze(d)
>>> ft = of.freeze(t)
>>> hash(fd) == hash(ft)
True

It is not a major issue since fd == ft returns False. Therefore, for example, you can use fd and ft as a distinct dictionary keys.

>>> fd == ft
False
>>> {fd: 0, ft: 1}
{<deepfrozendict {1: 2}>: 0, (1, 2): 1}

License

MIT

TO-DO's

  • Test against various Python versions.

Download files

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

Source Distribution

object-freezer-0.1.2.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

object_freezer-0.1.2-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file object-freezer-0.1.2.tar.gz.

File metadata

  • Download URL: object-freezer-0.1.2.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for object-freezer-0.1.2.tar.gz
Algorithm Hash digest
SHA256 e15afab7577a795a98f201b15531e74aad6dcd51935bcc251db68281cd7dd76c
MD5 cfd89da9837765133ab7cb3fb8a6fc6c
BLAKE2b-256 b58fefbb074e664a0e05d4b298bf3125667ff163b3655e6ce0089441bc2e5bb6

See more details on using hashes here.

File details

Details for the file object_freezer-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: object_freezer-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 5.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for object_freezer-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1c7aa9dace338fa48f11f97a24339f2f55a862d29e6906c64a99ad845bc33a9c
MD5 fdbee5f10dc653d27f45ad33adb29f52
BLAKE2b-256 31814be60258baf3929910347c566bac57cdf85060752e20c9d88bc3f4632958

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 files

0.1.1

1 file

0.1.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page