Skip to content

aio-libs/frozenlist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e93a233 · Apr 17, 2025
Apr 17, 2025
Apr 17, 2025
Apr 17, 2025
Apr 17, 2025
Mar 28, 2025
Mar 28, 2025
Aug 17, 2024
Dec 10, 2023
Aug 24, 2019
Aug 24, 2019
Mar 16, 2025
Nov 15, 2024
Aug 24, 2019
Aug 24, 2019
Dec 7, 2023
Feb 26, 2025
Apr 7, 2025
Dec 7, 2023
Dec 10, 2023
Dec 7, 2023
Apr 17, 2025
Aug 24, 2019
Aug 17, 2024
Dec 4, 2020
Feb 15, 2025
Mar 17, 2025
Feb 15, 2025
Mar 28, 2025
Nov 14, 2024
Apr 17, 2025
Nov 15, 2024
Feb 13, 2025

frozenlist

GitHub status for master branch codecov.io status for master branch frozenlist @ PyPI Read The Docs build status badge Matrix Room — #aio-libs:matrix.org Matrix Space — #aio-libs-space:matrix.org

Introduction

frozenlist.FrozenList is a list-like structure which implements collections.abc.MutableSequence. The list is mutable until FrozenList.freeze is called, after which list modifications raise RuntimeError:

>>> from frozenlist import FrozenList
>>> fl = FrozenList([17, 42])
>>> fl.append('spam')
>>> fl.append('Vikings')
>>> fl
<FrozenList(frozen=False, [17, 42, 'spam', 'Vikings'])>
>>> fl.freeze()
>>> fl
<FrozenList(frozen=True, [17, 42, 'spam', 'Vikings'])>
>>> fl.frozen
True
>>> fl.append("Monty")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "frozenlist/_frozenlist.pyx", line 97, in frozenlist._frozenlist.FrozenList.append
    self._check_frozen()
  File "frozenlist/_frozenlist.pyx", line 19, in frozenlist._frozenlist.FrozenList._check_frozen
    raise RuntimeError("Cannot modify frozen list.")
RuntimeError: Cannot modify frozen list.

FrozenList is also hashable, but only when frozen. Otherwise it also throws a RuntimeError:

>>> fl = FrozenList([17, 42, 'spam'])
>>> hash(fl)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "frozenlist/_frozenlist.pyx", line 111, in frozenlist._frozenlist.FrozenList.__hash__
    raise RuntimeError("Cannot hash unfrozen list.")
RuntimeError: Cannot hash unfrozen list.
>>> fl.freeze()
>>> hash(fl)
3713081631934410656
>>> dictionary = {fl: 'Vikings'} # frozen fl can be a dict key
>>> dictionary
{<FrozenList(frozen=True, [1, 2])>: 'Vikings'}

Installation

$ pip install frozenlist

Documentation

https://frozenlist.aio-libs.org

Communication channels

We have a Matrix Space #aio-libs-space:matrix.org which is also accessible via Gitter.

License

frozenlist is offered under the Apache 2 license.

Source code

The project is hosted on GitHub

Please file an issue in the bug tracker if you have found a bug or have some suggestions to improve the library.