Skip to main content

Sychronized, streaming dictionary that uses shared memory as a backend

Project description

UltraDict2

PyPI Package Tests Python 3.11-3.14 License

Sychronized, streaming Python dictionary that uses shared memory as a backend

This is a maintained fork of ronny-rentner/UltraDict, published on PyPI as UltraDict2. Install with pip install UltraDict2 and import with from UltraDict2 import UltraDict.

Warning: This is an early hack. There are only few unit tests and so on. Maybe not stable!

Features:

  • Fast (compared to other sharing solutions)
  • No running manager processes
  • Works in spawn and fork context
  • Safe locking between independent processes
  • Tested with Python 3.11 - 3.14 on Linux, Windows and Mac
  • Convenient, no setter or getters necessary
  • Optional recursion for nested dicts

Atomic operations via atomics2

Shared locking is built on atomics2, a maintained fork of the abandoned atomics package, rebuilt on patomic v1.1.0 with prebuilt wheels for Python 3.11 - 3.14 across Linux, Windows, and macOS (including arm64). It is installed automatically as a dependency, so shared_lock=True works out of the box.

General Concept

UltraDict uses multiprocessing.shared_memory to synchronize a dict between multiple processes.

It does so by using a stream of updates in a shared memory buffer. This is efficient because only changes have to be serialized and transferred.

If the buffer is full, UltraDict will automatically do a full dump to a new shared memory space, reset the streaming buffer and continue to stream further updates. All users of the UltraDict will automatically load full dumps and continue using streaming updates afterwards.

What lives where

The dict itself is not stored in shared memory. Every process keeps its own complete copy as an ordinary Python dict; shared memory carries the update stream and the snapshots used to keep those copies in step.

flowchart LR
    subgraph proc1["Process 1 (writer)"]
        d1["self.data<br/>full local copy"]
    end
    subgraph proc2["Process 2"]
        d2["self.data<br/>full local copy"]
    end
    subgraph proc3["Process 3"]
        d3["self.data<br/>full local copy"]
    end

    subgraph shm["Shared memory"]
        control["control<br/>1000 bytes<br/>position + dump counter"]
        buffer["update buffer<br/>buffer_size<br/>stream of changes"]
        dump["full dump<br/>snapshot of the whole dict"]
    end

    d1 -- "append frame" --> buffer
    d1 -- "snapshot when buffer is full" --> dump
    buffer -- "replay frames" --> d2
    buffer -- "replay frames" --> d3
    dump -- "reload everything" --> d2
    dump -- "reload everything" --> d3
    control -.- buffer
    control -.- dump

Two consequences worth planning for:

  • Reads are local. A read compares two integers in the control block and then hits the local dict. Nothing is deserialized unless something actually changed.
  • Memory scales with the number of processes. A 500 MB dict shared by 8 processes costs roughly 8 x 500 MB of RAM plus the shared segments, not 500 MB. Shared memory here is a transport, not a way to store one copy.

Writing

flowchart TD
    w["d[key] = value"] --> ser["serialize the change"]
    ser --> fits{"does the frame fit<br/>in the update buffer?"}
    fits -- yes --> append["append frame, advance position"]
    append --> cheap["cost: size of the change"]
    fits -- no --> full["serialize the whole dict into a full dump"]
    full --> reset["publish it, bump the dump counter, reset the buffer"]
    reset --> pricey["cost: size of the entire dict,<br/>paid again by every reader"]

A write that does not fit is never streamed at all: it reaches other processes only inside the snapshot. That is why buffer_size matters far more than it looks.

Issues

On Windows, if no process has any handles on the shared memory, the OS will gc all of the shared memory making it inaccessible for future processes. To work around this issue you can currently set full_dump_size which will cause the creator of the dict to set a static full dump memory of the requested size. This full dump memory will live as long as the creator lives. This approach has the downside that you need to plan ahead for your data size and if it does not fit into the full dump memory, it will break.

Security

UltraDict uses pickle to serialize data by default. Unpickling attacker-controlled data leads to arbitrary code execution, and any local process that can guess or enumerate the shared memory names can write to the buffers. Only use UltraDict between processes that already trust each other and run under user accounts you control; do not use it as a boundary against untrusted local processes. If you need to share data with less trusted processes, pass a safe serializer (e.g. one based on JSON) instead of pickle.

Alternatives

There are many alternatives:

How to use?

Simple

In one Python REPL:

Python 3.11 on linux
>>>
>>> from UltraDict2 import UltraDict
>>> ultra = UltraDict({ 1:1 }, some_key='some_value')
>>> ultra
{1: 1, 'some_key': 'some_value'}
>>>
>>> # We need the shared memory name in the other process.
>>> ultra.name
'psm_ad73da69'

In another Python REPL:

Python 3.11 on linux
>>>
>>> from UltraDict2 import UltraDict
>>> # Connect to the shared memory with the name above
>>> other = UltraDict(name='psm_ad73da69')
>>> other
{1: 1, 'some_key': 'some_value'}
>>> other[2] = 2

Back in the first Python REPL:

>>> ultra[2]
2

Nested

In one Python REPL:

Python 3.11 on linux
>>>
>>> from UltraDict2 import UltraDict
>>> ultra = UltraDict(recurse=True)
>>> ultra['nested'] = { 'counter': 0 }
>>> type(ultra['nested'])
<class 'UltraDict2.UltraDict2.UltraDict'>
>>> ultra.name
'psm_0a2713e4'

In another Python REPL:

Python 3.11 on linux
>>>
>>> from UltraDict2 import UltraDict
>>> other = UltraDict(name='psm_0a2713e4')
>>> other['nested']['counter'] += 1

Back in the first Python REPL:

>>> ultra['nested']['counter']
1

Performance comparison

Lets compare a classical Python dict, UltraDict, multiprocessing.Manager and Redis.

Cost per operation for dict, UltraDict, Manager dict and Redis on a log scale

Median across Python 3.11 - 3.14 on Debian 12 bare metal, 10,000 keys:

read vs dict write vs dict
dict 10 ns 1x 13 ns 1x
ultra.data (direct) 12 ns 1x
UltraDict 111 ns 11x 1.60 µs 122x
Manager dict 9.09 µs 886x 9.18 µs 700x
Redis, loopback 25.09 µs 2,445x 27.21 µs 2,075x
Redis, 1GbE LAN hop 206.8 µs 20,155x 218.5 µs 16,663x

Reading through UltraDict costs about 11x a plain dict, and is 82x faster than a Manager dict and 227x faster than a local Redis. Against a Redis on another machine, which is the more usual deployment, it is roughly 1900x faster. Reading ultra.data directly is within ~20% of a plain dict, at the cost of not seeing updates.

The gap in the middle of the chart is the point: there is nothing between reading local memory and crossing a socket. A read that finds nothing new never leaves the process, which is what buys the two orders of magnitude.

Writes cost more than reads because the change is serialized and published, and because a write that does not fit the buffer forces a full dump of the whole dict. See Buffer sizes and read performance for how to size it.

Python version

Across 3.11 - 3.14 everything lands within 1.1 - 1.4x, which is close enough to call flat:

read 3.11 3.12 3.13 3.14
dict 9 ns 10 ns 11 ns 10 ns
UltraDict 111 ns 102 ns 111 ns 100 ns
Manager dict 7.32 µs 8.03 µs 9.16 µs 9.09 µs
Redis 24.05 µs 24.51 µs 25.21 µs 25.09 µs

No version is worth picking over another, and that was already true before the control block counters stopped being read through int.from_bytes(): on this machine the spread was 1.14x then and 1.11x now.

One caveat that cost us a wrong conclusion, recorded here so nobody repeats it: the same benchmark inside a virtual machine reported UltraDict as 2.1x slower on 3.13 than on 3.11, reproducibly. On bare metal that gap is 1.1x. Virtualized IPC and memory access inflate this workload unevenly across versions, so benchmark UltraDict on the kind of machine you will actually deploy on.

Method

Debian 12 bare metal, 12 cores, each Python version in its official Docker image, Redis 7 on the same host over loopback, 10,000 keys, best of three timing repeats. Every candidate gets its own iteration count and results are reported per operation, so a 11 ns operation and a 25 µs one are directly comparable. The LAN row was measured from a second machine on a 1GbE network, where the four Python versions agree to within 1.02x because the wire dominates.

This is not a real life workload and it is single process: it measures the cost of the operations, not what happens when several processes contend.

Reproduce it with tests/performance/compare.py. There is also a throughput test in tests/performance/performance.py, and tests/performance/buffer_size_sweep.py for choosing buffer_size.

I am interested in extending the performance testing to other solutions (like sqlite, memcached, etc.) and to more complex use cases with multiple processes working in parallel.

Parameters

Ultradict(*arg, name=None, create=None, buffer_size=10000, serializer=pickle, shared_lock=False, full_dump_size=None, auto_unlink=None, recurse=False, recurse_register=None, **kwargs)

name: Name of the shared memory. A random name will be chosen if not set. By default, if a name is given a new shared memory space is created if it does not exist yet. Otherwise the existing shared memory space is attached.

create: Can be either True or False or None. If set to True, a new UltraDict will be created and an exception is thrown if one exists already with the given name. If kept at the default value None, either a new UltraDict will be created if the name is not taken or an existing UltraDict will be attached.

Setting create=True does ensure not accidentally attaching to an existing UltraDict that might be left over.

buffer_size: Size of the shared memory buffer used for streaming changes of the dict. The buffer size limits the biggest change that can be streamed, so when you use large values or deeply nested dicts you might need a bigger buffer. Otherwise, if the buffer is too small, it will fall back to a full dump. Creating full dumps can be slow, depending on the size of your dict.

Whenever the buffer is full, a full dump will be created. A new shared memory is allocated just big enough for the full dump. Afterwards the streaming buffer is reset. All other users of the dict will automatically load the full dump and continue streaming updates.

(Also see the section Memory management below!)

serializer: Use a different serialized from the default pickle, e. g. marshal, dill, jsons. The module or object provided must support the methods loads() and dumps()

shared_lock: When writing to the same dict at the same time from multiple, independent processes, they need a shared lock to synchronize and not overwrite each other's changes. Shared locks are slow. They rely on the atomics2 package for atomic locks. By default, UltraDict will use a multiprocessing.RLock() instead which works well in fork context and is much faster.

(Also see the section Locking below!)

full_dump_size: If set, uses a static full dump memory instead of dynamically creating it. This might be necessary on Windows depending on your write behaviour. On Windows, the full dump memory goes away if the process goes away that had created the full dump. Thus you must plan ahead which processes might be writing to the dict and therefore creating full dumps.

auto_unlink: If True, the creator of the shared memory will automatically unlink the handle at exit so it is not visible or accessible to new processes. All existing, still connected processes can continue to use the dict.

recurse: If True, any nested dict objects will be automaticall wrapped in an UltraDict allowing transparent nested updates.

recurse_register: Has to be either the name of an UltraDict or an UltraDict instance itself. Will be used internally to keep track of dynamically created, recursive UltraDicts for proper cleanup when using recurse=True. Usually does not have to be set by the user.

Memory management

UltraDict uses shared memory buffers and those usually live is RAM. UltraDict does not use any management processes to keep track of buffers. Also it cannot know when to free those shared memory buffers again because you might want the buffers to outlive the process that has created them.

By convention you should set the parameter auto_unlink to True for exactly one of the processes that is using the UltraDict. The first process that is creating a certain UltraDict will automatically get the flag auto_unlink=True unless you explicitly set it to False. When this process with the auto_unlink=True flag ends, it will try to unlink (free) all shared memory buffers.

A special case is the recursive mode using recurse=True parameter. This mode will use an additional internal UltraDict to keep track of recursively nested UltraDict instances. All child UltraDicts will write to this register the names of the shared memory buffers they are creating. This allows the buffers to outlive the processes and still being correctly cleanup up by at the end of the program.

Buffer sizes and read performance:

There are 3 cases that can occur when you read from an `UltraDict:

  1. No new updates: This is the fastes cases. UltraDict was optimized for this case to find out as quickly as possible if there are no updates on the stream and then just return the desired data. If you want even better read perforamance you can directly access the underlying data attribute of your UltraDict, though at the cost of not getting real time updates anymore.

  2. Streaming update: This is usually fast, depending on the size and amount of that data that was changed but not depending on the size of the whole UltraDict. Only the data that was actually changed has to be unserialized.

  3. Full dump load: This can be slow, depending on the total size of your data. If your UltraDict is big it might take long to unserialize it.

flowchart TD
    r["d[key]"] --> chk{"dump counter<br/>changed?"}
    chk -- yes --> load["load the full dump"]
    load --> c3["case 3: cost is the whole dict"]
    chk -- no --> pos{"stream position<br/>moved?"}
    pos -- yes --> replay["replay only the new frames"]
    replay --> c2["case 2: cost is the changes"]
    pos -- no --> hit["return from the local copy"]
    hit --> c1["case 1: two integer comparisons"]

Note that synchronization is pull based and lazy: there is no background thread. A process only catches up when it touches the dict, so an idle process pays for everything it missed on its next access.

Given the above 3 cases, you need to balance the size of your data and your write patterns with the streaming buffer_size of your UltraDict. If the streaming buffer is full, a full dump has to be created. Thus, if your full dumps are expensive due to their size, try to find a good buffer_size to avoid creating too many full dumps.

On the other hand, if for example you only change back and forth the value of one single key in your UltraDict, it might be useless to process a stream of all these back and forth changes. It might be much more efficient to simply do one full dump which might be very small because it only contains one key.

Locking

Every UltraDict instance has a lock attribute which is either a multiprocessing.RLock or an UltraDict.SharedLock if you set shared_lock=True when creating the UltraDict.

RLock is the fastest locking method that is used by default but you can only use it if you fork your child processes. Forking is the default on Linux systems.

In contrast, on Windows systems, forking is not available and Python will automatically use the spawn method when creating child processes. You should then use the parameter shared_lock=True when using UltraDict. This uses the atomics2 package, which is installed automatically as a dependency.

How to use the locking?

ultra = UltraDict(shared_lock=True)

with ultra.lock:
	ultra['counter']++

# The same as above with all default parameters
with ultra.lock(timeout=None, block=True, steal=False, sleep_time=0.000001):
	ultra['counter']++

# Busy wait, will result in 99 % CPU usage, fastest option
# Ideally number of processes using the UltraDict should be < number of CPUs
with ultra.lock(sleep_time=0):
	ultra['counter']++

try:
	result = ultra.lock.acquire(block=False)
	ultra.lock.release()
except UltraDict.Exceptions.CannotAcquireLock as e:
	print(f'Process with PID {e.blocking_pid} is holding the lock')

try:
	with ultra.lock(timeout=1.5):
		ultra['counter']++
except UltraDict.Exceptions.CannotAcquireLockTimeout:
	print('Stale lock?')

with ultra.lock(timeout=1.5, steal_after_timeout=True):
	ultra['counter']++

Explicit cleanup

Sometimes, when your program crashes, no cleanup happens and you might have a corrupted shared memeory buffer that only goes away if you manually delete it.

On Linux/Unix systems, those buffers usually live in a memory based filesystem in the folder /dev/shm. You can simply delete the files there.

Another way to do this in code is like this:

# Unlink both shared memory buffers possibly used by UltraDict
name = 'my-dict-name'
UltraDict.unlink_by_name(name, ignore_errors=True)
UltraDict.unlink_by_name(f'{name}_memory', ignore_errors=True)

Advanced usage

See examples folder

>>> ultra = UltraDict({ 'init': 'some initial data' }, name='my-name', buffer_size=100_000)
>>> # Let's use a value with 100k bytes length.
>>> # This will not fit into our 100k bytes buffer due to the serialization overhead.
>>> ultra[0] = ' ' * 100_000
>>> ultra.print_status()
{'buffer': SharedMemory('my-name_memory', size=100000),
 'buffer_size': 100000,
 'control': SharedMemory('my-name', size=1000),
 'full_dump_counter': 1,
 'full_dump_counter_remote': 1,
 'full_dump_memory': SharedMemory('psm_765691cd', size=100057),
 'full_dump_memory_name_remote': 'psm_765691cd',
 'full_dump_size': None,
 'full_dump_static_size_remote': <memory at 0x7fcbf5ca6580>,
 'lock': <RLock(None, 0)>,
 'lock_pid_remote': 0,
 'lock_remote': 0,
 'name': 'my-name',
 'recurse': False,
 'recurse_remote': <memory at 0x7fcbf5ca6700>,
 'serializer': <module 'pickle' from '/usr/lib/python3.11/pickle.py'>,
 'shared_lock_remote': <memory at 0x7fcbf5ca6640>,
 'update_stream_position': 0,
 'update_stream_position_remote': 0}

Note: All status keys ending with _remote are stored in the control shared memory space and shared across processes.

Other things you can do:

>>> # Create a full dump
>>> ultra.dump()

>>> # Load latest full dump if one is available
>>> ultra.load()

>>> # Show statistics
>>> ultra.print_status()

>>> # Force load of latest full dump, even if we had already processed it.
>>> # There might also be streaming updates available after loading the full dump.
>>> ultra.load(force=True)

>>> # Apply full dump and stream updates to
>>> # underlying local dict, this is automatically
>>> # called by accessing the UltraDict in any usual way,
>>> # but can be useful to call after a forced load.
>>> ultra.apply_update()

>>> # Access underlying local dict directly for maximum performance
>>> ultra.data

>>> # Use any serializer you like, given it supports the loads() and dumps() methods
>>> import jsons
>>> ultra = UltraDict(serializer=jsons)

>>> # Close connection to shared memory; will return the data as a dict
>>> ultra.close()

>>> # Unlink all shared memory, it will not be visible to new processes afterwards
>>> ultra.unlink()

Metrics

get_metrics() returns a plain dataclass of scalars, so you can feed a monitoring system without UltraDict pulling in a monitoring dependency.

>>> ultra = UltraDict()
>>> ultra['some key'] = 'some value'
>>> ultra.get_metrics()
Metrics(item_count=1, item_size_bytes_min=39, item_size_bytes_max=39, item_size_bytes_sum=39,
        item_size_observations_total=1, buffer_size_bytes=10000, buffer_used_bytes=45,
        buffer_used_fraction=0.0045, full_dump_size_bytes=None, full_dump_last_bytes=None,
        full_dump_total=0, buffer_full_forced_dump_total=0, full_dump_memory_full_total=0,
        full_dump_too_fast_total=0, shm_total_bytes=67108864, shm_used_bytes=1052672,
        shm_free_bytes=66056192)

The item size fields describe the serialized size of the writes this instance has made, not a measurement of the current contents. Measuring the latter would mean re-serializing every key on every call. The mean is item_size_bytes_sum / item_size_observations_total.

The shm_* fields report the whole /dev/shm filesystem, shared by every process on the machine. They are None on platforms without /dev/shm, such as Windows and macOS.

Counters are per instance, are never shared through the control memory, and reset when the process restarts. get_metrics() takes no lock, so a value can be one write stale.

Exporting to Prometheus

Register a collector that scrapes on demand:

from prometheus_client.core import CounterMetricFamily, GaugeMetricFamily, REGISTRY

class UltraDictCollector:
    def __init__(self, ultra):
        self.ultra = ultra

    def collect(self):
        metrics = self.ultra.get_metrics()
        labels  = [self.ultra.name]

        gauge = GaugeMetricFamily('ultradict_items', 'Items in the dict', labels=['name'])
        gauge.add_metric(labels, metrics.item_count)
        yield gauge

        gauge = GaugeMetricFamily('ultradict_buffer_used_fraction', 'Update buffer fill level', labels=['name'])
        gauge.add_metric(labels, metrics.buffer_used_fraction)
        yield gauge

        counter = CounterMetricFamily('ultradict_buffer_full_forced_dumps', 'Full dumps caused by a full buffer', labels=['name'])
        counter.add_metric(labels, metrics.buffer_full_forced_dump_total)
        yield counter

REGISTRY.register(UltraDictCollector(ultra))

What to watch:

Metric Meaning
buffer_full_forced_dump_total rising buffer_size is too small for your write rate. Every event is a full dump of the whole dict.
full_dump_memory_full_total > 0 The dict outgrew a static full_dump_size. Writes are failing.
full_dump_too_fast_total rising Readers cannot keep up with the dump rate and are reloading.
shm_free_bytes falling The machine is running out of shared memory, possibly because of leaked segments.

Contributing

Contributions are always welcome!

Project details


Download files

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

Source Distribution

ultradict2-0.3.0.tar.gz (415.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ultradict2-0.3.0-cp314-cp314-win_arm64.whl (400.3 kB view details)

Uploaded CPython 3.14Windows ARM64

ultradict2-0.3.0-cp314-cp314-win_amd64.whl (414.9 kB view details)

Uploaded CPython 3.14Windows x86-64

ultradict2-0.3.0-cp314-cp314-win32.whl (397.6 kB view details)

Uploaded CPython 3.14Windows x86

ultradict2-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

ultradict2-0.3.0-cp314-cp314-musllinux_1_2_i686.whl (1.4 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ i686

ultradict2-0.3.0-cp314-cp314-musllinux_1_2_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

ultradict2-0.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

ultradict2-0.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

ultradict2-0.3.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (1.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

ultradict2-0.3.0-cp314-cp314-macosx_11_0_arm64.whl (440.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

ultradict2-0.3.0-cp314-cp314-macosx_10_15_x86_64.whl (450.7 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

ultradict2-0.3.0-cp314-cp314-macosx_10_15_universal2.whl (611.3 kB view details)

Uploaded CPython 3.14macOS 10.15+ universal2 (ARM64, x86-64)

ultradict2-0.3.0-cp313-cp313-win_arm64.whl (402.4 kB view details)

Uploaded CPython 3.13Windows ARM64

ultradict2-0.3.0-cp313-cp313-win_amd64.whl (417.3 kB view details)

Uploaded CPython 3.13Windows x86-64

ultradict2-0.3.0-cp313-cp313-win32.whl (399.7 kB view details)

Uploaded CPython 3.13Windows x86

ultradict2-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

ultradict2-0.3.0-cp313-cp313-musllinux_1_2_i686.whl (1.4 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

ultradict2-0.3.0-cp313-cp313-musllinux_1_2_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

ultradict2-0.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

ultradict2-0.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

ultradict2-0.3.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (1.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

ultradict2-0.3.0-cp313-cp313-macosx_11_0_arm64.whl (440.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

ultradict2-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl (450.7 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

ultradict2-0.3.0-cp313-cp313-macosx_10_13_universal2.whl (610.7 kB view details)

Uploaded CPython 3.13macOS 10.13+ universal2 (ARM64, x86-64)

ultradict2-0.3.0-cp312-cp312-win_arm64.whl (402.8 kB view details)

Uploaded CPython 3.12Windows ARM64

ultradict2-0.3.0-cp312-cp312-win_amd64.whl (418.3 kB view details)

Uploaded CPython 3.12Windows x86-64

ultradict2-0.3.0-cp312-cp312-win32.whl (400.0 kB view details)

Uploaded CPython 3.12Windows x86

ultradict2-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

ultradict2-0.3.0-cp312-cp312-musllinux_1_2_i686.whl (1.4 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

ultradict2-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

ultradict2-0.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

ultradict2-0.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

ultradict2-0.3.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (1.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

ultradict2-0.3.0-cp312-cp312-macosx_11_0_arm64.whl (441.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

ultradict2-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl (451.7 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

ultradict2-0.3.0-cp312-cp312-macosx_10_13_universal2.whl (612.5 kB view details)

Uploaded CPython 3.12macOS 10.13+ universal2 (ARM64, x86-64)

ultradict2-0.3.0-cp311-cp311-win_arm64.whl (403.2 kB view details)

Uploaded CPython 3.11Windows ARM64

ultradict2-0.3.0-cp311-cp311-win_amd64.whl (418.9 kB view details)

Uploaded CPython 3.11Windows x86-64

ultradict2-0.3.0-cp311-cp311-win32.whl (402.1 kB view details)

Uploaded CPython 3.11Windows x86

ultradict2-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

ultradict2-0.3.0-cp311-cp311-musllinux_1_2_i686.whl (1.5 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

ultradict2-0.3.0-cp311-cp311-musllinux_1_2_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

ultradict2-0.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

ultradict2-0.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

ultradict2-0.3.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (1.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

ultradict2-0.3.0-cp311-cp311-macosx_11_0_arm64.whl (444.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

ultradict2-0.3.0-cp311-cp311-macosx_10_9_x86_64.whl (455.9 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

ultradict2-0.3.0-cp311-cp311-macosx_10_9_universal2.whl (620.6 kB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file ultradict2-0.3.0.tar.gz.

File metadata

  • Download URL: ultradict2-0.3.0.tar.gz
  • Upload date:
  • Size: 415.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ultradict2-0.3.0.tar.gz
Algorithm Hash digest
SHA256 3b7b47e8671e8df10835a4d6c65bd4a3d56fca8df1094e3837bfd479589332e6
MD5 0b22291c0838edcb90bccc59c2404592
BLAKE2b-256 ad8f280967e53cefb11b5af06d786c30c1bc6b49ac45cb967fff20f6d1da4c07

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0.tar.gz:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: ultradict2-0.3.0-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 400.3 kB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ultradict2-0.3.0-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 b1fb32ed52bb091ec30d560edd70537346df7ba1a52de7476499d0b65b9fad01
MD5 d053cb6fe2288e1ba548026f89e659b8
BLAKE2b-256 8ea601d2c6afc0b04575f040c0f43fbe7f65b3f09d5ffbf4bd6be2083a4ff313

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp314-cp314-win_arm64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: ultradict2-0.3.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 414.9 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ultradict2-0.3.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 4639c79670556b6395381be75c72bd72ab21fea8047b96acb2c4726c14d2ea2d
MD5 528136f9e6ded0a80547a95f1791128f
BLAKE2b-256 cc2a426a727571ee8484e7272abaf3d836f05001142395a9a7fa168a6801ccec

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp314-cp314-win_amd64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp314-cp314-win32.whl.

File metadata

  • Download URL: ultradict2-0.3.0-cp314-cp314-win32.whl
  • Upload date:
  • Size: 397.6 kB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ultradict2-0.3.0-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 c3e0046279d3653f07f312a02be2678849830c1f96aef81334dd5d24f1933d01
MD5 00f25ca0b62133607cd5e9ee36c717ab
BLAKE2b-256 44087338690a9113252163910ef3b8593d902972d7d277f0b2c16556c4ec3b04

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp314-cp314-win32.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 62a965f9958617ec4f8ffe4825ad8e3344a9ed8a3720af2fdb187d3fcb6a7e01
MD5 1e4a1f00880a90d09ed4746b51f79f6f
BLAKE2b-256 cc08c972fd21362a6bada1af43e17d39f73bdfb0049293ad6801537dcd354426

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp314-cp314-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp314-cp314-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 7f6a392fafcf07fdfc5481f3114fa4288fdf1d64edc6525fbf2fa9048e4ac17a
MD5 f2025397acb0ccbf70c52c8f9dad1f87
BLAKE2b-256 a4a33ea3ef502715655592b99f5323df2a260eaa039a38d76b84d6a2e435ac68

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp314-cp314-musllinux_1_2_i686.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ab1ce352cfb8e30f19a8ecf5c4c17e02b2652728cb7c5217992dba31a85b3cab
MD5 3b8c84544dd433ebd08594f4e12f2e9a
BLAKE2b-256 d64398f6920d2f279bfcd00ddbc7012f3ea18809402edb819f841d296d5e5b03

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp314-cp314-musllinux_1_2_aarch64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 354136b62fdb1cb8e61542515933bcc08efdd5ee671fa29ff42fe42fb2f3803e
MD5 854750826b95d1941522d50d5d8f06fc
BLAKE2b-256 d3947d6df7406dd291aec59080471d3dea8b5f95a6c5e1816f9cdf5d327551e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f4d83e0e21986eba8956d359d7c9a4abcf88fab906df59cb7230cbac1560e69e
MD5 7cbbdccf4753baa65195c6cea5d2ec87
BLAKE2b-256 fe456821c9cd18ac73ded2f1468c865d2c809093b28079d7a4890e6bf4f30551

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 0fe52ae55bea1a60bb7238516ee77c78ce945ccfdeb6e034bd51a0a9cee12d75
MD5 0416f9accbdc2a9eb9bffdb3e808e3b4
BLAKE2b-256 c34abbe8637591ab3086721bc44436ba4a6815b77e1c6180a7ad4b06948ee557

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cba7173f41d79b3713bf866cda71cc6847231cd7dff2f68853f5736eb8ae042a
MD5 960ccefbd962948ed2ab721367adbcdb
BLAKE2b-256 8721dc56c91a5ad7081184d84716763fd49c6e796c974e4ac4f7ea0247d4c5d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 ceaaffcf9409379eeedd38b285b65c6c555c243f268a2482656aeea7522f52eb
MD5 590763ccfc2972c19bffd6fe27e0094f
BLAKE2b-256 149bfe2047d2b0f63e4daf6ecb1c57a8c36c854e54bb5f6da5490b60653c3e70

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp314-cp314-macosx_10_15_x86_64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp314-cp314-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 e118ff264df4b989e2510625c7e5a32626bd46d6a031bd6858d487c081600631
MD5 c17141a8cf85258b5ad44b7cdefd3347
BLAKE2b-256 18e6699ceba11ed9e63dbda0f6f7ba269af91f566bb5a1b94be014c6bf0ba710

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp314-cp314-macosx_10_15_universal2.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: ultradict2-0.3.0-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 402.4 kB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ultradict2-0.3.0-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 622a1abe515a60f4be0d96914d05a778a615ca253ae4f4c84d9be764f7dee645
MD5 9ca6f3e4afee5b99f02f33deff5dc699
BLAKE2b-256 eeb9a78ce48e9f0bf881b0a5add267ba26d99ac96647012a0ac0cc06f809478e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp313-cp313-win_arm64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: ultradict2-0.3.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 417.3 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ultradict2-0.3.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 803ad797053b8d0f069069e907a2fdda5b9c15c33ace61ec47771c063b96b57b
MD5 f3492b95d85c30ac075d72f46552e5c6
BLAKE2b-256 e6cd51e55aba992487773cf8d224478844c088b4d364b8c0bbbd432abd9c14cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp313-cp313-win_amd64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp313-cp313-win32.whl.

File metadata

  • Download URL: ultradict2-0.3.0-cp313-cp313-win32.whl
  • Upload date:
  • Size: 399.7 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ultradict2-0.3.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 2e9a21b0d95dfff6755d0910950d8b67620dbc3c24c16adf84f23aac9cbf5471
MD5 9780be8f418009f03aae557aa4dcd846
BLAKE2b-256 bc370df731696b1a031da18e8f9d5fa8c3fe283bf0e4810a734917d3575e9cff

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp313-cp313-win32.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d75f191dbe1bfac4e69355e7de3caf8df0290c6789a9154bd1f3201baec6e985
MD5 7ff6f84dcc5637fb5cc17fd022367c71
BLAKE2b-256 05c54697b49e8e2256ce270e594036fb92210eb99722855d1de792416487685a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp313-cp313-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 8fa278a8f4f51cf7a38c8ae94fddf7721d449b6e07ac09be291b1789c538c379
MD5 ede27d7b8e25c0ac3acddd869271e18e
BLAKE2b-256 851cef3ca3b9c3396090f341c53cc58d5c07d5bab433c6d8a4dae5a6efc079a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp313-cp313-musllinux_1_2_i686.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f261e5bdd4c9b2d0016c8184841b2286a4b2ffbe29a8914db2f93beea63d7075
MD5 01cba94e72867b243f18661fc5d8502f
BLAKE2b-256 68068525076f1ac98bf1fa049dde5b385020c588d814c25ddda6da4d41bd6685

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp313-cp313-musllinux_1_2_aarch64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 eeb2be5948dc752b8507760d2c56248ddba32abbb08198bcbcdb57c2ea452cf7
MD5 6a61d16e5a1a1f83e766bb874ea88299
BLAKE2b-256 608227d989bb805900a9be05a7dd2ff5ca599474213493fb395b1544aa5d2c56

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 30bd238a3c531ad247e472500b059dd89db5526558b3cadec8d6bbc82a62f394
MD5 084e460cc1b8440989e4ed65af7200cd
BLAKE2b-256 ce07df33a867eed54b785913c75103ac8286b44905a6e8e136945414d7a69373

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 422601a6bec51477f64abc9cf48c3eea2f0c365116fe6cb95945eee7d8f1382d
MD5 68e6c1899d79d2b72966dfde409a399f
BLAKE2b-256 47e28906876a66416fe1aedb975d418c3931c7f52523e992c37158bc5808d4e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8d7665f10189dacd9949132591af48999819b01200e634a59bb7af4a5e41ad85
MD5 d58ba62b4463ade7a43bd86bfad36456
BLAKE2b-256 54b4dab6a6817eb5dea6b823367a2d33a6c1189eb5d5e057b2b7fc7a31482804

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 f7374f01bce558371da637b47147c3dc3d60c93bb73277cb5598a20e8352d24a
MD5 9f4f275f25f67e8d70398c86513b2a68
BLAKE2b-256 d2cb1b0bf627ce079dcf4c67fe88d6df178f31b0e2ab4035f9294b36f0e46c2d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 6f6950195118a90350459fd2ba0f00acd385a44592ff1cf344f6db3ed9aa727b
MD5 99450d57e3048cd44a890e7a83334842
BLAKE2b-256 957da42224e62f58d9dcb7d88820b67658b59e5e0e2fd501f4e8d3532da19eca

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp313-cp313-macosx_10_13_universal2.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: ultradict2-0.3.0-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 402.8 kB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ultradict2-0.3.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 39ef497ec193eaf8ab5c8fc44a00f1a48743361907983b9b2d96c91cbaaaa2d5
MD5 d593f6a9581b57a583aee3fa8ce6dccb
BLAKE2b-256 ab94c6b80ddd852d18bac19d2d6187ecaea3fafb14f77a61cfe0d4653aa29d61

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp312-cp312-win_arm64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: ultradict2-0.3.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 418.3 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ultradict2-0.3.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d919e7532d5b5ec0a7d33e673a5ed8995e9850c1155d82a631959a1064d61130
MD5 a5fe058ab31e8d6d79d5ce3072d36be3
BLAKE2b-256 f723f5defe9f0fa5cc66ed7af93b61e65416f62a964fbbe55415bb4375c31746

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp312-cp312-win_amd64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp312-cp312-win32.whl.

File metadata

  • Download URL: ultradict2-0.3.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 400.0 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ultradict2-0.3.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 1c50abac4b720a8986f756d206afcf29d468f05651ed70b879a44e83d017e5d7
MD5 5d919aa5d0159eecd27056677567522b
BLAKE2b-256 e6c27b56881994ef71a907d491bbfd5e9cff78243c256caf3ee8bb9ae4cdae68

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp312-cp312-win32.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1107414c51565d1e446c1e0704e8cf6ec70cc5a915b3c28ce097dbdb783d0566
MD5 9b9321f40d37bb908dc44fe9b0046e71
BLAKE2b-256 35b0eeb23a1afcb7f32966d1bdc6984b01bf5d2fa6b9c46c8d4ea454ae07e072

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 e9544ce8ce9d21826aad2e1af69d9c64f0fc47385d00697b00ec76622cf93685
MD5 217c0fb2fdb80232a1f7722ace2ce170
BLAKE2b-256 cc9f0f23f070b62a7c4e1c3f63881fa06a311c6c6a93ae863e6fd6af62e8e58a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp312-cp312-musllinux_1_2_i686.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 85a445b0c8ce95360c9b58515d430ace57521bfd0dd79fee5e0589b810103bda
MD5 892912055cc98e64d899d4eb6981d9ea
BLAKE2b-256 37b9b86b08a8fb27fad52e6d2c7ddc37aaedac4d1172abfbfe9bdeaa404ff656

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 63c272314113805ab9e4008294775b104d8a1e829053861a769ff885dc6452d2
MD5 d54003662d88f39a3f8f13b149323eb7
BLAKE2b-256 744f4a72d0f88d9274504a8e13a1cb37268ee80605b0a80a462c39971f6cf32a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 804de4eb57339c34c39501054d08c3059ae1a55f25309abc72755ceef4938cac
MD5 a645614bca5dab7fc75d8fe6661282ec
BLAKE2b-256 af6c6c4aec4dbcd5d3ff63f6fc2505a0c1bedbf80d39f8d284e4135ad46cad05

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 a6d27c005ea105df99403b55a91978148d1d5cb25e19875045cc774cfc3c5042
MD5 177f14dda0fe24b8d4a7c4d00615a753
BLAKE2b-256 396130406a58a7efa065f824e5954c9492ed630308ad76f57c10eaba1390c1a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dd279479dd3c393a24ab2d5e1e0501479afae8fc41a0d208c7e8f960514b3cbc
MD5 31276da3edf1d25f692d8a2e12a8fa30
BLAKE2b-256 93e54bec22725e645cdc3924849264a2ebf2a379c8fb69a51b5a3540fc78c030

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 5252409c394ae8ec1f39f4d044fb7a1eecb3b003a62abedaac323e5e2a336469
MD5 3afcc25f100bde7d93af26278413536b
BLAKE2b-256 cb9e499b01fc85b540294ccc022bdd7d9c5166df1cecafd8731a3efeac45194b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 f3ab9943000556e56f9e63bc59a339717972a4f75b215103c927bb1d974869c7
MD5 d2177cdb5f945924e90a29f95abca358
BLAKE2b-256 09c6da14ffd9eb90c15cc30ae6ca4f30a75851528b91c2501a5f00a8ffcf0226

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp312-cp312-macosx_10_13_universal2.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: ultradict2-0.3.0-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 403.2 kB
  • Tags: CPython 3.11, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ultradict2-0.3.0-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 a0afb3e16625316821ee96b4760fddf19345857824848b19a0120bc98b5d22ed
MD5 324236655e64ac76f5cfc6f64ec250a7
BLAKE2b-256 8aa2cef4cdd7f67125becaeb402ad12ccfe920d40cb6147cb1bb1be99828eea1

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp311-cp311-win_arm64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: ultradict2-0.3.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 418.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ultradict2-0.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 751e2812902769c078e25c813d90507ec621138e19e252eb06a17722fca8098e
MD5 93c89d1fed397228df0773d1cbadbc72
BLAKE2b-256 329d6ee90bedc95e21d1fa79a46e9a0498fe8aab777e491b382e93b29506e053

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp311-cp311-win_amd64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp311-cp311-win32.whl.

File metadata

  • Download URL: ultradict2-0.3.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 402.1 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ultradict2-0.3.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 733f0cf7596efb97ace6301b7e0ad45228b6ff1f872cdb507e1ee179cb7bb5a3
MD5 b5995e47ee76cecb8ccfa38c9c1785c5
BLAKE2b-256 3031179d654ee401b59b04acf75f00d7bfbc9730e9c05b425ce40d25a84f3538

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp311-cp311-win32.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d32ba42f06d54ef2540f952138d03abd25c25909f22f7b164214a94f5e90324b
MD5 41a09ae3f34d8a68747ae22d91a38f7c
BLAKE2b-256 2650e90e9c869a69090a6636879875ce26491eb5b5e02349431267549cf83cab

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 884dbe855f07fb242238050256c3a561269d3c5cd2628fab62d687762ab34f0e
MD5 c0b8ed785aa7e85f92d1c493727e86cc
BLAKE2b-256 bec4da45b8a2a11497545c57d46c8435ddb81c1c5de6643229a4a344fb542c4e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp311-cp311-musllinux_1_2_i686.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 177cb8b51d85be5381b603785ea74faea01bda81aa67229f4bf67e7e8095a90b
MD5 8caa3c7b0d521ef13bd0afc402dbd857
BLAKE2b-256 ee70efba587b552da1c13d18de6dc59f7904a33fa850601b2b0ac972a19acfde

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp311-cp311-musllinux_1_2_aarch64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 154ccb1ead130e1b991b3cc46ccd6ca11af283f4fdbaad3895543704ebfc467c
MD5 5f9c0ca1023b160d0486cc8aa212e33b
BLAKE2b-256 91aea899bbf224a79f17d8f5594e6645ae7f918c0cd1c3eae0be079464d0fffd

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fadd9139a9e380c1557dee2391ace9af4279bd0d2fce953636fdda9eee67ef84
MD5 95504ac98d6a4329a7d2ae3bae3a3ad5
BLAKE2b-256 002eb03931dca9de7a4515ba83c23af174470798e36d6e2bd4264f9ba688a28d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 663163aeda5d9c7aeb72b9e8cb95778ca0e409ff0077d178629f692820457496
MD5 01ecb853f55b8fa5a04c9fd7d5dff6d4
BLAKE2b-256 242cee9a3902acc6027e95921348fcf0e1c334d3ddc5adf387b2d50181423cac

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 509a901a1760995bacbbb51556cfb6ead6f0f050d913ab56ba8fe0b7a38a6b04
MD5 2b582a138c5e7368e25f08bcfe7a967e
BLAKE2b-256 54d5c81012ef40f53bb4a235cd8ad4a833b9b39a73cae1657b809edec6f177d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bca2758e1c1494b92d6d66e42b72b96e054041891dac55cac70005f4812b1654
MD5 bddaabe62ee728caa0885f065707115e
BLAKE2b-256 d6f57222e262f09b145fd9938803220c11490dd081aa289d58b60e1b62fef8d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultradict2-0.3.0-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for ultradict2-0.3.0-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 00d0427ab1a9f8c15857940e32c4cac1729a6ad80515e91f69710e13cede9e82
MD5 328bfe2c482dd11518907d73bd8697eb
BLAKE2b-256 b0cc8423ef846a170c7c80ee53bf0b8c99af6fbfaa403fc17b93c650486d8376

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultradict2-0.3.0-cp311-cp311-macosx_10_9_universal2.whl:

Publisher: on-release.yml on mvanderlee/UltraDict2

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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