Skip to main content

Python library for polygon clipping and offsetting based on Clipper2.

Project description

Pyclipr - Python Polygon and Offsetting Library (Clipper2 Bindings)
========================================================================

.. image:: https://github.com/2ico/pyclipr/actions/workflows/pythonpublish.yml/badge.svg
:target: https://github.com/2ico/pyclipr/actions
.. image:: https://badge.fury.io/py/pyclipr2.svg
:target: https://badge.fury.io/py/pyclipr2
.. image:: https://static.pepy.tech/personalized-badge/pyclipr2?period=total&units=international_system&left_color=black&right_color=orange&left_text=Downloads
:target: https://pepy.tech/project/pyclipr2

This fork of the original pyclipr library adds Python bindings for Minkowski sum and difference operations, which were not included in the upstream version. These operations enable advanced polygon manipulations, such as morphological expansions and contractions, useful for tasks like shape offsetting with rounded joins or buffering in GIS applications. See the `examples/example_minkowski.py` for usage.

Pyclipr is a Python library offering the functionality of the `Clipper2 <http://www.angusj.com/clipper2/Docs/Overview.htm>`_
polygon clipping and offsetting library and are built upon `pybind <https://pybind11.readthedocs.io/en/stable/basics.html>`_ .
The underlying Clipper2 library performs intersection, union, difference and XOR boolean operations on both simple and
complex polygons and also performs offsetting of polygons and inflation of paths.

Unlike `pyclipper <https://pypi.org/project/pyclipper/>`_, this library is not built using cython. Instead the full use of
capability pybind is exploited. This library aims to provide convenient access to the Clipper2 library for Python users,
especially with its usage in 3D Printing and computer graphics applications.

For further information, see the latest `release notes <https://github.com/drlukeparry/pyclipr/blob/master/CHANGELOG.md>`_.

Installation
*************

Installation using pre-built packages are currently supported on Windows, Mac but excludes Linux because pre-built
packages are unsupported via PyPi. Otherwise, no special requirements or prerequisites are necessary.

.. code:: bash

conda install -c numpy
pip install numpy

Installation of `pyclipr` can then be performed using the pre-built python packages using the PyPi repository.

.. code:: bash

pip install pyclipr2

Alternatively, pyclipr may be compiled directly from source within the python environment. Currently the prerequisites
are the a compliant c++ build environment include CMake build system (>v3.15) and the availability of a compiler with
c++17 compatibility. Currently the package has been tested built using Windows 10, using VS2019 and Mac OSX Sonoma.

Firstly, clone the PyClipr repository whilst ensuring that you perform the recursive submodule when initialising
the repository. This ensures that all dependencies (pybind, pyclipr, eigen, fmt) are downloaded into the source tree.

.. code:: bash

git clone https://github.com/drlukeparry/pyclipr.git && cd ./pyclipr
git submodule update --init --recursive

python setup.py install

Usage
******

The pyclipr library follows similar structure to that documented in `Clipper2 <http://www.angusj.com/clipper2/Docs/Overview.htm>`_ library.
Although for consistency most methods are implemented using camelcase naming convention and more generic functions
are provided for the addition of paths.

The library assumes that coordinates are provided and scaled by a ``scaleFactor`` (*default = 1e3*), set within
the ``Clipper`` and ``ClipperOffset`` classes to ensure correct numerical robustness outlined in the underlying Clipper library.
The coordinates for the paths may be provided as a list of tuples or a numpy array.

Both ``Path64`` and ``PolyTree64`` structures are supported from the clipping and offseting operations, which are enacted
by using either `execute` or `execute2` methods, respectively.

.. code:: python

import numpy as np
import pyclipr2 as pyclipr

# Tuple definition of a path
path = [(0.0, 0.), (0, 105.1234), (100, 105.1234), (100, 0), (0, 0)]
path2 = [(1.0, 1.0), (1.0, 50), (100, 50), (100, 1.0), (1.0,1.0)]

# Create an offsetting object
po = pyclipr.ClipperOffset()

# Set the scale factor to convert to internal integer representation
po.scaleFactor = int(1000)

# add the path - ensuring to use Polygon for the endType argument
# addPaths is required when working with polygon - this is a list of correctly orientated paths for exterior
# and interior holes
po.addPaths([np.array(path)], pyclipr.JoinType.Miter, pyclipr.EndType.Polygon)

# Apply the offsetting operation using a delta.
offsetSquare = po.execute(10.0)

# Create a clipping object
pc = pyclipr.Clipper()
pc.scaleFactor = int(1000)

# Add the paths to the clipping object. Ensure the subject and clip arguments are set to differentiate
# the paths during the Boolean operation. The final argument specifies if the path is
# open.
pc.addPaths(offsetSquare, pyclipr.Subject)
pc.addPath(np.array(path2), pyclipr.Clip)

""" Test Polygon Clipping """
# Below returns paths
out = pc.execute(pyclipr.Intersection, pyclipr.FillRule.EvenOdd)
out2 = pc.execute(pyclipr.Union, pyclipr.FillRule.EvenOdd)
out3 = pc.execute(pyclipr.Difference, pyclipr.FillRule.EvenOdd)
out4 = pc.execute(pyclipr.Xor, pyclipr.FillRule.EvenOdd)

# Using execute2 returns a PolyTree structure that provides hierarchical information inflormation
# if the paths are interior or exterior
outB = pc.execute2(pyclipr.Intersection, pyclipr.FillRule.EvenOdd)

# An alternative equivalent name is executeTree
outB = pc.executeTree(pyclipr.Intersection, pyclipr.FillRule.EvenOdd)


""" Test Open Path Clipping """
# Pyclipr can be used for clipping open paths. This remains simple to complete using the Clipper2 library

pc2 = pyclipr.Clipper()
pc2.scaleFactor = int(1e5)

# The open path is added as a subject (note the final argument is set to True)
pc2.addPath( ((40,-10),(50,130)), pyclipr.Subject, True)

# The clipping object is usually set to the Polygon
pc2.addPaths(offsetSquare, pyclipr.Clip, False)

""" Test the return types for open path clipping with option enabled"""
# The returnOpenPaths argument is set to True to return the open paths. Note this function only works
# well using the Boolean intersection option
outC = pc2.execute(pyclipr.Intersection, pyclipr.FillRule.NonZero)
outC2, openPathsC = pc2.execute(pyclipr.Intersection, pyclipr.FillRule.NonZero, returnOpenPaths=True)

outD = pc2.execute2(pyclipr.Intersection, pyclipr.FillRule.NonZero)
outD2, openPathsD = pc2.execute2(pyclipr.Intersection, pyclipr.FillRule.NonZero, returnOpenPaths=True)

# Plot the results
pathPoly = np.array(path)

import matplotlib.pyplot as plt
plt.figure()
plt.axis('equal')

# Plot the original polygon
plt.fill(pathPoly[:,0], pathPoly[:,1], 'b', alpha=0.1, linewidth=1.0, linestyle='dashed', edgecolor='#000')

# Plot the offset square
plt.fill(offsetSquare[0][:, 0], offsetSquare[0][:, 1], linewidth=1.0, linestyle='dashed', edgecolor='#333', facecolor='none')

# Plot the intersection
plt.fill(out[0][:, 0], out[0][:, 1], facecolor='#75507b')

# Plot the open path intersection
plt.plot(openPathsC[0][:,0], openPathsC[0][:,1],color='#222', linewidth=1.0, linestyle='dashed', marker='.',markersize=20.0)

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

pyclipr2-0.1.9.tar.gz (5.8 MB view details)

Uploaded Source

Built Distributions

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

pyclipr2-0.1.9-cp313-cp313-win_amd64.whl (170.3 kB view details)

Uploaded CPython 3.13Windows x86-64

pyclipr2-0.1.9-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (332.7 kB view details)

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

pyclipr2-0.1.9-cp313-cp313-macosx_15_0_universal2.whl (168.6 kB view details)

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

pyclipr2-0.1.9-cp313-cp313-macosx_14_0_universal2.whl (172.9 kB view details)

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

pyclipr2-0.1.9-cp312-cp312-win_amd64.whl (170.3 kB view details)

Uploaded CPython 3.12Windows x86-64

pyclipr2-0.1.9-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (332.8 kB view details)

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

pyclipr2-0.1.9-cp312-cp312-macosx_15_0_universal2.whl (168.6 kB view details)

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

pyclipr2-0.1.9-cp312-cp312-macosx_14_0_universal2.whl (172.9 kB view details)

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

pyclipr2-0.1.9-cp311-cp311-win_amd64.whl (169.6 kB view details)

Uploaded CPython 3.11Windows x86-64

pyclipr2-0.1.9-cp311-cp311-macosx_15_0_universal2.whl (167.7 kB view details)

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

pyclipr2-0.1.9-cp311-cp311-macosx_14_0_universal2.whl (171.3 kB view details)

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

pyclipr2-0.1.9-cp310-cp310-win_amd64.whl (168.8 kB view details)

Uploaded CPython 3.10Windows x86-64

pyclipr2-0.1.9-cp310-cp310-macosx_15_0_universal2.whl (166.7 kB view details)

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

pyclipr2-0.1.9-cp310-cp310-macosx_14_0_universal2.whl (170.0 kB view details)

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

pyclipr2-0.1.9-cp39-cp39-win_amd64.whl (177.6 kB view details)

Uploaded CPython 3.9Windows x86-64

pyclipr2-0.1.9-cp39-cp39-macosx_15_0_universal2.whl (166.8 kB view details)

Uploaded CPython 3.9macOS 15.0+ universal2 (ARM64, x86-64)

pyclipr2-0.1.9-cp39-cp39-macosx_14_0_universal2.whl (170.1 kB view details)

Uploaded CPython 3.9macOS 14.0+ universal2 (ARM64, x86-64)

pyclipr2-0.1.9-cp38-cp38-win_amd64.whl (168.7 kB view details)

Uploaded CPython 3.8Windows x86-64

pyclipr2-0.1.9-cp38-cp38-macosx_15_0_universal2.whl (166.6 kB view details)

Uploaded CPython 3.8macOS 15.0+ universal2 (ARM64, x86-64)

pyclipr2-0.1.9-cp38-cp38-macosx_14_0_universal2.whl (170.0 kB view details)

Uploaded CPython 3.8macOS 14.0+ universal2 (ARM64, x86-64)

File details

Details for the file pyclipr2-0.1.9.tar.gz.

File metadata

  • Download URL: pyclipr2-0.1.9.tar.gz
  • Upload date:
  • Size: 5.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.18

File hashes

Hashes for pyclipr2-0.1.9.tar.gz
Algorithm Hash digest
SHA256 80eb0d482d52da1af12957f801e34b3448a856730edf25cf878e8c13a1b2803b
MD5 0e9071aa792cecd96b6c8644cc41c88f
BLAKE2b-256 001aca54346305f9325cc2aba0fbc48e7b78cc8d04a36021ef644ef362ca3c47

See more details on using hashes here.

File details

Details for the file pyclipr2-0.1.9-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyclipr2-0.1.9-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 170.3 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for pyclipr2-0.1.9-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 199118c88099a4b0d52c0def8be724104497eb13446f70158bc5ae301fbf6843
MD5 8236640917b3700db2ed4bf7fc101b17
BLAKE2b-256 b63cdb5466bc55af9a8a8132d8ad2b55473ac1b9f83139638065b3c9df56e581

See more details on using hashes here.

File details

Details for the file pyclipr2-0.1.9-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyclipr2-0.1.9-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 32f8beaf9a3c8d4b191ab2a1a826b2bb4c425b946f619a102c8a1057fd7252c6
MD5 2dcc502ba4277227fc70931bda2c9c01
BLAKE2b-256 173684d0070f24b93b5132bbad00664a660f01abd94892c51ab26f37c2dd789c

See more details on using hashes here.

File details

Details for the file pyclipr2-0.1.9-cp313-cp313-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for pyclipr2-0.1.9-cp313-cp313-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 bdfa0fde4d51e74f6ded402960315835f784382e9b1d6153827ef58ce34e88b0
MD5 9f592004e1f81df64bff2ac5f78cc117
BLAKE2b-256 1fe6c4b32080a83265eb17340306c563825aacfc7f8595fed7b4cbf9d94495d6

See more details on using hashes here.

File details

Details for the file pyclipr2-0.1.9-cp313-cp313-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for pyclipr2-0.1.9-cp313-cp313-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 de4092d2a5a7dedd81ef46b91537342fd795dfcbd957b4aaa9fcd637a080ac4a
MD5 1bf256cc1d57cc181061cf32a9f91ba5
BLAKE2b-256 a97102683d246a9ba7b26e08db793ea3a8073924dc84a58012770a3fe6431370

See more details on using hashes here.

File details

Details for the file pyclipr2-0.1.9-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pyclipr2-0.1.9-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 170.3 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for pyclipr2-0.1.9-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 52840544538fbde96e2caeb7bc692b2bc10657538d5f3f01d01981c44a105253
MD5 57fd3c34961b1b4d353e89e890ee1147
BLAKE2b-256 eb7fec4bf992c7a5edeac875877c6283d6b826d1cd09a554b19a13966c5b0f12

See more details on using hashes here.

File details

Details for the file pyclipr2-0.1.9-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyclipr2-0.1.9-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f1a17a58bbb713f9511b98348b4244612087b153aab3bd5579008d0b670ba979
MD5 730f305f62a5a506956ebb2b06e054dd
BLAKE2b-256 4e17ee4f8a8fdfca7634deba33f2f4c57be2119ee6b5b67823552f30bc65bec3

See more details on using hashes here.

File details

Details for the file pyclipr2-0.1.9-cp312-cp312-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for pyclipr2-0.1.9-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 88052a0c7db4a912d8f921218cbdbacd8e557349aea65948cd9786f76014ff35
MD5 558db662e3798dc472f90e101fe86336
BLAKE2b-256 354720c34d1b68ddfce35fb571862ec23fb804d5c1ad2e8b8c95ccdd3a9300e1

See more details on using hashes here.

File details

Details for the file pyclipr2-0.1.9-cp312-cp312-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for pyclipr2-0.1.9-cp312-cp312-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 82b23243575bb3608b72c2866a3d938c0f1a683cf896e8b8af5028cfcc015e36
MD5 b9bb8b7ca3b05bdc35acf3e9052b3785
BLAKE2b-256 bdf8e8c7682122f249c2442bfa056c6750617515a829bc1ce740642043d6a162

See more details on using hashes here.

File details

Details for the file pyclipr2-0.1.9-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyclipr2-0.1.9-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 169.6 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for pyclipr2-0.1.9-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0a4754291052f2201db0493a46df906b6ad5271a50cb3db96310eb34b3d272a0
MD5 7b3df8519e5d3a38f68d7f263cee534d
BLAKE2b-256 49beb3f7b8aec43876ccfc0d54863e3093a1cf51c9e6d101d6103b78b7faf631

See more details on using hashes here.

File details

Details for the file pyclipr2-0.1.9-cp311-cp311-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for pyclipr2-0.1.9-cp311-cp311-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 2103494e6460a9a898eb387fa7e525151e32741fcf9c7690e371f3d7b4f17b2b
MD5 5292408142938a99c9c289dbc8a4d4e4
BLAKE2b-256 2419a98df6f7b6ed6ac7a317ee14317ef1eef11a74908109204d00e1964e2f7d

See more details on using hashes here.

File details

Details for the file pyclipr2-0.1.9-cp311-cp311-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for pyclipr2-0.1.9-cp311-cp311-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 e94bedd08e5d064da18fc623b5acc90768f6d9b45f49a1f1e58581dac7155287
MD5 c6ff35a23ee7444251e9c217f68c269e
BLAKE2b-256 f8925117e949416c930fbdd33d0fb4eb0f1872c25afcd796316bc97fdc9d129e

See more details on using hashes here.

File details

Details for the file pyclipr2-0.1.9-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyclipr2-0.1.9-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 168.8 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for pyclipr2-0.1.9-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2243ea73317bef409a7042b0b529826ad59f05b189da0228d6891a8359d7ba04
MD5 f359b6050666c1a5a6d649a55bde06d1
BLAKE2b-256 026ca0872f09259e6c8b45fe0428b155e4c2abb34c0899ab39cdca0e1507ef2a

See more details on using hashes here.

File details

Details for the file pyclipr2-0.1.9-cp310-cp310-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for pyclipr2-0.1.9-cp310-cp310-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 f63acc53d0219a5dba692be971a27276914b94a4beaaad496fe5c4364f162b47
MD5 86bf50245148d4e74903d1e09d772caa
BLAKE2b-256 c5e4f5198f6e0a95cdcf5b5d9ebbb562782c56c44bcd7f9829b3ee107ca81224

See more details on using hashes here.

File details

Details for the file pyclipr2-0.1.9-cp310-cp310-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for pyclipr2-0.1.9-cp310-cp310-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 9117272d0fe1deac7188d327579a96038f7c608130bd71a18415b973698e4ced
MD5 28bcc2155b2cd32496fdae97db7c9174
BLAKE2b-256 388d598f2c62c88c7c94bc69076fc4f33463206dabedc6c9c4de04b745804ea3

See more details on using hashes here.

File details

Details for the file pyclipr2-0.1.9-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pyclipr2-0.1.9-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 177.6 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.13

File hashes

Hashes for pyclipr2-0.1.9-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1dc3cc654d685dabb7ffe918bc96d66cb0ea230759c80f1b953476d41203f324
MD5 5cf01c20cc375cdf65153ed08db3e51a
BLAKE2b-256 dd552832071934b579c01262e9f51fca3baf749404231fcf26842b75b9791937

See more details on using hashes here.

File details

Details for the file pyclipr2-0.1.9-cp39-cp39-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for pyclipr2-0.1.9-cp39-cp39-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 6933784271574246c8940b0c2e00fe046da1d933d79cbe89374d2cc4eb19919c
MD5 bc4970ceeb6d591b046047e92d3b9933
BLAKE2b-256 d177fb6247d163170e390a368611195817df22e81cb6eb07d50979457d3b85e1

See more details on using hashes here.

File details

Details for the file pyclipr2-0.1.9-cp39-cp39-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for pyclipr2-0.1.9-cp39-cp39-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 d6a569f0b6b23ae83fa3d05245f722f0373a2610697e57201d57401dacf21f7d
MD5 c0b49dac922c93c5c0f4a1d6bf9e7922
BLAKE2b-256 8b2da7f96467a7960e9a184f17c4c0bc3225b86c3158aac3a568b0ec3c5da0b3

See more details on using hashes here.

File details

Details for the file pyclipr2-0.1.9-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pyclipr2-0.1.9-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 168.7 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.10

File hashes

Hashes for pyclipr2-0.1.9-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 6537342af0ec5875732bbabb3fa6d1ecf254c02d2b4a8a3e99c0091b39e482e5
MD5 faa4b3ff772cd9e6d978baa4ffe3413a
BLAKE2b-256 6c0b7d2d57425fcb20749b08011b4107cbe2e80ba685e78c2b7a3e42fbd0f9b6

See more details on using hashes here.

File details

Details for the file pyclipr2-0.1.9-cp38-cp38-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for pyclipr2-0.1.9-cp38-cp38-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 a35cb5ef7438830c8b02ddb262dda911b227478bde6f1baa1902a64f74969b6e
MD5 a59860a43a37306e6f44d89827fcf219
BLAKE2b-256 cbf94052ade00b56565ac41674f0a42060a0ce1e11f0201b914de4d65eb6b09a

See more details on using hashes here.

File details

Details for the file pyclipr2-0.1.9-cp38-cp38-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for pyclipr2-0.1.9-cp38-cp38-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 d82bba6e17c95b28729455b1d9560e6ec1870b334bbe60e8c1eacbdbe4ed13d0
MD5 822fbd422d136728f93c52cf4461055b
BLAKE2b-256 15c9274d3a8d6d995d00d72d744268a07706bce94268e16877c5107da51bdef8

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