Skip to main content

Copy-Patch Compiler

Project description

Copapy

Copapy is a python framework for deterministic low latency realtime computations, targeting hardware applications - for example in the field of robotics, aerospace, embedded systems and control systems in general.

GPU frameworks like PyTorch, JAX and TensorFlow jump started the development in the field of AI. With the right balance of flexibility and performance they allow for fast iterations of new ideas while being performant enough to test them or even use them in production.

This is exactly what Copapy is aiming for - but in the field of embedded realtime computation. While making use of the ergonomics of Python, the tooling and the general Python ecosystem, Copapy runs seamlessly optimized machine code. Despite being highly portable, the copy and patch compiler allows for effortless and fast deployment, without any dependencies beyond Python. It's designed to feel like writing python scripts, with a flat learning curve. But under the hood it produces high performance static typed and memory save code with a minimized set of possible runtime errors[^1]. To maximize productivity the framework provides detailed type hints to catch most errors even before compilation.

Embedded systems comes with a variety of CPU architectures. The copy and patch compiler already supports the most common ones [^3] and porting it to new architectures is effortless if a C compiler for the target architecture is available [^2]. The generated code depends only on the CPU architecture. The actual generated code does neither do system calls nor calling external libraries like libc. This allows Copapy for one to be highly deterministic and for the other it makes targeting different realtime operating systems or bare metal straight forward.

The summarized main features are:

  • Fast to write & easy to read
  • Memory and type safety, minimal set of runtime errors
  • deterministic execution
  • Auto grad for efficient realtime optimizations
  • Optimized machine code for the target architectures x68_64, Aarch64 and ARMv7
  • Very portable to new architectures
  • Small python package, minimal dependencies, no cross compile toolchain required

Current state

While obviously hardware IO is a core aspect, this is not yet available. Therefore this package is at the moment a proof of concept with limited direct use. However the computation part is fully working and available for testing and playing with it by simply installing the package. At this point the project is quite close to being ready for integration into the first demonstration hardware platform.

Currently worked on:

  • Array stencils for handling very large arrays and generate SIMD optimized code - e.g. for machine vision and neural network applications.
  • For targeting Crossover‑MCUs, support for Thumb instructions required by ARM*-M is on the way.
  • Constant-regrouping for symbolic optimization of the computation graph.

Install

To install copapy, you can use pip. Precompiled wheels are available for Linux (x86_64, Aarch64 and ARMv7), Windows (x86_64) and Mac OS (x86_64, Aarch64):

pip install copapy

Examples

Basic example

A very simple example program using copapy can look like this:

import copapy as cp

# Define variables
a = cp.value(0.25)
b = cp.value(0.87)

# Define computations
c = a + b * 2.0
d = c ** 2 + cp.sin(a)
e = cp.sqrt(b)

# Create a target (default is local), compile and run
tg = cp.Target()
tg.compile(c, d, e)
tg.run()

# Read the results
print("Result c:", tg.read_value(c))
print("Result d:", tg.read_value(d))
print("Result e:", tg.read_value(e))

Inverse kinematics

An other example using autograd in copapy. Here for for implementing gradient descent to solve a reverse kinematic problem for a two joint 2D arm:

import copapy as cp

# Arm lengths
l1, l2 = 1.8, 2.0

# Target position
target = cp.vector([0.7, 0.7])

# Learning rate for iterative adjustment
alpha = 0.1

def forward_kinematics(theta1, theta2):
    """Return positions of joint and end-effector."""
    joint = cp.vector([l1 * cp.cos(theta1), l1 * cp.sin(theta1)])
    end_effector = joint + cp.vector([l2 * cp.cos(theta1 + theta2),
                                    l2 * cp.sin(theta1 + theta2)])
    return joint, end_effector

# Start values
theta = cp.vector([cp.value(0.0), cp.value(0.0)])

# Iterative inverse kinematic
for _ in range(48):
    joint, effector = forward_kinematics(theta[0], theta[1])
    error = ((target - effector) ** 2).sum()

    theta -= alpha * cp.grad(error, theta)

tg = cp.Target()
tg.compile(error, theta, joint)
tg.run()

print(f"Joint angles: {tg.read_value(theta)}")
print(f"Joint position: {tg.read_value(joint)}")
print(f"End-effector position: {tg.read_value(effector)}")
print(f"quadratic error = {tg.read_value(error)}")
Joint angles: [-0.7221821546554565, 2.6245293617248535]
Joint position: [1.3509329557418823, -1.189529299736023]       
End-effector position: [0.6995794177055359, 0.7014330625534058]
quadratic error = 2.2305819129542215e-06

How it works

The Compilation step starts with tracing the python code to generate an acyclic directed graph (DAG) of variables and operations. The DAG can be optimized and gets than linearized to a sequence of operations. Each operation gets mapped to a pre-compiled stencil, which is a piece of machine code with placeholders for memory addresses. The compiler generates patch instructions to fill the placeholders with the correct memory addresses. The binary code build from the stencils, data for constants and the patch instructions are than passed to the runner for execution. The runner allocates memory for the code and data, applies the patch instructions to correct memory addresses and finally executes the code.

Developer Guide

Contributions are welcome, please open an issue or submit a pull request on GitHub.

To get started with developing the package, first clone the repository using Git:

git clone https://github.com/Nonannet/copapy.git
cd copapy

You may setup a venv:

python -m venv .venv
source .venv/bin/activate  # On Windows `.venv\Scripts\activate`

Build and install the package and dev dependencies:

pip install -e .[dev]

If the build fails because you have no suitable c compiler installed, you can either install a compiler (obviously) or use the binary from pypi:

pip install copapy[dev]

When running pytest it will use the binary part from pypi but all the python code gets executed from the local repo.

For running all tests you need the stencil object files and the compiled runner. You can download the stencils and binary runner from GitHub or build them with gcc yourself.

For downloading the latest binaries from GitHub run:

python tools/get_binaries.py

To build the binaries from source on Linux run:

bash tools/build.sh

Ensure that everything is set up correctly by running the tests:

pytest

License

This project is licensed under GPL - see the LICENSE file for details.

[^1]: Currently errors like divide by zero are possible. The feasibility of tacking value ranges in the type system is under investigation to be able to do checks at compile time. [^2]: The compiler must support TCO (tail call optimization). Currently gcc as C compiler is supported. Porting to a new architecture requires to implement a subset of relocation types used by the architecture. [^3]: Supported are x68_64, Aarch64, ARMv7 (non-Thumb); ARMv6/7-M (Thumb) is under development; code for x68 32 Bit is present but has open issues (low priority).

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

copapy-0.0.2-cp314-cp314t-win_amd64.whl (120.6 kB view details)

Uploaded CPython 3.14tWindows x86-64

copapy-0.0.2-cp314-cp314t-musllinux_1_2_x86_64.whl (127.9 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

copapy-0.0.2-cp314-cp314t-musllinux_1_2_armv7l.whl (128.3 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARMv7l

copapy-0.0.2-cp314-cp314t-musllinux_1_2_aarch64.whl (128.6 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

copapy-0.0.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (128.2 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

copapy-0.0.2-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl (134.1 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARMv7lmanylinux: glibc 2.31+ ARMv7l

copapy-0.0.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (129.2 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

copapy-0.0.2-cp314-cp314t-macosx_10_15_x86_64.whl (116.7 kB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

copapy-0.0.2-cp314-cp314t-macosx_10_15_universal2.whl (120.3 kB view details)

Uploaded CPython 3.14tmacOS 10.15+ universal2 (ARM64, x86-64)

copapy-0.0.2-cp314-cp314-win_amd64.whl (120.6 kB view details)

Uploaded CPython 3.14Windows x86-64

copapy-0.0.2-cp314-cp314-musllinux_1_2_x86_64.whl (127.9 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

copapy-0.0.2-cp314-cp314-musllinux_1_2_armv7l.whl (128.2 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARMv7l

copapy-0.0.2-cp314-cp314-musllinux_1_2_aarch64.whl (128.5 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

copapy-0.0.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (128.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

copapy-0.0.2-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl (134.0 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARMv7lmanylinux: glibc 2.31+ ARMv7l

copapy-0.0.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (129.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

copapy-0.0.2-cp314-cp314-macosx_10_15_x86_64.whl (116.7 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

copapy-0.0.2-cp314-cp314-macosx_10_15_universal2.whl (120.3 kB view details)

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

copapy-0.0.2-cp313-cp313-win_amd64.whl (119.2 kB view details)

Uploaded CPython 3.13Windows x86-64

copapy-0.0.2-cp313-cp313-musllinux_1_2_x86_64.whl (127.7 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

copapy-0.0.2-cp313-cp313-musllinux_1_2_armv7l.whl (128.1 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

copapy-0.0.2-cp313-cp313-musllinux_1_2_aarch64.whl (128.4 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

copapy-0.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (128.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

copapy-0.0.2-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl (133.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7lmanylinux: glibc 2.31+ ARMv7l

copapy-0.0.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (129.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

copapy-0.0.2-cp313-cp313-macosx_10_13_x86_64.whl (116.6 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

copapy-0.0.2-cp313-cp313-macosx_10_13_universal2.whl (120.2 kB view details)

Uploaded CPython 3.13macOS 10.13+ universal2 (ARM64, x86-64)

copapy-0.0.2-cp312-cp312-win_amd64.whl (119.2 kB view details)

Uploaded CPython 3.12Windows x86-64

copapy-0.0.2-cp312-cp312-musllinux_1_2_x86_64.whl (127.7 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

copapy-0.0.2-cp312-cp312-musllinux_1_2_armv7l.whl (128.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

copapy-0.0.2-cp312-cp312-musllinux_1_2_aarch64.whl (128.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

copapy-0.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (127.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

copapy-0.0.2-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl (134.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7lmanylinux: glibc 2.31+ ARMv7l

copapy-0.0.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (128.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

copapy-0.0.2-cp312-cp312-macosx_10_13_x86_64.whl (116.6 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

copapy-0.0.2-cp312-cp312-macosx_10_13_universal2.whl (120.2 kB view details)

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

copapy-0.0.2-cp311-cp311-win_amd64.whl (119.2 kB view details)

Uploaded CPython 3.11Windows x86-64

copapy-0.0.2-cp311-cp311-musllinux_1_2_x86_64.whl (128.0 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

copapy-0.0.2-cp311-cp311-musllinux_1_2_armv7l.whl (128.4 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARMv7l

copapy-0.0.2-cp311-cp311-musllinux_1_2_aarch64.whl (128.7 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

copapy-0.0.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (128.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

copapy-0.0.2-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl (134.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARMv7lmanylinux: glibc 2.31+ ARMv7l

copapy-0.0.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (129.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

copapy-0.0.2-cp311-cp311-macosx_10_9_x86_64.whl (116.6 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

copapy-0.0.2-cp311-cp311-macosx_10_9_universal2.whl (120.2 kB view details)

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

copapy-0.0.2-cp310-cp310-win_amd64.whl (119.2 kB view details)

Uploaded CPython 3.10Windows x86-64

copapy-0.0.2-cp310-cp310-musllinux_1_2_x86_64.whl (127.2 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

copapy-0.0.2-cp310-cp310-musllinux_1_2_armv7l.whl (127.6 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARMv7l

copapy-0.0.2-cp310-cp310-musllinux_1_2_aarch64.whl (127.9 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

copapy-0.0.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (127.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

copapy-0.0.2-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl (133.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARMv7lmanylinux: glibc 2.31+ ARMv7l

copapy-0.0.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (128.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

copapy-0.0.2-cp310-cp310-macosx_10_9_x86_64.whl (116.6 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

copapy-0.0.2-cp310-cp310-macosx_10_9_universal2.whl (120.2 kB view details)

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

File details

Details for the file copapy-0.0.2-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: copapy-0.0.2-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 120.6 kB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for copapy-0.0.2-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 4c5eba4ae944b7baca22a823819ee8fb842b4192032ff1cb79b8d530f9d46fe6
MD5 2214919608c581b4c98b229e6dcf3e0c
BLAKE2b-256 a81e8e50bc5b94a971158de750651f157342f01d01ee7dc977f174fb5cc313ea

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 311cb68d274b49c07d2b7cdab969907dc8a4485b8d2c5839bad7ce67493ca389
MD5 ff4b9b088f95a1e96e14b64e6dfa5604
BLAKE2b-256 d4c93bd72e1c3b823ff48210be85708d4cdb821fcd64c9c65ceddaa9a85abde3

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp314-cp314t-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp314-cp314t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 f9b710c6534625a4b55e8aded6ebf13087283f5d900f920757a92ac44ab4307a
MD5 93e2b9d12cab781b9f63e0902ea4b639
BLAKE2b-256 de6b53333f7377fa19a53eeb754e5e71895cd32d7f61f43bab353de29abddf43

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 19df7caafe662c7c6e30216db62b40c3adb80ac15564b93955b0fcf655d3bde7
MD5 541bd357eefe808b62dc070af3088425
BLAKE2b-256 ced1496644e344def2e6daaea988937151a3e813a94337a5d0d2d97e074aee4f

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6d536b4e24dd34b4105dc1f34b68a6bb1b6d2170b10568a9b1799c1052ea64d7
MD5 e9e3a8c50f8b013c7ada447431d20079
BLAKE2b-256 ae977fb8139394badfbf1c1018f5b9ed1909693e8f2ebec6cba95eef0686b09e

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 f4b9045e8cb8c5d511cebe01fe3d44d80548cdfbcbd3f46096dd2a8dd5e1631b
MD5 f47bd1cfde14ce5d3e9836b34e43b746
BLAKE2b-256 7fb2b6ba913b08770c1bf6611b8a029c55869189cac8af129eb4d318104da770

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d5bddc69f5c4ac61592b05e7646c147827a4f9e026fabbbe3670bd875f2e7f98
MD5 076ee44a2ca0e6cab79d55699cf76619
BLAKE2b-256 4a091f624c2a9b0fc859add1c033caca71f25371b142cb06455754d6b2c6ed21

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 009de5f94aff5453ad11dce784c3c9f9bbe0dc7e58338af7841672565d52503d
MD5 e1d626e5ed9aad87bbf0a5b0a0a37cb5
BLAKE2b-256 9c055d2b09ce17aa74f1afd84cd2db7c6031d8bd9a6c3ac245066664dddaaa74

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp314-cp314t-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp314-cp314t-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 f7eada77ca68d207d3d15fc0b65daf7b61e8d28a380c985bfc8b087fe95aa5a7
MD5 d5e11bc2829127c4ed531943de5e8318
BLAKE2b-256 7108d9115d1f179b2aa9e0c37782358477aca8e8f75da26297263dea98765588

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: copapy-0.0.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 120.6 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for copapy-0.0.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 ae338960594e969161786b3d4f7c3d59ffcf180af1e9dcf2d444cdcf3c914bdc
MD5 e1b1596857bc377c6f29616db2cd3c71
BLAKE2b-256 326d1ea95cbd125e4262e78f6ebe146acfae83fdf8f77fbd2b393cfd9288c22c

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7717287d0cefc188242a0e329ef77b9d72f8362d5049eb86e2436752513ccb00
MD5 cacbd01b84a8cb59a4f55bcc02cfe0f6
BLAKE2b-256 9ad7c1447a153b6660a3fd307cd25e97fbadff012037f3cac553d87a350c80e7

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp314-cp314-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp314-cp314-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 fee74999ab90496a4413d5116e9e9f5470506423f11d372b7f53b1c6345c9ad1
MD5 50d3c1d1ef814fcb02c09674d5883bd2
BLAKE2b-256 a72edff65df1f4fbc87d5fce09bf6d906f389d19e0d86cb0812aa81e2deaa536

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 cfd1e11f6dc39b0400bd837ff7377e8146b229318daef542b8f53bc0b292d71d
MD5 1e77ea27115895545de991a2e90b3d80
BLAKE2b-256 e0e4ee38d64fa3f9d8fc0c4ffbb6dc50a7fa74483fbbcff0353ef7859d5d2daf

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 af509d3efe6e052ef3e2eaf0c35742a0c93c6f34d31aa2f9c2049a1a642ac6f2
MD5 2034fcd5455a12106740fee21042b83a
BLAKE2b-256 0b330109e949afba285c8f251ad7c7813a8ea32f1f0f4989d093e622e856ffbc

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 807f69878553924c2c5d0323a2a147fd2de39d80429416960e1e01834494a594
MD5 5d44f62a6d5e6b31705edad3441353f3
BLAKE2b-256 48b4f2c542f93f6d3527a16720bd4d8ce50ffef3e85523939e1fbfb4445859d2

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9cbc62eca737452584b98df6d0f6496dfd8c7d7eb6967a38a7b57a069dd11e1a
MD5 143dbfd66a0ae4383d3a79ae3cc61a0e
BLAKE2b-256 7fa55941528637087596b2ee0db594ed2748c39633d9bb6e18979de50bb20c96

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 5128e29b988ddf0ce151b44fbd5ee8739172a0ec646f97add9b0b0ddafe4cec6
MD5 4d4c0b1a98debcebc3cdeac9f904c0bc
BLAKE2b-256 e6ec40153b854f64c0e2088483b502a02d0190c85f139cfb15e1ef18206f5294

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp314-cp314-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 42f47fe5b0d97aad345044b7cdb85868878c9fb4a48e7acd3407d9b8facc8308
MD5 604902d2697461c35cde50755cda1b5e
BLAKE2b-256 688f6b811ab618361ae91779c8d745b2bb7e5435e9a62216c838d2d7697377f0

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: copapy-0.0.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 119.2 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for copapy-0.0.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d1a67473134408f1a9cae09d0b9dec87ac025ea834df1b3a107217889e5be68b
MD5 542cc4e8b8da59024a1d578a9aad40fd
BLAKE2b-256 9804b463062b4ddc206afdfad13a145b5c960a70fb36b173b69b8afbb868181e

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0e6e50aaf32018b74406692dafa0f335f30c9eb530048c5c8cb06ddab2d8f76a
MD5 0c3471368e4f3c59794cc38a83ef5977
BLAKE2b-256 72105ccb6d02a7c43967233ba215641178fff1261e4584af3e4684df62ccf932

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp313-cp313-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 d5119b82a4a6c8b71bc6f355f70be6e75ce10ecc63e73113eb6fb171544367ed
MD5 2b4cd203d984d64c7afefb21c16b66e2
BLAKE2b-256 e87704d0e1b8f9c4415125ddf354ed320d141ad30e02e09d3bbc0c2e6f8bdfcd

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8b8fcaf1dbc0b55f9c11782759f57303c3c83c4fe2cdac6cfb818e71b47333b0
MD5 bcdd574ca3e25c1c9031e1470122652b
BLAKE2b-256 17a2f16a4169aedee0c1dddf5c8e7f2ff3cb87dd692405b6be5bf6bf5633f275

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ca8722efa8697eb904b8c1bc2828095700b2733571ce2c7025773ec1d1d756f4
MD5 eefdf13ad1b95a179c30c78e10cb7f51
BLAKE2b-256 deaecf5bf278e11218c6988f718fd80766ce89253ae08cbb352f02e5ddada505

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 bbb9e2353ae6506a7e5f4b5b32e32275d4bbf2283f510ae6d4770589ad01a76d
MD5 53c38a9cb06a54dceba131d23e769759
BLAKE2b-256 eb652b8f904106aca63ac81dfbab7c974c995ef07711c0116c4bcd93627e011a

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 329d26446f7514511fc7c342d7d2bce3fab43c996c9a85b6e5f1bb9ac408dd3f
MD5 1f9da80c5a5d888889dbae57cf361468
BLAKE2b-256 89a1da3342fc4ae16737ba2dae52d614be5d90320893b905277bd5ee5317b14b

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 35866bbeec2165f06914e9bb065531355c4a2ddaf517c657d2c933fca46d4201
MD5 5f665237db469018574332a6b88cda2d
BLAKE2b-256 e7b154da803581ec8988cbe2d16db6c1a006d7c7761b7b7bcce0198d61bc1e7d

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 b34e36abbb74e7fac33c47cee4ff94503283c50cb759e6e40b8f5a6e254d798e
MD5 44008ba29c474726c648c7804b4e9b41
BLAKE2b-256 17294cd34bd4fc35c4595542677b86d23587da49e3f577197dc1e74ea61034ef

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: copapy-0.0.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 119.2 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for copapy-0.0.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 58581d29f7fd8b6855587a3b9ee61f534189ac244a71876d39443f98c1d35094
MD5 604169f5cf00d194279c84abb0df7ba4
BLAKE2b-256 33193102787dc0465064e6582eeedea5e90c18695120839127c68e7698b1df22

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4ebfc558e4c0c0cd7a25c09498f32b5ff8827dda306a1dd125426b1782b8fc91
MD5 32639a3d062c627af2c1f109e949552a
BLAKE2b-256 8ff20fe84b72247b99d7ad1dd58106f33b90a5cbca2bda04043668e5c5e95c6d

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp312-cp312-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 6171b0a469323a2cda4c242a3ebd7519d0249ae3e42176e9aaf96359a3363d42
MD5 78556184df75174f7a1a80cb1ada97f4
BLAKE2b-256 98ec8fa381a236f6faa27dfcaf0d3ff856be9a36c5bf62679fd9fa0716cb38f3

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f0a716d95810ab6570a23152575e9dbddaf299e008ce2b8398eb34af00390a2b
MD5 90e7a6f03d339921beb5fad2d35e4594
BLAKE2b-256 3281c7bfb9bdddcc76708b8c72842b3d46903978e68b3677125ca2c2a4b5f6e9

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 35200b9504278771fbb93ee6ef9357c1383c3cebab180fd0e10ee4edadc847dd
MD5 48f783fc5d6f50a8934f5eca75a59e3c
BLAKE2b-256 2a5e2695e5e2e2cf14a92cc8bbd4e8ed90e3518b1c3ab4dd994a7c61d4cf7b50

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 f9e80d4b01ed12dcaa6c3aeee8e5f633b793bfa6e860f7aa07e6848b1f674203
MD5 c63848676776a9a8d7d77b403121e1aa
BLAKE2b-256 3c2271a5cc7b634bb5baa6e13ca3eb3d82e84c8f106a03207d2de8962e962839

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 42b1f5cbada8071badafcbd64dbc30c0a53fd15289bea7f0fd5359d075171ef2
MD5 1b6f1cce8ffed7f04d2c0be3e3851f6d
BLAKE2b-256 1eb0b1231b9f41a125d1dc11268832c947da12a22fb23d7e3fb4f982f6e15df1

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 750720f06c0e40027f974a467e795a7f1a0e69de9f74659dad8812bb8dd41a61
MD5 fc76c0149cf66d8b9768d0f9748dbbce
BLAKE2b-256 f2eb916f1e78f70a88dd82d63305761f3d6e12bab4835e95526c66c27dd26c73

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 a48570a458aea8e08f8972e3fdb2be28ed22004353b39e63a4aaa8f1b4c3a7e9
MD5 4a75c9605656935ea0038bc27ebe03d9
BLAKE2b-256 dbf666878db43536c007d29477b61763fadf3f255c11bda3f49bc83cf729a1fa

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: copapy-0.0.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 119.2 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for copapy-0.0.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 153abab93afaf6d936b60fd92c0db8296319a4ba79d8e0b27951030605312a8c
MD5 d3e9a3f0fb7e8f365d75d904997aa0c4
BLAKE2b-256 c78bd7f545f45b091bf6cccc247b71de6d39ab8d79c7d3cceb0db28c1039681e

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 57b857773e81746d43decf53321f6778b7504aa4217823a280d58c413f226090
MD5 9dab1726521dea97f347622925f5c6ac
BLAKE2b-256 15a3994944c2b82f18e3c685ffd2b2cd3a14682c6ece3e22947cb750bc198472

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp311-cp311-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp311-cp311-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 00b794b9d0238c6031e249cc9584b65aca5dceca4f3307ad10d27b3337b75715
MD5 882efc0af09ef7c310ff01a3fc8c95fb
BLAKE2b-256 54912f6c6745ddecb03e8f3fb5bb0f81b8705f00000353a7e505366e3b713c1f

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a9dec6c9e91ba96f8fba217b095c0ddf0ad619f44333f4198fa6c6ba6c73c9d3
MD5 a0889083c372e5b5f51c14bdeb8618e3
BLAKE2b-256 c0fa17584e7b2f8d939f9ada615b82340d73485f882c4c5fca27dc77b8813415

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c78afab43db0e6ac37f4ec1f3ad923762aabb611b305fe0709ecd62af3e87361
MD5 b051545800a2d8de30fc833bd85234f7
BLAKE2b-256 2dbd6076227df7c00fbded4b59297c403d8cfaa3bfc31070da8691fb489caafc

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 b59266a5726fe01112a12c2575732fc98b14ebe714da7932ca38b27d396ae6a1
MD5 0099d9037f273946958d0d05c346744d
BLAKE2b-256 cb424a099e7a882077d2296c332dca2e7e95d9bcdb52e0f3e8bb1a48e92a0040

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bc7dc146ba337a82bfe54d966bd75b2b72f5b9445bb6b72cff615e7d74d15cf0
MD5 c606565394ac6be25d960342f50feb5b
BLAKE2b-256 81fe69120a8eb1506225e88de7c5e9615aa50eb2775cea4f154bd8dba381a3e0

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5462c7ca7e4cc71bd1b83bf736c7f2869e53849b6ba52376b5fe32a810b4458e
MD5 e2bb9179502b7c72ec3c1b67292411ce
BLAKE2b-256 aeef36add1b7ad4203da086779ccfb526bc452af28fc61a601b284f56d2640b4

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 60dad0d3d3876933b15491b5bddf8efc5fae1cd284c2b9dc1af645b72a5751d7
MD5 26419094365e91e32251a090b56f4df5
BLAKE2b-256 173672cc2355c48d15b462d25a3903398c16dba404b69a67d16606a5257e8673

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: copapy-0.0.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 119.2 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for copapy-0.0.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a27adef2efc2779b18d2afdc3e2b5fa5ccaf7fbe0cefe1a444d824d4081ea94f
MD5 dbbef61b4a2a8953dbf8dcbf76b6c9cc
BLAKE2b-256 3002a2952fc8f1650c1d6497da303c41581bb03849688f45fdc86992ae901b09

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b9890a9d611c8c7e6d7982e92f5b0542dc186e9ecb9033cf09940be18a32e596
MD5 b4b395a347be6e1f3f5665c541241e57
BLAKE2b-256 b82469a15c013b408a921f0c39e68a80ffd52bac07988d883fb26624d7142972

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp310-cp310-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp310-cp310-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 a99dd6afee8841fbffa4dd2973c49d1c612be1f7eb9db995a86af06720f49287
MD5 19d6d3c52fe264d8ffe2080bc8278a01
BLAKE2b-256 162b427506b1846ec48b4942654c81a5c3ca7d572c92bd07951e3e7af9d08906

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b7d4c936e53bf6b2626bded5f1b6d7a277250b93d5693ee298f769ba449d2fee
MD5 6fd0d246fe29df385410f0687ee09c40
BLAKE2b-256 df507442b46eca7861523fef124ee137d02c715fb292d4ba92a1120153545e4b

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ba2f1a6ee0b7cf6c2fcf15fc10d0f0507b47705c6be3f9ae48d5f1d24217b1be
MD5 f16f71fcc768e362fec742b4b2171e99
BLAKE2b-256 687e8ba7c6bf8c3c637a93dad839ac34727314c4bc137ee85de738896d6c5ced

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 af63fed13acac2ef1afa1cd2e142d9cdb793455829cf9782bee2426d18cd28fd
MD5 910f18698d306147f637358b3f206980
BLAKE2b-256 d77c692f9f541913b48ddd2e3d8ff698e6ef79cfd2121962d4922cec4e683369

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fbbc174bb309709b02982384187cb582a3a49faa3cfdf56918e542054bb8d792
MD5 101ee34fa718b9b36b0a7f2c904b4995
BLAKE2b-256 e055147d0d837815f1fcda9259e5c49ae8cb9e81db3db8449bbe7e1b87df97a7

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 08f375be5818d3e44bb451aa80a1d01ecd5f47185f6feef0f265e86bb1a25a48
MD5 a8e51f5bbdd792508b6517d3794c03d2
BLAKE2b-256 a8c1389e3415d97bd3d4591fe0fe45cc3ffe92302e70ab91499ac1839dcba2b2

See more details on using hashes here.

File details

Details for the file copapy-0.0.2-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for copapy-0.0.2-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 96807dcfa5dfbe22b986771b3757d12004c2188ba0e6912f830129e5d2bd8c0b
MD5 4829a505d5f26ad6319dc26301ab6af3
BLAKE2b-256 f4459d450d7238c0a70b8cbe421bc0a2251a220edc689275308642e008fc1d64

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page