Skip to main content

pypocketmap - a memory-efficient hashtable for CPython

Project description

pypocketmap

NOTE: this package is in beta. The current repo contains implementations for these key/value combinations: [str, _] and [i64, i64].

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.int64_)  # 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 bit 0 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 it's 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 when PyDict_Check returns true or PyMapping_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


Download files

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

Source Distribution

pypocketmap-0.0.1rc1.tar.gz (41.1 kB view details)

Uploaded Source

Built Distributions

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

pypocketmap-0.0.1rc1-cp312-cp312-win_amd64.whl (111.5 kB view details)

Uploaded CPython 3.12Windows x86-64

pypocketmap-0.0.1rc1-cp312-cp312-win32.whl (117.5 kB view details)

Uploaded CPython 3.12Windows x86

pypocketmap-0.0.1rc1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (421.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pypocketmap-0.0.1rc1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (403.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pypocketmap-0.0.1rc1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (449.5 kB view details)

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

pypocketmap-0.0.1rc1-cp312-cp312-macosx_11_0_arm64.whl (95.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pypocketmap-0.0.1rc1-cp312-cp312-macosx_10_15_x86_64.whl (92.9 kB view details)

Uploaded CPython 3.12macOS 10.15+ x86-64

pypocketmap-0.0.1rc1-cp312-cp312-macosx_10_15_universal2.whl (160.7 kB view details)

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

pypocketmap-0.0.1rc1-cp311-cp311-win_amd64.whl (111.1 kB view details)

Uploaded CPython 3.11Windows x86-64

pypocketmap-0.0.1rc1-cp311-cp311-win32.whl (117.1 kB view details)

Uploaded CPython 3.11Windows x86

pypocketmap-0.0.1rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (415.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pypocketmap-0.0.1rc1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (398.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pypocketmap-0.0.1rc1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (445.5 kB view details)

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

pypocketmap-0.0.1rc1-cp311-cp311-macosx_11_0_arm64.whl (95.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pypocketmap-0.0.1rc1-cp311-cp311-macosx_10_15_x86_64.whl (92.3 kB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

pypocketmap-0.0.1rc1-cp311-cp311-macosx_10_15_universal2.whl (159.8 kB view details)

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

pypocketmap-0.0.1rc1-cp310-cp310-win_amd64.whl (111.1 kB view details)

Uploaded CPython 3.10Windows x86-64

pypocketmap-0.0.1rc1-cp310-cp310-win32.whl (117.0 kB view details)

Uploaded CPython 3.10Windows x86

pypocketmap-0.0.1rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (414.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pypocketmap-0.0.1rc1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (398.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

pypocketmap-0.0.1rc1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (444.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

pypocketmap-0.0.1rc1-cp310-cp310-macosx_11_0_arm64.whl (95.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pypocketmap-0.0.1rc1-cp310-cp310-macosx_10_15_x86_64.whl (92.3 kB view details)

Uploaded CPython 3.10macOS 10.15+ x86-64

pypocketmap-0.0.1rc1-cp310-cp310-macosx_10_15_universal2.whl (159.8 kB view details)

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

pypocketmap-0.0.1rc1-cp39-cp39-win_amd64.whl (111.1 kB view details)

Uploaded CPython 3.9Windows x86-64

pypocketmap-0.0.1rc1-cp39-cp39-win32.whl (117.0 kB view details)

Uploaded CPython 3.9Windows x86

pypocketmap-0.0.1rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (414.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

pypocketmap-0.0.1rc1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (397.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

pypocketmap-0.0.1rc1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (444.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

pypocketmap-0.0.1rc1-cp39-cp39-macosx_11_0_arm64.whl (95.5 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

pypocketmap-0.0.1rc1-cp39-cp39-macosx_10_15_x86_64.whl (92.3 kB view details)

Uploaded CPython 3.9macOS 10.15+ x86-64

pypocketmap-0.0.1rc1-cp39-cp39-macosx_10_15_universal2.whl (159.8 kB view details)

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

pypocketmap-0.0.1rc1-cp38-cp38-win_amd64.whl (111.1 kB view details)

Uploaded CPython 3.8Windows x86-64

pypocketmap-0.0.1rc1-cp38-cp38-win32.whl (117.0 kB view details)

Uploaded CPython 3.8Windows x86

pypocketmap-0.0.1rc1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (420.1 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

pypocketmap-0.0.1rc1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (403.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

pypocketmap-0.0.1rc1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (450.1 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

pypocketmap-0.0.1rc1-cp38-cp38-macosx_11_0_arm64.whl (95.5 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

pypocketmap-0.0.1rc1-cp38-cp38-macosx_10_15_x86_64.whl (92.3 kB view details)

Uploaded CPython 3.8macOS 10.15+ x86-64

pypocketmap-0.0.1rc1-cp38-cp38-macosx_10_15_universal2.whl (159.8 kB view details)

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

File details

Details for the file pypocketmap-0.0.1rc1.tar.gz.

File metadata

  • Download URL: pypocketmap-0.0.1rc1.tar.gz
  • Upload date:
  • Size: 41.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pypocketmap-0.0.1rc1.tar.gz
Algorithm Hash digest
SHA256 b099a6a06ad71e02e67d1293eaea4e2c19e6332eda85880cb1cc5a7baa2cafa7
MD5 2fb2dcaa844b57e388c0b69b00608694
BLAKE2b-256 3b330c1bfbcc2fd2aeff8176fa102651cd5ba45b89c94562a0dbac14272c7e09

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 71e1c5a25a104c3c07a89526e9f6513272de444b213ec650da2e6609fda80846
MD5 ae8c42fccd9cc0d5f27c33cb38df986a
BLAKE2b-256 a883855b7ec7207ef43b433e854ae0e252d93d3eff6021c224330b06ca8cd19b

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp312-cp312-win32.whl.

File metadata

  • Download URL: pypocketmap-0.0.1rc1-cp312-cp312-win32.whl
  • Upload date:
  • Size: 117.5 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pypocketmap-0.0.1rc1-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 57e7482e23d6db579e82a208af4e88013857e3a3d9f7b644aa2ba2e49a17b4e0
MD5 ed452523ac79d0da6d414e74391278f2
BLAKE2b-256 2eb737ba6ed265bed9526d7baf739df29e9a364d5d62f81381a6078bc7f45051

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 540d070f415ff99869d264be4374c7791b21bd82022fafec3757d91ae95a8948
MD5 6d1e7608e704182c4f7dffd4d320c254
BLAKE2b-256 d8810c5c2d5b1b6e68a1a13c05e2dbab033d8a1e46b95481f07aaf978319e7d3

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5e8ff88c6a6ce611a6947e02b7c4aa690768c6e54dc692d953c1ddf3a00cc161
MD5 b9052ca7b3cfbfb927531eb1a7dd7a13
BLAKE2b-256 044716cba446bbdaa1e17145244c2752847939a9d943c2d0b18f2933e6f4180f

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9d63dc953b4dc4e1fe8009af645fce7a187252bd3dc074f0814a9fd8b9fdc2bb
MD5 22559099ddd9a80cbfe1a6ec155df980
BLAKE2b-256 cd124ba8ef4cd34c1b7600001ae44052dd55fe6436be5bf08b8314b1995b7bf5

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 050cb00d198ca51887ba259b7383635761fd27e1846a280b89ae0f9352282e66
MD5 4274f715b7db795b1028584d8c4c4659
BLAKE2b-256 0db8518d6e25946666eecc7ae66de730375d7b6fd0a0d30c9eee861bb2bc4d54

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 042208cfdd4f214fdd2765427d69a2d74e25fbe9102d279ecce72385cf90870c
MD5 3633d4f08f6a34d3a214436a79700bfa
BLAKE2b-256 31de89d94e163aa606f489fb7377446c530d3ef2d827b59b51ebb8b81b9051ec

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp312-cp312-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp312-cp312-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 58f142a5961287050402f50893d1effabc616d7b1e3d2c805191a7fe42fd1289
MD5 01152dc18b4932ef8bfbcad050f9aa23
BLAKE2b-256 9d0eea141f397872043ea297ddd299859a7542ff050f5d219ac3283a45f4ccc3

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 13a50613715e0b9c2240767c643333e5e658c4239d067632bd130a0791a04fcd
MD5 a85337903b4ca943f9661b4105a462fd
BLAKE2b-256 5c0fa4595f4739d25565a1e350d865eb3c65d1ffee7087fd1fed87b2675be845

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp311-cp311-win32.whl.

File metadata

  • Download URL: pypocketmap-0.0.1rc1-cp311-cp311-win32.whl
  • Upload date:
  • Size: 117.1 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pypocketmap-0.0.1rc1-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 45b71a82c6c6acfd709eb89f0ca9a0f737c05fb12a017dbaf070013260ea766a
MD5 7da1b93559e86f76b5d8b69e66ded156
BLAKE2b-256 4a4835c5286695d85a388f4cb40a988ac681ee8156f007b1387d6cc0bec132fa

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 99f70af0e35c3883fdc5b4dee72d79dff4764757d8da9a7a0929437a5d9b004b
MD5 2f82ba0e0bf81f672b421f37515ffa89
BLAKE2b-256 b5bdf5b0270afe0884c8ecfa97e12017298e8cb7dd07576e6d47593e219f661d

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3b54fb1a1ac971f0a3e4614da26a31d38719f9b0422791ac0b026cde24842273
MD5 0e91b57e25dac8020d047afad341105b
BLAKE2b-256 f73221314ccdd385505a26c7be4e1b0a515392e648a54c125e5e204ba5843cc8

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f454787b803297fa20865314e30ea292eba84d89dd0e5459cf876a3fe2481996
MD5 075d7aa6f983629877a0a95d3328f10d
BLAKE2b-256 c4e0ae21e6c53725d6f62b38163d8b2c378c5efd2b92348c8c57ae3ddaea3997

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2236d0d2fa7047058d80e66eac3cf4cddc11614d5a35f0b666505684d420797f
MD5 3a198d78095224e7fb0ba964496df241
BLAKE2b-256 bb9b7c900fc2933a13eeebbb57dc85f1c17ec8090878c4f122ec6fa0bdddfd66

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 76910370a3f38f15bf82f3f023db21a0df8db6892aba494e7e95029e9df39b4e
MD5 d5304c7a91cb834361ae9bdaf6947eeb
BLAKE2b-256 af743b021044d82359d102f354d0e032167bf7357217cb70aa2bb75f17071737

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp311-cp311-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp311-cp311-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 177f1176546ae787fc9f4b762a6fec7ea213939b24beb79eb0cf0b6801a9b45b
MD5 184fc1427d14f2de61c06f99bd419b03
BLAKE2b-256 5cfe50ea137f84ed5770e6fc8f2215ef35edafe90ef47799b9e342a9d22b06fd

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e5580e57b9be7fffaf4dd063055cb9f02b411987f9c1174fba90a564d3289fff
MD5 9baed14c29a09a3b0662c67e08e9b32d
BLAKE2b-256 c564cc72c87b47b8ebebff942bac852fd7bd5bb4f0d5e9fbc6a64287440f439c

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp310-cp310-win32.whl.

File metadata

  • Download URL: pypocketmap-0.0.1rc1-cp310-cp310-win32.whl
  • Upload date:
  • Size: 117.0 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pypocketmap-0.0.1rc1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 1ae064e04563b232a046865599b7f17aaca7a57066ab542c9ed12c0fca88ca8a
MD5 fe09270e54bc727c141b451aa89de548
BLAKE2b-256 d61e085dad876f3bbc078cd81044b5879aa7c2ee0fb15f3b58731721cff0f02b

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0f51568356506d1771d7d7929e3dd4e702599d02866db9e9a83ba920175e34be
MD5 6e28e2c4e80be00a41b7f2f040f61230
BLAKE2b-256 156ee8325ce4837639d772bb35f29f6ac42d0e4022bc22eca1f3fa1c9cef9148

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 84f5eba5ec467e4dee5996a7a2c5606b55dee6bd502ea93cd6796621e2cb9638
MD5 4736690b6e9ba65e73eac4385c93e2d5
BLAKE2b-256 7bbbc3fe82c925635e2ebbcf6abcaf0e79239896f3e8016131692da184b0c7c3

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c0fd2b7fbf6873769faa2b4cc2486f1aaf3da96cbf70cd49c01c7cd2dde68213
MD5 49f6f7740b51eb1843224e68cc5c2b77
BLAKE2b-256 2c25924dda0dc83234d1222b1b7b5c04eeb2bb41f7ae18f732c25e17ffaeddf8

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 97a9fef7dac31097bd86955d678867e52d10cf847c75e8b1b8c5e96dbdce14bb
MD5 553c7cb16e2390fdf93852dd8a6bfd6c
BLAKE2b-256 1a896bf21dd48ac4537cdc4fc365bb8c10c8136694c7f7b6e4f0db50c3dccac0

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 e74e6afc33d9a6676c9e05dbe8d661c92d3660881f8be660d554f4233810bda2
MD5 8dd9a20d0c210f349cdc89bc3406a442
BLAKE2b-256 bc6923e957e5d4214dfddf489b6eacd936271ff0bb5453f7fd1efe7bf2a3eccd

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp310-cp310-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp310-cp310-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 e500d6f616f1617e31401472f49b6be7c33d89e7ba4d2a692c15ec59498cebfd
MD5 1ddd5d50e1eadd7904dc9a3cc2497d6d
BLAKE2b-256 014346c036170c5e3eae6d5f39b981759ace0223777b6000f57241e49ef3d1f9

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1b04155a10199d504503d05f457ad1907c43134fc7a1fffec68ac16ce1b2c1a5
MD5 75826ab3afa25dbb24554b1937bf42b6
BLAKE2b-256 ebb2afaa3971b09f38af38044a322133aeac0d1c4bde8ab3315df16248673ea4

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp39-cp39-win32.whl.

File metadata

  • Download URL: pypocketmap-0.0.1rc1-cp39-cp39-win32.whl
  • Upload date:
  • Size: 117.0 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pypocketmap-0.0.1rc1-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 e0d293322c436e6e101d0873f453e98951ae4c3322dba7a6cd19240f3dcbe0a2
MD5 770cc45053c9136b2987e6786e77e47b
BLAKE2b-256 30d5f200e4a4da71874723082cd2253358dd72596aef1112ef2f3a132602e9a8

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 32567ef55d7e50acf77128b2a67ebc5072ce369f197896173b00bad865ed37c6
MD5 da4bc2a66373aab94c56bdcb2e19b5cf
BLAKE2b-256 fde0fa5261c3e9d581823a2d6a9be320091d153f435ba6433590adedc0103956

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1c8c736e0adcfbd00ecd466c299c387a325cd8df175693986a9ba1e24d66d9bb
MD5 50d86ed1f4406eaf6852bea28c58d59a
BLAKE2b-256 deef2779d06fa5cad3c4e595f9e9ee8d5392984dd0e59b9171770815dd3d53b7

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 5690a2c0f90ec63de065b7fcc3b245416aad51ff30fb1876c93b64148322438b
MD5 c4cb088eef4df4fa89bdcfdc68af6588
BLAKE2b-256 88fc6c58aad3150708126c6ab64370848d23852a06a77c4a31b8c0a336cdfbb3

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5a01abe354dd78c140a0676be6a12a7268ef419de75d6ebf1369436aba762d23
MD5 60e403e3528d493771d301c71cd6685c
BLAKE2b-256 cb5a9fca577fe8c73f9d22de44512e018fcb5fb731933366589fef8ddf382ad2

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 0b52dd3881256051ca24b20ee0b7a6777291d418334f4bf85fcacba3fb373d2e
MD5 db196060b000ff5f2ca8be668f662004
BLAKE2b-256 2c48e701fb415a29c340aaf7533203e95fa8115721df1ba7732f11927b4a845b

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp39-cp39-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp39-cp39-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 f1c85c58281d470b730f4922f5fd9464e0f5a762beb3d7e8429e1d568bb4eac6
MD5 f5c7ff629b3b94c4ab92b7595ed921f9
BLAKE2b-256 1e1bc645b974b602184ce9c7940bb7e2799b9b4ff20dbda4798c62c7302e6a40

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 86a37bbbedf5ada6e391c195a49377e7132e6028d0a67de46043085ff59ee578
MD5 82ac680f97b686d2864dd445a928bbea
BLAKE2b-256 78c23718cd579ae241be932be8cb9761fe00d41923466573450e5a0cf8b19a9f

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp38-cp38-win32.whl.

File metadata

  • Download URL: pypocketmap-0.0.1rc1-cp38-cp38-win32.whl
  • Upload date:
  • Size: 117.0 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pypocketmap-0.0.1rc1-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 9882f0c64162e306c8b22820ba9f3f7c9b0b896a43971f5330f306c63aaacded
MD5 b3d49f04fb64c7202081bc74bf0c1518
BLAKE2b-256 f4baa9ee51393657c332913297af555b41b1dc1a51677ba14456357fdcfeba27

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 097a05f318db5ebf7b61c1154fdcc6db493a66bc2222766e837ab7628e64faa5
MD5 0c4be949762f87d07aea310a102c0fd6
BLAKE2b-256 0ab5a8aec9391645b25a81455e5e539f7a2ca4e3bb59cde44e88ac836aa52749

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cffe7e522474d6453b8e771b9c97464b6feb45a76419d3300dbba770cd114b60
MD5 e5e87af9bef2b3ed9e305b243c3cc6b7
BLAKE2b-256 138c9027efebcc22235f302b1a1b14e1017398c032d4ebb6ac59c3c44d39f3bc

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b2a2aefc09790fcfc4c2524b230c50d12ece5a6c6abd371d5506b08fcc366760
MD5 f5c316ce1173a13619ee55373f753266
BLAKE2b-256 4b6869acd31a3ef63e3537295cce8857ada8a5259ad93d6e490556902f1e91ce

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fcbcba82bb0283a5b5933a84a1db9f09c01c0c413a6a0a9aea15ace859b4a0e8
MD5 4d1a5dc3edaa9095c2b66f9224f9bb14
BLAKE2b-256 279ae03c55458a191ceb74e7b67ed1dd04d2af39beb4c9f62099bfa521e420e2

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp38-cp38-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 6b873ef61820370107e4f89de6ec5fa857c1ce4a69334fba413c75a1b3e2207c
MD5 840b1387c7e78daa6329d9f7c755b1c3
BLAKE2b-256 da79349b692be9db3289e04ce0ba09256cf747872b934e2c3b9731a65c5df868

See more details on using hashes here.

File details

Details for the file pypocketmap-0.0.1rc1-cp38-cp38-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for pypocketmap-0.0.1rc1-cp38-cp38-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 e306adbbfb833de3bde85544a92d32e67f09360879ffeb7d1a5632967b7b12f8
MD5 2c13e5e00f9ea2e9595002d604a5c87e
BLAKE2b-256 57c52891da54f5bf66b653a0f8e4a2962bdbfe23e1c9b3235348ac0e6a4d5819

See more details on using hashes here.

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