Oven logo

Oven

Published

Typed Python Case Insensitive Dictionary

pip install case-insensitive-dictionary

Package Downloads

Weekly DownloadsMonthly Downloads

Authors

Requires Python

>=3.7,<4.0

Case Insensitive Dict

Typed Python Case Insensitive Dictionary

Publish

Python 3.7+ PyPI - License PyPI - Version

CodeQL codecov pre-commit.ci status

Imports: isort Code style: black Checked with mypy

Install

Install and update using pip.

$ pip install -U case-insensitive-dictionary

API Reference

MethodDescription
clear()Removes all elements from the dictionary.
copy()Returns a copy of the dictionary.
get(key, default)Returns the value (case-insensitively), of the item specified with the key.
Falls back to the default value if the specified key does not exist.
fromkeys(iterable, value)Returns a dictionary with the specified keys and the specified value.
keys()Returns the dictionary's keys.
values()Returns the dictionary's values.
items()Returns the key-value pairs.
pop(key)Remove the specified item (case-insensitively).
The value of the removed item is the return value.
popitem()Remove the last item that was inserted into the dictionary.
For Python version <3.7, popitem() removes a random item.

Example

CaseInsensitiveDict:

>>> from typing import Union

>>> from case_insensitive_dict import CaseInsensitiveDict

>>> case_insensitive_dict = CaseInsensitiveDict[Union[str, int], str](data={"Aa": "b", 1: "c"})
>>> case_insensitive_dict["aa"]
'b'
>>> case_insensitive_dict[1]
'c'

which also supports json encoding/decoding:

>>> import json

>>> from case_insensitive_dict import CaseInsensitiveDict, CaseInsensitiveDictJSONEncoder, case_insensitive_dict_json_decoder

>>> case_insensitive_dict = CaseInsensitiveDict[str, str](data={"Aa": "b"})
>>> json_string = json.dumps(obj=case_insensitive_dict, cls=CaseInsensitiveDictJSONEncoder)
>>> json_string
'{"Aa": "b"}'

>>> case_insensitive_dict = json.loads(s=json_string, object_hook=case_insensitive_dict_json_decoder)
>>> case_insensitive_dict
CaseInsensitiveDict({'Aa': 'b'})

Contributing

Contributions are welcome via pull requests.

First time setup

$ git clone [email protected]:DeveloperRSquared/case-insensitive-dict.git
$ cd case-insensitive-dict
$ poetry install
$ poetry shell

Tools including black, mypy etc. will run automatically if you install pre-commit using the instructions below

$ pre-commit install
$ pre-commit run --all-files

Running tests

$ poetry run pytest

Links