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.1.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.1-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.1-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (246.7 kB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64

pypinch-1.0.1-cp314-cp314-win_amd64.whl (131.9 kB view details)

Uploaded CPython 3.14Windows x86-64

pypinch-1.0.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (246.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

pypinch-1.0.1-cp314-cp314-macosx_11_0_arm64.whl (224.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pypinch-1.0.1-cp313-cp313-win_amd64.whl (136.0 kB view details)

Uploaded CPython 3.13Windows x86-64

pypinch-1.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (250.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pypinch-1.0.1-cp313-cp313-macosx_11_0_arm64.whl (227.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pypinch-1.0.1-cp312-cp312-win_amd64.whl (136.0 kB view details)

Uploaded CPython 3.12Windows x86-64

pypinch-1.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (250.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pypinch-1.0.1-cp312-cp312-macosx_11_0_arm64.whl (227.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pypinch-1.0.1-cp311-cp311-win_amd64.whl (135.5 kB view details)

Uploaded CPython 3.11Windows x86-64

pypinch-1.0.1-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.1-cp311-cp311-macosx_11_0_arm64.whl (226.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pypinch-1.0.1-cp310-cp310-win_amd64.whl (135.5 kB view details)

Uploaded CPython 3.10Windows x86-64

pypinch-1.0.1-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.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (249.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

File details

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

File metadata

  • Download URL: pypinch-1.0.1.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.1.tar.gz
Algorithm Hash digest
SHA256 90aef2334dc191ff1b7b7d1449ac291324cf8783c689064103003876baee11ed
MD5 5b5e73c00e5fff02814e1b41860823da
BLAKE2b-256 c5381e8322512437e50f6d7c23e32df56b5e44bfae0da00583ca42a8f71d5321

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.1.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.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 03d1de4ab7189b794ce4f931ea33054640ae18034b69925593a2724c544ff26b
MD5 f80c2520017628b29c34e50f540d12be
BLAKE2b-256 f06e41fd236f8cf1b692e42d78a65b81d85ac1e329cf859cf13c7944eec528c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.1-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.1-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.1-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 81e3c88a2e79ed253c4812e960316d64110b0aa975fd580aaed791f0239b7462
MD5 556b79299c59155e6230384511e88d6f
BLAKE2b-256 4458c3dc764d4041c59f2959d9ddb5386c444f960f183a4a55d9a4a9364a0896

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.1-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.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: pypinch-1.0.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 131.9 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.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 52126b2f251c009275f460d701d428ee81e83912e63ec566307a3fd6624d79df
MD5 db23cc4939dbc88921a7d308f9388209
BLAKE2b-256 8daae92e24a44e9e471624cc5bf6d438b10d36cfe675596398644451772ee9f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.1-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.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ea49340c6c268621a7da15bec3be8a9a9991f82e0289f557b7ac3c07595d9d6b
MD5 bc18e583c4b81776b56d1c8efd1db85b
BLAKE2b-256 f5a5a63a8730849a1684e99676f73b7b948efd0d0a9a0261ed871850f0f42fd7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.1-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.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 14c74a2e3b38dc1e0486f41d3584bc7cfba35a8b73033816738c917427d8aef5
MD5 d680f0a0bc024952863e73e4355025bd
BLAKE2b-256 42fb1cad7a7ae1f5af57f139d45a66020d149d6f3f95daed9c62e3cfacebf948

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.1-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.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pypinch-1.0.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 136.0 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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 3d3b9933b70ebb19602470c5f97d8ad253ca7ab2fc350820fbf62a638b754970
MD5 1bb8958f711fa785625410c354cca7cc
BLAKE2b-256 a56dbe48c338a8c33b28525d0e8a19cad4b1463f43a92bcc2bdf54fa342be751

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.1-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.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5f347e40812231a0acb5841d58e7fe6be4854cf20cdc79680283f96f595dffbe
MD5 8d35668096523ddfe42b157c83d6bac1
BLAKE2b-256 a6ded11d858c0a42d10b4c1a133e2c01baede8d9526da549a2b02f12cd093452

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.1-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.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 055acbeff062109611be4cc8b61f8ed7894c8f2c1e3289cabc81b4777940e2e8
MD5 246686e9a1332a6c264057e252789db7
BLAKE2b-256 50e04a8d492c301cfec4800a5a58ab7f4711e724ee39b2786dc80127b2647f9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.1-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.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pypinch-1.0.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 136.0 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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d3819317d910e54fcb9cf43fcf21f91d6c29ad4d28beece914d0aaa1aa636148
MD5 37763a346f380cfdbf6b746fa27f89aa
BLAKE2b-256 db936a5217d524a0ca085b61975d44dd3b31583925e8aa64cf55572d1cba9693

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.1-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.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5e2680de59b494b9c8739a588959260ba5678d3416134efedf9d49d5a22ccbf6
MD5 30fcc549db13bf26bde176f129072ca2
BLAKE2b-256 a6b190678570c2fa924cf3483e6135f7fa3cd97b57c15536c8d300f83a375d59

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.1-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.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 589ea1b6a9c5383cbc01e0130392a4ef39b4a3ff6ce8ac3a0a9cf55677dc547b
MD5 34de3c61399aaffa9c6183dd40c68b1e
BLAKE2b-256 c3f5c95b4c7e7c29c710dc7eb5813d74356aadc9bfc0965fb836221b3a59e8ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.1-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.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pypinch-1.0.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 135.5 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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 dd270294c728878fbf7309260da1115cc719a5d81820ed15cd71a968840e1af6
MD5 3fc221b2abeee6c088a79179f31d559e
BLAKE2b-256 0b1e2fc18ec5cfe9b113ff4518f6a971d0d083ae5017ec6de624de628960088d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.1-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.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3de70fbc07f9c1450e1509c09d79d53b070e9c53d9a9e21f60300d591418c42b
MD5 40f2a6efd53d07ae2f32b26b22fdad1b
BLAKE2b-256 ca687c987bcf46c7015da78d5a641e20a4979f856259b9eb204a86079baa501f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.1-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.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b9147139be94532aebbaf7ee2d919b442b7337a060eb218f2856d3dffc1b9cb2
MD5 e1b437e47e4e546277006a8f45781d08
BLAKE2b-256 b875860b2ba0033908b41ea9544f05f863eb1bfd71d68e04931d0820beda0731

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.1-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.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pypinch-1.0.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 135.5 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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 03ca7f2abf70baf0a21df76fbb4c441af67bc0ce922bd6d1d9165bf9f6f3b680
MD5 ab79b4dec5ecf234e58c85fcb9a67be6
BLAKE2b-256 15eff98543075ecdfb1f22448c0722139810b8c941282c772ba950a0f116bb2f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.1-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.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c83fdba1c6d0818ae3e06e2c6315c01288ca2bd52633640dcdf9f6955fea2ce4
MD5 4bc5f229b363c6ca3c195f6e2fb3882d
BLAKE2b-256 4b9268525a528e8f849e01441240f8bd364c4451d2e221410b02ea655d911fc1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.1-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.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypinch-1.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b0d82d7d0c8c57883fda7d8e804ed0648519a12ab6d1329b053ccd593554cd0f
MD5 258e69fb5b6518d692a8deb0e5856b9f
BLAKE2b-256 024c7409181c14b0cbcdabba564393f22f65d75af44a9834ffc3ee5afaa68dbc

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypinch-1.0.1-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