Skip to main content

Compute the geometric features associated with each point's neighborhood

Project description

Point Geometric Features

python C++ license

📌 Description

The pgeof library provides utilities for fast, parallelized computing ⚡ of local geometric features for 3D point clouds ☁️ on CPU .

️List of available features ️👇
  • linearity
  • planarity
  • scattering
  • verticality (two formulations)
  • normal_x
  • normal_y
  • normal_z
  • length
  • surface
  • volume
  • curvature
  • optimal neighborhood size

pgeof allows computing features in multiple fashions: on-the-fly subset of features a la jakteristics, array of features, or multiscale features. Moreover, pgeof also offers functions for fast K-NN or radius-NN searches 🔍.

Behind the scenes, the library is a Python wrapper around C++ utilities. The overall code is not intended to be DRY nor generic, it aims at providing efficient as possible implementations for some limited scopes and usages.

🧱 Installation

From binaries

python -m pip install pgeof 

or

python -m pip install git+https://github.com/drprojects/point_geometric_features

Building from sources

pgeof depends on Eigen library, Taskflow, nanoflann and nanobind. The library adheres to PEP 517 and uses scikit-build-core as build backend. Build dependencies (nanobind, scikit-build-core, ...) are fetched at build time. C++ third party libraries are embedded as submodules.

# Clone project
git clone --recurse-submodules https://github.com/drprojects/point_geometric_features.git
cd point_geometric_features

# Build and install the package
python -m pip install .

🚀 Using Point Geometric Features

Here we summarize the very basics of pgeof usage. Users are invited to use help(pgeof) for further details on parameters.

At its core pgeof provides three functions to compute a set of features given a 3D point cloud and some precomputed neighborhoods.

import pgeof

# Compute a set of 11 predefined features per points
pgeof.compute_features(
    xyz, # The point cloud. A numpy array of shape (n, 3)
    nn, # CSR data structure see below
    nn_ptr, # CSR data structure see below
    k_min = 1 # Minimum number of neighbors to consider for features computation
    verbose = false # Basic verbose output, for debug purposes
)
# Sequence of n scales feature computation
pgeof.compute_features_multiscale(
    ...
    k_scale # array of neighborhood size
)
# Feature computation with optimal neighborhood selection as exposed in Weinmann et al., 2015
# return a set of 12 features per points (11 + the optimal neighborhood size)
pgeof.compute_features_optimal(
    ...
    k_min = 1, # Minimum number of neighbors to consider for features computation
    k_step = 1, # Step size to take when searching for the optimal neighborhood
    k_min_search = 1, # Starting size for searching the optimal neighborhood size. Should be >= k_min 
)

⚠️ Please note that for theses three functions the neighbors are expected in CSR format. This allows expressing neighborhoods of varying sizes with dense arrays (e.g. the output of a radius search).

We provide very tiny and specialized k-NN and radius-NN search routines. They rely on nanoflann C++ library and should be faster and lighter than scipy and sklearn alternatives.

Here are some examples of how to easily compute and convert typical k-NN or radius-NN neighborhoods to CSR format (nn and nn_ptr are two flat uint32 arrays):

import pgeof
import numpy as np

# Generate a random synthetic point cloud and k-nearest neighbors
num_points = 10000
k = 20
xyz = np.random.rand(num_points, 3).astype("float32")
knn, _ = pgeof.knn_search(xyz, xyz, k)

# Converting k-nearest neighbors to CSR format
nn_ptr = np.arange(num_points + 1) * k
nn = knn.flatten()

# You may need to convert nn/nn_ptr to uint32 arrays
nn_ptr = nn_ptr.astype("uint32")
nn = nn.astype("uint32")

features = pgeof.compute_features(xyz, nn, nn_ptr)
import pgeof
import numpy as np

# Generate a random synthetic point cloud and k-nearest neighbors
num_points = 10000
radius = 0.2
k = 20
xyz = np.random.rand(num_points, 3).astype("float32")
knn, _ = pgeof.radius_search(xyz, xyz, radius, k)

# Converting radius neighbors to CSR format
nn_ptr = np.r_[0, (knn >= 0).sum(axis=1).cumsum()]
nn = knn[knn >= 0]

# You may need to convert nn/nn_ptr to uint32 arrays
nn_ptr = nn_ptr.astype("uint32")
nn = nn.astype("uint32")

features = pgeof.compute_features(xyz, nn, nn_ptr)

At last, and as a by-product, we also provide a function to compute a subset of features on the fly. It is inspired by the jakteristics python package (while being less complete but faster). The list of features to compute is given as an array of EFeatureID.

import pgeof
from pgeof import EFeatureID
import numpy as np

# Generate a random synthetic point cloud and k-nearest neighbors
num_points = 10000
radius = 0.2
k = 20
xyz = np.random.rand(num_points, 3)

# Compute verticality and curvature
features = pgeof.compute_features_selected(xyz, radius, k, [EFeatureID.Verticality, EFeatureID.Curvature])

Known limitations

Some functions only accept float scalar types and uint32 index types, and we avoid implicit cast / conversions. This could be a limitation in some situations (e.g. point clouds with double coordinates or involving very large big integer indices). Some C++ functions could be templated / to accept other types without conversion. For now, this feature is not enabled everywhere, to reduce compilation time and enhance code readability. Please let us know if you need this feature !

By convention, our normal vectors are forced to be oriented towards positive Z values. We make this design choice in order to return consistently-oriented normals.

Testing

Some basic tests and benchmarks are provided in the tests directory. Tests can be run in a clean and reproducible environments via tox (tox run and tox run -e bench).

💳 Credits

This implementation was largely inspired from Superpoint Graph. The main modifications here allow:

  • parallel computation on all points' local neighborhoods, with neighborhoods of varying sizes
  • more geometric features
  • optimal neighborhood search from this paper
  • some corrections on geometric features computation

Some heavy refactoring (port to nanobind, test, benchmarks), packaging, speed optimization, feature addition (NN search, on the fly feature computation...) were funded by:

Centre of Wildfire Research of Swansea University (UK) in collaboration with the Research Institute of Biodiversity (CSIC, Spain) and the Department of Mining Exploitation of the University of Oviedo (Spain).

Funding provided by the UK NERC project (NE/T001194/1):

'Advancing 3D Fuel Mapping for Wildfire Behaviour and Risk Mitigation Modelling'

and by the Spanish Knowledge Generation project (PID2021-126790NB-I00):

‘Advancing carbon emission estimations from wildfires applying artificial intelligence to 3D terrestrial point clouds’.

License

Point Geometric Features is licensed under the MIT License.

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.

pgeof-0.3.4-cp314-cp314-win_amd64.whl (353.8 kB view details)

Uploaded CPython 3.14Windows x86-64

pgeof-0.3.4-cp314-cp314-musllinux_1_2_x86_64.whl (683.3 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

pgeof-0.3.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (192.3 kB view details)

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

pgeof-0.3.4-cp314-cp314-macosx_11_0_arm64.whl (143.9 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pgeof-0.3.4-cp313-cp313-win_amd64.whl (343.2 kB view details)

Uploaded CPython 3.13Windows x86-64

pgeof-0.3.4-cp313-cp313-musllinux_1_2_x86_64.whl (683.4 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pgeof-0.3.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (192.4 kB view details)

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

pgeof-0.3.4-cp313-cp313-macosx_11_0_arm64.whl (144.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pgeof-0.3.4-cp312-cp312-win_amd64.whl (343.3 kB view details)

Uploaded CPython 3.12Windows x86-64

pgeof-0.3.4-cp312-cp312-musllinux_1_2_x86_64.whl (683.5 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pgeof-0.3.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (192.5 kB view details)

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

pgeof-0.3.4-cp312-cp312-macosx_11_0_arm64.whl (144.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pgeof-0.3.4-cp311-cp311-win_amd64.whl (343.3 kB view details)

Uploaded CPython 3.11Windows x86-64

pgeof-0.3.4-cp311-cp311-musllinux_1_2_x86_64.whl (683.7 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pgeof-0.3.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (192.3 kB view details)

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

pgeof-0.3.4-cp311-cp311-macosx_11_0_arm64.whl (144.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pgeof-0.3.4-cp310-cp310-win_amd64.whl (343.0 kB view details)

Uploaded CPython 3.10Windows x86-64

pgeof-0.3.4-cp310-cp310-musllinux_1_2_x86_64.whl (683.4 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pgeof-0.3.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (191.8 kB view details)

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

pgeof-0.3.4-cp310-cp310-macosx_11_0_arm64.whl (143.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pgeof-0.3.4-cp39-cp39-win_amd64.whl (343.3 kB view details)

Uploaded CPython 3.9Windows x86-64

pgeof-0.3.4-cp39-cp39-musllinux_1_2_x86_64.whl (683.5 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

pgeof-0.3.4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (192.0 kB view details)

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

pgeof-0.3.4-cp39-cp39-macosx_11_0_arm64.whl (143.8 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

pgeof-0.3.4-cp38-cp38-win_amd64.whl (343.3 kB view details)

Uploaded CPython 3.8Windows x86-64

pgeof-0.3.4-cp38-cp38-musllinux_1_2_x86_64.whl (683.5 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

pgeof-0.3.4-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (192.0 kB view details)

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

File details

Details for the file pgeof-0.3.4-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: pgeof-0.3.4-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 353.8 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for pgeof-0.3.4-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 4736367cb71594848c5336b8b50e4cb1f4d5e238738c90d231b132343137ab8e
MD5 ba0f6a118ae54426101296922f5b2955
BLAKE2b-256 ace1112db42269f3bd60b50411b27cf2764a865723cc739bd46de51acba60068

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pgeof-0.3.4-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7c3bfb99e53810eac20e73276965943adab8a3a8674c55b21e22d47770afffc8
MD5 10404eb783fecedf1d194b9bc51a1c95
BLAKE2b-256 5bc4375442d26d2a37ce9322d153f18913de63e281f3eb32770db85b18560b10

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pgeof-0.3.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1f8adf55351f7436f7c9918d940099ac735e3b02cf834ce0b2cbc3868270d56c
MD5 bc96e3381c5865367493eb8e0da711e6
BLAKE2b-256 4ffdc0f98d5537177b0d52a5edd064201703e0799ec04e1593cbcd18976a357b

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pgeof-0.3.4-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a9729aa007174fba8549274d69e50eb4a599c3d7cb8673f48aa0013110a104e8
MD5 b0a8964d8e99096aaf910d13d2dd963c
BLAKE2b-256 195b4d39f4666d1dc7d310f7b886f20c8acc02afe1a11ddf609a82c783763e08

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pgeof-0.3.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 343.2 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for pgeof-0.3.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f2e4aef2c7b0a468765c23ed58f157c9b04fe1f3665491efc9c6116dec8938d2
MD5 dfbcb6c36718c15ca5d8620f417ffea7
BLAKE2b-256 cded45e62f5e370cfafba7d50321af34b55d4a576528b81c1f46fbd70b600194

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pgeof-0.3.4-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1ca24ab4e2e977c79c7387e679863f5f45aefdb5bbd337d558d4af5b26ee78de
MD5 f23def7b99d586d63651e259860fd7e6
BLAKE2b-256 0cde9fa72b07b4c56f929f867daef766b7682f0d925b5698cb429fbba951a1f7

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pgeof-0.3.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 aab0c4efd812c827968f7458e961cbfafc292884c344532d870c0da8fa3e475a
MD5 f6703c8ebb98f9e722c2067d8873acc1
BLAKE2b-256 437296efd91e0111a22c14ee996309cb8a7a1cee9935959a42cba36958987a43

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pgeof-0.3.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5078fc658b81e7c70364d84f8d22ca626e6995d2adfa58019c01ff82650716e5
MD5 c7e8a23b75c3c372697031ff8267d557
BLAKE2b-256 caab7ab9a0fd393043e673fbe171cb1f015e52b4d25a139ef78867d82d3bccf7

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pgeof-0.3.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 343.3 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for pgeof-0.3.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f8c4f2eb44d13106754712628f7fed4c8d277644aa6513f1c70557130ad63429
MD5 49dd76fd0e87432456b9dd0ae85d9625
BLAKE2b-256 7b4afb23cef809c387a0ed5c2dfb7bd57203d63405bfd7726332f6ee71203a11

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pgeof-0.3.4-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b625e43ed580a29d23844aa082c1100b627fd9ae7e6fd8ad1871ccc65c1b1f71
MD5 f617f547917d2f6a9eb4cf1d79c5ee29
BLAKE2b-256 6b3ae3dc448da02c7e29625e3f912da5d150f523e0820544a09670c26c7f361e

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pgeof-0.3.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ddcda9f78266902343513ca4cd55a38361eee2246fa75fdf80681e19fb7efb9e
MD5 69275196327fadf59e1abefaa55dc844
BLAKE2b-256 b3884247ac6cbc662c6fb8f6e65c8ed9b352684009c71d0c0a64e96409e96609

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pgeof-0.3.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a01720163bdea6f09c880924f79b39bb1d0dec60b6058c5bf2edc60886b55c0d
MD5 bdd9501c0b06e2d4301e4438d107865a
BLAKE2b-256 c5c0a38badce5549674d49a00b687ad8b742bb7a532ca9b4f2cca5b4260e2aec

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pgeof-0.3.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 343.3 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for pgeof-0.3.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b6152a5af1e1bf3eb71d3ea491e2034686ea2de0413c8ce9340910336397865b
MD5 7c18cef867c2080d4d2de57e7eda866f
BLAKE2b-256 b5658e7e082f206e31181f7674ce7e5e3d5577f2a08b0b3cbe53a2a395e77887

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pgeof-0.3.4-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f84cfcc117ab82c2ecf944f9ecb1f0e4525def63472948b5f7357b12494e56cf
MD5 aa9e1dbb0fab29128a069d3de45c2547
BLAKE2b-256 88324dbca5b2aeeac8e556e41851220ac18e959c6737b9f0180ef391b4a27e0b

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pgeof-0.3.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f550596f4e82b92b3d4f91b34448190d6dd7930366cd0497a87a7c116337e0f5
MD5 43bf8e5376127169ea03ebf93922ba21
BLAKE2b-256 e5510783c3b5af21e7b6b822d09ab76270f5bcc2e3f0d1e7ac0793a0b2176814

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pgeof-0.3.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5c1918bddc3373abcabc19c5e53fd20e11869d6094185a7b27c23afbbf3eb506
MD5 ab3439b1abb5d9e36bed228c340e1004
BLAKE2b-256 03aad69b66741ae19785001e699ccf02b4f5ce1d76e19c06713b3d26fc3f0ddc

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pgeof-0.3.4-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 343.0 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for pgeof-0.3.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e6d270a5ac6f535ceb789c237a45159e3c7f1394d7a3df689377ba8886e1ff55
MD5 0c2d75ac7ec1320dd28c64005e32346e
BLAKE2b-256 1d18d940f9d076fbc9e082330d919d13f9aa16fb543bb1f7c2f0b2afe1d3f62f

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pgeof-0.3.4-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1b68e5d72af7907ba08257c4ee4a8ac0d2cb2e1233d891b5f2b3e41be8477f65
MD5 78f414babd9a388e1d973b04cc5a8e62
BLAKE2b-256 113aa418e4ddbc584e6c8007524bdb35f9576b24056cc21e4fa873b0d3ce3265

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pgeof-0.3.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d41cb8dfa79a9d98ae4902a81137248fa9262231ea517850a948cb4cb876cf11
MD5 ba557c9779b03b1c1bf52eacacf5ebbb
BLAKE2b-256 886ceb585a381f424da9154778d23e09a447407322eba224eb5b3a7d2771d561

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pgeof-0.3.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9fb47e54bf85c2e744b39311dbc8cbcbaaf3eaaf1eb943d61e75687f59715b5d
MD5 2db5adb492103d00e8399a08d3062123
BLAKE2b-256 ae75314ec7e528389429ede1a141ad0363abe1fd4b1f7fc4a3580920742ba46a

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pgeof-0.3.4-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 343.3 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for pgeof-0.3.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 0348f592e6905e3c93b80666241f0b59972c8741cafda2d07ca8d41962d75efa
MD5 a49ad38d89a663c733e33049d3d1ac00
BLAKE2b-256 1c91372fa614706eafdbc5242fce504bf0d9cf27afdda91ec03c8143df744cbf

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pgeof-0.3.4-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b3868bad5002c675b2c926fb2d685d187bfb39e6f6bb926f852562db442494b6
MD5 8f3f99f75438fb7866466364ca229456
BLAKE2b-256 cc5004c42025a935b0ed6965b20e61e250b5abf9e69defab36ca98532e1e6aa3

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pgeof-0.3.4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 73f0dfb8d54947861b86c03bed2f6d64a9d513e548fb6eb5ba455a174f0a91d3
MD5 a494c65dcdffa1c8bf9fccd1817f2b02
BLAKE2b-256 18e830b5c28339d1862479b577e20f23702d27472b603b6c90572a9be7601916

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: pgeof-0.3.4-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 143.8 kB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for pgeof-0.3.4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 888ccc588062dd10defbee34203e9b1a66017e6f1d86a0fea266f5aaf2202494
MD5 ac49761f8903c3f5324986dcaf325fb7
BLAKE2b-256 a63daefe00aa6975e6169fb0622a8e947bbe57a4fbe75dac98308394cf90442e

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pgeof-0.3.4-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 343.3 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for pgeof-0.3.4-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 cd4340049b909730301bf9bf422bdc57967ec539e082f7a3985374be4e699564
MD5 024c758bfa3e9ef077bdd87711b9d8ad
BLAKE2b-256 468f210f4a055764b7c6e523748eda439070b1dd22c9b928c5da1273b9165faf

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pgeof-0.3.4-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0261be08325ada04efdc89b3b8aa710603f9b01b621165610ac845eb68729f6e
MD5 fd18d1350448b0a2c0949b9a2e345800
BLAKE2b-256 6b7a68025b95554877665af8a6df5de186c6540e987cf76b72dc2bcce1fb6950

See more details on using hashes here.

File details

Details for the file pgeof-0.3.4-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pgeof-0.3.4-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c6d636219344b1031e8616110396d3ff2e445abaa0bd3bd36e9f4616794acf82
MD5 d40d9eb7dd66e309b2091b6ee3ea389b
BLAKE2b-256 80f6f15e70b83bbb74a368fd165763f0aaad97763889896e4d0270b653f34d23

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