Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

frozenlist

Package Overview
Dependencies
Maintainers
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

frozenlist

A list-like structure which implements collections.abc.MutableSequence

  • 1.5.0
  • PyPI
  • Socket score

Maintainers
3

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://img.shields.io/pypi/v/frozenlist.svg?logo=Python&logoColor=white :target: https://pypi.org/project/frozenlist :alt: frozenlist @ PyPI

.. image:: https://readthedocs.org/projects/frozenlist/badge/?version=latest :target: https://frozenlist.aio-libs.org :alt: Read The Docs build status badge

.. image:: https://img.shields.io/matrix/aio-libs:matrix.org?label=Discuss%20on%20Matrix%20at%20%23aio-libs%3Amatrix.org&logo=matrix&server_fqdn=matrix.org&style=flat :target: https://matrix.to/#/%23aio-libs:matrix.org :alt: Matrix Room — #aio-libs:matrix.org

.. image:: https://img.shields.io/matrix/aio-libs-space:matrix.org?label=Discuss%20on%20Matrix%20at%20%23aio-libs-space%3Amatrix.org&logo=matrix&server_fqdn=matrix.org&style=flat :target: https://matrix.to/#/%23aio-libs-space: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 <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 "", 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 {<FrozenList(frozen=True, [1, 2])>: '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 <https://matrix.to/#/%23aio-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_

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

========= Changelog

.. You should NOT be adding new change log entries to this file, this file is managed by towncrier. You may edit previous change logs to fix problems like typo corrections or such. To add a new change log entry, please see https://pip.pypa.io/en/latest/development/contributing/#news-entries we named the news folder "changes".

WARNING: Don't drop the next directive!

.. towncrier release notes start

1.5.0 (2024-10-22)

Bug fixes

  • An incorrect signature of the __class_getitem__ class method has been fixed, adding a missing class_item argument under Python 3.8 and older.

    This change also improves the code coverage of this method that was previously missing -- by @webknjaz <https://github.com/sponsors/webknjaz>__.

    Related issues and pull requests on GitHub: #567 <https://github.com/aio-libs/frozenlist/issues/567>, #571 <https://github.com/aio-libs/frozenlist/issues/571>.

Improved documentation

  • Rendered issue, PR, and commit links now lead to frozenlist's repo instead of yarl's repo.

    Related issues and pull requests on GitHub: #573 <https://github.com/aio-libs/frozenlist/issues/573>__.

  • On the Contributing docs page, a link to the Towncrier philosophy has been fixed.

    Related issues and pull requests on GitHub: #574 <https://github.com/aio-libs/frozenlist/issues/574>__.

Packaging updates and notes for downstreams

  • A name of a temporary building directory now reflects that it's related to frozenlist, not yarl.

    Related issues and pull requests on GitHub: #573 <https://github.com/aio-libs/frozenlist/issues/573>__.

  • Declared Python 3.13 supported officially in the distribution package metadata.

    Related issues and pull requests on GitHub: #595 <https://github.com/aio-libs/frozenlist/issues/595>__.


1.4.1 (2023-12-15)

Packaging updates and notes for downstreams

  • Declared Python 3.12 and PyPy 3.8-3.10 supported officially in the distribution package metadata.

    Related issues and pull requests on GitHub: #553 <https://github.com/aio-libs/frozenlist/issues/553>__.

  • Replaced the packaging is replaced from an old-fashioned setup.py to an in-tree PEP 517 <https://peps.python.org/pep-517>__ build backend -- by @webknjaz <https://github.com/sponsors/webknjaz>__.

    Whenever the end-users or downstream packagers need to build frozenlist from source (a Git checkout or an sdist), they may pass a config_settings flag pure-python. If this flag is not set, a C-extension will be built and included into the distribution.

    Here is how this can be done with pip:

    .. code-block:: console

    $ python3 -m pip install . --config-settings=pure-python=
    

    This will also work with -e | --editable.

    The same can be achieved via pypa/build:

    .. code-block:: console

    $ python3 -m build --config-setting=pure-python=
    

    Adding -w | --wheel can force pypa/build produce a wheel from source directly, as opposed to building an sdist and then building from it.

    Related issues and pull requests on GitHub: #560 <https://github.com/aio-libs/frozenlist/issues/560>__.

Contributor-facing changes

  • It is now possible to request line tracing in Cython builds using the with-cython-tracing PEP 517 <https://peps.python.org/pep-517>__ config setting -- @webknjaz <https://github.com/sponsors/webknjaz>__.

    This can be used in CI and development environment to measure coverage on Cython modules, but is not normally useful to the end-users or downstream packagers.

    Here's a usage example:

    .. code-block:: console

    $ python3 -Im pip install . --config-settings=with-cython-tracing=true
    

    For editable installs, this setting is on by default. Otherwise, it's off unless requested explicitly.

    The following produces C-files required for the Cython coverage plugin to map the measurements back to the PYX-files:

    .. code-block:: console

    $ python -Im pip install -e .
    

    Alternatively, the FROZENLIST_CYTHON_TRACING=1 environment variable can be set to do the same as the PEP 517 <https://peps.python.org/pep-517>__ config setting.

    Related issues and pull requests on GitHub: #560 <https://github.com/aio-libs/frozenlist/issues/560>__.

  • Coverage collection has been implemented for the Cython modules -- by @webknjaz <https://github.com/sponsors/webknjaz>__.

    It will also be reported to Codecov from any non-release CI jobs.

    Related issues and pull requests on GitHub: #561 <https://github.com/aio-libs/frozenlist/issues/561>__.

  • A step-by-step Release Guide guide has been added, describing how to release frozenlist -- by @webknjaz <https://github.com/sponsors/webknjaz>__.

    This is primarily targeting the maintainers.

    Related issues and pull requests on GitHub: #563 <https://github.com/aio-libs/frozenlist/issues/563>__.

  • Detailed Contributing Guidelines on authoring the changelog fragments have been published in the documentation -- by @webknjaz <https://github.com/sponsors/webknjaz>__.

    Related issues and pull requests on GitHub: #564 <https://github.com/aio-libs/frozenlist/issues/564>__.


1.4.0 (2023-07-12)

The published source distribution package became buildable under Python 3.12.


Bugfixes

  • Removed an unused typing.Tuple import #411 <https://github.com/aio-libs/frozenlist/issues/411>_

Deprecations and Removals

  • Dropped Python 3.7 support. #413 <https://github.com/aio-libs/frozenlist/issues/413>_

Misc

  • #410 <https://github.com/aio-libs/frozenlist/issues/410>, #433 <https://github.com/aio-libs/frozenlist/issues/433>

1.3.3 (2022-11-08)

  • Fixed CI runs when creating a new release, where new towncrier versions fail when the current version section is already present.

1.3.2 (2022-11-08)

Misc

  • Updated the CI runs to better check for test results and to avoid deprecated syntax. #327 <https://github.com/aio-libs/frozenlist/issues/327>_

1.3.1 (2022-08-02)

The published source distribution package became buildable under Python 3.11.


1.3.0 (2022-01-18)

Bugfixes

  • Do not install C sources with binary distributions. #250 <https://github.com/aio-libs/frozenlist/issues/250>_

Deprecations and Removals

  • Dropped Python 3.6 support #274 <https://github.com/aio-libs/frozenlist/issues/274>_

1.2.0 (2021-10-16)

Features

  • FrozenList now supports being used as a generic type as per PEP 585, e.g. frozen_int_list: FrozenList[int] (requires Python 3.9 or newer). #172 <https://github.com/aio-libs/frozenlist/issues/172>_
  • Added support for Python 3.10. #227 <https://github.com/aio-libs/frozenlist/issues/227>_
  • Started shipping platform-specific wheels with the musl tag targeting typical Alpine Linux runtimes. #227 <https://github.com/aio-libs/frozenlist/issues/227>_
  • Started shipping platform-specific arm64 wheels for Apple Silicon. #227 <https://github.com/aio-libs/frozenlist/issues/227>_

1.1.1 (2020-11-14)

Bugfixes

  • Provide x86 Windows wheels. #169 <https://github.com/aio-libs/frozenlist/issues/169>_

1.1.0 (2020-10-13)

Features

  • Add support for hashing of a frozen list. #136 <https://github.com/aio-libs/frozenlist/issues/136>_

  • Support Python 3.8 and 3.9.

  • Provide wheels for aarch64, i686, ppc64le, s390x architectures on Linux as well as x86_64.


1.0.0 (2019-11-09)

Deprecations and Removals

  • Dropped support for Python 3.5; only 3.6, 3.7 and 3.8 are supported going forward. #24 <https://github.com/aio-libs/frozenlist/issues/24>_

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc