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

One way conversions are also possible using the one_way flag.
This allows you to convert an object during serialization into a supported type, without the intention of converting it back into the custom type.
In these cases, you can pass None to the identifier.
For example:

import pypinch as pinch
from dataclasses import dataclass

@dataclass
class DictLike:
    name: str
    age: int

dict_like = DictLike("Bob", 21)

# Create a mapping for each type how should it be serialized
SERIALIZATION_MAPPING = {
  DictLike: pinch.CustomType(identifier=None, converter=lambda x: x.__dict__, one_way=True),
}

serialized = pinch.dump_bytes(dict_like, custom_types=SERIALIZATION_MAPPING)

# No need for a deserialization mapping
deserialized = pinch.load_bytes(serialized)

# deserialized != the original object
assert deserialized == {"name": "Bob", "age": 21}

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

Uploaded PyPymanylinux: glibc 2.17+ x86-64

pypinch-1.0.3-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (246.0 kB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.17+ x86-64

pypinch-1.0.3-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (247.2 kB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64

pypinch-1.0.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (246.0 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.14Windows x86-64

pypinch-1.0.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (247.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

pypinch-1.0.3-cp314-cp314-macosx_11_0_arm64.whl (225.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pypinch-1.0.3-cp313-cp313-win_amd64.whl (136.2 kB view details)

Uploaded CPython 3.13Windows x86-64

pypinch-1.0.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (251.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pypinch-1.0.3-cp313-cp313-macosx_11_0_arm64.whl (228.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pypinch-1.0.3-cp312-cp312-win_amd64.whl (136.2 kB view details)

Uploaded CPython 3.12Windows x86-64

pypinch-1.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (251.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pypinch-1.0.3-cp312-cp312-macosx_11_0_arm64.whl (228.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pypinch-1.0.3-cp311-cp311-win_amd64.whl (135.3 kB view details)

Uploaded CPython 3.11Windows x86-64

pypinch-1.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (250.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pypinch-1.0.3-cp311-cp311-macosx_11_0_arm64.whl (227.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pypinch-1.0.3-cp310-cp310-win_amd64.whl (135.3 kB view details)

Uploaded CPython 3.10Windows x86-64

pypinch-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (250.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pypinch-1.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (250.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

File details

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

File metadata

  • Download URL: pypinch-1.0.3.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.3.tar.gz
Algorithm Hash digest
SHA256 00add149c0b7bb51d7b5a5cd319fe7b616638999c14e8062fbe8759736761e3d
MD5 a0c555a1742d508cc8ce982d3c57cac2
BLAKE2b-256 a25e9dc49590798e6701624f2565ddc71f90d44d8aa3767c20545bb162ef70cb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2ec1deb43824ea8edc30b18459a310d61292bf8fed382f6910159bce5079e06d
MD5 b1281de6c9d97236f223179fdd1e157e
BLAKE2b-256 5baa69144e7a3c58da4213e470de948d0d3be08bf7accdfba6e87a6a87e8dae9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.3-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 61068c029883a23b0b4e96a4f63d30dffe4a0104c1c27652f8c60081baf62179
MD5 dc720306bf40ec12559191685f78519e
BLAKE2b-256 46deef28acd8cb59366cc9c99cd593705544a5dca3b575c01203eba87a1baf55

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.3-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8809ba17ee220de0b491485f6f26e8c679cd1b9fcf67e3368266193a607b9c25
MD5 d2b24a8723eb781b6cdf73c9c15b42b3
BLAKE2b-256 b3dac14339214bbc6b88fde1bff9e3c30661536587766b7fd39245230cbbd487

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d63d2aecd3df0b09e4ac5ea5d8f04016646b083cdced37dc9bf673472aacd483
MD5 ff61ef932327be2cf506436f9dbe786d
BLAKE2b-256 10311dec765f5622ba24d0532ab02fa33b9453b8f6c4e0f00b9f05152d116cc5

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pypinch-1.0.3-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.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 485ea8720ab837a69636ce8181366516ee818b180d8b9b37aefa0765a7b0959c
MD5 7fc1c6beaae77533850f23644698b78e
BLAKE2b-256 5ae8d18c35c4e70df08df0c4569d9b6722b62abe1e51908822b07e0dba483286

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 679ff73f7b6e4acaac11f43acecabc50824be97f0bdb18125425a2a1e8f26f75
MD5 b27187784994adb8ab05f1fc7e16b729
BLAKE2b-256 2d085ea54317f7a5097dd96308f42cc8544bd9152f9f3c797ed0bc2dd86d8dbf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.3-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 95344025b1d4a27314fd05b1c59d5a371b64877960226782b616119cebea3754
MD5 62d32dbb4ad7af8c2b0857aca912d8f7
BLAKE2b-256 3ad10499b6623604146ba79fe821172bb9b34ffbcf4f1c09d605b7adc2d1b91f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pypinch-1.0.3-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 136.2 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.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b3c0771c518aac7d4484bb71527ba42ea255ac5c65ee84420de79e9941251cdc
MD5 1b27f0ea60085e729a70a1aeac5237b0
BLAKE2b-256 77fb573da1a218b6791ad14bbf4525ef2721aae7896fc9b715fcc354a223b19d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2656c1619059f0cf357ffac4d8557e88491f68132576b5f627c51b9b7c500f08
MD5 17f0e8ae341227ce0dc5237a9b4bb479
BLAKE2b-256 cd1540ad475d464747a8fce471ecaeac7099a2403bef0b4fa8bba398f12954d0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d8ebfccff4adeb3e8b5780493ea6cf7ee8e51b795f639c12f9b457b7309fe786
MD5 b657f83bcfadfe8b7e8ac58e0e493653
BLAKE2b-256 a436098cd89d00d6144dbee5971900cf302816fdd510fa897f7ce5847419a563

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pypinch-1.0.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 136.2 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.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1161bf8c1e07372614f54722ebbdd79f496434e84a0a15b65e71372fddf40785
MD5 57727dcc731917a953e565eda21b7b53
BLAKE2b-256 bbe578b53daddfa69b74dd3ab61b784feb20a4670f9bfbb3b751f43d7e641ada

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0657193a6f2b9dbae3622b7f0b2cd5a583778253c4bb03cd03d16fb072f72e81
MD5 a344d4d743b8a5896b634319459d59bf
BLAKE2b-256 a44fde59668849a70491660c22f02311102795b918cd83b4b4ca7c85799dd0cf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ccb66b4e8237090e1437ea00a522aa3bce5cea1a5d7e906ce199175bb23700d9
MD5 1dd70bcb3373eeb444750a63e981373e
BLAKE2b-256 2dd52b2d78db5de93d34075a4035e229ee43e10199d1e5b4e7cb9e18045a0b49

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pypinch-1.0.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 135.3 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.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4aaa8f2616e38da156c8ac70ebb8ae424d349183e4c7d1aa4f1997f8e2ad6471
MD5 861e5c70b014b10903357c7a56ba100e
BLAKE2b-256 4e0797a1f9e7699b736018882b99cebf9a9ebf1db228d36480cb95a21f4ca9a4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ec260bbf46f1e2f10b77252ca9da7507ea385247a1e4fe734c54f29de20f25a0
MD5 3e6efefc1584db655fbff4abf3393e98
BLAKE2b-256 a3b58c86796a2c479e2ff636132fdda9220b62de2baa58cfcbd9cdd3bad2a9a3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7816e50126e1d841a42942a813909a624aea88742b83fda0aa1e1d97adc0aa85
MD5 3a62221d4950a6e9aeba511446370d36
BLAKE2b-256 25d78a91e6f9c17b4fe3cc4b747896c078ab1153b144d65e42f955c5b19d7c2e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pypinch-1.0.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 135.3 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.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 080695006175dec61458c45ca631e2b853de585b6596903990691ad60f333a13
MD5 a1db2061a2178ddca3d83b30f7fbaaab
BLAKE2b-256 e736338101fe4a8ed43301316920988b1f1da4a195aae4ef3298574da7f9ef84

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 159d7891bdc5de091bd49b81218f4f182b57f5624498d6770c6d3390b7af2d62
MD5 7bc1b78011f76fc0fe8c35cfc2fb6549
BLAKE2b-256 4214542290fc86d305e0e30e9e4c4eda02cb76a777e51c4a3835b1bf634f8cee

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypinch-1.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1be9212e697f3db4a3a3b9d26f52320fd00fb65e9a10ec12e02e610c22f5ded2
MD5 03cb37a74c38b77ed2c7e9b9ccad4a9b
BLAKE2b-256 28b7bb6ea5a8ade1d5c1a3a3ca68e6b31c97cc4aa2539dfd92f652c16cd732bf

See more details on using hashes here.

Provenance

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