single |
==========
frozenlist
==========
:alt: GitHub status for master branch
:alt: codecov.io status for master branch
:alt: frozenlist @ PyPI
:alt: Read The Docs build status badge
:alt: Matrix Room — #aio-libs:matrix.org
:alt: 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
>>> fl.freeze()
>>> fl
>>> fl.frozen
True
>>> fl.append("Monty")
Traceback (most recent call last):
File "", line 1, in
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 "", line 1, in
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
{: 'Vikings'}
Installation
------------
::
$ pip install frozenlist
The library requires Python 3.8 or newer.
Documentation
=============
https://frozenlist.aio-libs.org
Communication channels
======================
We have a *Matrix Space* `#aio-libs-space:matrix.org
`_ which is
also accessible via Gitter.
Requirements
============
- Python >= 3.8
License
=======
frozenlist is offered under the Apache 2 license.
Source code
===========
The project is hosted on GitHub_
|