experimental/sources/: frozenlist-1.4.1 metadata and description

Homepage Simple index

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

classifiers
  • Development Status :: 5 - Production/Stable
  • Intended Audience :: Developers
  • License :: OSI Approved :: Apache Software License
  • Operating System :: POSIX
  • Operating System :: MacOS :: MacOS X
  • Operating System :: Microsoft :: Windows
  • Programming Language :: Cython
  • Programming Language :: Python
  • Programming Language :: Python :: 3
  • Programming Language :: Python :: 3.8
  • Programming Language :: Python :: 3.9
  • Programming Language :: Python :: 3.10
  • Programming Language :: Python :: 3.11
  • Programming Language :: Python :: 3.12
  • Programming Language :: Python :: Implementation :: CPython
  • Programming Language :: Python :: Implementation :: PyPy
description_content_type text/x-rst
license Apache 2
maintainer aiohttp team <team@aiohttp.org>
maintainer_email team@aiohttp.org
project_urls
  • Chat: Matrix, https://matrix.to/#/#aio-libs:matrix.org
  • Chat: Matrix Space, https://matrix.to/#/#aio-libs-space:matrix.org
  • CI: Github Actions, https://github.com/aio-libs/frozenlist/actions
  • Code of Conduct, https://github.com/aio-libs/.github/blob/master/CODE_OF_CONDUCT.md
  • Coverage: codecov, https://codecov.io/github/aio-libs/frozenlist
  • Docs: Changelog, https://github.com/aio-libs/frozenlist/blob/master/CHANGES.rst#changelog
  • Docs: RTD, https://frozenlist.aio-libs.org
  • GitHub: issues, https://github.com/aio-libs/frozenlist/issues
  • GitHub: repo, https://github.com/aio-libs/frozenlist
requires_python >=3.8
File Tox results History
frozenlist-1.4.1.tar.gz
Size
37 KB
Type
Source

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

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

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

Changelog

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.

  • Replaced the packaging is replaced from an old-fashioned setup.py to an in-tree PEP 517 build backend – by @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:

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

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

    The same can be achieved via pypa/build:

    $ 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.

Contributor-facing changes

  • It is now possible to request line tracing in Cython builds using the with-cython-tracing PEP 517 config setting – @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:

    $ 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:

    $ python -Im pip install -e .

    Alternatively, the FROZENLIST_CYTHON_TRACING=1 environment variable can be set to do the same as the PEP 517 config setting.

    Related issues and pull requests on GitHub: #560.

  • Coverage collection has been implemented for the Cython modules – by @webknjaz.

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

    Related issues and pull requests on GitHub: #561.

  • A step-by-step Release Guide guide has been added, describing how to release frozenlist – by @webknjaz.

    This is primarily targeting the maintainers.

    Related issues and pull requests on GitHub: #563.

  • Detailed Contributing Guidelines on authoring the changelog fragments have been published in the documentation – by @webknjaz.

    Related issues and pull requests on GitHub: #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

Deprecations and Removals

  • Dropped Python 3.7 support. #413

Misc


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


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

Deprecations and Removals

  • Dropped Python 3.6 support #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

  • Added support for Python 3.10. #227

  • Started shipping platform-specific wheels with the musl tag targeting typical Alpine Linux runtimes. #227

  • Started shipping platform-specific arm64 wheels for Apple Silicon. #227


1.1.1 (2020-11-14)

Bugfixes

  • Provide x86 Windows wheels. #169


1.1.0 (2020-10-13)

Features

  • Add support for hashing of a frozen list. #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