# frozendict
### Table of Contents
* [Introduction](#introduction)
* [Install](#install)
* [API](#api)
* [frozendict API](#frozendict-api)
* [deepfreeze API](#deepfreeze-api)
* [Examples](#examples)
* [frozendict examples](#frozendict-examples)
* [deepfreeze examples](#deepfreeze-examples)
* [Building](#building)
* [Benchmarks](#benchmarks)
# Introduction
Welcome, fellow programmer, to the house of `frozendict` and
[deepfreeze](#deepfreeze-api)!
`frozendict` is a simple immutable dictionary. It's fast as `dict`, and
[sometimes faster](https://github.com/Marco-Sulla/python-frozendict#benchmarks)!
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, un`pickle`d and have a hash, if all values
are hashable.
You can also add any `dict` to a `frozendict` using the `|` operator. The result is a new `frozendict`.
# Install
You can install `frozendict` by simply typing in a command line:
```bash
pip install frozendict
```
The C Extension is optional by default from version 2.3.5. You can make it mandatory using:
```bash
CIBUILDWHEEL=1 pip install frozendict
```
On the contrary, if you want the pure py implementation:
```bash
FROZENDICT_PURE_PY=1 pip install frozendict
```
# API
## 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 a 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.
### `key([index])`
It returns the key at the specified index (determined by the insertion order). If index is not passed, it defaults to 0. If the index is negative, the position will be the size of the `frozendict` + index
### `value([index])`
Same as `key(index)`, but it returns the value at the given index.
### `item([index])`
Same as `key(index)`, but it returns a tuple with (key, value) at the given index.
## deepfreeze API
The `frozendict` _module_ has also these static methods:
### `frozendict.deepfreeze(o, custom_converters = None, custom_inverse_converters = None)`
Converts the object and all the objects nested in it, into their immutable
counterparts.
The conversion map is in `getFreezeConversionMap()`.
You can register a new conversion using `register()` You can also
pass a map of custom converters with `custom_converters` and a map
of custom inverse converters with `custom_inverse_converters`,
without using `register()`.
By default, if the type is not registered and has a `__dict__`
attribute, it's converted to the `frozendict` of that `__dict__`.
This function assumes that hashable == immutable (that is not
always true).
This function uses recursion, with all the limits of recursions in
Python.
Where is a good old tail call when you need it?
### `frozendict.register(to_convert, converter, *, inverse = False)`
Adds a `converter` for a type `to_convert`. `converter`
must be callable. The new converter will be used by `deepfreeze()`
and has precedence over any previous converter.
If `to_covert` has already a converter, a FreezeWarning is raised.
If `inverse` is True, the conversion is considered from an immutable
type to a mutable one. This make it possible to convert mutable
objects nested in the registered immutable one.
### `frozendict.unregister(type, inverse = False)`
Unregister a type from custom conversion. If `inverse` is `True`,
the unregistered conversion is an inverse conversion
(see `register()`).
# Examples
## frozendict examples
```python
from frozendict import frozendict
fd = frozendict(Guzzanti = "Corrado", Hicks = "Bill")
print(fd)
# frozendict({'Guzzanti': 'Corrado', 'Hicks': 'Bill'})
frozendict({"Guzzanti": "Corrado", "Hicks": "Bill"})
# frozendict({'Guzzanti': 'Corrado', 'Hicks': 'Bill'})
hash(fd)
# 5833699487320513741
fd_unhashable = frozendict({1: []})
hash(fd_unhashable)
# TypeError: Not all values are hashable.
frozendict({frozendict(nested = 4, key = 2): 42})
# frozendict({frozendict({'nested': 4, 'key': 2}): 42})
fd | {1: 2}
# frozendict({'Guzzanti': 'Corrado', 'Hicks': 'Bill', 1: 2})
fd.set(1, 2)
# frozendict.frozendict({'Guzzanti': 'Corrado', 'Hicks': 'Bill', 1: 2})
fd.set("Guzzanti", "Sabina")
# frozendict.frozendict({'Guzzanti': 'Sabina', 'Hicks': 'Bill'})
fd.delete("Guzzanti")
# frozendict.frozendict({'Hicks': 'Bill'})
fd.setdefault("Guzzanti", "Sabina")
# frozendict.frozendict({'Guzzanti': 'Corrado', 'Hicks': 'Bill'})
fd.setdefault(1, 2)
# frozendict.frozendict({'Guzzanti': 'Corrado', 'Hicks': 'Bill', 1: 2})
fd.key()
# 'Guzzanti'
fd.value(1)
# 'Bill'
fd.item(-1)
# (1, 2)
print(fd["Guzzanti"])
# Corrado
fd["Brignano"]
# KeyError: 'Brignano'
len(fd)
# 2
"Guzzanti" in fd
# True
"Guzzanti" not in fd
# False
"Brignano" in fd
# False
fd5 = frozendict(fd)
id_fd5 = id(fd5)
fd5 |= {1: 2}
fd5
# frozendict.frozendict({'Guzzanti': 'Corrado', 'Hicks': 'Bill', 1: 2})
id(fd5) != id_fd5
# True
fd2 = fd.copy()
fd2 == fd
# True
fd3 = frozendict(fd)
fd3 == fd
# True
fd4 = frozendict({"Hicks": "Bill", "Guzzanti": "Corrado"})
print(fd4)
# frozendict({'Hicks': 'Bill', 'Guzzanti': 'Corrado'})
fd4 == fd
# True
import pickle
fd_unpickled = pickle.loads(pickle.dumps(fd))
print(fd_unpickled)
# frozendict({'Guzzanti': 'Corrado', 'Hicks': 'Bill'})
fd_unpickled == fd
# True
frozendict(Guzzanti="Corrado", Hicks="Bill")
# frozendict({'Guzzanti': 'Corrado', 'Hicks': 'Bill'}
fd.get("Guzzanti")
# 'Corrado'
print(fd.get("Brignano"))
# None
tuple(fd.keys())
# ('Guzzanti', 'Hicks')
tuple(fd.values())
# ('Corrado', 'Bill')
tuple(fd.items())
# (('Guzzanti', 'Corrado'), ('Hicks', 'Bill'))
frozendict.fromkeys(["Corrado", "Sabina"], "Guzzanti")
# frozendict({'Corrado': 'Guzzanti', 'Sabina': 'Guzzanti'})
iter(fd)
# <dict_keyiterator object at 0x7feb75c49188>
fd["Guzzanti"] = "Caterina"
# TypeError: 'frozendict' object doesn't support item assignment
```
## deepfreeze examples
```python
import frozendict as cool
from frozendict import frozendict
from array import array
from collections import OrderedDict
from types import MappingProxyType
class A:
def __init__(self, x):
self.x = x
a = A(3)
o = {"x": [
5,
frozendict(y = {5, "b", memoryview(b"b")}),
array("B", (0, 1, 2)),
OrderedDict(a=bytearray(b"a")),
MappingProxyType({2: []}),
a
]}
cool.deepfreeze(o)
# frozendict(x = (
# 5,
# frozendict(y = frozenset({5, "b", memoryview(b"b")})),
# (0, 1, 2),
# frozendict(a = b'a'),
# MappingProxyType({2: ()}),
# frozendict(x = 3),
# ))
```
# Building
You can build `frozendict` directly from the code, using
```
python3 setup.py bdist_wheel
```
The C Extension is optional by default from version 2.3.5. You can make it mandatory by passing the environment variable `CIBUILDWHEEL` with value `1`
On the contrary, if you want the pure py implementation, you can pass the env var `FROZENDICT_PURE_PY` with value `1`
# Benchmarks
Some benchmarks between `dict` and `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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; 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: frozendict; Time: 3.08e-05; Sigma: 2e-06
################################################################################
```
[1] Benchmarks done under Linux 64 bit, Python 3.10.2, using the C Extension.
Raw data
{
"_id": null,
"home_page": "https://github.com/Marco-Sulla/python-frozendict",
"name": "frozendict",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": "immutable hashable picklable frozendict dict dictionary map Mapping MappingProxyType developers stable utility",
"author": "Marco Sulla",
"author_email": "marcosullaroma@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/90/b2/2a3d1374b7780999d3184e171e25439a8358c47b481f68be883c14086b4c/frozendict-2.4.7.tar.gz",
"platform": null,
"description": "# frozendict\n### Table of Contents\n* [Introduction](#introduction)\n* [Install](#install)\n* [API](#api)\n * [frozendict API](#frozendict-api)\n * [deepfreeze API](#deepfreeze-api)\n* [Examples](#examples)\n * [frozendict examples](#frozendict-examples)\n * [deepfreeze examples](#deepfreeze-examples)\n* [Building](#building)\n* [Benchmarks](#benchmarks)\n\n# Introduction\nWelcome, fellow programmer, to the house of `frozendict` and \n[deepfreeze](#deepfreeze-api)!\n\n`frozendict` is a simple immutable dictionary. It's fast as `dict`, and \n[sometimes faster](https://github.com/Marco-Sulla/python-frozendict#benchmarks)!\n\nUnlike other similar implementations, immutability is guaranteed: you can't \nchange the internal variables of the class, and they are all immutable \nobjects. Reinvoking `__init__` does not alter the object.\n\nThe API is the same as `dict`, without methods that can change the \nimmutability. So it supports also `fromkeys`, unlike other implementations. \nFurthermore, it can be `pickle`d, un`pickle`d and have a hash, if all values \nare hashable.\n\nYou can also add any `dict` to a `frozendict` using the `|` operator. The result is a new `frozendict`.\n\n# Install\n\nYou can install `frozendict` by simply typing in a command line:\n\n```bash\npip install frozendict\n```\n\nThe C Extension is optional by default from version 2.3.5. You can make it mandatory using:\n\n```bash\nCIBUILDWHEEL=1 pip install frozendict\n```\n\nOn the contrary, if you want the pure py implementation:\n\n```bash\nFROZENDICT_PURE_PY=1 pip install frozendict\n```\n\n# API\n\n## frozendict API\nThe API is the same of `dict` of Python 3.10, without the methods and operands which alter the map. Additionally, `frozendict` supports these methods:\n\n### `__hash__()`\n\nIf all the values of the `frozendict` are hashable, returns a hash, otherwise raises a TypeError.\n\n### `set(key, value)`\n\nIt 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.\n\n### `delete(key)`\n\nIt returns a new `frozendict` without the item corresponding to the key. If the key is not present, a KeyError is raised.\n\n### `setdefault(key[, default])`\n\nIf 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.\n\n### `key([index])`\n\nIt returns the key at the specified index (determined by the insertion order). If index is not passed, it defaults to 0. If the index is negative, the position will be the size of the `frozendict` + index\n\n### `value([index])`\nSame as `key(index)`, but it returns the value at the given index.\n\n### `item([index])`\nSame as `key(index)`, but it returns a tuple with (key, value) at the given index.\n\n## deepfreeze API\n\nThe `frozendict` _module_ has also these static methods:\n\n### `frozendict.deepfreeze(o, custom_converters = None, custom_inverse_converters = None)`\nConverts the object and all the objects nested in it, into their immutable\ncounterparts.\n\nThe conversion map is in `getFreezeConversionMap()`.\n\nYou can register a new conversion using `register()` You can also \npass a map of custom converters with `custom_converters` and a map \nof custom inverse converters with `custom_inverse_converters`, \nwithout using `register()`.\n\nBy default, if the type is not registered and has a `__dict__` \nattribute, it's converted to the `frozendict` of that `__dict__`.\n\nThis function assumes that hashable == immutable (that is not \nalways true).\n\nThis function uses recursion, with all the limits of recursions in \nPython.\n\nWhere is a good old tail call when you need it?\n\n### `frozendict.register(to_convert, converter, *, inverse = False)`\n\nAdds a `converter` for a type `to_convert`. `converter`\nmust be callable. The new converter will be used by `deepfreeze()`\nand has precedence over any previous converter. \n\nIf `to_covert` has already a converter, a FreezeWarning is raised.\n\nIf `inverse` is True, the conversion is considered from an immutable \ntype to a mutable one. This make it possible to convert mutable \nobjects nested in the registered immutable one.\n\n### `frozendict.unregister(type, inverse = False)`\nUnregister a type from custom conversion. If `inverse` is `True`, \nthe unregistered conversion is an inverse conversion \n(see `register()`).\n\n# Examples\n\n## frozendict examples\n```python\nfrom frozendict import frozendict\n\nfd = frozendict(Guzzanti = \"Corrado\", Hicks = \"Bill\")\n\nprint(fd)\n# frozendict({'Guzzanti': 'Corrado', 'Hicks': 'Bill'})\n\nfrozendict({\"Guzzanti\": \"Corrado\", \"Hicks\": \"Bill\"})\n# frozendict({'Guzzanti': 'Corrado', 'Hicks': 'Bill'})\n\nhash(fd)\n# 5833699487320513741\n\nfd_unhashable = frozendict({1: []})\nhash(fd_unhashable)\n# TypeError: Not all values are hashable.\n\nfrozendict({frozendict(nested = 4, key = 2): 42})\n# frozendict({frozendict({'nested': 4, 'key': 2}): 42})\n\nfd | {1: 2}\n# frozendict({'Guzzanti': 'Corrado', 'Hicks': 'Bill', 1: 2})\n\nfd.set(1, 2)\n# frozendict.frozendict({'Guzzanti': 'Corrado', 'Hicks': 'Bill', 1: 2})\n\nfd.set(\"Guzzanti\", \"Sabina\")\n# frozendict.frozendict({'Guzzanti': 'Sabina', 'Hicks': 'Bill'})\n\nfd.delete(\"Guzzanti\")\n# frozendict.frozendict({'Hicks': 'Bill'})\n\nfd.setdefault(\"Guzzanti\", \"Sabina\")\n# frozendict.frozendict({'Guzzanti': 'Corrado', 'Hicks': 'Bill'})\n\nfd.setdefault(1, 2)\n# frozendict.frozendict({'Guzzanti': 'Corrado', 'Hicks': 'Bill', 1: 2})\n\nfd.key()\n# 'Guzzanti'\n\nfd.value(1)\n# 'Bill'\n\nfd.item(-1)\n# (1, 2)\n\nprint(fd[\"Guzzanti\"])\n# Corrado\n\nfd[\"Brignano\"]\n# KeyError: 'Brignano'\n\nlen(fd)\n# 2\n\n\"Guzzanti\" in fd\n# True\n\n\"Guzzanti\" not in fd\n# False\n\n\"Brignano\" in fd\n# False\n\nfd5 = frozendict(fd)\nid_fd5 = id(fd5)\nfd5 |= {1: 2}\nfd5\n# frozendict.frozendict({'Guzzanti': 'Corrado', 'Hicks': 'Bill', 1: 2})\nid(fd5) != id_fd5\n# True\n\nfd2 = fd.copy()\nfd2 == fd\n# True\n\nfd3 = frozendict(fd)\nfd3 == fd\n# True\n\nfd4 = frozendict({\"Hicks\": \"Bill\", \"Guzzanti\": \"Corrado\"})\n\nprint(fd4)\n# frozendict({'Hicks': 'Bill', 'Guzzanti': 'Corrado'})\n\nfd4 == fd\n# True\n\nimport pickle\nfd_unpickled = pickle.loads(pickle.dumps(fd))\nprint(fd_unpickled)\n# frozendict({'Guzzanti': 'Corrado', 'Hicks': 'Bill'})\nfd_unpickled == fd\n# True\n\nfrozendict(Guzzanti=\"Corrado\", Hicks=\"Bill\")\n# frozendict({'Guzzanti': 'Corrado', 'Hicks': 'Bill'}\n\nfd.get(\"Guzzanti\")\n# 'Corrado'\n\nprint(fd.get(\"Brignano\"))\n# None\n\ntuple(fd.keys())\n# ('Guzzanti', 'Hicks')\n\ntuple(fd.values())\n# ('Corrado', 'Bill')\n\ntuple(fd.items())\n# (('Guzzanti', 'Corrado'), ('Hicks', 'Bill'))\n\nfrozendict.fromkeys([\"Corrado\", \"Sabina\"], \"Guzzanti\")\n# frozendict({'Corrado': 'Guzzanti', 'Sabina': 'Guzzanti'})\n\niter(fd)\n# <dict_keyiterator object at 0x7feb75c49188>\n\nfd[\"Guzzanti\"] = \"Caterina\"\n# TypeError: 'frozendict' object doesn't support item assignment\n```\n\n## deepfreeze examples\n```python\nimport frozendict as cool\n\nfrom frozendict import frozendict\nfrom array import array\nfrom collections import OrderedDict\nfrom types import MappingProxyType\n\nclass A:\n def __init__(self, x):\n self.x = x\n\na = A(3)\n \no = {\"x\": [\n 5, \n frozendict(y = {5, \"b\", memoryview(b\"b\")}), \n array(\"B\", (0, 1, 2)), \n OrderedDict(a=bytearray(b\"a\")),\n MappingProxyType({2: []}),\n a\n]}\n\ncool.deepfreeze(o)\n# frozendict(x = (\n# 5, \n# frozendict(y = frozenset({5, \"b\", memoryview(b\"b\")})), \n# (0, 1, 2), \n# frozendict(a = b'a'),\n# MappingProxyType({2: ()}),\n# frozendict(x = 3),\n# ))\n\n```\n\n# Building\nYou can build `frozendict` directly from the code, using\n\n```\npython3 setup.py bdist_wheel\n```\n\nThe C Extension is optional by default from version 2.3.5. You can make it mandatory by passing the environment variable `CIBUILDWHEEL` with value `1`\n\nOn the contrary, if you want the pure py implementation, you can pass the env var `FROZENDICT_PURE_PY` with value `1`\n\n# Benchmarks\n\nSome benchmarks between `dict` and `frozendict`[1]:\n\n```\n################################################################################\n////////////////////////////////////////////////////////////////////////////////\nName: `constructor(d)`; Size: 5; Keys: str; Type: dict; Time: 8.02e-08; Sigma: 4e-09\nName: `constructor(d)`; Size: 5; Keys: str; Type: frozendict; Time: 8.81e-08; Sigma: 3e-09\n////////////////////////////////////////////////////////////////////////////////\nName: `constructor(d)`; Size: 5; Keys: int; Type: dict; Time: 7.96e-08; Sigma: 5e-09\nName: `constructor(d)`; Size: 5; Keys: int; Type: frozendict; Time: 8.97e-08; Sigma: 2e-09\n////////////////////////////////////////////////////////////////////////////////\nName: `constructor(d)`; Size: 1000; Keys: str; Type: dict; Time: 6.38e-06; Sigma: 9e-08\nName: `constructor(d)`; Size: 1000; Keys: str; Type: frozendict; Time: 6.21e-06; Sigma: 2e-07\n////////////////////////////////////////////////////////////////////////////////\nName: `constructor(d)`; Size: 1000; Keys: int; Type: dict; Time: 3.49e-06; Sigma: 3e-07\nName: `constructor(d)`; Size: 1000; Keys: int; Type: frozendict; Time: 3.48e-06; Sigma: 2e-07\n################################################################################\n////////////////////////////////////////////////////////////////////////////////\nName: `constructor(kwargs)`; Size: 5; Keys: str; Type: dict; Time: 2.40e-07; Sigma: 1e-09\nName: `constructor(kwargs)`; Size: 5; Keys: str; Type: frozendict; Time: 2.48e-07; Sigma: 2e-09\n////////////////////////////////////////////////////////////////////////////////\nName: `constructor(kwargs)`; Size: 1000; Keys: str; Type: dict; Time: 4.80e-05; Sigma: 1e-06\nName: `constructor(kwargs)`; Size: 1000; Keys: str; Type: frozendict; Time: 2.90e-05; Sigma: 7e-07\n################################################################################\n////////////////////////////////////////////////////////////////////////////////\nName: `constructor(seq2)`; Size: 5; Keys: str; Type: dict; Time: 2.01e-07; Sigma: 9e-10\nName: `constructor(seq2)`; Size: 5; Keys: str; Type: frozendict; Time: 2.50e-07; Sigma: 1e-09\n////////////////////////////////////////////////////////////////////////////////\nName: `constructor(seq2)`; Size: 5; Keys: int; Type: dict; Time: 2.18e-07; Sigma: 2e-09\nName: `constructor(seq2)`; Size: 5; Keys: int; Type: frozendict; Time: 2.73e-07; Sigma: 1e-09\n////////////////////////////////////////////////////////////////////////////////\nName: `constructor(seq2)`; Size: 1000; Keys: str; Type: dict; Time: 4.29e-05; Sigma: 6e-07\nName: `constructor(seq2)`; Size: 1000; Keys: str; Type: frozendict; Time: 4.33e-05; Sigma: 6e-07\n////////////////////////////////////////////////////////////////////////////////\nName: `constructor(seq2)`; Size: 1000; Keys: int; Type: dict; Time: 3.04e-05; Sigma: 4e-07\nName: `constructor(seq2)`; Size: 1000; Keys: int; Type: frozendict; Time: 3.45e-05; Sigma: 4e-07\n################################################################################\n////////////////////////////////////////////////////////////////////////////////\nName: `constructor(o)`; Size: 5; Keys: str; Type: dict; Time: 7.93e-08; Sigma: 3e-09\nName: `constructor(o)`; Size: 5; Keys: str; Type: frozendict; Time: 2.41e-08; Sigma: 6e-10\n////////////////////////////////////////////////////////////////////////////////\nName: `constructor(o)`; Size: 5; Keys: int; Type: dict; Time: 7.94e-08; Sigma: 5e-09\nName: `constructor(o)`; Size: 5; Keys: int; Type: frozendict; Time: 2.41e-08; Sigma: 6e-10\n////////////////////////////////////////////////////////////////////////////////\nName: `constructor(o)`; Size: 1000; Keys: str; Type: dict; Time: 6.18e-06; Sigma: 3e-07\nName: `constructor(o)`; Size: 1000; Keys: str; Type: frozendict; Time: 2.41e-08; Sigma: 6e-10\n////////////////////////////////////////////////////////////////////////////////\nName: `constructor(o)`; Size: 1000; Keys: int; Type: dict; Time: 3.47e-06; Sigma: 2e-07\nName: `constructor(o)`; Size: 1000; Keys: int; Type: frozendict; Time: 2.41e-08; Sigma: 6e-10\n################################################################################\n////////////////////////////////////////////////////////////////////////////////\nName: `o.copy()`; Size: 5; Keys: str; Type: dict; Time: 7.28e-08; Sigma: 2e-09\nName: `o.copy()`; Size: 5; Keys: str; Type: frozendict; Time: 3.18e-08; Sigma: 2e-09\n////////////////////////////////////////////////////////////////////////////////\nName: `o.copy()`; Size: 5; Keys: int; Type: dict; Time: 7.21e-08; Sigma: 4e-09\nName: `o.copy()`; Size: 5; Keys: int; Type: frozendict; Time: 3.32e-08; Sigma: 2e-09\n////////////////////////////////////////////////////////////////////////////////\nName: `o.copy()`; Size: 1000; Keys: str; Type: dict; Time: 6.16e-06; Sigma: 3e-07\nName: `o.copy()`; Size: 1000; Keys: str; Type: frozendict; Time: 3.18e-08; Sigma: 2e-09\n////////////////////////////////////////////////////////////////////////////////\nName: `o.copy()`; Size: 1000; Keys: int; Type: dict; Time: 3.46e-06; Sigma: 1e-07\nName: `o.copy()`; Size: 1000; Keys: int; Type: frozendict; Time: 3.18e-08; Sigma: 2e-09\n################################################################################\n////////////////////////////////////////////////////////////////////////////////\nName: `o == o`; Size: 5; Keys: str; Type: dict; Time: 7.23e-08; Sigma: 8e-10\nName: `o == o`; Size: 5; Keys: str; Type: frozendict; Time: 2.44e-08; Sigma: 2e-09\n////////////////////////////////////////////////////////////////////////////////\nName: `o == o`; Size: 5; Keys: int; Type: dict; Time: 7.30e-08; Sigma: 1e-09\nName: `o == o`; Size: 5; Keys: int; Type: frozendict; Time: 2.44e-08; Sigma: 2e-09\n////////////////////////////////////////////////////////////////////////////////\nName: `o == o`; Size: 1000; Keys: str; Type: dict; Time: 1.38e-05; Sigma: 1e-07\nName: `o == o`; Size: 1000; Keys: str; Type: frozendict; Time: 2.44e-08; Sigma: 2e-09\n////////////////////////////////////////////////////////////////////////////////\nName: `o == o`; Size: 1000; Keys: int; Type: dict; Time: 1.05e-05; Sigma: 7e-08\nName: `o == o`; Size: 1000; Keys: int; Type: frozendict; Time: 2.44e-08; Sigma: 2e-09\n################################################################################\n////////////////////////////////////////////////////////////////////////////////\nName: `for x in o`; Size: 5; Keys: str; Type: dict; Time: 7.33e-08; Sigma: 2e-09\nName: `for x in o`; Size: 5; Keys: str; Type: frozendict; Time: 6.70e-08; Sigma: 1e-09\n////////////////////////////////////////////////////////////////////////////////\nName: `for x in o`; Size: 5; Keys: int; Type: dict; Time: 7.33e-08; Sigma: 2e-09\nName: `for x in o`; Size: 5; Keys: int; Type: frozendict; Time: 6.70e-08; Sigma: 1e-09\n////////////////////////////////////////////////////////////////////////////////\nName: `for x in o`; Size: 1000; Keys: str; Type: dict; Time: 8.84e-06; Sigma: 5e-08\nName: `for x in o`; Size: 1000; Keys: str; Type: frozendict; Time: 7.06e-06; Sigma: 6e-08\n////////////////////////////////////////////////////////////////////////////////\nName: `for x in o`; Size: 1000; Keys: int; Type: dict; Time: 8.67e-06; Sigma: 7e-08\nName: `for x in o`; Size: 1000; Keys: int; Type: frozendict; Time: 6.94e-06; Sigma: 3e-08\n################################################################################\n////////////////////////////////////////////////////////////////////////////////\nName: `for x in o.values()`; Size: 5; Keys: str; Type: dict; Time: 7.28e-08; Sigma: 9e-10\nName: `for x in o.values()`; Size: 5; Keys: str; Type: frozendict; Time: 6.48e-08; Sigma: 8e-10\n////////////////////////////////////////////////////////////////////////////////\nName: `for x in o.values()`; Size: 5; Keys: int; Type: dict; Time: 7.25e-08; Sigma: 1e-09\nName: `for x in o.values()`; Size: 5; Keys: int; Type: frozendict; Time: 6.45e-08; Sigma: 1e-09\n////////////////////////////////////////////////////////////////////////////////\nName: `for x in o.values()`; Size: 1000; Keys: str; Type: dict; Time: 9.06e-06; Sigma: 5e-07\nName: `for x in o.values()`; Size: 1000; Keys: str; Type: frozendict; Time: 7.04e-06; Sigma: 4e-08\n////////////////////////////////////////////////////////////////////////////////\nName: `for x in o.values()`; Size: 1000; Keys: int; Type: dict; Time: 9.53e-06; Sigma: 3e-08\nName: `for x in o.values()`; Size: 1000; Keys: int; Type: frozendict; Time: 6.97e-06; Sigma: 3e-08\n################################################################################\n////////////////////////////////////////////////////////////////////////////////\nName: `for x in o.items()`; Size: 5; Keys: str; Type: dict; Time: 1.13e-07; Sigma: 3e-09\nName: `for x in o.items()`; Size: 5; Keys: str; Type: frozendict; Time: 1.16e-07; Sigma: 2e-09\n////////////////////////////////////////////////////////////////////////////////\nName: `for x in o.items()`; Size: 5; Keys: int; Type: dict; Time: 1.14e-07; Sigma: 3e-09\nName: `for x in o.items()`; Size: 5; Keys: int; Type: frozendict; Time: 1.17e-07; Sigma: 2e-09\n////////////////////////////////////////////////////////////////////////////////\nName: `for x in o.items()`; Size: 1000; Keys: str; Type: dict; Time: 1.53e-05; Sigma: 3e-07\nName: `for x in o.items()`; Size: 1000; Keys: str; Type: frozendict; Time: 1.53e-05; Sigma: 4e-07\n////////////////////////////////////////////////////////////////////////////////\nName: `for x in o.items()`; Size: 1000; Keys: int; Type: dict; Time: 1.53e-05; Sigma: 3e-07\nName: `for x in o.items()`; Size: 1000; Keys: int; Type: frozendict; Time: 1.55e-05; Sigma: 4e-07\n################################################################################\n////////////////////////////////////////////////////////////////////////////////\nName: `pickle.dumps(o)`; Size: 5; Keys: str; Type: dict; Time: 6.82e-07; Sigma: 2e-08\nName: `pickle.dumps(o)`; Size: 5; Keys: str; Type: frozendict; Time: 2.86e-06; Sigma: 1e-07\n////////////////////////////////////////////////////////////////////////////////\nName: `pickle.dumps(o)`; Size: 5; Keys: int; Type: dict; Time: 4.77e-07; Sigma: 2e-08\nName: `pickle.dumps(o)`; Size: 5; Keys: int; Type: frozendict; Time: 2.72e-06; Sigma: 8e-08\n////////////////////////////////////////////////////////////////////////////////\nName: `pickle.dumps(o)`; Size: 1000; Keys: str; Type: dict; Time: 1.24e-04; Sigma: 4e-06\nName: `pickle.dumps(o)`; Size: 1000; Keys: str; Type: frozendict; Time: 1.92e-04; Sigma: 5e-06\n////////////////////////////////////////////////////////////////////////////////\nName: `pickle.dumps(o)`; Size: 1000; Keys: int; Type: dict; Time: 2.81e-05; Sigma: 6e-07\nName: `pickle.dumps(o)`; Size: 1000; Keys: int; Type: frozendict; Time: 7.37e-05; Sigma: 1e-06\n################################################################################\n////////////////////////////////////////////////////////////////////////////////\nName: `pickle.loads(dump)`; Size: 5; Keys: str; Type: dict; Time: 9.08e-07; Sigma: 6e-09\nName: `pickle.loads(dump)`; Size: 5; Keys: str; Type: frozendict; Time: 1.79e-06; Sigma: 9e-08\n////////////////////////////////////////////////////////////////////////////////\nName: `pickle.loads(dump)`; Size: 5; Keys: int; Type: dict; Time: 4.46e-07; Sigma: 6e-09\nName: `pickle.loads(dump)`; Size: 5; Keys: int; Type: frozendict; Time: 1.32e-06; Sigma: 7e-08\n////////////////////////////////////////////////////////////////////////////////\nName: `pickle.loads(dump)`; Size: 1000; Keys: str; Type: dict; Time: 1.57e-04; Sigma: 8e-06\nName: `pickle.loads(dump)`; Size: 1000; Keys: str; Type: frozendict; Time: 1.69e-04; Sigma: 7e-06\n////////////////////////////////////////////////////////////////////////////////\nName: `pickle.loads(dump)`; Size: 1000; Keys: int; Type: dict; Time: 5.97e-05; Sigma: 5e-06\nName: `pickle.loads(dump)`; Size: 1000; Keys: int; Type: frozendict; Time: 6.68e-05; Sigma: 2e-06\n################################################################################\n////////////////////////////////////////////////////////////////////////////////\nName: `class.fromkeys()`; Size: 5; Keys: str; Type: dict; Time: 1.88e-07; Sigma: 1e-09\nName: `class.fromkeys()`; Size: 5; Keys: str; Type: frozendict; Time: 2.22e-07; Sigma: 7e-09\n////////////////////////////////////////////////////////////////////////////////\nName: `class.fromkeys()`; Size: 5; Keys: int; Type: dict; Time: 2.08e-07; Sigma: 6e-09\nName: `class.fromkeys()`; Size: 5; Keys: int; Type: frozendict; Time: 2.44e-07; Sigma: 2e-09\n////////////////////////////////////////////////////////////////////////////////\nName: `class.fromkeys()`; Size: 1000; Keys: str; Type: dict; Time: 4.05e-05; Sigma: 4e-06\nName: `class.fromkeys()`; Size: 1000; Keys: str; Type: frozendict; Time: 3.84e-05; Sigma: 5e-07\n////////////////////////////////////////////////////////////////////////////////\nName: `class.fromkeys()`; Size: 1000; Keys: int; Type: dict; Time: 2.93e-05; Sigma: 7e-07\nName: `class.fromkeys()`; Size: 1000; Keys: int; Type: frozendict; Time: 3.08e-05; Sigma: 2e-06\n################################################################################\n```\n\n[1] Benchmarks done under Linux 64 bit, Python 3.10.2, using the C Extension.\n",
"bugtrack_url": null,
"license": "LGPL v3",
"summary": "A simple immutable dictionary",
"version": "2.4.7",
"project_urls": {
"Bug Reports": "https://github.com/Marco-Sulla/python-frozendict/issues",
"Homepage": "https://github.com/Marco-Sulla/python-frozendict",
"Source": "https://github.com/Marco-Sulla/python-frozendict"
},
"split_keywords": [
"immutable",
"hashable",
"picklable",
"frozendict",
"dict",
"dictionary",
"map",
"mapping",
"mappingproxytype",
"developers",
"stable",
"utility"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "d1bd920b1c5ff1df427a5fc3fd4c2f13b0b0e720c3d57fafd80557094c1fefe0",
"md5": "a047c838d2fcf9b3e7a8a8bf477f4fdd",
"sha256": "bd37c087a538944652363cfd77fb7abe8100cc1f48afea0b88b38bf0f469c3d2"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp310-cp310-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "a047c838d2fcf9b3e7a8a8bf477f4fdd",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 59848,
"upload_time": "2025-11-11T22:37:10",
"upload_time_iso_8601": "2025-11-11T22:37:10.964345Z",
"url": "https://files.pythonhosted.org/packages/d1/bd/920b1c5ff1df427a5fc3fd4c2f13b0b0e720c3d57fafd80557094c1fefe0/frozendict-2.4.7-cp310-cp310-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a69ce3e186925b1d84f816d458be4e2ea785bbeba15fd2e9e85c5ae7e7a90421",
"md5": "1edaf4780e09dd3df7aa752f146d977b",
"sha256": "2b96f224a5431889f04b2bc99c0e9abe285679464273ead83d7d7f2a15907d35"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "1edaf4780e09dd3df7aa752f146d977b",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 38164,
"upload_time": "2025-11-11T22:37:12",
"upload_time_iso_8601": "2025-11-11T22:37:12.622762Z",
"url": "https://files.pythonhosted.org/packages/a6/9c/e3e186925b1d84f816d458be4e2ea785bbeba15fd2e9e85c5ae7e7a90421/frozendict-2.4.7-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "104caf931d88c51ee2fcbf8c817557dcb975133a188f1b44bfa82caa940beeab",
"md5": "35ad264de5dbfbbcd108dfb129be6730",
"sha256": "5c1781f28c4bbb177644b3cb6d5cf7da59be374b02d91cdde68d1d5ef32e046b"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "35ad264de5dbfbbcd108dfb129be6730",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 38341,
"upload_time": "2025-11-11T22:37:13",
"upload_time_iso_8601": "2025-11-11T22:37:13.611240Z",
"url": "https://files.pythonhosted.org/packages/10/4c/af931d88c51ee2fcbf8c817557dcb975133a188f1b44bfa82caa940beeab/frozendict-2.4.7-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ba7ac1fd4f736758cf93939cc3b7c8399fe1db0c121881431d41fcdbae344343",
"md5": "3330d8210f336ffe145f938c404df3be",
"sha256": "8a06f6c3d3b8d487226fdde93f621e04a54faecc5bf5d9b16497b8f9ead0ac3e"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",
"has_sig": false,
"md5_digest": "3330d8210f336ffe145f938c404df3be",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 112882,
"upload_time": "2025-11-11T22:37:15",
"upload_time_iso_8601": "2025-11-11T22:37:15.098351Z",
"url": "https://files.pythonhosted.org/packages/ba/7a/c1fd4f736758cf93939cc3b7c8399fe1db0c121881431d41fcdbae344343/frozendict-2.4.7-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "bdb0304294f7cd099582a98d63e7a9cec34a9905d07f7628b42fc3f9c9a9bc94",
"md5": "f9faead98809a1790ebe797f0138b2eb",
"sha256": "b809d1c861436a75b2b015dbfd94f6154fa4e7cb0a70e389df1d5f6246b21d1e"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "f9faead98809a1790ebe797f0138b2eb",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 120482,
"upload_time": "2025-11-11T22:37:16",
"upload_time_iso_8601": "2025-11-11T22:37:16.182656Z",
"url": "https://files.pythonhosted.org/packages/bd/b0/304294f7cd099582a98d63e7a9cec34a9905d07f7628b42fc3f9c9a9bc94/frozendict-2.4.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7e61689212ea4124fcbd097c0ac02c2c6a4e345ccc132d9104d054ff6b43ab64",
"md5": "23a29a2e09793d528fe24ca3d3ad3b60",
"sha256": "75eefdf257a84ea73d553eb80d0abbff0af4c9df62529e4600fd3f96ff17eeb3"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl",
"has_sig": false,
"md5_digest": "23a29a2e09793d528fe24ca3d3ad3b60",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 113527,
"upload_time": "2025-11-11T22:37:17",
"upload_time_iso_8601": "2025-11-11T22:37:17.389455Z",
"url": "https://files.pythonhosted.org/packages/7e/61/689212ea4124fcbd097c0ac02c2c6a4e345ccc132d9104d054ff6b43ab64/frozendict-2.4.7-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5c9b38a762f4e76903efd4340454cac2820f583929457822111ef6a00ff1a3f4",
"md5": "47645365b1d8d768f3ecc079c1f07003",
"sha256": "a4d2b27d8156922c9739dd2ff4f3934716e17cfd1cf6fb61aa17af7d378555e9"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl",
"has_sig": false,
"md5_digest": "47645365b1d8d768f3ecc079c1f07003",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 130068,
"upload_time": "2025-11-11T22:37:18",
"upload_time_iso_8601": "2025-11-11T22:37:18.494186Z",
"url": "https://files.pythonhosted.org/packages/5c/9b/38a762f4e76903efd4340454cac2820f583929457822111ef6a00ff1a3f4/frozendict-2.4.7-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cf419751e9ec1a2e810e8f961aea4f8958953157478daff6b868277ab7c5ef8c",
"md5": "5e3c31907bf2a94af0bd15decba3f555",
"sha256": "2ebd953c41408acfb8041ff9e6c3519c09988fb7e007df7ab6b56e229029d788"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl",
"has_sig": false,
"md5_digest": "5e3c31907bf2a94af0bd15decba3f555",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 126184,
"upload_time": "2025-11-11T22:37:19",
"upload_time_iso_8601": "2025-11-11T22:37:19.789290Z",
"url": "https://files.pythonhosted.org/packages/cf/41/9751e9ec1a2e810e8f961aea4f8958953157478daff6b868277ab7c5ef8c/frozendict-2.4.7-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "71beb179b5f200cb0f52debeccc63b786cabcc408c4542f47c4245f978ad36e3",
"md5": "d722e4f5a15bbc0b38e78b40d66b9fc0",
"sha256": "4c64d34b802912ee6d107936e970b90750385a1fdfd38d310098b2918ba4cbf2"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "d722e4f5a15bbc0b38e78b40d66b9fc0",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 120168,
"upload_time": "2025-11-11T22:37:20",
"upload_time_iso_8601": "2025-11-11T22:37:20.929925Z",
"url": "https://files.pythonhosted.org/packages/71/be/b179b5f200cb0f52debeccc63b786cabcc408c4542f47c4245f978ad36e3/frozendict-2.4.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "25c21536bc363dbce414e6b632f496aa8219c0db459a99eeafa02eba380e4cfa",
"md5": "2b7bbca495a3907fd951d8a8e325a0ac",
"sha256": "294a7d7d51dd979021a8691b46aedf9bd4a594ce3ed33a4bdf0a712d6929d712"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl",
"has_sig": false,
"md5_digest": "2b7bbca495a3907fd951d8a8e325a0ac",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 114997,
"upload_time": "2025-11-11T22:37:21",
"upload_time_iso_8601": "2025-11-11T22:37:21.888907Z",
"url": "https://files.pythonhosted.org/packages/25/c2/1536bc363dbce414e6b632f496aa8219c0db459a99eeafa02eba380e4cfa/frozendict-2.4.7-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "29633e9efb490c00a0bf3c7bbf72fc73c90c4a6ebe30595e0fc44f59182b2ae7",
"md5": "0534a494cad025f06020eda2735433c4",
"sha256": "f65d1b90e9ddc791ea82ef91a9ae0ab27ef6c0cfa88fadfa0e5ca5a22f8fa22f"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp310-cp310-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "0534a494cad025f06020eda2735433c4",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 117292,
"upload_time": "2025-11-11T22:37:22",
"upload_time_iso_8601": "2025-11-11T22:37:22.978609Z",
"url": "https://files.pythonhosted.org/packages/29/63/3e9efb490c00a0bf3c7bbf72fc73c90c4a6ebe30595e0fc44f59182b2ae7/frozendict-2.4.7-cp310-cp310-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5e66d25b1e94f9b0e64025d5cadc77b9b857737ebffd8963ee91de7c5a06415a",
"md5": "d3d36063b584dc901fa54b22873c59ee",
"sha256": "82d5272d08451bcef6fb6235a0a04cf1816b6b6815cec76be5ace1de17e0c1a4"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp310-cp310-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "d3d36063b584dc901fa54b22873c59ee",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 110656,
"upload_time": "2025-11-11T22:38:37",
"upload_time_iso_8601": "2025-11-11T22:38:37.652744Z",
"url": "https://files.pythonhosted.org/packages/5e/66/d25b1e94f9b0e64025d5cadc77b9b857737ebffd8963ee91de7c5a06415a/frozendict-2.4.7-cp310-cp310-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a35d0e7e3294e18bf41d38dbc9ee82539be607c8d26e763ae12d9e41f03f2dae",
"md5": "7cc9e7b77b8af29ef674710ccdee465d",
"sha256": "5943c3f683d3f32036f6ca975e920e383d85add1857eee547742de9c1f283716"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp310-cp310-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "7cc9e7b77b8af29ef674710ccdee465d",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 113225,
"upload_time": "2025-11-11T22:38:38",
"upload_time_iso_8601": "2025-11-11T22:38:38.631252Z",
"url": "https://files.pythonhosted.org/packages/a3/5d/0e7e3294e18bf41d38dbc9ee82539be607c8d26e763ae12d9e41f03f2dae/frozendict-2.4.7-cp310-cp310-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e0fbb72c9b261ac7a7803528aa63bba776face8ad8d39cc4ca4825ddaa7777a9",
"md5": "fe33f2768a453d5655e42fe0847530c1",
"sha256": "88c6bea948da03087035bb9ca9625305d70e084aa33f11e17048cb7dda4ca293"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl",
"has_sig": false,
"md5_digest": "fe33f2768a453d5655e42fe0847530c1",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 126713,
"upload_time": "2025-11-11T22:38:39",
"upload_time_iso_8601": "2025-11-11T22:38:39.588558Z",
"url": "https://files.pythonhosted.org/packages/e0/fb/b72c9b261ac7a7803528aa63bba776face8ad8d39cc4ca4825ddaa7777a9/frozendict-2.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c7d9e13af40bd9ef27b5c9ba10b0e31b03acac9468236b878dab030c75102a47",
"md5": "f850c44c299b433f17badf6604b71c06",
"sha256": "ffd1a9f9babec9119712e76a39397d8aa0d72ef8c4ccad917c6175d7e7f81b74"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp310-cp310-musllinux_1_2_riscv64.whl",
"has_sig": false,
"md5_digest": "f850c44c299b433f17badf6604b71c06",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 114166,
"upload_time": "2025-11-11T22:38:41",
"upload_time_iso_8601": "2025-11-11T22:38:41.073896Z",
"url": "https://files.pythonhosted.org/packages/c7/d9/e13af40bd9ef27b5c9ba10b0e31b03acac9468236b878dab030c75102a47/frozendict-2.4.7-cp310-cp310-musllinux_1_2_riscv64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "402b435583b11f5332cd3eb479d0a67a87bc9247c8b094169b07bd8f0777fc48",
"md5": "4643fc3d2ca3260e7863de37d780591f",
"sha256": "0ff6f57854cc8aa8b30947ec005f9246d96e795a78b21441614e85d39b708822"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp310-cp310-musllinux_1_2_s390x.whl",
"has_sig": false,
"md5_digest": "4643fc3d2ca3260e7863de37d780591f",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 121542,
"upload_time": "2025-11-11T22:38:42",
"upload_time_iso_8601": "2025-11-11T22:38:42.199261Z",
"url": "https://files.pythonhosted.org/packages/40/2b/435583b11f5332cd3eb479d0a67a87bc9247c8b094169b07bd8f0777fc48/frozendict-2.4.7-cp310-cp310-musllinux_1_2_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3825097f3c0dc916d7c76f782cb65544e683ff3940a0ed997fc32efdb0989c45",
"md5": "43bbc30714c8645d16b9f2094f8dc886",
"sha256": "d774df483c12d6cba896eb9a1337bbc5ad3f564eb18cfaaee3e95fb4402f2a86"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp310-cp310-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "43bbc30714c8645d16b9f2094f8dc886",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 118610,
"upload_time": "2025-11-11T22:38:43",
"upload_time_iso_8601": "2025-11-11T22:38:43.339849Z",
"url": "https://files.pythonhosted.org/packages/38/25/097f3c0dc916d7c76f782cb65544e683ff3940a0ed997fc32efdb0989c45/frozendict-2.4.7-cp310-cp310-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "61d16964158524484d7f3410386ff27cbc8f33ef06f8d9ee0e188348efb9a139",
"md5": "61dd8a4e73eb1d9da88bf73a857481f8",
"sha256": "a10d38fa300f6bef230fae1fdb4bc98706b78c8a3a2f3140fde748469ef3cfe8"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp310-cp310-win32.whl",
"has_sig": false,
"md5_digest": "61dd8a4e73eb1d9da88bf73a857481f8",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 34547,
"upload_time": "2025-11-11T22:38:44",
"upload_time_iso_8601": "2025-11-11T22:38:44.327948Z",
"url": "https://files.pythonhosted.org/packages/61/d1/6964158524484d7f3410386ff27cbc8f33ef06f8d9ee0e188348efb9a139/frozendict-2.4.7-cp310-cp310-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9427c22d614332c61ace4406542787edafaf7df533c6f02d1de8979d35492587",
"md5": "e5168343dd227bdd1728bd9b14199663",
"sha256": "dd518f300e5eb6a8827bee380f2e1a31c01dc0af069b13abdecd4e5769bd8a97"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "e5168343dd227bdd1728bd9b14199663",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 37693,
"upload_time": "2025-11-11T22:38:45",
"upload_time_iso_8601": "2025-11-11T22:38:45.571844Z",
"url": "https://files.pythonhosted.org/packages/94/27/c22d614332c61ace4406542787edafaf7df533c6f02d1de8979d35492587/frozendict-2.4.7-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "bcd89d6604357b1816586612e0e89bab6d8a9c029e95e199862dc99ce8ae2ed5",
"md5": "a3b02f377019ffeefbcf0e933b14293a",
"sha256": "3842cfc2d69df5b9978f2e881b7678a282dbdd6846b11b5159f910bc633cbe4f"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp310-cp310-win_arm64.whl",
"has_sig": false,
"md5_digest": "a3b02f377019ffeefbcf0e933b14293a",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 35563,
"upload_time": "2025-11-11T22:38:46",
"upload_time_iso_8601": "2025-11-11T22:38:46.642428Z",
"url": "https://files.pythonhosted.org/packages/bc/d8/9d6604357b1816586612e0e89bab6d8a9c029e95e199862dc99ce8ae2ed5/frozendict-2.4.7-cp310-cp310-win_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8484f53bdd5eda30327c10e00966e2da63cfaac1f9c7a70697754776b8fbd63c",
"md5": "6f22a671a820cdc9f5ca6b3fb08ab1af",
"sha256": "735be62d757e1e7e496ccb6401efe82b473faa653e95eec0826cd7819a29a34c"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp36-cp36m-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "6f22a671a820cdc9f5ca6b3fb08ab1af",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 37370,
"upload_time": "2025-11-11T22:38:47",
"upload_time_iso_8601": "2025-11-11T22:38:47.642287Z",
"url": "https://files.pythonhosted.org/packages/84/84/f53bdd5eda30327c10e00966e2da63cfaac1f9c7a70697754776b8fbd63c/frozendict-2.4.7-cp36-cp36m-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "93c4580b7c9da6c36bb63f520444f00509666b81b131191effb82e213abd2081",
"md5": "e28487d803e704b72aaadd1489ae5512",
"sha256": "fff8584e3bbdc5c1713cd016fbf4b88babfffd4e5e89b39020f2a208dd24c900"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "e28487d803e704b72aaadd1489ae5512",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 102449,
"upload_time": "2025-11-11T22:38:48",
"upload_time_iso_8601": "2025-11-11T22:38:48.640463Z",
"url": "https://files.pythonhosted.org/packages/93/c4/580b7c9da6c36bb63f520444f00509666b81b131191effb82e213abd2081/frozendict-2.4.7-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "00a410f94462b4c342f27bbd3ef2dfab7dd25260320856baefd2183e05dee6d0",
"md5": "811abfa15a7498691e8d037a3bab77e1",
"sha256": "91a06ee46b3e3ef3b237046b914c0c905eab9fdfeac677e9b51473b482e24c28"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp36-cp36m-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl",
"has_sig": false,
"md5_digest": "811abfa15a7498691e8d037a3bab77e1",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 97630,
"upload_time": "2025-11-11T22:38:50",
"upload_time_iso_8601": "2025-11-11T22:38:50.064291Z",
"url": "https://files.pythonhosted.org/packages/00/a4/10f94462b4c342f27bbd3ef2dfab7dd25260320856baefd2183e05dee6d0/frozendict-2.4.7-cp36-cp36m-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9e5de072243d6c87cc8ceb0b3de60adcd7960aa1073a33954050938a76ab7277",
"md5": "5299916a52743efc22680535c18a4953",
"sha256": "fd7ba56cf6340c732ecb78787c4e9600c4bd01372af7313ded21037126d33ec6"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "5299916a52743efc22680535c18a4953",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 109050,
"upload_time": "2025-11-11T22:38:51",
"upload_time_iso_8601": "2025-11-11T22:38:51.427105Z",
"url": "https://files.pythonhosted.org/packages/9e/5d/e072243d6c87cc8ceb0b3de60adcd7960aa1073a33954050938a76ab7277/frozendict-2.4.7-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "61a6c8686733b5a030131bc0b400222c86c64b481ff06f317403411fc5255311",
"md5": "e4eb38355172eb62ef865db129a53103",
"sha256": "d1b4426457757c30ad86b57cdbcc0adaa328399f1ec3d231a0a2ce7447248987"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "e4eb38355172eb62ef865db129a53103",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 104824,
"upload_time": "2025-11-11T22:38:52",
"upload_time_iso_8601": "2025-11-11T22:38:52.765997Z",
"url": "https://files.pythonhosted.org/packages/61/a6/c8686733b5a030131bc0b400222c86c64b481ff06f317403411fc5255311/frozendict-2.4.7-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "29d36bcdb2ede07ca33f354416473ff44215ad3aef2378db49191a6b30ac0d23",
"md5": "8b465ae088084b78b415b86c0183ac1a",
"sha256": "b22d337c76b765cb7961d4ee47fe29f89e30921eb47bf856b14dc7641f4df3e5"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "8b465ae088084b78b415b86c0183ac1a",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 102166,
"upload_time": "2025-11-11T22:38:53",
"upload_time_iso_8601": "2025-11-11T22:38:53.883433Z",
"url": "https://files.pythonhosted.org/packages/29/d3/6bcdb2ede07ca33f354416473ff44215ad3aef2378db49191a6b30ac0d23/frozendict-2.4.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ccf43af68ca89cf155a185387c628b68392c5ebc7fef4e9404d0d6dbbc0ba277",
"md5": "12edc966afd5559f18ac9574013a2928",
"sha256": "57134ef5df1dd32229c148c75a7b89245dbdb89966a155d6dfd4bda653e8c7af"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "12edc966afd5559f18ac9574013a2928",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 95519,
"upload_time": "2025-11-11T22:38:54",
"upload_time_iso_8601": "2025-11-11T22:38:54.996770Z",
"url": "https://files.pythonhosted.org/packages/cc/f4/3af68ca89cf155a185387c628b68392c5ebc7fef4e9404d0d6dbbc0ba277/frozendict-2.4.7-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "dc45a22f6b4d9f244f78d87d7feeb59df343a8562248f17a393d31d5baaee517",
"md5": "b5512d82684cfa258fec90bc1a2a060a",
"sha256": "c89617a784e1c24a31f5aa4809402f8072a26b64ddbc437897f6391ff69b0ee9"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp36-cp36m-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "b5512d82684cfa258fec90bc1a2a060a",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 101526,
"upload_time": "2025-11-11T22:38:56",
"upload_time_iso_8601": "2025-11-11T22:38:56.126545Z",
"url": "https://files.pythonhosted.org/packages/dc/45/a22f6b4d9f244f78d87d7feeb59df343a8562248f17a393d31d5baaee517/frozendict-2.4.7-cp36-cp36m-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "79bc507c0c690d3c2714a370509260343a1ccf8a1b7a1a3af4124b7e581813c6",
"md5": "952b1ff88ed4be1499d26f6a97728f58",
"sha256": "176dd384dfe1d0d79449e05f67764c57c6f0f3095378bf00deb33165d5d2df5b"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp36-cp36m-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "952b1ff88ed4be1499d26f6a97728f58",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 95155,
"upload_time": "2025-11-11T22:38:57",
"upload_time_iso_8601": "2025-11-11T22:38:57.121426Z",
"url": "https://files.pythonhosted.org/packages/79/bc/507c0c690d3c2714a370509260343a1ccf8a1b7a1a3af4124b7e581813c6/frozendict-2.4.7-cp36-cp36m-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8d5967334a76a394b708f88c0e5f37127b27433b3ac1ea3a94321b94b254bacb",
"md5": "6fb1c3d01233c44cc2be2e4ef09a140a",
"sha256": "b1a94e8935c69ae30043b465af496f447950f2c03660aee8657074084faae0b3"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp36-cp36m-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "6fb1c3d01233c44cc2be2e4ef09a140a",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 96342,
"upload_time": "2025-11-11T22:38:58",
"upload_time_iso_8601": "2025-11-11T22:38:58.249556Z",
"url": "https://files.pythonhosted.org/packages/8d/59/67334a76a394b708f88c0e5f37127b27433b3ac1ea3a94321b94b254bacb/frozendict-2.4.7-cp36-cp36m-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a8dbe971bfb67a797185bd72142d22815b6bf0aa6b15df263974855cc5767aa6",
"md5": "f774dbe68c8b322d39d26e258f2ada64",
"sha256": "c570649ceccfa5e11ad9351e9009dc484c315a51a56aa02ced07ae97644bb7aa"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp36-cp36m-musllinux_1_2_ppc64le.whl",
"has_sig": false,
"md5_digest": "f774dbe68c8b322d39d26e258f2ada64",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 108337,
"upload_time": "2025-11-11T22:38:59",
"upload_time_iso_8601": "2025-11-11T22:38:59.311489Z",
"url": "https://files.pythonhosted.org/packages/a8/db/e971bfb67a797185bd72142d22815b6bf0aa6b15df263974855cc5767aa6/frozendict-2.4.7-cp36-cp36m-musllinux_1_2_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ca857e2ff9bfeca4373363747fd6c8ca88ce215634458824fb15bd1d6370204e",
"md5": "0f04a52ac7a38710f710ca283ef33c0d",
"sha256": "e0d450c9d444befe2668bf9386ac2945a2f38152248d58f6b3feea63db59ba08"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp36-cp36m-musllinux_1_2_s390x.whl",
"has_sig": false,
"md5_digest": "0f04a52ac7a38710f710ca283ef33c0d",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 105897,
"upload_time": "2025-11-11T22:39:00",
"upload_time_iso_8601": "2025-11-11T22:39:00.516346Z",
"url": "https://files.pythonhosted.org/packages/ca/85/7e2ff9bfeca4373363747fd6c8ca88ce215634458824fb15bd1d6370204e/frozendict-2.4.7-cp36-cp36m-musllinux_1_2_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9b77378da27a6a66ec1def0415ed37de855207a2576d16220c634df3bb50e297",
"md5": "f9c231a612970c2471165be34cf301e9",
"sha256": "7469912c1a04102457871ff675aebe600dbb7e79a6450a166cc8079b88f6ca79"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp36-cp36m-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "f9c231a612970c2471165be34cf301e9",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 102250,
"upload_time": "2025-11-11T22:39:01",
"upload_time_iso_8601": "2025-11-11T22:39:01.645783Z",
"url": "https://files.pythonhosted.org/packages/9b/77/378da27a6a66ec1def0415ed37de855207a2576d16220c634df3bb50e297/frozendict-2.4.7-cp36-cp36m-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4dd9ddd0be8c406b09b252d552daa3319e8efc495745d4c9ce18b89215dccc60",
"md5": "83359c9fe0a3fa3714c873fe6f5ca28e",
"sha256": "2808bab8e21887a8c106cca5f6f0ab5bda7ee81e159409a10f53d57542ccd99c"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp36-cp36m-win32.whl",
"has_sig": false,
"md5_digest": "83359c9fe0a3fa3714c873fe6f5ca28e",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 35138,
"upload_time": "2025-11-11T22:39:03",
"upload_time_iso_8601": "2025-11-11T22:39:03.115327Z",
"url": "https://files.pythonhosted.org/packages/4d/d9/ddd0be8c406b09b252d552daa3319e8efc495745d4c9ce18b89215dccc60/frozendict-2.4.7-cp36-cp36m-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "29186b39d038e4f39a0bffc6ece529a958f5fa27faabc3bd8d0a9696053e2bf5",
"md5": "34ad9d70214a5bc5269a0fdbce8f4267",
"sha256": "ca17ac727ffeeba6c46f5a88e0284a7cb1520fb03127645fcdd7041080adf849"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp36-cp36m-win_amd64.whl",
"has_sig": false,
"md5_digest": "34ad9d70214a5bc5269a0fdbce8f4267",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 39173,
"upload_time": "2025-11-11T22:39:04",
"upload_time_iso_8601": "2025-11-11T22:39:04.152830Z",
"url": "https://files.pythonhosted.org/packages/29/18/6b39d038e4f39a0bffc6ece529a958f5fa27faabc3bd8d0a9696053e2bf5/frozendict-2.4.7-cp36-cp36m-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "022b53465fddfcb8d22ec8ba61940efd8a47fd3ad9e7ce4cf0410147624ce736",
"md5": "c426bb89a06909809d6860a007bbfc10",
"sha256": "8ef11dd996208c5a96eab0683f7a17cb4b992948464d2498520efd75a10a2aac"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp37-cp37m-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "c426bb89a06909809d6860a007bbfc10",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 37627,
"upload_time": "2025-11-11T22:39:05",
"upload_time_iso_8601": "2025-11-11T22:39:05.186908Z",
"url": "https://files.pythonhosted.org/packages/02/2b/53465fddfcb8d22ec8ba61940efd8a47fd3ad9e7ce4cf0410147624ce736/frozendict-2.4.7-cp37-cp37m-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c20282f64efc5a27200e1343a8cb04ad56c44b0e1874dde6eb87eff206404286",
"md5": "b9e1bfa735ea4d82b508195d87c12cd6",
"sha256": "b960e700dc95faca7dd6919d0dce183ef89bfe01554d323cf5de7331a2e80f83"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "b9e1bfa735ea4d82b508195d87c12cd6",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 104115,
"upload_time": "2025-11-11T22:39:06",
"upload_time_iso_8601": "2025-11-11T22:39:06.247274Z",
"url": "https://files.pythonhosted.org/packages/c2/02/82f64efc5a27200e1343a8cb04ad56c44b0e1874dde6eb87eff206404286/frozendict-2.4.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "29096cf62c9917ba30098e74dd76a4e1910a0de424f61c964cda837645f53cac",
"md5": "c528a1077b6f1d9862a7740fce56073f",
"sha256": "fc43257a06e6117da6a8a0779243b974cdb9205fed82e32eb669f6746c75d27d"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl",
"has_sig": false,
"md5_digest": "c528a1077b6f1d9862a7740fce56073f",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 99284,
"upload_time": "2025-11-11T22:39:07",
"upload_time_iso_8601": "2025-11-11T22:39:07.347234Z",
"url": "https://files.pythonhosted.org/packages/29/09/6cf62c9917ba30098e74dd76a4e1910a0de424f61c964cda837645f53cac/frozendict-2.4.7-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "78279ad439525cf13f6cfaec66183414d47596ad302c56b4c817714829564ba3",
"md5": "6d1124e328cdc577d861eecc0ae20ce4",
"sha256": "0ece525da7d0aa3eb56c3e479f30612028d545081c15450d67d771a303ee7d4c"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "6d1124e328cdc577d861eecc0ae20ce4",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 110657,
"upload_time": "2025-11-11T22:39:08",
"upload_time_iso_8601": "2025-11-11T22:39:08.804593Z",
"url": "https://files.pythonhosted.org/packages/78/27/9ad439525cf13f6cfaec66183414d47596ad302c56b4c817714829564ba3/frozendict-2.4.7-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0a088769e62be061ea1c843b87ab68917c7fbc2dacbd1d8e5b6bcff6bfc8381d",
"md5": "07712aa076250bb5458b89c3ef7637f3",
"sha256": "7ddffe7c0b3be414f88185e212758989c65b497315781290eb029e2c1e1fd64e"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "07712aa076250bb5458b89c3ef7637f3",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 106342,
"upload_time": "2025-11-11T22:39:09",
"upload_time_iso_8601": "2025-11-11T22:39:09.941332Z",
"url": "https://files.pythonhosted.org/packages/0a/08/8769e62be061ea1c843b87ab68917c7fbc2dacbd1d8e5b6bcff6bfc8381d/frozendict-2.4.7-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "741541add8c90b965317faf604ded5da0d552df65ad25c9c92a788d16c60da91",
"md5": "d2866c4c758ee2ee432e52e57a657868",
"sha256": "05dd27415f913cd11649009f53d97eb565ce7b76787d7869c4733738c10e8d27"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "d2866c4c758ee2ee432e52e57a657868",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 104187,
"upload_time": "2025-11-11T22:39:11",
"upload_time_iso_8601": "2025-11-11T22:39:11.053397Z",
"url": "https://files.pythonhosted.org/packages/74/15/41add8c90b965317faf604ded5da0d552df65ad25c9c92a788d16c60da91/frozendict-2.4.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "68cfcd10cacb03e947effbb98ca45f4bba9723ea951ccc4f18574412bf575da3",
"md5": "54c58709f87bf81a15bc96802afba653",
"sha256": "0664092614d2b9d0aa404731f33ad5459a54fe8dab9d1fd45aa714fa6de4d0ef"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "54c58709f87bf81a15bc96802afba653",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 97165,
"upload_time": "2025-11-11T22:39:12",
"upload_time_iso_8601": "2025-11-11T22:39:12.018903Z",
"url": "https://files.pythonhosted.org/packages/68/cf/cd10cacb03e947effbb98ca45f4bba9723ea951ccc4f18574412bf575da3/frozendict-2.4.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "35469b817989997ba549352dd46530bc669738fa94ea1e62111004071e3881a9",
"md5": "b3a7ac84a183c344f635112e966d64b8",
"sha256": "830d181781bb263c9fa430b81f82c867546f5dcb368e73931c8591f533a04afb"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp37-cp37m-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "b3a7ac84a183c344f635112e966d64b8",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 103220,
"upload_time": "2025-11-11T22:39:13",
"upload_time_iso_8601": "2025-11-11T22:39:13.665639Z",
"url": "https://files.pythonhosted.org/packages/35/46/9b817989997ba549352dd46530bc669738fa94ea1e62111004071e3881a9/frozendict-2.4.7-cp37-cp37m-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1be62bbc456b49dcb6077f3998e806c5cb7bd44050d05908dedd7df2b28afd6b",
"md5": "4fee22538187f4cced84e5e3151a462a",
"sha256": "c93827e0854393cd904b927ceb529afc17776706f5b9e45c7eaf6a40b3fc7b25"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp37-cp37m-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "4fee22538187f4cced84e5e3151a462a",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 96926,
"upload_time": "2025-11-11T22:39:15",
"upload_time_iso_8601": "2025-11-11T22:39:15.463889Z",
"url": "https://files.pythonhosted.org/packages/1b/e6/2bbc456b49dcb6077f3998e806c5cb7bd44050d05908dedd7df2b28afd6b/frozendict-2.4.7-cp37-cp37m-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "54286dc76479d212581286060b1d1ccc9739cffc57c94e54b5455bddb65a0747",
"md5": "95973896efface5bcf8a7da85201eb54",
"sha256": "6d30dbba6eb1497c695f3108c2c292807e7a237c67a1b9ff92c04e89969d22d1"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp37-cp37m-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "95973896efface5bcf8a7da85201eb54",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 98087,
"upload_time": "2025-11-11T22:39:16",
"upload_time_iso_8601": "2025-11-11T22:39:16.560400Z",
"url": "https://files.pythonhosted.org/packages/54/28/6dc76479d212581286060b1d1ccc9739cffc57c94e54b5455bddb65a0747/frozendict-2.4.7-cp37-cp37m-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "33fa255d29f5a5e59f3a5d89ec670888012a2557138bafece65863b306d08c6e",
"md5": "133d4589206e28a20bf10f2de99b181c",
"sha256": "ec846bde66b75d68518c7b24a0a46d09db0aee5a6aefd2209d9901faf6e9df21"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp37-cp37m-musllinux_1_2_ppc64le.whl",
"has_sig": false,
"md5_digest": "133d4589206e28a20bf10f2de99b181c",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 110172,
"upload_time": "2025-11-11T22:39:17",
"upload_time_iso_8601": "2025-11-11T22:39:17.995826Z",
"url": "https://files.pythonhosted.org/packages/33/fa/255d29f5a5e59f3a5d89ec670888012a2557138bafece65863b306d08c6e/frozendict-2.4.7-cp37-cp37m-musllinux_1_2_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "be69be233a196c36f37af92f4dcc0587d5c7d95620e08e71890eaaf8e17e8d69",
"md5": "7f887d13c719905e7868ca66e4de84c3",
"sha256": "1df8e22f7d24172c08434b10911f3971434bb5a59b4d1b0078ae33a623625294"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp37-cp37m-musllinux_1_2_s390x.whl",
"has_sig": false,
"md5_digest": "7f887d13c719905e7868ca66e4de84c3",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 107309,
"upload_time": "2025-11-11T22:39:19",
"upload_time_iso_8601": "2025-11-11T22:39:19.321774Z",
"url": "https://files.pythonhosted.org/packages/be/69/be233a196c36f37af92f4dcc0587d5c7d95620e08e71890eaaf8e17e8d69/frozendict-2.4.7-cp37-cp37m-musllinux_1_2_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0afbb25a52b04261f03d98d53acdd97fcd6f7b002c76ffe4bf7f270a5950333c",
"md5": "e26c9ef07f956bd3e4e808f96455a775",
"sha256": "39abe54264ae69a0b2e00fabdb5118604f36a5b927d33e7532cd594c5142ebf4"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp37-cp37m-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "e26c9ef07f956bd3e4e808f96455a775",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 104104,
"upload_time": "2025-11-11T22:39:20",
"upload_time_iso_8601": "2025-11-11T22:39:20.422160Z",
"url": "https://files.pythonhosted.org/packages/0a/fb/b25a52b04261f03d98d53acdd97fcd6f7b002c76ffe4bf7f270a5950333c/frozendict-2.4.7-cp37-cp37m-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0a7757c4bd1bcf7e4494bdb5284cb4055536d6505a7256b4d4b9a6e2713daabe",
"md5": "c8638e02466cc1dde6356c327443b71e",
"sha256": "d10c2ea7c90ba204cd053167ba214d0cdd00f3184c7b8d117a56d7fd2b0c6553"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp37-cp37m-win32.whl",
"has_sig": false,
"md5_digest": "c8638e02466cc1dde6356c327443b71e",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 34150,
"upload_time": "2025-11-11T22:39:21",
"upload_time_iso_8601": "2025-11-11T22:39:21.391156Z",
"url": "https://files.pythonhosted.org/packages/0a/77/57c4bd1bcf7e4494bdb5284cb4055536d6505a7256b4d4b9a6e2713daabe/frozendict-2.4.7-cp37-cp37m-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2f99544787cac16556b32b23f052db5bf0cfe56bd19b243380ddd2c9c18ddd03",
"md5": "6c18829006e64c57508fc555efa93a70",
"sha256": "346a53640f15c1640a3503f60ba99df39e4ab174979f10db4304bbb378df5cbd"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp37-cp37m-win_amd64.whl",
"has_sig": false,
"md5_digest": "6c18829006e64c57508fc555efa93a70",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 37435,
"upload_time": "2025-11-11T22:39:22",
"upload_time_iso_8601": "2025-11-11T22:39:22.265889Z",
"url": "https://files.pythonhosted.org/packages/2f/99/544787cac16556b32b23f052db5bf0cfe56bd19b243380ddd2c9c18ddd03/frozendict-2.4.7-cp37-cp37m-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "827d518c641e093b53403db072756b4ae3b96779434bf3fadb311ee991afcff5",
"md5": "f47ba7b98c2c86d4d3561f17f1bfec80",
"sha256": "cc520f3f4af14f456143a534d554175dbc0f0636ffd653e63675cd591862a9d9"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp38-cp38-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "f47ba7b98c2c86d4d3561f17f1bfec80",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 59138,
"upload_time": "2025-11-11T22:39:23",
"upload_time_iso_8601": "2025-11-11T22:39:23.638996Z",
"url": "https://files.pythonhosted.org/packages/82/7d/518c641e093b53403db072756b4ae3b96779434bf3fadb311ee991afcff5/frozendict-2.4.7-cp38-cp38-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cb416e86663ec25f305e335734d4710df05d8034695444f9a52b70c51114e5fa",
"md5": "ed209af92eb4512deea602e358741f2b",
"sha256": "7fd0d0bd3a79e009dddbf5fedfd927ad495c218cd7b13a112d28a37e2079725c"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp38-cp38-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "ed209af92eb4512deea602e358741f2b",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 37765,
"upload_time": "2025-11-11T22:39:24",
"upload_time_iso_8601": "2025-11-11T22:39:24.584554Z",
"url": "https://files.pythonhosted.org/packages/cb/41/6e86663ec25f305e335734d4710df05d8034695444f9a52b70c51114e5fa/frozendict-2.4.7-cp38-cp38-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "680f6d5ef26b71a143d954b848bc403084155121c7c65b43c9ea256ebbb3b24b",
"md5": "76b272fe6325c62356d7071126842d41",
"sha256": "a404857e48d85a517bb5b974d740f8c4fccb25d8df98885f3a2a4d950870b845"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp38-cp38-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "76b272fe6325c62356d7071126842d41",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 37760,
"upload_time": "2025-11-11T22:39:25",
"upload_time_iso_8601": "2025-11-11T22:39:25.592843Z",
"url": "https://files.pythonhosted.org/packages/68/0f/6d5ef26b71a143d954b848bc403084155121c7c65b43c9ea256ebbb3b24b/frozendict-2.4.7-cp38-cp38-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0373070efd7a26106b4a22a9e78aa20685c87c4aad6a8af7dc8f790fd7209e9e",
"md5": "037b7e1d9810be057046ce16dff8452a",
"sha256": "f42e2c25d3eee4ea3da88466f38ed0dce8c622a1a9d92572e5ee53b7a6bb9ef1"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp38-cp38-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",
"has_sig": false,
"md5_digest": "037b7e1d9810be057046ce16dff8452a",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 111540,
"upload_time": "2025-11-11T22:39:26",
"upload_time_iso_8601": "2025-11-11T22:39:26.609236Z",
"url": "https://files.pythonhosted.org/packages/03/73/070efd7a26106b4a22a9e78aa20685c87c4aad6a8af7dc8f790fd7209e9e/frozendict-2.4.7-cp38-cp38-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cd892f9851cf1af2e0181b1645797c4338abae16718c92f71995d2ec06c6d812",
"md5": "bee80167c28c90268a3c3fee09730c86",
"sha256": "a1a083e9ee7a1904e545a6307c7db1dd76200077520fcbf7a98d886f81b57dd7"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "bee80167c28c90268a3c3fee09730c86",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 118982,
"upload_time": "2025-11-11T22:39:27",
"upload_time_iso_8601": "2025-11-11T22:39:27.714241Z",
"url": "https://files.pythonhosted.org/packages/cd/89/2f9851cf1af2e0181b1645797c4338abae16718c92f71995d2ec06c6d812/frozendict-2.4.7-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3ed86e33ec7d5c1b81c9719d3d591c15f2b082cf544585b8761a5f87261dcd16",
"md5": "4223e0fb78b990776bd97c65da47a87f",
"sha256": "f556ea05d9c5f6dae50d57ce6234e4ab1fbf4551dd0d52b4fed6ef537d9f3d3c"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp38-cp38-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl",
"has_sig": false,
"md5_digest": "4223e0fb78b990776bd97c65da47a87f",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 111605,
"upload_time": "2025-11-11T22:39:28",
"upload_time_iso_8601": "2025-11-11T22:39:28.706796Z",
"url": "https://files.pythonhosted.org/packages/3e/d8/6e33ec7d5c1b81c9719d3d591c15f2b082cf544585b8761a5f87261dcd16/frozendict-2.4.7-cp38-cp38-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5f35dc956462af347eef8cbe2ca3a9b65927af5de9999f3086ad9420095dafed",
"md5": "bc77e94a4cd0d42d21af0d13a2c082b2",
"sha256": "739ee81e574f33b46f1e6d9312f3ec2c549bdd574a4ebb6bf106775c9d85ca7b"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl",
"has_sig": false,
"md5_digest": "bc77e94a4cd0d42d21af0d13a2c082b2",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 128292,
"upload_time": "2025-11-11T22:39:29",
"upload_time_iso_8601": "2025-11-11T22:39:29.883530Z",
"url": "https://files.pythonhosted.org/packages/5f/35/dc956462af347eef8cbe2ca3a9b65927af5de9999f3086ad9420095dafed/frozendict-2.4.7-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7e52e3e3049ad3773b0bd260e5459553b296848e5cbf4c1d4d924d3b3d2a7de5",
"md5": "3b71730a92b4b200bb85217cee84226d",
"sha256": "48ab42b01952bc11543577de9fe5d9ca7c41b35dda36326a07fb47d84b3d5f22"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl",
"has_sig": false,
"md5_digest": "3b71730a92b4b200bb85217cee84226d",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 124338,
"upload_time": "2025-11-11T22:39:31",
"upload_time_iso_8601": "2025-11-11T22:39:31.730610Z",
"url": "https://files.pythonhosted.org/packages/7e/52/e3e3049ad3773b0bd260e5459553b296848e5cbf4c1d4d924d3b3d2a7de5/frozendict-2.4.7-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5bc3f919c2719a7eca7abf4107430a2d91c7ad2e9ff9f7d55ec015dbbeacef65",
"md5": "dadfaf44439d07c6326e4d7bec98408c",
"sha256": "34233deb8d09e798e874a6ac00b054d2e842164d982ebd43eb91b9f0a6a34876"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "dadfaf44439d07c6326e4d7bec98408c",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 118625,
"upload_time": "2025-11-11T22:39:32",
"upload_time_iso_8601": "2025-11-11T22:39:32.876816Z",
"url": "https://files.pythonhosted.org/packages/5b/c3/f919c2719a7eca7abf4107430a2d91c7ad2e9ff9f7d55ec015dbbeacef65/frozendict-2.4.7-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d5491509f63862979b0f328c58214e7ffa07be8d499b578334e4e1796962f6fb",
"md5": "89d1992e5da3140844b8146db4261b0a",
"sha256": "76bd99f3508cb2ec87976f2e3fe7d92fb373a661cacffb863013d15e4cfaf0eb"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp38-cp38-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl",
"has_sig": false,
"md5_digest": "89d1992e5da3140844b8146db4261b0a",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 115085,
"upload_time": "2025-11-11T22:39:34",
"upload_time_iso_8601": "2025-11-11T22:39:34.080921Z",
"url": "https://files.pythonhosted.org/packages/d5/49/1509f63862979b0f328c58214e7ffa07be8d499b578334e4e1796962f6fb/frozendict-2.4.7-cp38-cp38-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "12bd44c2be466baa994cc9138395081e3ca2a4f996b81a8a3419ddd4a49de5d9",
"md5": "a1eba869145d6ec30ff5cb95a6161f8d",
"sha256": "a265e95e7087f44b88a6d78a63ea95a2ca0eb0a21ab4f76047f4c164a8beb413"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp38-cp38-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "a1eba869145d6ec30ff5cb95a6161f8d",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 115552,
"upload_time": "2025-11-11T22:39:35",
"upload_time_iso_8601": "2025-11-11T22:39:35.424410Z",
"url": "https://files.pythonhosted.org/packages/12/bd/44c2be466baa994cc9138395081e3ca2a4f996b81a8a3419ddd4a49de5d9/frozendict-2.4.7-cp38-cp38-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6ddf84f6827f1f3c74bab264339eccdaa19f19a22ea146e8e2787520dbd8aeb0",
"md5": "3bdfb24ca80cf6fca01784bca34718ae",
"sha256": "1662f1b72b4f4a2ffdfdc4981ece275ca11f90244208ac1f1fc2c17fc9c9437a"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp38-cp38-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "3bdfb24ca80cf6fca01784bca34718ae",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 108488,
"upload_time": "2025-11-11T22:39:36",
"upload_time_iso_8601": "2025-11-11T22:39:36.579281Z",
"url": "https://files.pythonhosted.org/packages/6d/df/84f6827f1f3c74bab264339eccdaa19f19a22ea146e8e2787520dbd8aeb0/frozendict-2.4.7-cp38-cp38-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d732a32960b01a81edf73abe1661c33da5fd97ae4b3507d9c6197c0c224df132",
"md5": "2ccbc3a1f313e9847265b575648042f4",
"sha256": "2e5d2c30f4a3fea83a14b0a5722f21c10de5c755ab5637c70de5eb60886d58cd"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp38-cp38-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "2ccbc3a1f313e9847265b575648042f4",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 111429,
"upload_time": "2025-11-11T22:39:37",
"upload_time_iso_8601": "2025-11-11T22:39:37.758517Z",
"url": "https://files.pythonhosted.org/packages/d7/32/a32960b01a81edf73abe1661c33da5fd97ae4b3507d9c6197c0c224df132/frozendict-2.4.7-cp38-cp38-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ad1cd3541d61684e18a9a1dfb5f43e082a8615cbb3a5c874ab51a76916d979b9",
"md5": "ff3c1f10ea405b88d2791011891b74e7",
"sha256": "2cf0a665bf2f1ce69d3cd8b6d3574b1d32ae00981a16fa1d255d2da8a2e44b7c"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp38-cp38-musllinux_1_2_ppc64le.whl",
"has_sig": false,
"md5_digest": "ff3c1f10ea405b88d2791011891b74e7",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 124388,
"upload_time": "2025-11-11T22:39:38",
"upload_time_iso_8601": "2025-11-11T22:39:38.949206Z",
"url": "https://files.pythonhosted.org/packages/ad/1c/d3541d61684e18a9a1dfb5f43e082a8615cbb3a5c874ab51a76916d979b9/frozendict-2.4.7-cp38-cp38-musllinux_1_2_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2aa996d53271dd89166fe670f14ea372fdabc5b8a43f0826b75db5841e62aa5d",
"md5": "cd9621a7f10ff8689cfaee55bbd8fff5",
"sha256": "708382875c3cfe91be625dddcba03dee2dfdadbad2c431568a8c7f2f2af0bbee"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp38-cp38-musllinux_1_2_riscv64.whl",
"has_sig": false,
"md5_digest": "cd9621a7f10ff8689cfaee55bbd8fff5",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 113560,
"upload_time": "2025-11-11T22:39:40",
"upload_time_iso_8601": "2025-11-11T22:39:40.446677Z",
"url": "https://files.pythonhosted.org/packages/2a/a9/96d53271dd89166fe670f14ea372fdabc5b8a43f0826b75db5841e62aa5d/frozendict-2.4.7-cp38-cp38-musllinux_1_2_riscv64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b4af3a01ecd5475070c9ecfc4ac401f86531a6796e754ed9b5cce5e2972b7398",
"md5": "8432fa339474da8db411a206eb386569",
"sha256": "7fe194f37052a8f45a1a8507e36229e28b79f3d21542ae55ea6a18c6a444f625"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp38-cp38-musllinux_1_2_s390x.whl",
"has_sig": false,
"md5_digest": "8432fa339474da8db411a206eb386569",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 119543,
"upload_time": "2025-11-11T22:39:41",
"upload_time_iso_8601": "2025-11-11T22:39:41.564842Z",
"url": "https://files.pythonhosted.org/packages/b4/af/3a01ecd5475070c9ecfc4ac401f86531a6796e754ed9b5cce5e2972b7398/frozendict-2.4.7-cp38-cp38-musllinux_1_2_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "adb7e40bfb78606d4f1b39c689489c1c0ee250bbc411f1b638fdcf92b461579a",
"md5": "cb7a65d99d1205852dd67631f3780c2d",
"sha256": "d8930877a2dd40461968d9238d95c754e51b33ce7d2a45500f88ffeed5cb7202"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp38-cp38-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "cb7a65d99d1205852dd67631f3780c2d",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 116283,
"upload_time": "2025-11-11T22:39:42",
"upload_time_iso_8601": "2025-11-11T22:39:42.699796Z",
"url": "https://files.pythonhosted.org/packages/ad/b7/e40bfb78606d4f1b39c689489c1c0ee250bbc411f1b638fdcf92b461579a/frozendict-2.4.7-cp38-cp38-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "12d1ed1606feac2a734b6ce3c070913f2d31e568c4802732f2dfe2fb3d508cb2",
"md5": "ed57ce5e914a82c14dd3422c9d96a244",
"sha256": "6991469a889ee8a108fe5ed1b044447c7b7a07da9067e93c59cbfac8c1d625cf"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp38-cp38-win32.whl",
"has_sig": false,
"md5_digest": "ed57ce5e914a82c14dd3422c9d96a244",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 34425,
"upload_time": "2025-11-11T22:39:43",
"upload_time_iso_8601": "2025-11-11T22:39:43.990558Z",
"url": "https://files.pythonhosted.org/packages/12/d1/ed1606feac2a734b6ce3c070913f2d31e568c4802732f2dfe2fb3d508cb2/frozendict-2.4.7-cp38-cp38-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "42c936095b9d5918ba7a9ccbf21be8ce115dd3a7217006ea8b6911655847e6db",
"md5": "55d8bf30f05ee8bbd2acae45756a978b",
"sha256": "ebae8f4a07372acfc3963fc8d68070cdaab70272c3dd836f057ebbe9b7d38643"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "55d8bf30f05ee8bbd2acae45756a978b",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 37509,
"upload_time": "2025-11-11T22:39:45",
"upload_time_iso_8601": "2025-11-11T22:39:45.033221Z",
"url": "https://files.pythonhosted.org/packages/42/c9/36095b9d5918ba7a9ccbf21be8ce115dd3a7217006ea8b6911655847e6db/frozendict-2.4.7-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ea2c641c71a84ecbbcba54c5af0dbad18faede9173da5decfca44d4e0d167851",
"md5": "0010bc79208066a9eb405c4fa20a19c0",
"sha256": "1c521ad3d747aa475e9040e231f5f1847c04423bae5571c010a9d969e6983c40"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp39-cp39-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "0010bc79208066a9eb405c4fa20a19c0",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 60161,
"upload_time": "2025-11-11T22:39:46",
"upload_time_iso_8601": "2025-11-11T22:39:46.192334Z",
"url": "https://files.pythonhosted.org/packages/ea/2c/641c71a84ecbbcba54c5af0dbad18faede9173da5decfca44d4e0d167851/frozendict-2.4.7-cp39-cp39-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d11be7a923500c6462e85863d499713a5deb385ea6533bb66769b140870b288f",
"md5": "9766e161136945b3c909f357c905ef0f",
"sha256": "70e655c3aa5f893807830f549a7275031a181dbebeaf74c461b51adc755d9335"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "9766e161136945b3c909f357c905ef0f",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 38416,
"upload_time": "2025-11-11T22:39:47",
"upload_time_iso_8601": "2025-11-11T22:39:47.157156Z",
"url": "https://files.pythonhosted.org/packages/d1/1b/e7a923500c6462e85863d499713a5deb385ea6533bb66769b140870b288f/frozendict-2.4.7-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "269e7702cda30bd38a470d7c2c997af0ea20ecf7ba5e89ab31f35e5e5a4d46d7",
"md5": "a5271e61804d48ce72c595bdba4855f8",
"sha256": "11d35075f979c96f528d74ccbf89322a7ef8211977dd566bc384985ebce689be"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "a5271e61804d48ce72c595bdba4855f8",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 38397,
"upload_time": "2025-11-11T22:39:48",
"upload_time_iso_8601": "2025-11-11T22:39:48.624560Z",
"url": "https://files.pythonhosted.org/packages/26/9e/7702cda30bd38a470d7c2c997af0ea20ecf7ba5e89ab31f35e5e5a4d46d7/frozendict-2.4.7-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "466b0cf8ebc2524052ab99a5daabc740e56625f6c72fb49dcb68da2348dfe714",
"md5": "8ac415ca3a14e2c52552ef482d0f3bd2",
"sha256": "d4d7ec24d3bfcfac3baf4dffd7fcea3fa8474b087ce32696232132064aa062cf"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",
"has_sig": false,
"md5_digest": "8ac415ca3a14e2c52552ef482d0f3bd2",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 112448,
"upload_time": "2025-11-11T22:39:50",
"upload_time_iso_8601": "2025-11-11T22:39:50.106729Z",
"url": "https://files.pythonhosted.org/packages/46/6b/0cf8ebc2524052ab99a5daabc740e56625f6c72fb49dcb68da2348dfe714/frozendict-2.4.7-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "29ab6112c9a59230e8535125e8bba17bd07e65175ed565e681cd496809b9d7d6",
"md5": "f27aac41fea8327439dfbcd4c19f4731",
"sha256": "5694417864875ca959932e3b98e2b7d5d27c75177bf510939d0da583712ddf58"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "f27aac41fea8327439dfbcd4c19f4731",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 120263,
"upload_time": "2025-11-11T22:39:51",
"upload_time_iso_8601": "2025-11-11T22:39:51.244214Z",
"url": "https://files.pythonhosted.org/packages/29/ab/6112c9a59230e8535125e8bba17bd07e65175ed565e681cd496809b9d7d6/frozendict-2.4.7-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "65c93bb916d82c0fd570a60a8f19fc752455c2891d742cb0d8803699a0e6d05d",
"md5": "824b4b710a4e337662a486d48263f975",
"sha256": "57a754671c5746e11140363aa2f4e7a75c8607de6e85a2bf89dcd1daf51885a7"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl",
"has_sig": false,
"md5_digest": "824b4b710a4e337662a486d48263f975",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 111017,
"upload_time": "2025-11-11T22:39:52",
"upload_time_iso_8601": "2025-11-11T22:39:52.357903Z",
"url": "https://files.pythonhosted.org/packages/65/c9/3bb916d82c0fd570a60a8f19fc752455c2891d742cb0d8803699a0e6d05d/frozendict-2.4.7-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7b40c4b80a21eea9be40103c289a17798377695169b88d2d5e713b39cdc16110",
"md5": "1a40e42b9c604675bbf821c437835a46",
"sha256": "313e0e1d8b22b317aa1f7dd48aec8cbb0416ddd625addf7648a69148fcb9ccff"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl",
"has_sig": false,
"md5_digest": "1a40e42b9c604675bbf821c437835a46",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 129324,
"upload_time": "2025-11-11T22:39:53",
"upload_time_iso_8601": "2025-11-11T22:39:53.461393Z",
"url": "https://files.pythonhosted.org/packages/7b/40/c4b80a21eea9be40103c289a17798377695169b88d2d5e713b39cdc16110/frozendict-2.4.7-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "44ab5ceabc7e7284c53b9e63de147fa431ac4435a36e3360131f7e2de6c4a883",
"md5": "62485c3aee8dc2c22c9087ecc4dea26a",
"sha256": "176a66094428b9fd66270927b9787e3b8b1c9505ef92723c7b0ef1923dbe3c4a"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl",
"has_sig": false,
"md5_digest": "62485c3aee8dc2c22c9087ecc4dea26a",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 125941,
"upload_time": "2025-11-11T22:39:54",
"upload_time_iso_8601": "2025-11-11T22:39:54.614418Z",
"url": "https://files.pythonhosted.org/packages/44/ab/5ceabc7e7284c53b9e63de147fa431ac4435a36e3360131f7e2de6c4a883/frozendict-2.4.7-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ee22d2f10f153cc18d8577c120eb81d83266c23dd4cb004b7dc18a1efa2a0509",
"md5": "2bdaee4a5ab9e3fdaedcb0e563c0da3c",
"sha256": "de1fff2683d8af01299ec01eb21a24b6097ce92015fc1fbefa977cecf076a3fc"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "2bdaee4a5ab9e3fdaedcb0e563c0da3c",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 119627,
"upload_time": "2025-11-11T22:39:56",
"upload_time_iso_8601": "2025-11-11T22:39:56.070040Z",
"url": "https://files.pythonhosted.org/packages/ee/22/d2f10f153cc18d8577c120eb81d83266c23dd4cb004b7dc18a1efa2a0509/frozendict-2.4.7-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "94272df17e4c3432635d1546c069ad1db5518dde14bcd1e318ffe86611552033",
"md5": "a549c70a6f5569d050082dab25319c61",
"sha256": "115a822ecd754574e11205e0880e9d61258d960863d6fd1b90883aa800f6d3b3"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl",
"has_sig": false,
"md5_digest": "a549c70a6f5569d050082dab25319c61",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 115126,
"upload_time": "2025-11-11T22:39:58",
"upload_time_iso_8601": "2025-11-11T22:39:58.099886Z",
"url": "https://files.pythonhosted.org/packages/94/27/2df17e4c3432635d1546c069ad1db5518dde14bcd1e318ffe86611552033/frozendict-2.4.7-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "52c9f23966c2e9e4243f7a29dd83396cedbabf65b3dc185432c4b1e9bbf4f707",
"md5": "7ce1fb9e4a06b41e5fb42f1541af1000",
"sha256": "de8d2c98777ba266f5466e211778d4e3bd00635a207c54f6f7511d8613b86dd3"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp39-cp39-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "7ce1fb9e4a06b41e5fb42f1541af1000",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 117190,
"upload_time": "2025-11-11T22:39:59",
"upload_time_iso_8601": "2025-11-11T22:39:59.690081Z",
"url": "https://files.pythonhosted.org/packages/52/c9/f23966c2e9e4243f7a29dd83396cedbabf65b3dc185432c4b1e9bbf4f707/frozendict-2.4.7-cp39-cp39-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "70497ffd8424f08025f741010139760728099e90ce1a78befbe4667c401226ba",
"md5": "b786759d02b2fc657284f99aba807577",
"sha256": "1e307be0e1f26cbc9593f6bdad5238a1408a50f39f63c9c39eb93c7de5926767"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp39-cp39-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "b786759d02b2fc657284f99aba807577",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 110477,
"upload_time": "2025-11-11T22:40:01",
"upload_time_iso_8601": "2025-11-11T22:40:01.355442Z",
"url": "https://files.pythonhosted.org/packages/70/49/7ffd8424f08025f741010139760728099e90ce1a78befbe4667c401226ba/frozendict-2.4.7-cp39-cp39-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "132906bd92d3f8c93c63bec2fd5d9d99d9211f5329ffd960709def12d51ca2f6",
"md5": "e4d1909bb583a94c7ee4eef38d87215f",
"sha256": "78a55f320ca924545494ce153df02d4349156cd95dc4603c1f0e80c42c889249"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp39-cp39-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "e4d1909bb583a94c7ee4eef38d87215f",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 112875,
"upload_time": "2025-11-11T22:40:03",
"upload_time_iso_8601": "2025-11-11T22:40:03.070044Z",
"url": "https://files.pythonhosted.org/packages/13/29/06bd92d3f8c93c63bec2fd5d9d99d9211f5329ffd960709def12d51ca2f6/frozendict-2.4.7-cp39-cp39-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8c330af76558ef89cb5376f67a042e468833f3214478bd91217418ad0221d0e5",
"md5": "db3ba499b8ffce289e7118925f5ffb06",
"sha256": "e89492dfcc4c27a718f8b5a4c8df1a2dec6c689718cccd70cb2ceba69ab8c642"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp39-cp39-musllinux_1_2_ppc64le.whl",
"has_sig": false,
"md5_digest": "db3ba499b8ffce289e7118925f5ffb06",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 125952,
"upload_time": "2025-11-11T22:40:04",
"upload_time_iso_8601": "2025-11-11T22:40:04.420512Z",
"url": "https://files.pythonhosted.org/packages/8c/33/0af76558ef89cb5376f67a042e468833f3214478bd91217418ad0221d0e5/frozendict-2.4.7-cp39-cp39-musllinux_1_2_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "307e6656361397a7ed2a583385d16431b2b8fd978cc97b297142b8ff1e61770f",
"md5": "b60e38b69d2d6f5af69766cb0d4dd565",
"sha256": "1e801d62e35df24be2c6f7f43c114058712efa79a8549c289437754dad0207a3"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp39-cp39-musllinux_1_2_riscv64.whl",
"has_sig": false,
"md5_digest": "b60e38b69d2d6f5af69766cb0d4dd565",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 114166,
"upload_time": "2025-11-11T22:40:05",
"upload_time_iso_8601": "2025-11-11T22:40:05.540269Z",
"url": "https://files.pythonhosted.org/packages/30/7e/6656361397a7ed2a583385d16431b2b8fd978cc97b297142b8ff1e61770f/frozendict-2.4.7-cp39-cp39-musllinux_1_2_riscv64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "847acabf7414e664269ed0fc37da02da45470a94a72e7518a01498b116c78363",
"md5": "a762ba54c44ec9e0878266127c21d86b",
"sha256": "3ed9e2f3547a59f4ef5c233614c6faa6221d33004cb615ae1c07ffc551cfe178"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp39-cp39-musllinux_1_2_s390x.whl",
"has_sig": false,
"md5_digest": "a762ba54c44ec9e0878266127c21d86b",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 121367,
"upload_time": "2025-11-11T22:40:06",
"upload_time_iso_8601": "2025-11-11T22:40:06.668253Z",
"url": "https://files.pythonhosted.org/packages/84/7a/cabf7414e664269ed0fc37da02da45470a94a72e7518a01498b116c78363/frozendict-2.4.7-cp39-cp39-musllinux_1_2_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b29fbcae0fa919a680ec287941752a0bdfe2b159f00c088e2677f49d1d42db6b",
"md5": "06c3bb493c6d2a0eea232c22daf87072",
"sha256": "ad0448ed5569f0a9b9b010af9fb5b6d9bdc0b4b877a3ddb188396c4742e62284"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp39-cp39-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "06c3bb493c6d2a0eea232c22daf87072",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 118230,
"upload_time": "2025-11-11T22:40:07",
"upload_time_iso_8601": "2025-11-11T22:40:07.876712Z",
"url": "https://files.pythonhosted.org/packages/b2/9f/bcae0fa919a680ec287941752a0bdfe2b159f00c088e2677f49d1d42db6b/frozendict-2.4.7-cp39-cp39-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3f0771408d8f6870b545a00f98624ba8fb335b47f66f9f1530adbb0ebc9b3fa9",
"md5": "270fcfe31b0d93f602b66faf194f3671",
"sha256": "eab9ef8a9268042e819de03079b984eb0894f05a7b63c4e5319b1cf1ef362ba7"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp39-cp39-win32.whl",
"has_sig": false,
"md5_digest": "270fcfe31b0d93f602b66faf194f3671",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 34786,
"upload_time": "2025-11-11T22:40:09",
"upload_time_iso_8601": "2025-11-11T22:40:09.419211Z",
"url": "https://files.pythonhosted.org/packages/3f/07/71408d8f6870b545a00f98624ba8fb335b47f66f9f1530adbb0ebc9b3fa9/frozendict-2.4.7-cp39-cp39-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "21bd20198a3df90617f1d126c93521d347f7686681292e20a92e9d8d4396956d",
"md5": "c06bc5679662a42c3f71dcc85962356d",
"sha256": "8dfe2f4840b043436ee5bdd07b0fa5daecedf086e6957e7df050a56ab6db078d"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "c06bc5679662a42c3f71dcc85962356d",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 37941,
"upload_time": "2025-11-11T22:40:10",
"upload_time_iso_8601": "2025-11-11T22:40:10.466527Z",
"url": "https://files.pythonhosted.org/packages/21/bd/20198a3df90617f1d126c93521d347f7686681292e20a92e9d8d4396956d/frozendict-2.4.7-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2a002cfc8dac3eb9ba0db8369e98d341a96dde1f774a8081d33ed38601c1ceda",
"md5": "b97a58d2ecd19400e05b8e068c51e1ac",
"sha256": "cc2085926872a1b26deda4b81b2254d2e5d2cb2c4d7b327abe4c820b7c93f40b"
},
"downloads": -1,
"filename": "frozendict-2.4.7-cp39-cp39-win_arm64.whl",
"has_sig": false,
"md5_digest": "b97a58d2ecd19400e05b8e068c51e1ac",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 35867,
"upload_time": "2025-11-11T22:40:11",
"upload_time_iso_8601": "2025-11-11T22:40:11.850465Z",
"url": "https://files.pythonhosted.org/packages/2a/00/2cfc8dac3eb9ba0db8369e98d341a96dde1f774a8081d33ed38601c1ceda/frozendict-2.4.7-cp39-cp39-win_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3874f94141b38a51a553efef7f510fc213894161ae49b88bffd037f8d2a7cb2f",
"md5": "e5ce87fabca533c5abdcb4068bdf0260",
"sha256": "972af65924ea25cf5b4d9326d549e69a9a4918d8a76a9d3a7cd174d98b237550"
},
"downloads": -1,
"filename": "frozendict-2.4.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e5ce87fabca533c5abdcb4068bdf0260",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 16264,
"upload_time": "2025-11-11T22:40:12",
"upload_time_iso_8601": "2025-11-11T22:40:12.836042Z",
"url": "https://files.pythonhosted.org/packages/38/74/f94141b38a51a553efef7f510fc213894161ae49b88bffd037f8d2a7cb2f/frozendict-2.4.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "90b22a3d1374b7780999d3184e171e25439a8358c47b481f68be883c14086b4c",
"md5": "6d77d8fc42cb0ed10e8da5f7a80ca33c",
"sha256": "e478fb2a1391a56c8a6e10cc97c4a9002b410ecd1ac28c18d780661762e271bd"
},
"downloads": -1,
"filename": "frozendict-2.4.7.tar.gz",
"has_sig": false,
"md5_digest": "6d77d8fc42cb0ed10e8da5f7a80ca33c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 317082,
"upload_time": "2025-11-11T22:40:14",
"upload_time_iso_8601": "2025-11-11T22:40:14.251501Z",
"url": "https://files.pythonhosted.org/packages/90/b2/2a3d1374b7780999d3184e171e25439a8358c47b481f68be883c14086b4c/frozendict-2.4.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-11-11 22:40:14",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Marco-Sulla",
"github_project": "python-frozendict",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "frozendict"
}