pypocketmap - a memory-efficient hashtable for CPython
Project description
pypocketmap
NOTE: this package is in beta. The current repo only contains implementations for string-keyed maps.
A high performance python hash table library that consumes significantly less
memory than Python Dictionaries. It currently supports Python 3.6+. It is forked from
Microdict to remove the limitation on the
length of string keys, and add utility methods like get
and setdefault
.
It also has a slightly different table design, making use of code ported to
C from abseil-cpp.
Benchmarks
The latest charts are at https://observablehq.com/@dylan-burati-ws/pypocketmap-benchmarks
Installation and Building
You can install using pip: pip install pypocketmap
.
pypocketmap is tested to work on Linux, Mac OSX, and Windows systems. You will need GCC 7+ on linux/mac osx systems and Visual C++ 14+ compiler on Windows systems to build the package. For the best performance use on a 64 bit system.
Usage
The following code snippet shows common uses of the library.
>>> import pypocketmap as pkm
# Generates a dictionary with string keys and signed 64 bit integer values.
>>> d = pkm.create(str, int)
>>> d = pkm.create(pkm.string, pkm.i64) # or explicitly
# Works just like a python dictionary, although insertion order != iteration order
>>> d["a"] = 2
>>> "a" in d, "b" in d
(True, False)
# `get` default value can be any type
>>> d.get("a"), d.get("b"), d.get("b", False)
(2, None, False)
# `setdefault` default value must be an int
>>> d.setdefault("a", -10)
2
>>> d.setdefault("b", -10)
-10
>>> d.update({"okc": 1997, "yhf": 2002})
>>> d
<pypocketmap[str, int64]: {'b': -10, 'okc': 1997, 'a': 2, 'yhf': 2002}>
>>> [k for k in d], list(d.keys())
(['b', 'okc', 'a', 'yhf'], ['b', 'okc', 'a', 'yhf'])
>>> list(d.values()), list(d.items())
([-10, 1997, 2, 2002], [('b', -10), ('okc', 1997), ('a', 2), ('yhf', 2002)])
>>> len(d)
4
>>> d.clear()
>>> len(d)
0
How it works
The C parts
The map part of pypocketmap is just a C port of abseil-cpp's SwissTable, which is explained nicely in this blog post series: https://www.kylematsuda.com/blog/writing_a_hashmap_part_2.
The memory savings (pocket part) are partially due to an optimization for small strings - when stored in
the key or value array of the map, a string is a 16-byte packed_str_t
. This is a union:
- contained: the data fits in 15 bytes, and the length and sentinel bit
1
fit in 1 byte. - spilled: the struct holds a
char *
pointing to the data, and the length and sentinel bit0
take up the remaining 8 bytes.- 4 bytes are padding on 32-bit platforms; 8 bytes end up unused because the longer lengths would fail to allocate.
The C++ standard library and Rust crate byteyarn
do something similar - I learned about this from
the crate author's blog post: https://mcyoung.xyz/2023/08/09/yarns/.
The Python C API parts
The file str_int64_Py.c is the only Python module definition which should
be edited. That file and abstract.h use C macros and typedef
to fake generics.
Many Python-specific blocks in the former file are also annotated with custom template!
comments, which
I came up with for this library's Java equivalent, pocketmap.
The template!
comments are the reason for the nearly equivalent *_Py.c
files in the repo. Essentially,
the macros and comments implement the following traits for the key and value types. Since the
"implementations" are just inlined into the files, this is prone to errors. It is probably doable in C++,
but for now I'm choosing to add tests rather than convert the C code.
trait Value {
type Packed;
// the `&` operator indicates something borrowed.
// physically, both Self and &Self can be a struct { char* data, uint64_t len }
// semantically, &Self means that the data field is readonly, and its not safe
// to use the pointer once the source of the borrow is possibly freed/dropped.
// ===
/// Converts the possibly-borrowed value to an owned value independent of any
/// PyObjects and stores it.
fn p_set(arr: *mut Self::Packed, index: usize, elem: &Self);
/// Frees anything alloc'd in a previous `p_set(arr, index)`.
/// No-op for everything except spilled strings.
fn p_unset(arr: *mut Self::Packed, index: usize);
/// Borrows the value - the caller is responsible for making sure `arr[index]` is
/// set, and stays set while the returned &Self is in use.
fn p_get(arr: *Self::Packed, index: usize) -> &Self;
/// Converts the Python object to a C value.
fn from_py(obj: &PyObject) -> Result<&Self, ()>;
/// Convert the C value to a new Python object which owns its data. The caller
/// owns the returned Python object, and should eventually either decrement its
/// reference count, or return it as the result of a pymethodfunc.
fn as_py(&self) -> PyObject;
/// For `repr`.
fn fmt(&self, f: &mut _PyUnicodeWriter) -> Result<(), ()>;
/// For `setdefault` when the value arg is left out.
fn default() -> &'static Self;
/// For `__eq__` when acting as the value type. For pretty much all methods
/// when acting as the key type.
fn eq(&self, other: &Self) -> bool;
}
trait Key: Value + Hash {}
Not yet supported
- Automatic or manual
shrink_to_fit
- Concurrent modification exceptions if an iterator is used after the table has been rehashed. The implementation can skip elements or yield them twice if used incorrectly.
update
should work on any arg whenPyDict_Check
returns true orPyMapping_Keys
returns non-null__or__
and__ior__
operators can be implemented with this
- The METH_FASTCALL convention is stable since Python 3.10, and it should be possible to alter the *Py.c files to use it in place of METH_VARARGS when compiling for 3.10+.
- Additional overflow checking when
LLONG_MAX != INT64_MAX
or (more likely)LONG_MAX != INT32_MAX
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
File details
Details for the file pypocketmap-0.0.1b0-cp312-cp312-win_amd64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 90.1 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ff7e9000d78cd7facd7ad78e5eeba83b9870a3f63a9b058b4efccb6974441d8a |
|
MD5 | 14b5af1c718128100387c9bd764c15cc |
|
BLAKE2b-256 | 2e1f0beec75a8511cb4ea4ee5ce44fadfcb8466243046452e545473b00752c5c |
File details
Details for the file pypocketmap-0.0.1b0-cp312-cp312-win32.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp312-cp312-win32.whl
- Upload date:
- Size: 87.1 kB
- Tags: CPython 3.12, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c91e2b3919a71ad52bfdc66f2408ba3d78612f92acd3bff05d6cc196843be5cd |
|
MD5 | aa70602f2c5eef03d8f96a464d41ffde |
|
BLAKE2b-256 | 5cc91c3f4611af3005f895d3ca2db5f726519f374b5c376e6b7b408ed4b8969b |
File details
Details for the file pypocketmap-0.0.1b0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 406.4 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 187cdea0254d461ad88e352e24feff0d0d6216331d281f7e849033ea7b567cf5 |
|
MD5 | 01ee1012e6d57b336da43af859c0706b |
|
BLAKE2b-256 | 837f946d1a74bd05726dbae75e024d2234a060dfb6ea2eab36896b0f250d6b2f |
File details
Details for the file pypocketmap-0.0.1b0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 394.7 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 58156a063ba604507be70fcc6f76db5aeb9695b727008ee4649a16dffd9981f5 |
|
MD5 | 09a37d285f5007e902b90f53573c2074 |
|
BLAKE2b-256 | a1c6ede11b469c9a1140c79b23b7494d21ef35d3092f4120aa62f21521fabb9e |
File details
Details for the file pypocketmap-0.0.1b0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 341.8 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 83004ef1908821440f3c3a7a64176475389706b6bb9d580a516bec352780f32e |
|
MD5 | c83a577694529c0ec2d4bb26d1e0f8b1 |
|
BLAKE2b-256 | dc0401e1de2db9dee6c6a8845ba95dd6592eae788a0c9ccd80ee487fd662f0f8 |
File details
Details for the file pypocketmap-0.0.1b0-cp312-cp312-macosx_11_0_arm64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 77.4 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3219dcf8f3be55b408fa4c6878b7d369d0ac42c7fe99960224bdf80583a6a562 |
|
MD5 | 44bccb5c1f96aa72d10c2afb38078e38 |
|
BLAKE2b-256 | d21f6cb7602195bbf21877d24085a99629d9b77664e5197bdd19bf6ea2e6580c |
File details
Details for the file pypocketmap-0.0.1b0-cp312-cp312-macosx_10_15_x86_64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp312-cp312-macosx_10_15_x86_64.whl
- Upload date:
- Size: 77.6 kB
- Tags: CPython 3.12, macOS 10.15+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a7d7b70aebbc522fec263f612385c5d7584abc734e7196aa74a152dfda5412b6 |
|
MD5 | 66387a677f9ae8316c69312cdddf48aa |
|
BLAKE2b-256 | 3b2b5176a90e4ece5811bcbec228065e8c66c12ceb49cb91c72d66f4a5f6f08c |
File details
Details for the file pypocketmap-0.0.1b0-cp312-cp312-macosx_10_15_universal2.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp312-cp312-macosx_10_15_universal2.whl
- Upload date:
- Size: 129.1 kB
- Tags: CPython 3.12, macOS 10.15+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c539e6fd096c77e1cc154af48eeba3c6c999dbb2676c27208d05d27dbff6843c |
|
MD5 | c0b0ab92dac3a59e1bf04b976d56d079 |
|
BLAKE2b-256 | 954dfe1840f0d8dc4c60ce43150c5c93316c4fbb161dad2fb2859597becf293d |
File details
Details for the file pypocketmap-0.0.1b0-cp311-cp311-win_amd64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 89.8 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 50907edc83a0e87c90f114786fcc64e2e4c3c9f8b821cd2294309ae2b8d87ec2 |
|
MD5 | b68a49bb9ef3feda5abfc918341d9a4b |
|
BLAKE2b-256 | ed7d29fb0c55f2dd1b29ac50a94190aa5bb46e0c09438fe3dc5ee76bd6d23b72 |
File details
Details for the file pypocketmap-0.0.1b0-cp311-cp311-win32.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp311-cp311-win32.whl
- Upload date:
- Size: 86.9 kB
- Tags: CPython 3.11, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 341cc239a64fbc453c543e97e4ab75b2f6add3e5de8a46a9c3c4abb967556973 |
|
MD5 | a9180d9569eb444a1ae3ba6a1dc91f72 |
|
BLAKE2b-256 | 39a0b6c9c61ef51e6f84a3ebe1893672c752bc24c5fcf556d9d2e629e386c2af |
File details
Details for the file pypocketmap-0.0.1b0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 401.5 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d36d500c5d73103850131e2d84119db1533ce44ccaa638ad1025cb62f627864d |
|
MD5 | 9c87b4ab439fc4bd4b2dc1d4b81a6a75 |
|
BLAKE2b-256 | f2715606c1763c56bd888a2b5faf5d8428663033ceddfb7bcf4039c9aa2c40b4 |
File details
Details for the file pypocketmap-0.0.1b0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 391.2 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 062dba3cb2657b0df440879185d3d79e2f5646649fc4c8d47d8177f7a9fb1362 |
|
MD5 | abc2ba6411564853001b9ee40ddfc893 |
|
BLAKE2b-256 | 1d7ff16c33ab4a7b77a09578b1483cf523e5079e6aded5536fff95ab4ba44bde |
File details
Details for the file pypocketmap-0.0.1b0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 338.6 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ddee47c9d52c97d00c143361c84f5e8747852b20d9b71371a865d888a6670486 |
|
MD5 | da8cf82371fe21d5086ce05de206abab |
|
BLAKE2b-256 | 458574bbfbb8045e9555befc7151e98077348996e327e7b7b4b3cb2c159decb6 |
File details
Details for the file pypocketmap-0.0.1b0-cp311-cp311-macosx_11_0_arm64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 77.1 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cf1b46446d6885e1967c75bfef4738f12c56bccd51962a09cb262f6c5297c74a |
|
MD5 | ff456b9598e8feb4afa55b29dd46955e |
|
BLAKE2b-256 | d39a1c2e6881e3df4d1168398d73672bf79806874dab4ecff5472738fc966891 |
File details
Details for the file pypocketmap-0.0.1b0-cp311-cp311-macosx_10_15_x86_64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp311-cp311-macosx_10_15_x86_64.whl
- Upload date:
- Size: 77.0 kB
- Tags: CPython 3.11, macOS 10.15+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1506ecfb3c447075f389bc2989e671af71861fd3195e2f7df64c284681c1ae50 |
|
MD5 | 4ad34807e3cfc205412da6a5eb3dce43 |
|
BLAKE2b-256 | bc87bb430fac47583f94b2c594b34dd6a1daab9735b8a618156560f0c5528e01 |
File details
Details for the file pypocketmap-0.0.1b0-cp311-cp311-macosx_10_15_universal2.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp311-cp311-macosx_10_15_universal2.whl
- Upload date:
- Size: 128.2 kB
- Tags: CPython 3.11, macOS 10.15+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 266110e236f52c5e9653a098a8dd7a6efe5f6e298e0c5e253be72f51f76deb48 |
|
MD5 | ac2e6e93cd6e293dd7fbd2c7d176eb1e |
|
BLAKE2b-256 | c5a8808c81d42f64752a78fa34f521578868c625b48d98240d26f93cbb1ec752 |
File details
Details for the file pypocketmap-0.0.1b0-cp310-cp310-win_amd64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 89.8 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f2eb2968c34078529f42baec3d041e0868a38ca15a71b0e173bc6f4ce9d5fc90 |
|
MD5 | 6a2243c43865f83a53875c2eac994f32 |
|
BLAKE2b-256 | c4b75f4754d71a41d57d13d93f01d9dc7a723d5f658da5a0c2c2d5b6c409609d |
File details
Details for the file pypocketmap-0.0.1b0-cp310-cp310-win32.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp310-cp310-win32.whl
- Upload date:
- Size: 86.8 kB
- Tags: CPython 3.10, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 86b1fbbfe6b2fa15bd5039986a298b712d54fdf2c7bcdd44ea99a16c08324e0c |
|
MD5 | 0ff59591f7c2f8b0c4c31d8eb1ee25a9 |
|
BLAKE2b-256 | daa0198e47396e7b99538e64ef7b35b03f879dbd5e4838529e8ad148bf9af2a7 |
File details
Details for the file pypocketmap-0.0.1b0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 401.2 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 83a6ad411bc5ceea706f3eb415f26603fdff40e44015c2ea45bcbe2c50361fe2 |
|
MD5 | 25f37caf4aec31dffc12f6c273738e76 |
|
BLAKE2b-256 | 9d69c908c33e10de6e4edeb9538ef8a999a9c9407c1c10362c90cac0b05b7cf6 |
File details
Details for the file pypocketmap-0.0.1b0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 390.8 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 67260a1933a960662d798f83882e95a3b43b3e647a86fd1ec7234916e19d1b15 |
|
MD5 | 7898fea093f319227c84bb1a2fabfd3e |
|
BLAKE2b-256 | 86cfc74bce7c02b9cce7a4261bd7f31c42886c5f25d6ffb20a01bc922e7559f1 |
File details
Details for the file pypocketmap-0.0.1b0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 338.1 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d47327b6179907d8251d44e8b018025316522d17cc0cc11b0e4c7fd284b48764 |
|
MD5 | 8729c27391cac1fd090d62a4d0831185 |
|
BLAKE2b-256 | 055ee41f27887408f2262018b4584c7e959410de1bd0c298423ad255b6534b4b |
File details
Details for the file pypocketmap-0.0.1b0-cp310-cp310-macosx_11_0_arm64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 77.1 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e8528ffcd80bca7f9a2d8b0da063d97b36a2d091ffc6d241d48d8afc9499ca89 |
|
MD5 | 1fb9786a2404b974e76ace4481e80738 |
|
BLAKE2b-256 | d4d3ce055b554b0c2fcacbf76465aff733b33c63254f7ee3f887b925966cc812 |
File details
Details for the file pypocketmap-0.0.1b0-cp310-cp310-macosx_10_15_x86_64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp310-cp310-macosx_10_15_x86_64.whl
- Upload date:
- Size: 77.0 kB
- Tags: CPython 3.10, macOS 10.15+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ea2c697ead928ef5c8d69ce54b4d1465970c8ff8d6070663831a781f71d6bf02 |
|
MD5 | 6f0e4269bf162faacd2e0c71a1b5969c |
|
BLAKE2b-256 | 1f2492758a8edfacf5078a496457e9c253f6f5583cfa8d4b3f283e25db96c1d1 |
File details
Details for the file pypocketmap-0.0.1b0-cp310-cp310-macosx_10_15_universal2.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp310-cp310-macosx_10_15_universal2.whl
- Upload date:
- Size: 128.2 kB
- Tags: CPython 3.10, macOS 10.15+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 521cc4034258805d7451de228b599a5f3b3282db0ce183410b27debc19a631ef |
|
MD5 | e840dd3ee678d9b64d9f7437de74719d |
|
BLAKE2b-256 | d3eb7537508bcf5d9808ab9cb2c52c154698e1bd5c8c7ea52065cdc07817713c |
File details
Details for the file pypocketmap-0.0.1b0-cp39-cp39-win_amd64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 89.7 kB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 24e44ebbd35d74266e8dc795700a0b09b8ff9c4a0219fdeac3b2800df3376ad7 |
|
MD5 | e71f0327529af79ccaa7b83d19ab36ae |
|
BLAKE2b-256 | d3fc45ab35e41c9f9e174ac2d2e674d9ed088690802056716307bfeb810ba2b3 |
File details
Details for the file pypocketmap-0.0.1b0-cp39-cp39-win32.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp39-cp39-win32.whl
- Upload date:
- Size: 86.8 kB
- Tags: CPython 3.9, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 35458293a5d07cd13112e983966647a97eb5b80877c91e6e6dee8bffa5b6fe8d |
|
MD5 | 8c8fde404231a06ddcfe65e1af2ef79d |
|
BLAKE2b-256 | 5b82baa5ed403ff7e5b60414b85bfa262bc22d69c06daab3f95ceecdb1c55a37 |
File details
Details for the file pypocketmap-0.0.1b0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 400.5 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 15ca47a2bb95bc8d328eff50a2ae2a3c6200200c89f00c4597ccd88ef6e98303 |
|
MD5 | 7e520c9f88381790974ce0612f541ee8 |
|
BLAKE2b-256 | 83784afb5bdfc8ee2edfa19b964c41fff08ef454a90aabf95e843f2279223ecc |
File details
Details for the file pypocketmap-0.0.1b0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 389.9 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c41e923d8efaf3069d7ddb8475369134eeecdfb4859a88951ce6da7649fb36b5 |
|
MD5 | 5b54e626d0d4848415571e85910df6ad |
|
BLAKE2b-256 | 011e9d59ae5be82f1e6aad6976508543518be352d5d5a1722b313cf23fb4dd16 |
File details
Details for the file pypocketmap-0.0.1b0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 337.5 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 833f5de36e49611d8119e1104df5a50a9b4a0c4a85eb1668891698678ccca577 |
|
MD5 | 1896a4f972c3594ce2e875c33e178aab |
|
BLAKE2b-256 | c07506fddc9410d5425fe93b934d4392d7aea40846bccf92fd7663dcb5b09b22 |
File details
Details for the file pypocketmap-0.0.1b0-cp39-cp39-macosx_11_0_arm64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 77.1 kB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 45af8dcfc4cfbfb032614669f5f0e3e499a7f00151d5a16d39b47795c754fefd |
|
MD5 | b29531dab56ec8ba727e24cd242c7523 |
|
BLAKE2b-256 | 49cef579313542b94035126cae95b00bbd76f7b3e9df2563f6b7c6e2f0cde951 |
File details
Details for the file pypocketmap-0.0.1b0-cp39-cp39-macosx_10_15_x86_64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp39-cp39-macosx_10_15_x86_64.whl
- Upload date:
- Size: 77.0 kB
- Tags: CPython 3.9, macOS 10.15+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f842c8b8c663219425471b63ee98acef559465107d35c062671ade2d5318032 |
|
MD5 | e1730ce7be5c24a406eafa362847629a |
|
BLAKE2b-256 | 6f1586866fb2d2946c95f8afbeaa5275e870747cf62130c033469419b75af4d1 |
File details
Details for the file pypocketmap-0.0.1b0-cp39-cp39-macosx_10_15_universal2.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp39-cp39-macosx_10_15_universal2.whl
- Upload date:
- Size: 128.2 kB
- Tags: CPython 3.9, macOS 10.15+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a385eca576af08f72e5ca1b0d0ebd64629f223416becf5d2560b872a7b6e95f |
|
MD5 | 5e5988f82c8eed264bc3ea700863770d |
|
BLAKE2b-256 | af35338a522a35525b3409bf194f1d503f739dfefad0e2fdadf3cb9432f3bd06 |
File details
Details for the file pypocketmap-0.0.1b0-cp38-cp38-win_amd64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp38-cp38-win_amd64.whl
- Upload date:
- Size: 89.8 kB
- Tags: CPython 3.8, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4a1431162b2126ac11f44eb744195290d8dfabe3fc7866db27251cd3d21aa5c7 |
|
MD5 | 23ee11b218a5996f6e5646a77901808d |
|
BLAKE2b-256 | 14aedaf80ed6f91952c12d16b38afbee06c23ff937ee8f563a2a44f6520b3362 |
File details
Details for the file pypocketmap-0.0.1b0-cp38-cp38-win32.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp38-cp38-win32.whl
- Upload date:
- Size: 86.8 kB
- Tags: CPython 3.8, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 469f1e800764d71c0e95307a048e87a816fc40996ca339a97a86640eb994d273 |
|
MD5 | e105522f86a0fe9c233c798985480650 |
|
BLAKE2b-256 | b67ce5dca09d7c505e5d8ed847d5ed34b16bd500561e95b1419de25b8a075a9d |
File details
Details for the file pypocketmap-0.0.1b0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 405.6 kB
- Tags: CPython 3.8, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b37eca4eede3d828808a6ff9df76c7f33339b7f9c9e82bc676b71a0a7bbf6188 |
|
MD5 | 697c3932afd395b85e3aff160605ae5a |
|
BLAKE2b-256 | 684a3f22010fe12d05978a17255140719dcb5b897026d7738f1b4d1b7b100893 |
File details
Details for the file pypocketmap-0.0.1b0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 394.7 kB
- Tags: CPython 3.8, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc406ea23a99c1ca38f1a2dbc0976d8277f7855ec860d8be5a907843f9cbe194 |
|
MD5 | 2ae49e2121b608d3371171fdf1b63960 |
|
BLAKE2b-256 | 81d50966011b7449da456d0018db744e8131dc850a9a514c1bcd994ceb79beb6 |
File details
Details for the file pypocketmap-0.0.1b0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 342.3 kB
- Tags: CPython 3.8, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | de636a5e890389056ff3e07c8b38d92299268402505c01ec495eb34ed32a7c80 |
|
MD5 | 1409453369ff086fef68ec8c46a47721 |
|
BLAKE2b-256 | d59eb4a5b105af6f084a9c67b2bdf7513a36d7236766c277610506ec51b33360 |
File details
Details for the file pypocketmap-0.0.1b0-cp38-cp38-macosx_11_0_arm64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp38-cp38-macosx_11_0_arm64.whl
- Upload date:
- Size: 77.1 kB
- Tags: CPython 3.8, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 49ff787d5fc95d14b59007b46e062169ccc988889707646e95704bca6d41b229 |
|
MD5 | c3e7e16fac83d858e21e2a29bd19a8be |
|
BLAKE2b-256 | 0c245597457eca58452142a824d7d47d91ef1a30911d27692a294c51b015afc9 |
File details
Details for the file pypocketmap-0.0.1b0-cp38-cp38-macosx_10_15_x86_64.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp38-cp38-macosx_10_15_x86_64.whl
- Upload date:
- Size: 77.0 kB
- Tags: CPython 3.8, macOS 10.15+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51655574d8d2989dd1e33cd7c9419c00d38f772c2e421005bd6c04bdd4370ba2 |
|
MD5 | fbc9e12a4789f0a92a7645c9e18acde8 |
|
BLAKE2b-256 | cbfb6265f75b9e22a0ef5cf92398dbdf54394c8f74051a2375526f9afef36378 |
File details
Details for the file pypocketmap-0.0.1b0-cp38-cp38-macosx_10_15_universal2.whl
.
File metadata
- Download URL: pypocketmap-0.0.1b0-cp38-cp38-macosx_10_15_universal2.whl
- Upload date:
- Size: 128.2 kB
- Tags: CPython 3.8, macOS 10.15+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1369282014e1662b6d4bb4a671ed5843d0d19c8d57516bdc059a57c4ea0b3c9a |
|
MD5 | 2fa98eb5aa336ae58ea92dbccc7177e7 |
|
BLAKE2b-256 | 74abf3462e5d41183090f1a3b265e2de0b76d7a822aacac060b93e6a00d3d630 |