Skip to main content

A case-insensitive ordered dictionary for Python

Project description

nocasedict - A case-insensitive ordered dictionary for Python

Version on Pypi Test status (master) Docs status (master) Test coverage (master)

Overview

Class NocaseDict is a case-insensitive ordered dictionary that preserves the original lexical case of its keys.

Example:

$ python
>>> from nocasedict import NocaseDict

>>> dict1 = NocaseDict({'Alpha': 1, 'Beta': 2})

>>> dict1['ALPHA']  # Lookup by key is case-insensitive
1

>>> print(dict1)  # Keys are returned with the original lexical case
NocaseDict({'Alpha': 1, 'Beta': 2})

The NocaseDict class supports the functionality of the built-in dict class of Python 3.8 on all Python versions it supports.

Limitation: Any functionalities added to the dict class in Python 3.9 or later are not yet supported. These are:

  • d | other - Added in Python 3.9.
  • d |= other - Added in Python 3.9.

The case-insensitivity is achieved by matching any key values as their casefolded values. By default, the casefolding is performed with str.casefold() for unicode string keys and with bytes.lower() for byte string keys. The default casefolding can be overridden with a user-defined casefold method.

Functionality can be added using mixin classes:

  • HashableMixin mixin class: Adds case-insensitive hashability.
  • KeyableByMixin mixin generator function: Adds ability to get the key from an attribute of the value object.

Why yet another case-insensitive dictionary: We found that all previously existing case-insensitive dictionary packages on Pypi either had flaws, were not well maintained, or did not support the Python versions we needed.

Installation

To install the latest released version of the nocasedict package into your active Python environment:

$ pip install nocasedict

This will also install any prerequisite Python packages.

For more details and alternative ways to install, see Installation.

Documentation

Change History

Contributing

For information on how to contribute to the nocasedict project, see Contributing.

License

The nocasedict project is provided under the GNU Lesser General Public License (LGPL) version 2.1, or (at your option) any later version.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nocasedict-2.0.4.tar.gz (41.0 kB view details)

Uploaded Source

Built Distribution

nocasedict-2.0.4-py2.py3-none-any.whl (23.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file nocasedict-2.0.4.tar.gz.

File metadata

  • Download URL: nocasedict-2.0.4.tar.gz
  • Upload date:
  • Size: 41.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for nocasedict-2.0.4.tar.gz
Algorithm Hash digest
SHA256 4ca934f65df57b10d0fcab5f0c39e9dccb93577ff9f22bef98265ddbf12f8af1
MD5 fc339136f7fa499932ff5f40cdee2a42
BLAKE2b-256 5c3113a4c15a0265f8ecb2779e338be7371e28d36a454f7174e6e2bfdb3f1341

See more details on using hashes here.

File details

Details for the file nocasedict-2.0.4-py2.py3-none-any.whl.

File metadata

  • Download URL: nocasedict-2.0.4-py2.py3-none-any.whl
  • Upload date:
  • Size: 23.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for nocasedict-2.0.4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 edba9abdbc8da50ac39d80caceff69ad1846d45f3bbd3b9bf857426e13a6168c
MD5 669d428867ab8f349d834a65ce181c26
BLAKE2b-256 50b3f16fefeb9de5466ccc8c6cc25bf3a040f830e5ceec2d55b5aae10f3752aa

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page