|
Metadata-Version: 2.1 |
|
Name: frozenlist |
|
Version: 1.3.3 |
|
Summary: A list-like structure which implements collections.abc.MutableSequence |
|
Home-page: https://github.com/aio-libs/frozenlist |
|
Maintainer: aiohttp team <team@aiohttp.org> |
|
Maintainer-email: team@aiohttp.org |
|
License: Apache 2 |
|
Project-URL: Chat: Gitter, https://gitter.im/aio-libs/Lobby |
|
Project-URL: CI: Github Actions, https://github.com/aio-libs/frozenlist/actions |
|
Project-URL: Coverage: codecov, https://codecov.io/github/aio-libs/frozenlist |
|
Project-URL: Docs: RTD, https://frozenlist.readthedocs.io |
|
Project-URL: GitHub: issues, https://github.com/aio-libs/frozenlist/issues |
|
Project-URL: GitHub: repo, https://github.com/aio-libs/frozenlist |
|
Classifier: License :: OSI Approved :: Apache Software License |
|
Classifier: Intended Audience :: Developers |
|
Classifier: Programming Language :: Python |
|
Classifier: Programming Language :: Python :: 3 |
|
Classifier: Programming Language :: Python :: 3.7 |
|
Classifier: Programming Language :: Python :: 3.8 |
|
Classifier: Programming Language :: Python :: 3.9 |
|
Classifier: Programming Language :: Python :: 3.10 |
|
Classifier: Programming Language :: Python :: 3.11 |
|
Classifier: Development Status :: 5 - Production/Stable |
|
Classifier: Operating System :: POSIX |
|
Classifier: Operating System :: MacOS :: MacOS X |
|
Classifier: Operating System :: Microsoft :: Windows |
|
Requires-Python: >=3.7 |
|
Description-Content-Type: text/x-rst |
|
License-File: LICENSE |
|
|
|
========== |
|
frozenlist |
|
========== |
|
|
|
.. image:: https://github.com/aio-libs/frozenlist/workflows/CI/badge.svg |
|
:target: https://github.com/aio-libs/frozenlist/actions |
|
:alt: GitHub status for master branch |
|
|
|
.. image:: https://codecov.io/gh/aio-libs/frozenlist/branch/master/graph/badge.svg |
|
:target: https://codecov.io/gh/aio-libs/frozenlist |
|
:alt: codecov.io status for master branch |
|
|
|
.. image:: https://badge.fury.io/py/frozenlist.svg |
|
:target: https://pypi.org/project/frozenlist |
|
:alt: Latest PyPI package version |
|
|
|
.. image:: https://readthedocs.org/projects/frozenlist/badge/?version=latest |
|
:target: https://frozenlist.readthedocs.io/ |
|
:alt: Latest Read The Docs |
|
|
|
.. image:: https://img.shields.io/discourse/topics?server=https%3A%2F%2Faio-libs.discourse.group%2F |
|
:target: https://aio-libs.discourse.group/ |
|
:alt: Discourse group for io-libs |
|
|
|
.. image:: https://badges.gitter.im/Join%20Chat.svg |
|
:target: https://gitter.im/aio-libs/Lobby |
|
:alt: Chat on Gitter |
|
|
|
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'} |
|
>>> dictionary |
|
{<FrozenList(frozen=True, [1, 2])>: 'Vikings'} |
|
|
|
|
|
Installation |
|
------------ |
|
|
|
:: |
|
|
|
$ pip install frozenlist |
|
|
|
The library requires Python 3.6 or newer. |
|
|
|
|
|
Documentation |
|
============= |
|
|
|
https://frozenlist.readthedocs.io/ |
|
|
|
Communication channels |
|
====================== |
|
|
|
*aio-libs discourse group*: https://aio-libs.discourse.group |
|
|
|
Feel free to post your questions and ideas here. |
|
|
|
*gitter chat* https://gitter.im/aio-libs/Lobby |
|
|
|
Requirements |
|
============ |
|
|
|
- Python >= 3.6 |
|
|
|
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 |
|
<https://github.com/aio-libs/frozenlist/issues>`_ if you have found a bug |
|
or have some suggestions to improve the library. |
|
|
|
.. _GitHub: https://github.com/aio-libs/frozenlist |
|
|