Skip to main content

An invigorating blend of 3D geometry tools in Python.

Project description

potpourri3d

A Python library of various algorithms and utilities for 3D triangle meshes and point clouds. Managed by Nicholas Sharp, with new tools added lazily as needed. Currently, mainly bindings to C++ tools from geometry-central.

pip install potpourri3d

The blend includes:

  • Mesh and point cloud reading/writing to a few file formats
  • Use heat methods to compute distance, parallel transport, logarithmic maps, and more
  • Computing geodesic polylines along surface via edge flips
  • More!

Installation

Potpourri3d is on the pypi package index with precompiled binaries for most configuations. Get it like:

pip install potpourri3d

If none of the precompiled binaries match your system, pip will attempt to compile the library from scratch. This requires cmake and a workng C++ compiler toolchain.

Note: Some bound functions invoke sparse linear solvers internally. The precompiled binaries use Eigen's solvers; using Suitesparse's solvers instead may significantly improve performance & robustness. To get them, locally compile the package on a machine with Suitesparse installed using the command below (relevant docs).

python -m pip install potpourri3d --no-binary potpourri3d

Documentation

Input / Output

Read/write meshes and point clouds from some common formats.

  • read_mesh(filename) Reads a mesh from file. Returns numpy matrices V, F, a Nx3 real numpy array of vertices and a Mx3 integer numpy array of 0-based face indices (or Mx4 for a quad mesh, etc).

    • filename the path to read the file from. Currently supports the same file types as geometry-central. The file type is inferred automatically from the path extension.
  • write_mesh(V, F, filename) Write a mesh to file.

    • V a Nx3 real numpy array of vertices
    • F a Mx3 integer numpy array of faces, with 0-based vertex indices (or Mx4 for a quad mesh, etc).
    • filename the path to write the file to. Currently supports the same file types as geometry-central. The file type is inferred automatically from the path extension.
  • read_point_cloud(filename) Reads a point cloud from file. Returns numpy matrix V, a Nx3 real numpy array of vertices. Really, this just reads a mesh file and ignores the face entries.

    • filename the path to read the file from. Currently supports the same file types as geometry-central's mesh reader. The file type is inferred automatically from the path extension.
  • write_point_cloud(V, filename) Write a mesh to file. Really, this just writes a mesh file with no face entries.

    • V a Nx3 real numpy array of vertices
    • filename the path to write the file to. Currently supports the same file types as geometry-central's mesh writer. The file type is inferred automatically from the path extension.

Mesh basic utilities

  • face_areas(V, F) computes a length-F real numpy array of face areas for a triangular mesh
  • vertex_areas(V, F) computes a length-V real numpy array of vertex areas for a triangular mesh (equal to 1/3 the sum of the incident face areas)
  • cotan_laplacian(V, F, denom_eps=0.) computes the cotan-Laplace matrix as a VxV real sparse csr scipy matrix. Optionally, set denom_eps to a small value like 1e-6 to get some additional stability in the presence of degenerate faces.

Mesh Distance

Use the heat method for geodesic distance to compute geodesic distance on surfaces. Repeated solves are fast after initial setup. Uses intrinsic triangulations internally for increased robustness.

import potpourri3d as pp3d

# = Stateful solves (much faster if computing distance many times)
solver = pp3d.MeshHeatMethodDistanceSolver(V,F)
dist = solver.compute_distance(7)
dist = solver.compute_distance_multisource([1,2,3])  

# = One-off versions
dist = pp3d.compute_distance(V,F,7)
dist = pp3d.compute_distance_multisource(V,F,[1,3,4])

The heat method works by solving a sequence of linear PDEs on the surface of your shape. On extremely coarse meshes, it may yield inaccurate results, if you observe this, consider using a finer mesh to improve accuracy. (TODO: do this internally with intrinsic Delaunay refinement.)

  • MeshHeatMethodDistanceSolver(V, F, t_coef=1., use_robust=True) construct an instance of the solver class.
    • V a Nx3 real numpy array of vertices
    • F a Mx3 integer numpy array of faces, with 0-based vertex indices (triangle meshes only, but need not be manifold).
    • t_coef set the time used for short-time heat flow. Generally don't change this. If necessary, larger values may make the solution more stable at the cost of smoothing it out.
    • use_robust use intrinsic triangulations for increased robustness. Generaly leave this enabled.
  • MeshHeatMethodDistanceSolver.compute_distance(v_ind) compute distance from a single vertex, given by zero-based index. Returns an array of distances.
  • MeshHeatMethodDistanceSolver.compute_distance_multisource(v_ind_list) compute distance from the nearest of a collection of vertices, given by a list of zero-based indices. Returns an array of distances.
  • compute_distance(V, F, v_ind) Similar to above, but one-off instead of stateful. Returns an array of distances.
  • compute_distance_multisource(V, F, v_ind_list) Similar to above, but one-off instead of stateful. Returns an array of distances.

Mesh Vector Heat

Use the vector heat method to compute various interpolation & vector-based quantities on meshes. Repeated solves are fast after initial setup.

import potpourri3d as pp3d

# = Stateful solves
V, F = # a Nx3 numpy array of points and Mx3 array of triangle face indices
solver = pp3d.MeshVectorHeatSolver(V,F)

# Extend the value `0.` from vertex 12 and `1.` from vertex 17. Any vertex 
# geodesically closer to 12. will take the value 0., and vice versa 
# (plus some slight smoothing)
ext = solver.extend_scalar([12, 17], [0.,1.])

# Get the tangent frames which are used by the solver to define tangent data
# at each vertex
basisX, basisY, basisN = solver.get_tangent_frames()

# Parallel transport a vector along the surface
# (and map it to a vector in 3D)
sourceV = 22
ext = solver.transport_tangent_vector(sourceV, [6., 6.])
ext3D = ext[:,0,np.newaxis] * basisX +  ext[:,1,np.newaxis] * basisY

# Compute the logarithmic map
logmap = solver.compute_log_map(sourceV)
  • MeshVectorHeatSolver(V, F, t_coef=1.) construct an instance of the solver class.
    • V a Nx3 real numpy array of vertices
    • F a Mx3 integer numpy array of faces, with 0-based vertex indices (triangle meshes only, should be manifold).
    • t_coef set the time used for short-time heat flow. Generally don't change this. If necessary, larger values may make the solution more stable at the cost of smoothing it out.
  • MeshVectorHeatSolver.extend_scalar(v_inds, values) nearest-geodesic-neighbor interpolate values defined at vertices. Vertices will take the value from the closest source vertex (plus some slight smoothing)
    • v_inds a list of source vertices
    • values a list of scalar values, one for each source vertex
  • MeshVectorHeatSolver.get_tangent_frames() get the coordinate frames used to define tangent data at each vertex. Returned as a tuple of basis-X, basis-Y, and normal axes, each as an Nx3 array. May be necessary for change-of-basis into or out of tangent vector convention.
  • MeshVectorHeatSolver.get_connection_laplacian() get the connection Laplacian used internally in the vector heat method, as a VxV sparse matrix.
  • MeshVectorHeatSolver.transport_tangent_vector(v_ind, vector) parallel transports a single vector across a surface
    • v_ind index of the source vertex
    • vector a 2D tangent vector to transport
  • MeshVectorHeatSolver.transport_tangent_vectors(v_inds, vectors) parallel transports a collection of vectors across a surface, such that each vertex takes the vector from its nearest-geodesic-neighbor.
    • v_inds a list of source vertices
    • vectors a list of 2D tangent vectors, one for each source vertex
  • MeshVectorHeatSolver.compute_log_map(v_ind) compute the logarithmic map centered at the given source vertex
    • v_ind index of the source vertex

Mesh Geodesic Paths

Use edge flips to compute geodesic paths on surfaces. These methods take an initial path, loop, or start & end points along the surface, and straighten the path out to be geodesic.

This approach is mainly useful when you want the path itself, rather than the distance. These routines use an iterative strategy which is quite fast, but note that it is not guaranteed to generate a globally-shortest geodesic (they sometimes find some other very short geodesic instead if straightening falls into different local minimum).

import potpourri3d as pp3d

V, F = # your mesh
path_solver = pp3d.EdgeFlipGeodesicSolver(V,F) # shares precomputation for repeated solves
path_pts = path_solver.find_geodesic_path(v_start=14, v_end=22)
# path_pts is a Vx3 numpy array of points forming the path
  • EdgeFlipGeodesicSolver(V, F) construct an instance of the solver class.
    • V a Nx3 real numpy array of vertices
    • F a Mx3 integer numpy array of faces, with 0-based vertex indices (must form a manifold, oriented triangle mesh).
  • EdgeFlipGeodesicSolver.find_geodesic_path(v_start, v_end, max_iterations=None, max_relative_length_decrease=None) compute a geodesic from v_start to v_end. Output is an Nx3 numpy array of positions which define the path as a polyline along the surface.
  • EdgeFlipGeodesicSolver.find_geodesic_path_poly(v_list, max_iterations=None, max_relative_length_decrease=None) like find_geodesic_path(), but takes as input a list of vertices [v_start, v_a, v_b, ..., v_end], which is shorted to find a path from v_start to v_end. Useful for finding geodesics which are not shortest paths. The input vertices do not need to be connected; the routine internally constructs a piecwise-Dijkstra path between them. However, that path must not cross itself.
  • EdgeFlipGeodesicSolver.find_geodesic_loop(v_list, max_iterations=None, max_relative_length_decrease=None) like find_geodesic_path_poly(), but connects the first to last point to find a closed geodesic loop.

In the functions above, the optional argument max_iterations is an integer, giving the the maximum number of shortening iterations to perform (default: no limit). The optional argument max_relative_length_decrease is a float limiting the maximum decrease in length for the path, e.g. 0.5 would mean the resulting path is at least 0.5 * L length, where L is the initial length.

Mesh Geodesic Tracing

Given an initial point and direction/length, these routines trace out a geodesic path along the surface of the mesh and return it as a polyline.

import potpourri3d as pp3d

V, F = # your mesh
tracer = pp3d.GeodesicTracer(V,F) # shares precomputation for repeated traces

trace_pts = tracer.trace_geodesic_from_vertex(22, np.array((0.3, 0.5, 0.4)))
# trace_pts is a Vx3 numpy array of points forming the path
  • GeodesicTracer(V, F) construct an instance of the tracer class.
    • V a Nx3 real numpy array of vertices
    • F a Mx3 integer numpy array of faces, with 0-based vertex indices (must form a manifold, oriented triangle mesh).
  • GeodesicTracer.trace_geodesic_from_vertex(start_vert, direction_xyz, max_iterations=None) trace a geodesic from start_vert. direction_xyz is a length-3 vector giving the direction to walk trace in 3D xyz coordinates, it will be projected onto the tangent space of the vertex. The magnitude of direction_xyz determines the distance walked. Output is an Nx3 numpy array of positions which define the path as a polyline along the surface.
  • GeodesicTracer.trace_geodesic_from_face(start_face, bary_coords, direction_xyz, max_iterations=None) similar to above, but from a point in a face. bary_coords is a length-3 vector of barycentric coordinates giving the location within the face to start from.

Set max_iterations to terminate early after tracing the path through some number of faces/edges (default: no limit).

Point Cloud Distance & Vector Heat

Use the heat method for geodesic distance and vector heat method to compute various interpolation & vector-based quantities on point clouds. Repeated solves are fast after initial setup.

point cloud vector heat examples

import potpourri3d as pp3d

# = Stateful solves
P = # a Nx3 numpy array of points
solver = pp3d.PointCloudHeatSolver(P)

# Compute the geodesic distance to point 4
dists = solver.compute_distance(4)

# Extend the value `0.` from point 12 and `1.` from point 17. Any point 
# geodesically closer to 12. will take the value 0., and vice versa 
# (plus some slight smoothing)
ext = solver.extend_scalar([12, 17], [0.,1.])

# Get the tangent frames which are used by the solver to define tangent data
# at each point
basisX, basisY, basisN = solver.get_tangent_frames()

# Parallel transport a vector along the surface
# (and map it to a vector in 3D)
sourceP = 22
ext = solver.transport_tangent_vector(sourceP, [6., 6.])
ext3D = ext[:,0,np.newaxis] * basisX +  ext[:,1,np.newaxis] * basisY

# Compute the logarithmic map
logmap = solver.compute_log_map(sourceP)
  • PointCloudHeatSolver(P, t_coef=1.) construct an instance of the solver class.
    • P a Nx3 real numpy array of points
    • t_coef set the time used for short-time heat flow. Generally don't change this. If necessary, larger values may make the solution more stable at the cost of smoothing it out.
  • PointCloudHeatSolver.extend_scalar(p_inds, values) nearest-geodesic-neighbor interpolate values defined at points. Points will take the value from the closest source point (plus some slight smoothing)
    • v_inds a list of source points
    • values a list of scalar values, one for each source points
  • PointCloudHeatSolver.get_tangent_frames() get the coordinate frames used to define tangent data at each point. Returned as a tuple of basis-X, basis-Y, and normal axes, each as an Nx3 array. May be necessary for change-of-basis into or out of tangent vector convention.
  • PointCloudHeatSolver.transport_tangent_vector(p_ind, vector) parallel transports a single vector across a surface
    • p_ind index of the source point
    • vector a 2D tangent vector to transport
  • PointCloudHeatSolver.transport_tangent_vectors(p_inds, vectors) parallel transports a collection of vectors across a surface, such that each vertex takes the vector from its nearest-geodesic-neighbor.
    • p_inds a list of source points
    • vectors a list of 2D tangent vectors, one for each source point
  • PointCloudHeatSolver.compute_log_map(p_ind) compute the logarithmic map centered at the given source point
    • p_ind index of the source point

Other Point Cloud Routines

Local Triangulation

Construct a local triangulation of a point cloud, a surface-like set of triangles amongst the points in the cloud. This is not a nice connected/watertight mesh, instead it is a crazy soup, which is a union of sets of triangles computed independently around each point. These triangles are suitable for running many geometric algorithms on, such as approximating surface properties of the point cloud, evaluating physical and geometric energies, or building Laplace matrices. See "A Laplacian for Nonmanifold Triangle Meshes", Sharp & Crane 2020, Sec 5.7 for details.

  • PointCloudLocalTriangulation(P, with_degeneracy_heuristic=True)
    • PointCloudLocalTriangulation.get_local_triangulation() returns a [V,M,3] integer numpy array, holding indices of vertices which form the triangulation. Each [i,:,:] holds the local triangles about vertex i. M is the max number of neighbors in any local triangulation. For vertices with fewer neighbors, the trailing rows hold -1.

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

potpourri3d-1.1.0.tar.gz (1.4 MB view details)

Uploaded Source

Built Distributions

potpourri3d-1.1.0-pp310-pypy310_pp73-win_amd64.whl (495.7 kB view details)

Uploaded PyPy Windows x86-64

potpourri3d-1.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (881.4 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

potpourri3d-1.1.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (958.1 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686

potpourri3d-1.1.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl (735.2 kB view details)

Uploaded PyPy macOS 11.0+ ARM64

potpourri3d-1.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl (871.3 kB view details)

Uploaded PyPy macOS 10.15+ x86-64

potpourri3d-1.1.0-pp39-pypy39_pp73-win_amd64.whl (495.9 kB view details)

Uploaded PyPy Windows x86-64

potpourri3d-1.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (881.3 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

potpourri3d-1.1.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (957.9 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686

potpourri3d-1.1.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl (735.3 kB view details)

Uploaded PyPy macOS 11.0+ ARM64

potpourri3d-1.1.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl (871.2 kB view details)

Uploaded PyPy macOS 10.15+ x86-64

potpourri3d-1.1.0-pp38-pypy38_pp73-win_amd64.whl (495.8 kB view details)

Uploaded PyPy Windows x86-64

potpourri3d-1.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (881.4 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

potpourri3d-1.1.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (958.0 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686

potpourri3d-1.1.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl (735.4 kB view details)

Uploaded PyPy macOS 11.0+ ARM64

potpourri3d-1.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (869.9 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

potpourri3d-1.1.0-pp37-pypy37_pp73-win_amd64.whl (495.5 kB view details)

Uploaded PyPy Windows x86-64

potpourri3d-1.1.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (880.8 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

potpourri3d-1.1.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (957.7 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686

potpourri3d-1.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (869.6 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

potpourri3d-1.1.0-cp312-cp312-win_amd64.whl (497.5 kB view details)

Uploaded CPython 3.12 Windows x86-64

potpourri3d-1.1.0-cp312-cp312-win32.whl (439.7 kB view details)

Uploaded CPython 3.12 Windows x86

potpourri3d-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (881.2 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

potpourri3d-1.1.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (959.0 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686

potpourri3d-1.1.0-cp312-cp312-macosx_11_0_arm64.whl (735.5 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

potpourri3d-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl (871.1 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

potpourri3d-1.1.0-cp312-cp312-macosx_10_9_universal2.whl (1.6 MB view details)

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

potpourri3d-1.1.0-cp311-cp311-win_amd64.whl (497.3 kB view details)

Uploaded CPython 3.11 Windows x86-64

potpourri3d-1.1.0-cp311-cp311-win32.whl (439.6 kB view details)

Uploaded CPython 3.11 Windows x86

potpourri3d-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (882.4 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

potpourri3d-1.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (959.6 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

potpourri3d-1.1.0-cp311-cp311-macosx_11_0_arm64.whl (736.5 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

potpourri3d-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl (871.7 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

potpourri3d-1.1.0-cp311-cp311-macosx_10_9_universal2.whl (1.6 MB view details)

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

potpourri3d-1.1.0-cp310-cp310-win_amd64.whl (496.2 kB view details)

Uploaded CPython 3.10 Windows x86-64

potpourri3d-1.1.0-cp310-cp310-win32.whl (438.6 kB view details)

Uploaded CPython 3.10 Windows x86

potpourri3d-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (881.1 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

potpourri3d-1.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (957.6 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

potpourri3d-1.1.0-cp310-cp310-macosx_11_0_arm64.whl (735.3 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

potpourri3d-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl (870.3 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

potpourri3d-1.1.0-cp310-cp310-macosx_10_9_universal2.whl (1.6 MB view details)

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

potpourri3d-1.1.0-cp39-cp39-win_amd64.whl (496.4 kB view details)

Uploaded CPython 3.9 Windows x86-64

potpourri3d-1.1.0-cp39-cp39-win32.whl (438.6 kB view details)

Uploaded CPython 3.9 Windows x86

potpourri3d-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (881.4 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

potpourri3d-1.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (957.9 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

potpourri3d-1.1.0-cp39-cp39-macosx_11_0_arm64.whl (735.4 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

potpourri3d-1.1.0-cp39-cp39-macosx_10_9_x86_64.whl (870.4 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

potpourri3d-1.1.0-cp39-cp39-macosx_10_9_universal2.whl (1.6 MB view details)

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

potpourri3d-1.1.0-cp38-cp38-win_amd64.whl (496.2 kB view details)

Uploaded CPython 3.8 Windows x86-64

potpourri3d-1.1.0-cp38-cp38-win32.whl (438.5 kB view details)

Uploaded CPython 3.8 Windows x86

potpourri3d-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (881.1 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

potpourri3d-1.1.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (957.4 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

potpourri3d-1.1.0-cp38-cp38-macosx_11_0_arm64.whl (735.3 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

potpourri3d-1.1.0-cp38-cp38-macosx_10_9_x86_64.whl (870.1 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

potpourri3d-1.1.0-cp38-cp38-macosx_10_9_universal2.whl (1.6 MB view details)

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

potpourri3d-1.1.0-cp37-cp37m-win_amd64.whl (496.3 kB view details)

Uploaded CPython 3.7m Windows x86-64

potpourri3d-1.1.0-cp37-cp37m-win32.whl (439.6 kB view details)

Uploaded CPython 3.7m Windows x86

potpourri3d-1.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (886.7 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

potpourri3d-1.1.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (966.5 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686

potpourri3d-1.1.0-cp37-cp37m-macosx_10_9_x86_64.whl (869.0 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

potpourri3d-1.1.0-cp36-cp36m-win_amd64.whl (496.2 kB view details)

Uploaded CPython 3.6m Windows x86-64

potpourri3d-1.1.0-cp36-cp36m-win32.whl (439.5 kB view details)

Uploaded CPython 3.6m Windows x86

potpourri3d-1.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (886.8 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

potpourri3d-1.1.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl (966.3 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ i686

potpourri3d-1.1.0-cp36-cp36m-macosx_10_9_x86_64.whl (868.8 kB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

File details

Details for the file potpourri3d-1.1.0.tar.gz.

File metadata

  • Download URL: potpourri3d-1.1.0.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for potpourri3d-1.1.0.tar.gz
Algorithm Hash digest
SHA256 f211581a478a88609f6deb122782d89439b811d522d6950e210fa617041de00a
MD5 5011a1b6f71f6409f94ecb302bd6e901
BLAKE2b-256 533e7114433c37ad0ac6cff3db2bc6315d672c61ed76910891b597503a740d7f

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-pp310-pypy310_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 a351d5840e8fd1d2b276d0ec6bdb9b1605f10507aa0f205e5870e2caf81f517a
MD5 55707b044f89246352cc61ee1df7b49e
BLAKE2b-256 656098bd3ff53e7aec2bf9382041b3a1d9d54a980de7fb035dac358176d0acf3

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 89968f02951c5f16583427d48f82d5f6dd9047f04127bc2895488edef08a59a4
MD5 c92da617602b32e1b63583281bd90059
BLAKE2b-256 817bc9e8de2ad6f9aa7fc5bb068a8bfef6837e2ef65b8ab5243ca23928d97aee

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 01ddcf8af38c2181ff536ace8441b5913ee8e0f01039094a0c78a715f5015171
MD5 f04e0219e941eddef2c38282ff29b3f4
BLAKE2b-256 1ba17ad2c3ba3604d9e554fedde6571e98825733c97fba82b91f367fb8b0a74d

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8e9954237687dfb28a615acd28644f18be914e698d9d936fc7503dcf72635f67
MD5 67209b0178fb2702837e8006ff773926
BLAKE2b-256 ee3ee0c0c33ba0bd42f9a3b06d1eea3e17e77961f0891a0cbb9e4cc12c3e9979

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 7c697eac8e9445561c95c6550ef27bf3dd01abadd23bf53b0d05454848470bcf
MD5 8ebdf3d74ae8b9027397d186d87f2cf9
BLAKE2b-256 52fef4d70a0308642a537a8d503b5f2be20f55407c3a6f062757e1f37349fbd1

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-pp39-pypy39_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 4ed7265a2377f854d2d939456c0d3e2d531200526749d799f9c11bfe54e9363f
MD5 b7c20223462f0027c9449af91970d24d
BLAKE2b-256 6bf2ddd52d7bfd7ed2a18cf75eaf3ea40746b838b0105d4b1a55d095719d7b91

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 058b34a56ee49ebcdfd5402470f75a20ee423c16b1287afb5e72d68a818d7350
MD5 5e915c5015bd0748cb52ac71ad2cf976
BLAKE2b-256 1b19950b803336169a2a66f150f305a83e8b32a14f00086eb08c1675b61ef595

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1e054dd6b60eb946ccd66de495b03a962a849669f14a0d834ffde129f151a62d
MD5 b5aad1e7bd59bde7fde4ecf05160e877
BLAKE2b-256 6e096a1f02a588a15745eb8bcb9d1858f908742cf42993a7a69d428a461a2f54

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e7e7be2fe58e325511f0545ce5c0f3e7048554a9032fa4187cc385c5493cb73b
MD5 aac6396042798c030971e753226b8f58
BLAKE2b-256 1ee1bd2f1421c702322140e1bd40c6f51c73c1142e6fc16b81f0dc0ae48a5854

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 b09aeaffc9696bc9244f4b96b1b9571b8188d0b6ee1b0d9b1eb1748052cc6b00
MD5 6a1ac42fb5efd0956a33fb21ea85f002
BLAKE2b-256 1a5d9c13b2aeafd40ccdd2470fc905502276dea68099b4506caef71a2b400d92

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-pp38-pypy38_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 8f99ad953c0ea6786be44e9b540fbe5b8b649c5b7196796263b5408fc98f2a20
MD5 114b758d0f5c91dbcfce93a9b612b15a
BLAKE2b-256 28227283b5e9aed09dac65a32be9d2a991b7358ec0ae696a03a3180e0055459d

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 575468d65383c05e1e9bb6bc61ac53a838b8fe2dd3328910828f0934218076ba
MD5 2bf6c5061f7ace8499467661041b177b
BLAKE2b-256 32d518c8db9656bb5dbb39e6fc6b2997b56d6af793bf7cb630dfcc09a629cea8

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e37c032bd8f0207da031a732b8c43904ea8855fd3ebe3879887ed6a365995e59
MD5 bf1ddc22bc6e1ea78f64080036949668
BLAKE2b-256 4fc3d268f1ff813ab6bf823dddeaca487d316050342dcc014ebe98c93cd551fd

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 59568acb6ac6c586c7f071743ee02264425609dd848fd40e34a376181e5d27d8
MD5 867ae07b1d49f846be489eb0a4a7f408
BLAKE2b-256 5e1b9f79866a9a9f73b26d646f8882fef927919155cf24c9407e4b92801ab2f6

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b52072188bdf1aa5977286454f81cef2e1b1b6ed54e7cc56b97da4b64eccbd53
MD5 e6b04cc4d8c165849612be40e0c30009
BLAKE2b-256 2071662fd70830999db1626ea44dcbe00aee8aa2df49129d877324ec18aef41e

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-pp37-pypy37_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-pp37-pypy37_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 fc2d001f2bd8bca86516a96c8130c444795d8e8e8e0369d73001c215e6ab4f7a
MD5 c6b83108bf0764f00e435b45ea98ff21
BLAKE2b-256 ac50792a3cfd8a763c9809a4523bac7a0168f75ab3569dfe257a8a07b5ba4589

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 84371c8b60ac65f5680e347179eabbda66f89ae3845f4db9b63811a10cb522ea
MD5 8be458594abef93afb023f2d1ab02081
BLAKE2b-256 a1f054b8915f5488d54ab7606144c9ee37c8ed3452ba0664b959cf97cab6298b

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 6bbaf214c77af6fde22ef17598485d31490d25869efd1c920f69ba3b51723a2b
MD5 6598763af866d2e009e61ecf6dbde091
BLAKE2b-256 fd2e32a5006d9524f7b592db8d49f6a5e48aef5810e6d4aa7b752102574dbc38

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b0569f0070b0f3d02eee37260d9d95f3156a63496c7a5f383b1a957e3e0fb4de
MD5 98f2e8cd7397d089b7ee72e9a717c1c3
BLAKE2b-256 3566bf5fd8fb5a6f973c682d85e3eee5498d6f11476b9abaa5b546b697666c50

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8151f4570cfd6d007091887b73430a2f4bd01d0888ee091f14f8a08ecc904284
MD5 629c30f670fcf6827988e5c7e04d52aa
BLAKE2b-256 7b2a27d0bb12dea87cdd91e749c1fc07c455739c30275b418359b60585fd4a64

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp312-cp312-win32.whl.

File metadata

  • Download URL: potpourri3d-1.1.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 439.7 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for potpourri3d-1.1.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 45b452016f81fd180601e3f748a21fac0833b1d9cbf86f4d783b3c3747b07011
MD5 809b01b37047379a1d17daecbfcc69c0
BLAKE2b-256 a2eec7f49e0d37818b40e5342c28a2f36a9667ffc82418b8f9b8b8ccb2480728

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 685e17769d003a66aa17db8fdc6732882d058abbf7de84aaef6e0b50c2607bcf
MD5 170541445f0c5cf12a782faaae38b7cb
BLAKE2b-256 988aa2c3f34dd06b4cbab6dee1f3d09ef18cd926f17ca1abcbd65773edb5d20c

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 17bc75b910da9347adbfb23d12e7af7282ac66b444eea6b6ddecc807761cb2ea
MD5 98f296ea4daf439bef8e67373e5db67c
BLAKE2b-256 4e06e807e9c1e379ada4fa58774d597afd43d6118d40cbcc07a00e5ae40691f1

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 33f919d50024b998d750942a84e2d66725fd75d1236e314939a467a638838135
MD5 cf901044497dc2e154caf2746327a746
BLAKE2b-256 799cd4bb5f7886cd96640ff58ecd71723d484f4028f68c9cd780bd007e6e35b6

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 681276dccfcf1b29ef76597d0f4dbdb9aef27295883ce5d7357e16c3f49cd68e
MD5 6c1c4ab8488da5b487688ecd71aefa49
BLAKE2b-256 a19518b15d5ef4dd8763dbbd387b8b100b617b9cc06725d8bde544265b4dc93b

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp312-cp312-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp312-cp312-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 ce6fa0f829a069d2f85283f142efdba643207068d7a8d908d92e4eb5c63b0fd7
MD5 dd4f3b3ca304a816dfef01f5cd4956ca
BLAKE2b-256 825cac57b66f1bbd915fad2327f529b2b79e078720fe40735f98e2da5d1d0cef

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 62102fa9cc0830fb3f448688b53de80e32b04b94ab501831ae571465cc9916f7
MD5 88d4915963d4ed81794a250610e3f212
BLAKE2b-256 56d1b4f0e647825ce90c0b57293c8e10b86ce18abd6d5ff5774b850612a53b3d

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp311-cp311-win32.whl.

File metadata

  • Download URL: potpourri3d-1.1.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 439.6 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for potpourri3d-1.1.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 a2212644c635d189df9b3c33d2d7be0860ceb91a6647107bbc97088988111dff
MD5 a26f528c7a55149a27d086a7aa85b5eb
BLAKE2b-256 c5810361750288e4dbb61ebd18dbd5d491b2590688e34e6f0cd7cb1cba003ff5

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d7771757e5abda892050caa94e0461b3e7799b8040350b529fa74f7777a886df
MD5 3c3eccc5e1b8b896bcebb8eea78a2615
BLAKE2b-256 15ed984d1463e4627e27d059c07dc4639d8ac88c8fe4a02ffab05b1969bcd008

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 63968660ff125b2cbb57c06413e28c302582dd930aef1acd667be46eef436ea0
MD5 59f38b59db18b0b18bca33f9e4b4fa04
BLAKE2b-256 aa53f571fe9092b52e51a3844bcc018c730689b569fc2aea6497e11f50c34008

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9f8fc7f300b82039b9eb9b5e276ef54135e61e553ba54ae0592af6920cde6afa
MD5 9d2b5a87d29a9b6db623e1cc773b9efb
BLAKE2b-256 e2da3a578d70c99c77f13e94289ec60f952fa7c97fd27cb7506f088878fc930f

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f8a7f6a46ecd0f7694de8dd4161e4684dac32278b6b9bde2fb8d165c8c5a2660
MD5 fb449e4e7fb6d95c99ca16e2a9b2b38e
BLAKE2b-256 ee8e757435cbb041d08854f0da313d826b3541515947e0013c1c188dbb1d5be7

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 d39ed7b901d6ce288730324227601bd18c359f154cd3fea36ff09bb2c57b7ccc
MD5 c83cd12c04a4f3875f1cfc9b182bbf21
BLAKE2b-256 e5e1e7cad7ccb6847d60b942029a845dd6ad58f2e583b625add3f06e263d88fb

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 5fcb17eadcd07828afbdbc5c14d559bf288f12ddb3bddf9f76af9d39b0f33a5d
MD5 22945ccc0fa420eea05e653750f8b458
BLAKE2b-256 f78806105d2cdbdf32fb6833df65c519ee6d2a869561f12cf85cb6de969a05e8

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp310-cp310-win32.whl.

File metadata

  • Download URL: potpourri3d-1.1.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 438.6 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for potpourri3d-1.1.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 32c7425016b43b767ccb4e6eaa646b4f007e8641f647573fb05ec63b7ca4674d
MD5 53761f1bcc7621284541f616d003c4e3
BLAKE2b-256 70e041453ed2ce69a76c3a8ceeef4aabadc2122fe28dd02b9f6761a44f6c1d50

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9e9a7d70a313262494dd7de6bb545b5b1ba48243f73827b91fb26128c8907ee3
MD5 a8857f1b08c6ef904ccf80381bd954ff
BLAKE2b-256 3212b11f9552fe9772559f4630a8201d929f852a0ef7b0c0dfe27d48fda4c839

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 03a0da8583a22f8dd725c422aa6509b55292e1605a324ccde0118889d298af08
MD5 ecf677b66c075526ee101f57146d801a
BLAKE2b-256 ac33f144a93fda30d72f91ec792e6d46bf192a373f880b9ad8230db921600442

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e42cea8a28619343c3e1fe3c4ecedfed98b68469df704eeffaef46bced426caf
MD5 d33f5171ef95a306480ca49ba91a1d55
BLAKE2b-256 616ca33e4aff2eea86b051d760897c08089650990c1182bcb136aefe6230a449

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 62e43f89c09a377281d4e44a6fed260168dc6ba9acf3fdd8f3ff47e321c3b099
MD5 35360c8342b03745da5adf57b8d10db4
BLAKE2b-256 b3dbf2cccced494b8cefaa950b310aea1a0389b442c0e8ff8437819ca7960fea

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 ccf23a754120454104ab037877aebbc6861380e3665aa7855752c7b1fb6e8338
MD5 f1bd430a6c71138e0432a30911569559
BLAKE2b-256 467810132a69b6389560eb0caee4153064943d9c46836708c904cecd62ac3e17

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 153f1b2aca2e6b2c181a818e7ff5f48f72f89c421cd700a096861d64928f2ba5
MD5 14666b84483ab6dafbbdf48358210d98
BLAKE2b-256 3e41bf42a4b03c311499801cb0b6ad5dc9dac6a20672bb6363deb16e2054042f

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp39-cp39-win32.whl.

File metadata

  • Download URL: potpourri3d-1.1.0-cp39-cp39-win32.whl
  • Upload date:
  • Size: 438.6 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for potpourri3d-1.1.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 ccb8b28571c0835871f995227315b5e7ee2a53cb59a680882c7ac5500ec48cce
MD5 8f35df21edc6d52f8a439ad78a149e27
BLAKE2b-256 9695a979edb1dd77964d0de045e53b85d45935fc06baa13463b4cb5b4fdfe156

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5398255a59550bd467932f1e96867497b18aac3c441c1e652ffae2f6be6ee825
MD5 20afc0911d308376ea9d6b3957c65956
BLAKE2b-256 cc535d6c03da141b79715769aa9d79289695e81c015dca0d55bf89e9668776dc

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d3e3cc3ee1c3863bcbf9d0855347fddc7876071d8295c0a3ebd18f7720b6dc9c
MD5 b677b202d5930d79277ad7de644e0405
BLAKE2b-256 18767aa96c3f0f831945fec007188a3176494adbf7c15fd766622f583ad62b75

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7171d304f14e383c6115602c6d0d2077a6cb55e3d4162903645f87c2a0a4c7e6
MD5 2224ab5c7a87670c824f25103e2b1fb8
BLAKE2b-256 b5d1de3c22b29bb0a773e45e0282f7605e1b9546a55c8ad811dc53cc22debc97

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 251b926103dc2dff461bedf910e86a76d5b060f2dca76edd647eef9f94b03805
MD5 8c1d7063a57137ac183f5519e97b9eaa
BLAKE2b-256 e0d57171032a4884e67dcd9d4e3c0b06db42ad85a02be57a23852238ae2c6142

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 05436a2fd7d66c86788ef1f2ea9b3fdc77f1e98871b1063a9251584d047d8414
MD5 834918df557e2b2cc1eed099af9ca053
BLAKE2b-256 f6d6cd3ca7c2eccff3240b00ff2e38ca3aea3c2a64dce652cfe5fcf99969e989

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 af9f9b798488692f77b428689c9ab7ae99140fd107316a4fc7f9ee8707d5529a
MD5 740459ffa8a0e05a7548e2d9e9abb640
BLAKE2b-256 e9219a8f887118be84c4b7e9614d0585077c2949877c5eab1ab0391ca9810c5f

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp38-cp38-win32.whl.

File metadata

  • Download URL: potpourri3d-1.1.0-cp38-cp38-win32.whl
  • Upload date:
  • Size: 438.5 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for potpourri3d-1.1.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 34375bdb00b5e6774c753fae9aa8dba0832a779a9a536801ab43649cd199a19c
MD5 9e4bc3c860b8316ab342d7a8af05adfe
BLAKE2b-256 2776aac2b9d27f9c5c87e0e116bea58c310f178caa566a982fe535e69b734aca

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2f69a0feae87179a99f561bfbe06772737c1db96b2d47ad6b33725cccafe0554
MD5 e85679de1dfe0ffe91b6d3f2889fb7b9
BLAKE2b-256 f967a66918df0289fe5c3694f584462e12759c23be6565c72840b43cf5660e8b

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 cc70d52932fbf082fb48094cead05197a225510209e908ace72127b12a0f1047
MD5 a5a8231628f5c8b525d9bd6cd1f31055
BLAKE2b-256 52ab81ae613a1be561021134105da9cd05074abf61c576bcd8745f9a1fdb689c

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5da553e559e7652558827553c954341be992c244094674b6ed29d901a5c9de79
MD5 fa6af62dee781614836ef5ef0b567de8
BLAKE2b-256 7d9e2c94760a3e3e12be4ed22bbbd92d4e7c102eb3bc4a04b75597706b7710b1

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 78536322c710884696cbbdbfe7327ec9b505a66d4857798a324700f8f01de808
MD5 565cc647bd17cec762a829e54596680f
BLAKE2b-256 76f2394f4a1c988b0fc1d1dff7bc4fa093eca6f0967a853058eeb07153de184d

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp38-cp38-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 2b8baa7dc4d4d6bd52298e9bb66fde67e23db819b914635f9ab5f49b11ad88e6
MD5 10abd63bc296e69d7a9eac33d30cebd3
BLAKE2b-256 6afa612d0f79ba3d8f254cca00a0da3b0068ab46bda70c117cb571cee9b3ab7d

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 c29b8ef5524fd50ec78c36076f48d80a5f3b15680f27de6f3d45c946603614f5
MD5 94c7e40d57b9afcd4311750f176dabd3
BLAKE2b-256 23d95e7bf71b0a543e4bbac85cf8ed1c1a8dd1792d4c8d76e95261cc9376d561

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp37-cp37m-win32.whl.

File metadata

  • Download URL: potpourri3d-1.1.0-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 439.6 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for potpourri3d-1.1.0-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 4f9103c03ec3f2575ae88359552d6e9540788534dd793a562afbfe89a544d982
MD5 da4121175ae6bf937c20c11a49602c77
BLAKE2b-256 68f41f671857ee38054dfbdd90f92827d6a4254a1382c112fa479bd89b5f844a

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a48defb5e024757e0305bc5ed650327364f981a4ce66f27485f3ec4b8fd0c7c7
MD5 8ebd59688dfbc88208c430f1f6ac62e6
BLAKE2b-256 81539f20992d366ce9c8b949ffc77a1c8b6fbbc74a112c35b4221c9c6f0a538c

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0138dab52eb7fe30c6b8f1d6fb2bffd82b9af333304b73b065ee93a059d28561
MD5 9dde0a6ee8587012e72d1a54f2381dbb
BLAKE2b-256 d65ce06f24068b8b13fe05b09285bc105c06c3ee58d76fa9d20737ed65ca99fc

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f2763fcab4f6296e1576026599d5ee6f6996d9d71fb5836fc393250ed94ff2fd
MD5 2aa5fbc8bb47428c6a2c05dc01fbb8a3
BLAKE2b-256 29c6497afdabc76ad54d6d07e8960010d6eae9dfaf8ed6d10925d8a636476d6d

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp36-cp36m-win_amd64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 d846d2d5c708434026b94695df0a84d4b0abdfee9a9fe8d4055d4026d9a7428a
MD5 f87be57e412fa171b0a2c378ce08a3f0
BLAKE2b-256 446eb4621eba83aab6364fdf779d992df89899bb7cd4e5414b18f71788725afd

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp36-cp36m-win32.whl.

File metadata

  • Download URL: potpourri3d-1.1.0-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 439.5 kB
  • Tags: CPython 3.6m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for potpourri3d-1.1.0-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 c1af41a9fc63215e6f5ebe56735169ee242c3c63885c15498c0b6ca6a0532ada
MD5 12d5b15a631cafd73c0dad8e8f331921
BLAKE2b-256 fe0fdd1a52de4819c229ca80187e423d1e024cba7a982fa835c8c5d9ebd6ef7b

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 13a278d6ab84bfae03d1b73572eb31a031c0a6f2bc04fcf7dc751349b822029f
MD5 30831eaea6db41a613dc0793fa69c121
BLAKE2b-256 17531cf0f53d41e5886da1ed0f5819db67e8a9f97e127b72bc4427851648a1fd

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ec34844a1ee7cce301f2ef82fab6f51be57c0a38dab730de4c3e17700691efd0
MD5 425ebd9ce0145e2eb1b56a2c48560ddd
BLAKE2b-256 999670e901c09b964a58b9a2d2030788fce0d31962334baff68661cdc8947f68

See more details on using hashes here.

File details

Details for the file potpourri3d-1.1.0-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for potpourri3d-1.1.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9107332b7b7d57238b83066ce4c25477a9e5f7a74ef5f4f73cfed35cdf694f85
MD5 8627eaaa2e45e95d4eabe57774f73a9c
BLAKE2b-256 0671421e3c28c79f785530ab43d8c886bca27bf3d1574cd76cdf330e4be25703

See more details on using hashes here.

Supported by

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