Skip to main content

Schemaless binary serialization format without limitations

Project description

Pinch

Schemaless binary serialization with ZERO LIMITATIONS

Pinch is a binary serialization format, aimed to be both fast and memory efficient, while being as dynamic as possible.

  • No schema needed
  • Out-of-the-box support for all JSON types (+ binary!)
  • Support for custom types
  • No limitations:
    • ints can be indefinitely large (or small) - no limit at all
    • strings, bytes, lists, and dicts can be indefinitely long
  • Extremely compact serialization, which leads to lower memory usage, easy storage, and less network traffic
  • Consumes little memory while serializing\deserializing
  • Supports lazy loading
  • Support writing to a buffer, such as a file, to decrease memory usage
  • Written in Rust ⚡️🚀🦀🔥

Motivation

JSON is a popular choice because of how flexible and easy it is to use. But it has one major flaw, is far from efficient. It also lacks support for binary data, and depending on which library you choose, also custom types.

What Pinch offers is to trade in the readability of JSON and in exchange get

  • High performance, both in speed and in memory usage
  • Support for binary fields & custom types
  • Smaller serialized objects

All while still needing no schema and having 0 limitations.

So, if human readability isn't something that's important to you, Pinch is for you.

Benchmarks

Even with its great flexibility, Pinch performs on-par with and often better than other, less flexible libraries:

repodata.png

Full list of Benchmarks

Comparison to other options

  • Protobuf / FlatBuffers / Cap'n Proto / Avro
    • You need a Schema, so if you have one go for it, but often this just isn't plausible or not worth the effort
  • BSON
    • Limits the size of numbers, lists, dicts, strings, and binary
    • Limits the size of the document itself
    • Preforms rather poorly in the benchmarks
  • MessagePack
    • A great option, but:
      • Limits the size of numbers, lists, dicts, strings, and binary
      • In many cases Pinch outperforms MessagePack both in speed and in peak memory usage
  • Orjson
    • High memory overhead
    • Doesn't support binary (you can, as a custom type, but it will be much less effecient)
  • Pickle
    • If you're programing specifically in Python and only Python this is an option. Although it will couple you to Python which usually isn't ideal.
    • You need to be more aware of security risks
  • Smile
    • Looks promising, but I couldn't find a Python3 library that worked...
  • XML / YAML / TOML
    • Why??
  • Ion
    • Rather good at creating small serialized data, but not as good as Pinch
    • Terrible speed and memory consumption

Usage

Basic

pip install pypinch
import pypinch as pinch

original_data = {"pinchable": True, "collection": [b"101010", {}, 0.1]}
# Serialize the data
serialized_data = pinch.dump_bytes(original_data)

# And now deserialize it
loaded_data = pinch.load_bytes(serialized_data)

# Confirm they are the same
assert loaded_data == original_data

Custom types

By default, these are the types that are supported:

  • List
  • Dictionary (HashMap/Objects/...)
  • Integer (up to infinit sizes)
  • Float
  • String
  • Bytes
  • Boolean
  • Null
  • Binary

But you can add additional types as well.
For each custom type, you need to give some type of identifier. An identifier can be any default supported type.

When serializing you need to provide a function that serializes your data into a supported type.
When deserializing you need to provide a function which gets your serialized item (the output of the function you provided in the serialization phase) and returns a deserialized object

For readability, I recommend a using a string identifier.
For performance I recommend an int.
Choose whichever suites your needs best.

import pypinch as pinch
from uuid import uuid4, UUID

# Types which aren't supported by default
object_with_unsupported_types = [uuid4(), 1 + 4j]

# Create a mapping for each type how should it be serialized
SERIALIZATION_MAPPING = {
  UUID: pinch.CustomType(identifier=0, converter=lambda x: str(x)),
  complex: pinch.CustomType(identifier="complex", converter=str),  # no real need for the lambda
}
# And a mapping for how it should be deserialized.
# Each type is identified by the same identifier as in the SERIALIZATION_MAPPING
DESERIALIZATION_MAPPING = {
  0: lambda x: UUID(x),
  "complex": complex  # no real need for the lambda
}

# Pass the serialization mapping
serialized = pinch.dump_bytes(object_with_unsupported_types, custom_types=SERIALIZATION_MAPPING)

# Pass the deserialization mapping
deserialized = pinch.load_bytes(serialized, custom_types=DESERIALIZATION_MAPPING)

# Confirm it worked
assert deserialized == object_with_unsupported_types

Dates

Dates aren't a type which is supported by default, but there is a flag which allows dates to be serialized to iso format.

import pypinch as pinch
from datetime import datetime

now = datetime.now()

# Pass the `serialize_dates` flag
serialized = pinch.dump_bytes(now, serialize_dates=True)

# And now deserialize it
loaded_now = pinch.load_bytes(serialized)

# Confirm it worked
assert loaded_now == now.isoformat()

Note: If you want the deserialization to result in a datetime object you're better off using custom types

Lazy Loading

Sometimes you might not want to load the whole object into memory but only a single field.

import pypinch as pinch

# Setup
obj = {"people": [{"name": "Bob", "age": 30}, {"name": "Joe", "age": 45}]}
serialized_obj = pinch.dump_bytes(obj)

# Load only a specific field
field = pinch.lazy_load_bytes(serialized_obj, ["people", pinch.Idx(1), "name"])

assert field == "Joe"

You can even just check that the field exists, without loading it

import pypinch as pinch

# Setup
obj = {"people": [{"name": "Bob", "age": 30}, {"name": "Joe", "age": 45}]}
serialized_obj = pinch.dump_bytes(obj)

# Don't load any fields, just check that it exists
exists = pinch.bytes_check_if_contains(serialized_obj, ["people", pinch.Idx(1)])

assert exists == True

Writing to a file (or other buffer)

In order to save memory usage, or if this is your desired outcome anyway, you can dump straight to a file (or anything else which has a write(bytes) method).

Note that the extra IO will likely have overhead.

import pypinch as pinch

# Setup
obj = b"very large data" * 10_000
with open("file", "wb") as f:
    serialized_obj = pinch.dump_bytes(obj, writer=f)

You can also configure how often the data should be dumped to the file:

pinch.dump_bytes(
  obj, 
  writer=f, 
  flush_threshold=10*1024*1024, 
  direct_write_threshold=5*1024*1024
)

When the in memory buffer reaches flush_threshold it will flush to the writer.
If there is a byte field larger than direct_write_threshold it will flush directly to the writer.

Optimizations

Note that in the name of fairness, none of these were used in the benchmarks :)

In Python, tuples are usually more memory efficient than lists. So you can use use_tuples=True when deserializing to deserialize the lists as tuples instead.

import pypinch as pinch
obj = [[1, 2], 3, [4, 5]]
serialized_obj = pinch.dump_bytes(obj)

deserialize = pinch.load_bytes(serialized_obj, use_tuples=True)

assert deserialize == ((1, 2), 3, (4, 5))

If you really care about speed, you can disable the GC while the deserialization is happening (use at your own risk)

pinch.load_bytes(..., stop_gc=True)

Backends

When possible, Pinch uses a backend written in Rust. But it also has a fallback implementation in Python, for cases where the Rust implementation is not available.

If you'd like to use the Python implementation, you can do so by setting this environment variable:

export PYPINCH_FORCE_PYTHON="true"

Exceptions

If the data is corrupted or incorrect, Pinch will raise pinch.DeserializationError or pinch.SerializationError

By default, Pinch expects the input to load_bytes to be a valid input. But if you have a stream which starts with a valid pinch object and then more data after it, you can pass the flag ignore_extra_data to suppress the exception

import pypinch as pinch

original_data = "data"
serialized_data = pinch.dump_bytes(original_data)

# This won't raise an exception now
loaded_data = pinch.load_bytes(serialized_data + b"extra bytes", ignore_extra_data=True)

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

pypinch-1.0.2.tar.gz (32.1 MB view details)

Uploaded Source

Built Distributions

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

pypinch-1.0.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (250.6 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

pypinch-1.0.2-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (246.8 kB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64

pypinch-1.0.2-cp314-cp314-win_amd64.whl (132.1 kB view details)

Uploaded CPython 3.14Windows x86-64

pypinch-1.0.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (246.8 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

pypinch-1.0.2-cp314-cp314-macosx_11_0_arm64.whl (224.9 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pypinch-1.0.2-cp313-cp313-win_amd64.whl (136.3 kB view details)

Uploaded CPython 3.13Windows x86-64

pypinch-1.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (250.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pypinch-1.0.2-cp313-cp313-macosx_11_0_arm64.whl (228.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pypinch-1.0.2-cp312-cp312-win_amd64.whl (136.3 kB view details)

Uploaded CPython 3.12Windows x86-64

pypinch-1.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (250.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pypinch-1.0.2-cp312-cp312-macosx_11_0_arm64.whl (228.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pypinch-1.0.2-cp311-cp311-win_amd64.whl (135.9 kB view details)

Uploaded CPython 3.11Windows x86-64

pypinch-1.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (249.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pypinch-1.0.2-cp311-cp311-macosx_11_0_arm64.whl (226.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pypinch-1.0.2-cp310-cp310-win_amd64.whl (135.9 kB view details)

Uploaded CPython 3.10Windows x86-64

pypinch-1.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (249.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pypinch-1.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (249.8 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

File details

Details for the file pypinch-1.0.2.tar.gz.

File metadata

  • Download URL: pypinch-1.0.2.tar.gz
  • Upload date:
  • Size: 32.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pypinch-1.0.2.tar.gz
Algorithm Hash digest
SHA256 2e29083c3e8eef8b81093e2f7e9a8f69a8f2445d6cdcbc0dac36a4b51ad5e2c0
MD5 0f5a515bc446a45d13e0200911a0415e
BLAKE2b-256 f083c40ed8e68ebdb9817c1fb1588d5a4c57e40f7c64c6874e4391d86c6e6e44

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.2.tar.gz:

Publisher: publish.yml on AharonSambol/pypinch

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

File details

Details for the file pypinch-1.0.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e18759a8534d8a0d8b832f394ddab563cc35a3fad8c1f1068b0ac29fab83d8b0
MD5 f4245b5b12ec4dacdabe391488a454e8
BLAKE2b-256 66f6c2c23ac49d7b3b38b4a079b5c0b05785c0b21204573e4ab55d7274edf99d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on AharonSambol/pypinch

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

File details

Details for the file pypinch-1.0.2-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.2-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a06f00e6f668a2ed2c45e40e9543d9fd48f3c5d07212351805e21fddc401abb2
MD5 befcb92f3a419a551e832b83bae25eee
BLAKE2b-256 f42990cdb0fc362afc889c986411f7fe2a8c7ed4c653fe70d10fb7a8a60f925b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.2-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on AharonSambol/pypinch

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

File details

Details for the file pypinch-1.0.2-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: pypinch-1.0.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 132.1 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pypinch-1.0.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 5fd075cd39d70e03aa84eefa1098c316a598bd364618899a67ffda8b90ee1481
MD5 60c713205b1c841a6e15f4951fe4f50f
BLAKE2b-256 ce75806eb30e699018712493f024e251c95f0309f1b03b1db0edb9701413a21c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.2-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on AharonSambol/pypinch

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

File details

Details for the file pypinch-1.0.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 914674b2763dac4ac62347e4259258a28a336696055017c453776145fceaf63a
MD5 823144aa844dcc6e60499166005a5eab
BLAKE2b-256 7c8e68a83b71525d77c9164c0602fd7399da393f24be101e0d24074f29c2dae0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on AharonSambol/pypinch

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

File details

Details for the file pypinch-1.0.2-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 190bb55769afd5a99335d79f4b62ff7eaa59c3084eb59bd8f5d9ffe04525849a
MD5 ebdf1d2b0166c54652b03a8cabe132fb
BLAKE2b-256 82c235aa4bf14458d7228b3b5dec23b71a4739fefb85a04a6d15b6267c68750a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.2-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on AharonSambol/pypinch

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

File details

Details for the file pypinch-1.0.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pypinch-1.0.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 136.3 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pypinch-1.0.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 66dca84f189de555db09058153f70be10233290c5b874ef69136c14a0c64a799
MD5 92e6edfca01d746dcefa591fa673b4d7
BLAKE2b-256 89ec26b08b6ab5bbe589ea4eaa78723b8dc4a4fc59e724b4aca6779635d1dc4f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.2-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on AharonSambol/pypinch

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

File details

Details for the file pypinch-1.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 04e5f658822a3212c438f53bc185f87ff8166cea1b4c3edb360bebe7ce77da66
MD5 1ba585a06025a9d5c952d6ded7eed5dd
BLAKE2b-256 46748c5e700c1c3c6922856aa406f8d0041c24c51a717f20c3a3106cada8be05

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on AharonSambol/pypinch

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

File details

Details for the file pypinch-1.0.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 80bcd0e6802b7bb6817a6dd44d5613eb7df7dc1dc9f1914d71d61766f482db18
MD5 793b52cef6e39f7119262955aa3df743
BLAKE2b-256 a835ca9eb51bc6afc0c5621180213104521130f5d835c906fea5bb97856d8afe

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.2-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on AharonSambol/pypinch

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

File details

Details for the file pypinch-1.0.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pypinch-1.0.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 136.3 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pypinch-1.0.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 86e26cd6528ddfa8dc2b3c3fc4697f0060ad67911c0951ff0766e3050377d1b5
MD5 6e4dfae10c8124f87d19c2874ab31a6b
BLAKE2b-256 fa2b477cda4784bb5f32adad54a87a6fa6528b81f11e6edd8f93726196c6aae6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.2-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on AharonSambol/pypinch

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

File details

Details for the file pypinch-1.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 620a914f0d9208e2831326901a7575143942c57f66da639993edb1f6e781af1e
MD5 ffccd580a7600362234523fd82926e0b
BLAKE2b-256 5c27027654c5f8a9f2760a31ed1ed01006ad6be02f17f8ae902efb58c77ce998

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on AharonSambol/pypinch

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

File details

Details for the file pypinch-1.0.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 506900154f26f7dda8291cf4b5fa0796e332be0f469bff09ab92bd8c48237f25
MD5 bde624a18195850ff6eaede9a2f859e4
BLAKE2b-256 fdbcefef3de34361e3da7551d4dd2bf75adff515428d8b8de4a565b8372133c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.2-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on AharonSambol/pypinch

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

File details

Details for the file pypinch-1.0.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pypinch-1.0.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 135.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pypinch-1.0.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 eb897cca6c562b9632624749c1a6aff2d760b3eb992e18bd4df7333817d185b5
MD5 f0840cffe3a03dfe20850f2272c7934f
BLAKE2b-256 04805c389f15f7a315c7d23feb8c4d9d6ab4b130ab2f272f213f198d3c641cbb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.2-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on AharonSambol/pypinch

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

File details

Details for the file pypinch-1.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8528d0a09f6b80b380cc07e2ec7bfb88631399de277d40a17a79935603907f73
MD5 243845d621b58ce043d498d797adcf0a
BLAKE2b-256 dc43846083d28d442a99cceb0674c399ea0cc8e1f3c8a55a2792d75f1a5b258b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on AharonSambol/pypinch

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

File details

Details for the file pypinch-1.0.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 af218f3ba21539fa7d2822c98231f1d40a21238977c5bf71b7b673b5e25ab463
MD5 3a977e1089984af972279888abd65281
BLAKE2b-256 4501c08d9650ee188cbc0c7505779c14e351a2bffdd2a6470a47e5206328043b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.2-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on AharonSambol/pypinch

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

File details

Details for the file pypinch-1.0.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pypinch-1.0.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 135.9 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pypinch-1.0.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d7a185f793362d5212f89199eb9432853ae3c8ec33ea343234f79475de08d18d
MD5 9c833c5f79c428d4d13b24bebb4bafa0
BLAKE2b-256 318a9a243f4c8e315c2d3a0770d33588294e69ce8770b61c26e76c48e13e3ff2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.2-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on AharonSambol/pypinch

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

File details

Details for the file pypinch-1.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 54df0d82bb1bd4dc242312baaf5a675d2ba3c0abfbeed61fb24ab50aa6599af2
MD5 b2af0c3b859149f154efa5e08d3d37a5
BLAKE2b-256 8d9c99e07d50ae3552b2ee37ce0573a95c3093ef32a122e9e12d93c8e819d308

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on AharonSambol/pypinch

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

File details

Details for the file pypinch-1.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 507505205a2b3a1de890e4387021dad5f28ae37118dc3d90e00fe3251f2edbbf
MD5 627424b5a65e353e885a817cd3c9c3b0
BLAKE2b-256 e91f518caad9be2d5f54dd01397893845aeef9c2860fbd95308b338280af20c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on AharonSambol/pypinch

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