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.0.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.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (250.5 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

pypinch-1.0.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (246.6 kB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64

pypinch-1.0.0-cp314-cp314-win_amd64.whl (131.8 kB view details)

Uploaded CPython 3.14Windows x86-64

pypinch-1.0.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (246.6 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

pypinch-1.0.0-cp313-cp313-win_amd64.whl (135.9 kB view details)

Uploaded CPython 3.13Windows x86-64

pypinch-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (250.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pypinch-1.0.0-cp313-cp313-macosx_11_0_arm64.whl (227.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pypinch-1.0.0-cp312-cp312-win_amd64.whl (135.9 kB view details)

Uploaded CPython 3.12Windows x86-64

pypinch-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (250.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pypinch-1.0.0-cp312-cp312-macosx_11_0_arm64.whl (227.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pypinch-1.0.0-cp311-cp311-win_amd64.whl (135.4 kB view details)

Uploaded CPython 3.11Windows x86-64

pypinch-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (249.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pypinch-1.0.0-cp311-cp311-macosx_11_0_arm64.whl (226.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pypinch-1.0.0-cp310-cp310-win_amd64.whl (135.4 kB view details)

Uploaded CPython 3.10Windows x86-64

pypinch-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (249.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pypinch-1.0.0-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.0.tar.gz.

File metadata

  • Download URL: pypinch-1.0.0.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.0.tar.gz
Algorithm Hash digest
SHA256 af34c67be977a918e4910fa8a5dc53f8548f76936ae620bdd34ff44131a6ab3d
MD5 eab160476d3f441ca10a02f0ee65b1c7
BLAKE2b-256 7a0ec5f961617bf47e6027995631c01f4921ec5a391c77f058fc583e12418c14

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 548233ee31d324be6afd79e4201bc7b4aa5ceeb1241f9b16ab36c99717a650f6
MD5 7fbc30b7fac2e549b29fb20cd07691a1
BLAKE2b-256 3b7b6f0fadb98c3a4b6d3fa36663c5658a7fb2ddacf01635fef680fbf9995695

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b38a694100d8ae46fc90f147d11dd680af47cdc0f839be1040ed5ffac85eb876
MD5 7d6e55a8a157a1a4a7781a3877aff624
BLAKE2b-256 2b91084b7b48363efc94fbf97de3960c94abe3ba7de8998c098c141df3e42551

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pypinch-1.0.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 131.8 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.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 4ef9bd9e2a9982ad7e20baf40d7f5660db1561837fb5812d51457487ccb93137
MD5 306b630da4750452beee4efb2f638c2e
BLAKE2b-256 a02828c4ea8a7b603c5fbf184cb503dd7de1909aa37be2914731d6fc0fe08543

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 53142d79ed5c66cd82f17741bf76a123492e116c26b494183c07e12adb2d02b9
MD5 3fc2dc51d3535d001e6d0c283e34f6b1
BLAKE2b-256 3ae4ed754059e7b2a1630f6f8243e8ca74f5960504dcb374bdf2e784908a8778

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ea95ac042bf14a7585f88a8a39b7b82a0c183cd9c9e738568518ee392fffbad5
MD5 88db7bd32682b606933cfa4b47968130
BLAKE2b-256 3239592af5bf88bfb05e9ae5a818f2b5250a0c3c633159ccd1d477b16ff6ac74

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pypinch-1.0.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 135.9 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.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 df587f05aeeff4f49de110e03db83a69848f329423d439fed738bd0e2a49bffe
MD5 61de4eac964fb4e78357ccbb9444ba4e
BLAKE2b-256 4ee7b0e71e5b6f84012e2aeb61ab9651d9e3335cd3f48ab0ae7c4d197affbdc5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d0685d3d99f2a3ba1f6b863d03bc919cda768dd3cbbffb578877b8ac5d22ad11
MD5 008b7d9d1f98fbbb0beb4e1b0127ebf8
BLAKE2b-256 ffa243cba354f4f644ea2a05080d1d47d754a250a248d199d7e2f90413a2a69d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 51ad2b9e04dc57a55620d3bc570db5b747153340222173eec6e3ebc2c11b40c8
MD5 bb8ab7a88f772163e65eb4e07dde71af
BLAKE2b-256 f9346b5338870410ff79bdcb0b91a5b98c9bacbccb34f2d26c5f28b3c0b07e02

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pypinch-1.0.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 135.9 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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7c11d7838527ababf0b1e3cc5b27d6f8a50dce4b71dcd416b939199470a9453c
MD5 6236a641dc816cd74604ff5c3b399efb
BLAKE2b-256 0dac05e807c0f2e478ae9fea7b07c796469bd039909349081c23728266e98cc4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a758b4561534e5b8ca8a367d2f453927e2972c376523b68c82d276cdd710eff2
MD5 44bc3f939990c0a628e174d29b4d6ca3
BLAKE2b-256 b373a2eb791b7a554f5eddb4381c22cabf50a72850aac638edafa20bee9f1d09

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bff8c35e0f129a89427c0fceadc0b5d7c248d77bf75b14179c0fe76c8c263a33
MD5 dac444c5974f6c83e793d174dc61896a
BLAKE2b-256 55931bf6bd2de4d8d1654eeff7fbd793d27b280d612c774fc8aba7329e4801cc

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pypinch-1.0.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 135.4 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.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b2204b4f966d49de0a70e1076c8e09f8e45e4e2606ceb74d265eb39962257ce6
MD5 10371b5a20b4079ff1592d9fad05c434
BLAKE2b-256 bf94319d20c1a8424192b8066da85c37011c9180073185d4d5cf5684019e1d71

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b23a28d46c953f049f659f324f981bae531295fcdcfb95bcea6dfb34433e76de
MD5 563f7951c01702d2184d821b9b6b9416
BLAKE2b-256 948199820f86d25b31e2648968b00e9437af2a486fc02c09b3bdc7c72e6f305a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ed92ea9d6e949f60c18b1d16ab776769be6b44602e0ceae9f6f3e6ff29156062
MD5 04ea480a61a935f2611307f41a676e02
BLAKE2b-256 a07dd71e759378cf00aaf40ba629cd05998676b1c9387d9ea737c8a9cf767e17

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pypinch-1.0.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 135.4 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.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 84d41972a76ed6e74bb66339292682fd4d2b807b1f5434bdaace4db6b6798489
MD5 a3263741121c1f7d905bc320c387a030
BLAKE2b-256 bdbf5813036d196018c1f6abef349d60a7e94face2589066fb4fb59d449d4372

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b4cfe3cd46b0350e64e57db8172dfbb82ef00bc7c9cf319fec922e5b80581e82
MD5 8c54036d9f27c1b9f7e01e3491d5ec5e
BLAKE2b-256 0b841dc8523949ba5d96f7f6389a2fb3a8018c1475fb5fea727f01287af1801f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8b90cf3bbda8e3c62565f42d1cb1aec1c7e352408bd25199aee6f83c45e9ce67
MD5 29dcf57da4cebaad13ee594868778d5c
BLAKE2b-256 0b5f66622c1978a63f013202e85d4e81503952d7e93153ebfb25ac9c613e311c

See more details on using hashes here.

Provenance

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