A simple immutable dictionary
Project description
frozendict
Table of Contents
Introduction
Welcome, fellow programmer!
frozendict
is a simple immutable dictionary. It's fast as dict
, and
sometimes faster!
Unlike other similar implementations, immutability is guaranteed: you can't
change the internal variables of the class, and they are all immutable
objects. Reinvoking __init__
does not alter the object.
The API is the same as dict
, without methods that can change the
immutability. So it supports also fromkeys
, unlike other implementations.
Furthermore it can be pickle
d, unpickle
d and have an hash, if all values
are hashable.
You can also add any dict
to a frozendict
using the |
operator. The result is a new frozendict
.
API
The API is the same of dict
of Python 3.10, without the methods and operands which alter the map. Additionally, frozendict
supports these methods:
__hash__()
If all the values of the frozendict
are hashable, returns an hash, otherwise raises a TypeError.
set(key, value)
It returns a new frozendict
. If key is already in the original frozendict
, the new one will have it with the new value associated. Otherwise, the new frozendict
will contain the new (key, value) item.
delete**(key)
It returns a new frozendict
without the item corresponding to the key. If the key is not present, a KeyError is raised.
setdefault(key[, default])
If key is already in frozendict
, the object itself is returned unchanged. Otherwise, the new frozendict
will contain the new (key, default) item. The parameter default defaults to None.
Examples
from frozendict import frozendict
fd = frozendict({"Sulla": "Marco", "Hicks": "Bill"})
print(fd)
# frozendict({'Sulla': 'Marco', 'Hicks': 'Bill'})
print(fd["Sulla"])
# Marco
fd["God"]
# KeyError: 'God'
len(fd)
# 2
"Sulla" in fd
# True
"Sulla" not in fd
# False
"God" in fd
# False
hash(fd)
# 5833699487320513741
fd_unhashable = frozendict({1: []})
hash(fd_unhashable)
# TypeError: Not all values are hashable.
fd | {1: 2}
# frozendict({'Sulla': 'Marco', 'Hicks': 'Bill', 1: 2})
fd5 = frozendict(fd)
id_fd5 = id(fd5)
fd5 |= {1: 2}
fd5
# frozendict.frozendict({'Sulla': 'Marco', 'Hicks': 'Bill', 1: 2})
id(fd5) != id_fd5
# True
fd.set(1, 2)
# frozendict.frozendict({'Sulla': 'Marco', 'Hicks': 'Bill', 1: 2})
fd.set("Sulla", "Giulia")
# frozendict.frozendict({'Sulla': 'Giulia', 'Hicks': 'Bill'})
fd.delete("Sulla")
# frozendict.frozendict({'Hicks': 'Bill'})
fd.setdefault("Sulla", "Giulia")
# frozendict.frozendict({'Sulla': 'Marco', 'Hicks': 'Bill'})
fd.setdefault(1, 2)
# frozendict.frozendict({'Sulla': 'Marco', 'Hicks': 'Bill', 1: 2})
fd2 = fd.copy()
fd2 == fd
# True
fd3 = frozendict(fd)
fd3 == fd
# True
fd4 = frozendict({"Hicks": "Bill", "Sulla": "Marco"})
print(fd4)
# frozendict({'Hicks': 'Bill', 'Sulla': 'Marco'})
fd4 == fd
# True
import pickle
fd_unpickled = pickle.loads(pickle.dumps(fd))
print(fd_unpickled)
# frozendict({'Sulla': 'Marco', 'Hicks': 'Bill'})
fd_unpickled == fd
# True
frozendict(Sulla="Marco", Hicks="Bill")
# frozendict({'Sulla': 'Marco', 'Hicks': 'Bill'}
frozendict((("Sulla", "Marco"), ("Hicks", "Bill")))
# frozendict({'Sulla': 'Marco', 'Hicks': 'Bill'})
fd.get("Sulla")
# 'Marco'
print(fd.get("God"))
# None
tuple(fd.keys())
# ('Sulla', 'Hicks')
tuple(fd.values())
# ('Marco', 'Bill')
tuple(fd.items())
# (('Sulla', 'Marco'), ('Hicks', 'Bill'))
frozendict.fromkeys(["Marco", "Giulia"], "Sulla")
# frozendict({'Marco': 'Sulla', 'Giulia': 'Sulla'})
iter(fd)
# <dict_keyiterator object at 0x7feb75c49188>
fd["Sulla"] = "Silla"
# TypeError: 'frozendict' object doesn't support item assignment
Building
You can build frozendict
directly from the code, using
python3 setup.py bdist_wheel
The C Extension is not optional by default. You can build the pure py package using the py
custom argument:
python3 setup.py py bdist_wheel
Benchmarks
Some benchmarks between dict
and coold
, a C-only extended and experimental version of frozendict[1]:
################################################################################
////////////////////////////////////////////////////////////////////////////////
Name: `constructor(d)`; Size: 5; Keys: str; Type: dict; Time: 8.02e-08; Sigma: 4e-09
Name: `constructor(d)`; Size: 5; Keys: str; Type: coold; Time: 8.81e-08; Sigma: 3e-09
////////////////////////////////////////////////////////////////////////////////
Name: `constructor(d)`; Size: 5; Keys: int; Type: dict; Time: 7.96e-08; Sigma: 5e-09
Name: `constructor(d)`; Size: 5; Keys: int; Type: coold; Time: 8.97e-08; Sigma: 2e-09
////////////////////////////////////////////////////////////////////////////////
Name: `constructor(d)`; Size: 1000; Keys: str; Type: dict; Time: 6.38e-06; Sigma: 9e-08
Name: `constructor(d)`; Size: 1000; Keys: str; Type: coold; Time: 6.21e-06; Sigma: 2e-07
////////////////////////////////////////////////////////////////////////////////
Name: `constructor(d)`; Size: 1000; Keys: int; Type: dict; Time: 3.49e-06; Sigma: 3e-07
Name: `constructor(d)`; Size: 1000; Keys: int; Type: coold; Time: 3.48e-06; Sigma: 2e-07
################################################################################
////////////////////////////////////////////////////////////////////////////////
Name: `constructor(kwargs)`; Size: 5; Keys: str; Type: dict; Time: 2.40e-07; Sigma: 1e-09
Name: `constructor(kwargs)`; Size: 5; Keys: str; Type: coold; Time: 2.48e-07; Sigma: 2e-09
////////////////////////////////////////////////////////////////////////////////
Name: `constructor(kwargs)`; Size: 1000; Keys: str; Type: dict; Time: 4.80e-05; Sigma: 1e-06
Name: `constructor(kwargs)`; Size: 1000; Keys: str; Type: coold; Time: 2.90e-05; Sigma: 7e-07
################################################################################
////////////////////////////////////////////////////////////////////////////////
Name: `constructor(seq2)`; Size: 5; Keys: str; Type: dict; Time: 2.01e-07; Sigma: 9e-10
Name: `constructor(seq2)`; Size: 5; Keys: str; Type: coold; Time: 2.50e-07; Sigma: 1e-09
////////////////////////////////////////////////////////////////////////////////
Name: `constructor(seq2)`; Size: 5; Keys: int; Type: dict; Time: 2.18e-07; Sigma: 2e-09
Name: `constructor(seq2)`; Size: 5; Keys: int; Type: coold; Time: 2.73e-07; Sigma: 1e-09
////////////////////////////////////////////////////////////////////////////////
Name: `constructor(seq2)`; Size: 1000; Keys: str; Type: dict; Time: 4.29e-05; Sigma: 6e-07
Name: `constructor(seq2)`; Size: 1000; Keys: str; Type: coold; Time: 4.33e-05; Sigma: 6e-07
////////////////////////////////////////////////////////////////////////////////
Name: `constructor(seq2)`; Size: 1000; Keys: int; Type: dict; Time: 3.04e-05; Sigma: 4e-07
Name: `constructor(seq2)`; Size: 1000; Keys: int; Type: coold; Time: 3.45e-05; Sigma: 4e-07
################################################################################
////////////////////////////////////////////////////////////////////////////////
Name: `constructor(o)`; Size: 5; Keys: str; Type: dict; Time: 7.93e-08; Sigma: 3e-09
Name: `constructor(o)`; Size: 5; Keys: str; Type: coold; Time: 2.41e-08; Sigma: 6e-10
////////////////////////////////////////////////////////////////////////////////
Name: `constructor(o)`; Size: 5; Keys: int; Type: dict; Time: 7.94e-08; Sigma: 5e-09
Name: `constructor(o)`; Size: 5; Keys: int; Type: coold; Time: 2.41e-08; Sigma: 6e-10
////////////////////////////////////////////////////////////////////////////////
Name: `constructor(o)`; Size: 1000; Keys: str; Type: dict; Time: 6.18e-06; Sigma: 3e-07
Name: `constructor(o)`; Size: 1000; Keys: str; Type: coold; Time: 2.41e-08; Sigma: 6e-10
////////////////////////////////////////////////////////////////////////////////
Name: `constructor(o)`; Size: 1000; Keys: int; Type: dict; Time: 3.47e-06; Sigma: 2e-07
Name: `constructor(o)`; Size: 1000; Keys: int; Type: coold; Time: 2.41e-08; Sigma: 6e-10
################################################################################
////////////////////////////////////////////////////////////////////////////////
Name: `o.copy()`; Size: 5; Keys: str; Type: dict; Time: 7.28e-08; Sigma: 2e-09
Name: `o.copy()`; Size: 5; Keys: str; Type: coold; Time: 3.18e-08; Sigma: 2e-09
////////////////////////////////////////////////////////////////////////////////
Name: `o.copy()`; Size: 5; Keys: int; Type: dict; Time: 7.21e-08; Sigma: 4e-09
Name: `o.copy()`; Size: 5; Keys: int; Type: coold; Time: 3.32e-08; Sigma: 2e-09
////////////////////////////////////////////////////////////////////////////////
Name: `o.copy()`; Size: 1000; Keys: str; Type: dict; Time: 6.16e-06; Sigma: 3e-07
Name: `o.copy()`; Size: 1000; Keys: str; Type: coold; Time: 3.18e-08; Sigma: 2e-09
////////////////////////////////////////////////////////////////////////////////
Name: `o.copy()`; Size: 1000; Keys: int; Type: dict; Time: 3.46e-06; Sigma: 1e-07
Name: `o.copy()`; Size: 1000; Keys: int; Type: coold; Time: 3.18e-08; Sigma: 2e-09
################################################################################
////////////////////////////////////////////////////////////////////////////////
Name: `o == o`; Size: 5; Keys: str; Type: dict; Time: 7.23e-08; Sigma: 8e-10
Name: `o == o`; Size: 5; Keys: str; Type: coold; Time: 2.44e-08; Sigma: 2e-09
////////////////////////////////////////////////////////////////////////////////
Name: `o == o`; Size: 5; Keys: int; Type: dict; Time: 7.30e-08; Sigma: 1e-09
Name: `o == o`; Size: 5; Keys: int; Type: coold; Time: 2.44e-08; Sigma: 2e-09
////////////////////////////////////////////////////////////////////////////////
Name: `o == o`; Size: 1000; Keys: str; Type: dict; Time: 1.38e-05; Sigma: 1e-07
Name: `o == o`; Size: 1000; Keys: str; Type: coold; Time: 2.44e-08; Sigma: 2e-09
////////////////////////////////////////////////////////////////////////////////
Name: `o == o`; Size: 1000; Keys: int; Type: dict; Time: 1.05e-05; Sigma: 7e-08
Name: `o == o`; Size: 1000; Keys: int; Type: coold; Time: 2.44e-08; Sigma: 2e-09
################################################################################
////////////////////////////////////////////////////////////////////////////////
Name: `for x in o`; Size: 5; Keys: str; Type: dict; Time: 7.33e-08; Sigma: 2e-09
Name: `for x in o`; Size: 5; Keys: str; Type: coold; Time: 6.70e-08; Sigma: 1e-09
////////////////////////////////////////////////////////////////////////////////
Name: `for x in o`; Size: 5; Keys: int; Type: dict; Time: 7.33e-08; Sigma: 2e-09
Name: `for x in o`; Size: 5; Keys: int; Type: coold; Time: 6.70e-08; Sigma: 1e-09
////////////////////////////////////////////////////////////////////////////////
Name: `for x in o`; Size: 1000; Keys: str; Type: dict; Time: 8.84e-06; Sigma: 5e-08
Name: `for x in o`; Size: 1000; Keys: str; Type: coold; Time: 7.06e-06; Sigma: 6e-08
////////////////////////////////////////////////////////////////////////////////
Name: `for x in o`; Size: 1000; Keys: int; Type: dict; Time: 8.67e-06; Sigma: 7e-08
Name: `for x in o`; Size: 1000; Keys: int; Type: coold; Time: 6.94e-06; Sigma: 3e-08
################################################################################
////////////////////////////////////////////////////////////////////////////////
Name: `for x in o.values()`; Size: 5; Keys: str; Type: dict; Time: 7.28e-08; Sigma: 9e-10
Name: `for x in o.values()`; Size: 5; Keys: str; Type: coold; Time: 6.48e-08; Sigma: 8e-10
////////////////////////////////////////////////////////////////////////////////
Name: `for x in o.values()`; Size: 5; Keys: int; Type: dict; Time: 7.25e-08; Sigma: 1e-09
Name: `for x in o.values()`; Size: 5; Keys: int; Type: coold; Time: 6.45e-08; Sigma: 1e-09
////////////////////////////////////////////////////////////////////////////////
Name: `for x in o.values()`; Size: 1000; Keys: str; Type: dict; Time: 9.06e-06; Sigma: 5e-07
Name: `for x in o.values()`; Size: 1000; Keys: str; Type: coold; Time: 7.04e-06; Sigma: 4e-08
////////////////////////////////////////////////////////////////////////////////
Name: `for x in o.values()`; Size: 1000; Keys: int; Type: dict; Time: 9.53e-06; Sigma: 3e-08
Name: `for x in o.values()`; Size: 1000; Keys: int; Type: coold; Time: 6.97e-06; Sigma: 3e-08
################################################################################
////////////////////////////////////////////////////////////////////////////////
Name: `for x in o.items()`; Size: 5; Keys: str; Type: dict; Time: 1.13e-07; Sigma: 3e-09
Name: `for x in o.items()`; Size: 5; Keys: str; Type: coold; Time: 1.16e-07; Sigma: 2e-09
////////////////////////////////////////////////////////////////////////////////
Name: `for x in o.items()`; Size: 5; Keys: int; Type: dict; Time: 1.14e-07; Sigma: 3e-09
Name: `for x in o.items()`; Size: 5; Keys: int; Type: coold; Time: 1.17e-07; Sigma: 2e-09
////////////////////////////////////////////////////////////////////////////////
Name: `for x in o.items()`; Size: 1000; Keys: str; Type: dict; Time: 1.53e-05; Sigma: 3e-07
Name: `for x in o.items()`; Size: 1000; Keys: str; Type: coold; Time: 1.53e-05; Sigma: 4e-07
////////////////////////////////////////////////////////////////////////////////
Name: `for x in o.items()`; Size: 1000; Keys: int; Type: dict; Time: 1.53e-05; Sigma: 3e-07
Name: `for x in o.items()`; Size: 1000; Keys: int; Type: coold; Time: 1.55e-05; Sigma: 4e-07
################################################################################
////////////////////////////////////////////////////////////////////////////////
Name: `pickle.dumps(o)`; Size: 5; Keys: str; Type: dict; Time: 6.82e-07; Sigma: 2e-08
Name: `pickle.dumps(o)`; Size: 5; Keys: str; Type: coold; Time: 2.86e-06; Sigma: 1e-07
////////////////////////////////////////////////////////////////////////////////
Name: `pickle.dumps(o)`; Size: 5; Keys: int; Type: dict; Time: 4.77e-07; Sigma: 2e-08
Name: `pickle.dumps(o)`; Size: 5; Keys: int; Type: coold; Time: 2.72e-06; Sigma: 8e-08
////////////////////////////////////////////////////////////////////////////////
Name: `pickle.dumps(o)`; Size: 1000; Keys: str; Type: dict; Time: 1.24e-04; Sigma: 4e-06
Name: `pickle.dumps(o)`; Size: 1000; Keys: str; Type: coold; Time: 1.92e-04; Sigma: 5e-06
////////////////////////////////////////////////////////////////////////////////
Name: `pickle.dumps(o)`; Size: 1000; Keys: int; Type: dict; Time: 2.81e-05; Sigma: 6e-07
Name: `pickle.dumps(o)`; Size: 1000; Keys: int; Type: coold; Time: 7.37e-05; Sigma: 1e-06
################################################################################
////////////////////////////////////////////////////////////////////////////////
Name: `pickle.loads(dump)`; Size: 5; Keys: str; Type: dict; Time: 9.08e-07; Sigma: 6e-09
Name: `pickle.loads(dump)`; Size: 5; Keys: str; Type: coold; Time: 1.79e-06; Sigma: 9e-08
////////////////////////////////////////////////////////////////////////////////
Name: `pickle.loads(dump)`; Size: 5; Keys: int; Type: dict; Time: 4.46e-07; Sigma: 6e-09
Name: `pickle.loads(dump)`; Size: 5; Keys: int; Type: coold; Time: 1.32e-06; Sigma: 7e-08
////////////////////////////////////////////////////////////////////////////////
Name: `pickle.loads(dump)`; Size: 1000; Keys: str; Type: dict; Time: 1.57e-04; Sigma: 8e-06
Name: `pickle.loads(dump)`; Size: 1000; Keys: str; Type: coold; Time: 1.69e-04; Sigma: 7e-06
////////////////////////////////////////////////////////////////////////////////
Name: `pickle.loads(dump)`; Size: 1000; Keys: int; Type: dict; Time: 5.97e-05; Sigma: 5e-06
Name: `pickle.loads(dump)`; Size: 1000; Keys: int; Type: coold; Time: 6.68e-05; Sigma: 2e-06
################################################################################
////////////////////////////////////////////////////////////////////////////////
Name: `class.fromkeys()`; Size: 5; Keys: str; Type: dict; Time: 1.88e-07; Sigma: 1e-09
Name: `class.fromkeys()`; Size: 5; Keys: str; Type: coold; Time: 2.22e-07; Sigma: 7e-09
////////////////////////////////////////////////////////////////////////////////
Name: `class.fromkeys()`; Size: 5; Keys: int; Type: dict; Time: 2.08e-07; Sigma: 6e-09
Name: `class.fromkeys()`; Size: 5; Keys: int; Type: coold; Time: 2.44e-07; Sigma: 2e-09
////////////////////////////////////////////////////////////////////////////////
Name: `class.fromkeys()`; Size: 1000; Keys: str; Type: dict; Time: 4.05e-05; Sigma: 4e-06
Name: `class.fromkeys()`; Size: 1000; Keys: str; Type: coold; Time: 3.84e-05; Sigma: 5e-07
////////////////////////////////////////////////////////////////////////////////
Name: `class.fromkeys()`; Size: 1000; Keys: int; Type: dict; Time: 2.93e-05; Sigma: 7e-07
Name: `class.fromkeys()`; Size: 1000; Keys: int; Type: coold; Time: 3.08e-05; Sigma: 2e-06
################################################################################
[1] Benchmarks done under Linux 64 bit, Python 3.10.2, using the C Extension.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for frozendict-2.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8578fe06815fcdcc672bd5603eebc98361a5317c1c3a13b28c6c810f6ea3b323 |
|
MD5 | 7eeb22b889706ddee41fd5d3fd91b190 |
|
BLAKE2b-256 | 50f13fe14c7541ee87d5b62f979da4061adcf29a1f92261173b3c9e29c9daf75 |
Hashes for frozendict-2.3.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 752a6dcfaf9bb20a7ecab24980e4dbe041f154509c989207caf185522ef85461 |
|
MD5 | 148f02584cf21473ff6ca1dbc8fe8a9a |
|
BLAKE2b-256 | 053a42cd16579c16c7ee9b241ebf1ce32919067727ab4a132babc2463884a281 |
Hashes for frozendict-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 96dc7a02e78da5725e5e642269bb7ae792e0c9f13f10f2e02689175ebbfedb35 |
|
MD5 | f0f8fe696db4425c45236abd9e90a7c3 |
|
BLAKE2b-256 | 50ba118d222a4d770490973144348b7f188828e13e127f2f1f200b9aea227ce8 |
Hashes for frozendict-2.3.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e18e2abd144a9433b0a8334582843b2aa0d3b9ac8b209aaa912ad365115fe2e1 |
|
MD5 | e444fe979f6690ad88fdb69f62fd4e5a |
|
BLAKE2b-256 | d989bff9fe33955fa75e705cdcc266e270f5bc72a922ac0ab8191fa11a6d0ec7 |
Hashes for frozendict-2.3.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ffaf440648b44e0bc694c1a4701801941378ba3ba6541e17750ae4b4aeeb116 |
|
MD5 | cba2d29c5d5acbbfe75b3a5654b8cdf4 |
|
BLAKE2b-256 | bd4017f97a9272fdb55ac7ea2880b4f4a5c1c4b5b83d1232ab737cd97b70d73d |
Hashes for frozendict-2.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00ea9166aa68cc5feed05986206fdbf35e838a09cb3feef998cf35978ff8a803 |
|
MD5 | 85d3810a0ce1d8b854991b41432b2ada |
|
BLAKE2b-256 | 3a37957b93ca165c947d7ca8a69dd824a71b286cd690fcac38eddc63134a93b3 |
Hashes for frozendict-2.3.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fd72494a559bdcd28aa71f4aa81860269cd0b7c45fff3e2614a0a053ecfd2a13 |
|
MD5 | 9342c33cc5801e536d2b0f53c67d5f51 |
|
BLAKE2b-256 | 9e4b361f82e1e5df2d06ae7d01e2a00d246dcef7cb26d6d23da76728ff815319 |
Hashes for frozendict-2.3.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1f34793fb409c4fa70ffd25bea87b01f3bd305fb1c6b09e7dff085b126302206 |
|
MD5 | 4cb9a605640b0bf65a511f40c937bc95 |
|
BLAKE2b-256 | 524498dd06c946119d5a2681035238f13da114d61a15adfc77a2eeb05af9a2fc |
Hashes for frozendict-2.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6da06e44904beae4412199d7e49be4f85c6cc168ab06b77c735ea7da5ce3454 |
|
MD5 | ccf49bdc145dfe5589e99eae8c568074 |
|
BLAKE2b-256 | d2688705aff6c6765a230864eae85b1aec3946d6450ce5553062bc2eac0afbe4 |
Hashes for frozendict-2.3.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6cf605916f50aabaaba5624c81eb270200f6c2c466c46960237a125ec8fe3ae0 |
|
MD5 | eab2fc6ff33d1db588169fa1c16338ca |
|
BLAKE2b-256 | 74d479b5f41bf960fd2ce7933f725af78b7bda8eff500187e55d648ed2fb10a7 |
Hashes for frozendict-2.3.0-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2d3f5016650c0e9a192f5024e68fb4d63f670d0ee58b099ed3f5b4c62ea30ecb |
|
MD5 | 35a245ece6234ee4679a7ea397d65e4e |
|
BLAKE2b-256 | 41b00d900ab07d8c845184fff736041666391e11acdcabf7880bc94bbcf55062 |
Hashes for frozendict-2.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4f45ef5f6b184d84744fff97b61f6b9a855e24d36b713ea2352fc723a047afa5 |
|
MD5 | 5b1848aa7e84b8e67c5af986322df8e3 |
|
BLAKE2b-256 | f828bd453d70d0e35d26e97f66cc0127ca69ad121a7503538d9ba0fd2abb3869 |
Hashes for frozendict-2.3.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a27a69b1ac3591e4258325108aee62b53c0eeb6ad0a993ae68d3c7eaea980420 |
|
MD5 | d946eac0c9a2653cc6426b131028cfeb |
|
BLAKE2b-256 | f8b9eb7e9843a326beafc6eec6e13295900ca776410e31b4010ace41a3e6b5e9 |
Hashes for frozendict-2.3.0-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2e044602ce17e5cd86724add46660fb9d80169545164e763300a3b839cb1b79 |
|
MD5 | c1faf30844cb422d29d8affdf0db4ef6 |
|
BLAKE2b-256 | bf73d67d4b4091bd74d817781acc54de5a6376ce5b616ea4a3334cab768e22c4 |
Hashes for frozendict-2.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60dd2253f1bacb63a7c486ec541a968af4f985ffb06602ee8954a3d39ec6bd2e |
|
MD5 | 98be3f53c0989fa8dcf6d93943debc3a |
|
BLAKE2b-256 | b94d1e869f14ee7afff8a394d70bafc3baf55662efa0b8784ae3bffaa21336ef |
Hashes for frozendict-2.3.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5346d9fc1c936c76d33975a9a9f1a067342963105d9a403a99e787c939cc2bb2 |
|
MD5 | 4d75f4f0fb8e9f3084d92dc7b3e46771 |
|
BLAKE2b-256 | 91f90db513394a6c816642ddd8bfaf3715329804c4e3cfa53d0623611a8aff33 |