Skip to main content

Geometric algebra tools targeted towards robotics applications

Project description

Geometric Algebra For RObotics in Python

This library provides a geometric algebra tools targeted towards robotics applications. It includes various computations for the kinematics and dynamics of serial manipulators as well as optimal control.

It is based on gafro, a C++ library relying on templates to efficiently implement the geometric algebra operations.

Note that only the Conformal Geometric Algebra part of gafro is available in pygafro.

Please visit https://gitlab.com/gafro in order to find the entire gafro software stack.

Installation using pip (pre-compiled binaries)

pip install pygafro

Wheels for Linux (x64_86 & arm64) and MacOS (arm64) are available (for Python 3.8 to 3.13).

For other platforms, pygafro is compiled from sources.

Should you want to have access to mesh and texture files for the robots, you can install the optional package pygafro-assets by running either one of those commands:

pip install pygafro-assets
pip install pygafro[assets]

Note that pygafro doesn't provide any rendering functions, it only indicates which mesh file to use for each link.

Installation using pip (compilation from sources)

Due to the template-based nature of gafro (see Differences between gafro and pygafro below), the compilation of pygafro can take a long time. Additionally, using clang instead of gcc is highly recommended: gcc requires more memory resources when compiling pygafro, which can become problematic on lower-end computers.

Using the default compiler of your computer

pip install pygafro

Forcing the usage of clang

(assuming that clang is installed at /usr/bin/clang)

export CC=/usr/bin/clang
export CXX=/usr/bin/clang++
pip install pygafro

Installation with ROS2

Add PyGafro in your colcon workspace and build it with:

CC=clang CXX=clang++ USE_COLCON=1 colcon build

Installation from source

(works either in a conda or virtual environment)

Requirements:

  • numpy

Due to the template-based nature of gafro (see Differences between gafro and pygafro below), the compilation of pygafro can take a long time. Additionally, using clang instead of gcc is highly recommended: gcc requires more memory resources when compiling pygafro, which can become problematic on lower-end computers.

Using the default compiler of your computer

git clone
cd pygafro
mkdir build && cd build
cmake ..
make # or for example "make -j4" if you have enough resources
make install

Forcing the usage of clang

(assuming that clang is installed at /usr/bin/clang)

git clone
cd pygafro
mkdir build && cd build
cmake -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DCMAKE_C_COMPILER=/usr/bin/clang ..
make # or for example "make -j4" if you have enough resources
make install

Usage

Multivectors

from pygafro import Multivector
from pygafro import Point
from pygafro import Motor

# create a multivector that corresponds to a Euclidean vector
vector = Multivector.create(['e1', 'e2', 'e3'], [1.0, 2.0, 3.0])

# create a point (a specialized multivector subclass)
point = Point(1.0, 2.0, 3.0)

# create a random motor
motor = Motor.Random()

# apply the motor to our multivectors
vector2 = motor.apply(vector)
point2 = motor.apply(point)

# geometric product
result = vector * point

# inner product
result = vector | point

# outer product
result = vector ^ point

Robots

from pygafro import FrankaEmikaRobot

panda = FrankaEmikaRobot()

position = panda.getRandomConfiguration()

# forward kinematics: compute the motor at the end-effector
ee_motor = panda.getEEMotor(position)

Differences between gafro and pygafro

gafro being based on C++ templates, only the classes and operations you are effectively using are compiled into your software.

This versatility cannot be achieved in a Python library: we cannot instantiate the templates at runtime, nor can we realistically instantiate all the possible combinations at compile time.

A compromise was choosen: a subset of multivectors (using sensible blades combinations) are instantiated and compiled, and other blades combinations are supported through a Python class that internally use a C++ multivector with more blades and transparently use a mask to only expose the blades requested by the user.

Thus, creating a multivector is done using the following helper function:

# using values
vector = Multivector.create(['e1', 'e2', 'e3'], [1.0, 2.0, 3.0])

# using only the list of blades
vector = Multivector.create(['e1', 'e2', 'e3', 'ei', 'e123i'])

Background

You can find the accompanying article here and more information on our website.

How to cite

If you use gafro in your research, please cite:

@article{loewGeometricAlgebraOptimal2023,
  title = {Geometric {{Algebra}} for {{Optimal Control}} with {{Applications}} in {{Manipulation Tasks}}},
  author = {L\"ow, Tobias and Calinon, Sylvain},
  date = {2023},
  journal = {IEEE Transactions on Robotics},
  doi = {10.1109/TRO.2023.3277282}
}

Acknowledgments

The development of pygafro is actively supported by the Idiap Research Institute.

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

pygafro-1.3.5.tar.gz (89.1 kB view details)

Uploaded Source

Built Distributions

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

pygafro-1.3.5-cp314-cp314-musllinux_1_2_x86_64.whl (14.5 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

pygafro-1.3.5-cp314-cp314-musllinux_1_2_aarch64.whl (14.2 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

pygafro-1.3.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (13.1 MB view details)

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

pygafro-1.3.5-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (12.5 MB view details)

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

pygafro-1.3.5-cp314-cp314-macosx_11_0_arm64.whl (10.9 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pygafro-1.3.5-cp313-cp313-musllinux_1_2_x86_64.whl (14.5 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pygafro-1.3.5-cp313-cp313-musllinux_1_2_aarch64.whl (14.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pygafro-1.3.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (13.1 MB view details)

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

pygafro-1.3.5-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (12.5 MB view details)

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

pygafro-1.3.5-cp313-cp313-macosx_11_0_arm64.whl (10.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pygafro-1.3.5-cp312-cp312-musllinux_1_2_x86_64.whl (14.5 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pygafro-1.3.5-cp312-cp312-musllinux_1_2_aarch64.whl (14.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pygafro-1.3.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (13.1 MB view details)

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

pygafro-1.3.5-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (12.5 MB view details)

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

pygafro-1.3.5-cp312-cp312-macosx_11_0_arm64.whl (10.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pygafro-1.3.5-cp311-cp311-musllinux_1_2_x86_64.whl (14.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pygafro-1.3.5-cp311-cp311-musllinux_1_2_aarch64.whl (14.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pygafro-1.3.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (12.8 MB view details)

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

pygafro-1.3.5-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (12.4 MB view details)

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

pygafro-1.3.5-cp311-cp311-macosx_11_0_arm64.whl (10.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pygafro-1.3.5-cp310-cp310-musllinux_1_2_x86_64.whl (14.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pygafro-1.3.5-cp310-cp310-musllinux_1_2_aarch64.whl (14.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pygafro-1.3.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (12.8 MB view details)

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

pygafro-1.3.5-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (12.4 MB view details)

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

pygafro-1.3.5-cp310-cp310-macosx_11_0_arm64.whl (10.9 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pygafro-1.3.5-cp39-cp39-musllinux_1_2_x86_64.whl (14.2 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

pygafro-1.3.5-cp39-cp39-musllinux_1_2_aarch64.whl (14.2 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

pygafro-1.3.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (12.7 MB view details)

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

pygafro-1.3.5-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (12.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

pygafro-1.3.5-cp39-cp39-macosx_11_0_arm64.whl (10.9 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

pygafro-1.3.5-cp38-cp38-musllinux_1_2_x86_64.whl (14.2 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

pygafro-1.3.5-cp38-cp38-musllinux_1_2_aarch64.whl (14.2 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

pygafro-1.3.5-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (12.8 MB view details)

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

pygafro-1.3.5-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (12.4 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

pygafro-1.3.5-cp38-cp38-macosx_11_0_arm64.whl (10.9 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

Details for the file pygafro-1.3.5.tar.gz.

File metadata

  • Download URL: pygafro-1.3.5.tar.gz
  • Upload date:
  • Size: 89.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for pygafro-1.3.5.tar.gz
Algorithm Hash digest
SHA256 80f67c1c93ff4d53683ca433eea7f5445c1e3563bde002766266936de13db21d
MD5 bc20501b8c0befc6fd9d0b9a3eb5945a
BLAKE2b-256 73d6cbe4fb0d7ff7798477dcadef1696aec8e48d906701c694ed27cbf7c16a8b

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e32ec746db6b6ca731d8d233cb14b0ffe72bfb0f380b686ea45b0305465e6f62
MD5 d413c2ced995fef86fb4b6aff6aef2af
BLAKE2b-256 735e9a7c13b06f10bcd35af985412b1121b6703c2e7d21c7235d48a75c307143

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 141444562f9997cc777a6b169409b7d858075df36bf097379795eb14c7c4d43a
MD5 05fb21e1c346cdcdf205ca3af42a4606
BLAKE2b-256 a6042eaaded10296e1df83999c09b1bc0ef94cbf76e0de4f18f1647ff54e89d8

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3baab96014d2b7b8c3f73149009974603bc394f5714c87bf595234e96453eefa
MD5 ba0bd7246f03dbe417b95a60648a1f9c
BLAKE2b-256 3167ee97a622ea37d6b585a808bc93beee6539698d12b69422ae8306f2bfceec

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 dae69d95324d54b9f9c7c4b8d70457f879afbce68eedd4164721311ec759ae3d
MD5 4d5924a36f3ed3bb03e849c0dd4a936c
BLAKE2b-256 3e7166ec8e09483356ad4b630bc204c7c097d745e75060d3d0c57a17082d9ad7

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 89f26b095fd5127c36a775bc949a02e1aece438f274848630f6d923456c7252e
MD5 aebf7dda8d8d2aedf98732f5fbb830f4
BLAKE2b-256 8e91f6d0deb1b6fd78a49b7673c92fe035e0fc89a74e52aaae6ce8f6e898ea6d

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9e146462e7f29b872fd813e8b5ecf6f01b2d092b21f21bd4f0bbfd2770eea652
MD5 c91e09e214faf668a20c3a429e39c80b
BLAKE2b-256 36c457d6471980833620ec1557d4545bef79f5be792a2770fe1ba62564ae400a

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 cedb73d52420c94252e473aa2d67647bc1582ad44600aebaced14244503c96d7
MD5 49188267d64a751d62761b531063048c
BLAKE2b-256 defec7b25bd6d580b10bb5261997ab4d7d516ca65018e8872632c95beb691f0a

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 38cc754996394c0eb21519f9cd6764e7227edbb7263501bbbd2cc6805b8701c9
MD5 43b1f71860c715110cbad9a5aaeab19c
BLAKE2b-256 292ae320c71cbf5a0e17b77ee76b2af07455f57a7440f312019472276595dc08

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 86ff4ce4f28711d4893dfaef7cee227fc03f54cea349db301af0a2ca8746341c
MD5 d9fb298022b7d07e2af4a18b473d8120
BLAKE2b-256 143a1d3924a7a4bdd4dce654d98d4ca0d30b4dc3ab018086fdaa5ef6e135249b

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 42bb579f75ac09b63b30fc0b89511073434537f6acfa48ee6764422aa320e02e
MD5 15960489f76ac43cc25e5f945699af47
BLAKE2b-256 547e2d0f5de362c068f7867cc6aa50a976f5cefb8d3154382cfbcf164d227f6f

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9fcfb9311cd5857564306e8896ce490bedc0b302b062ee119622c741f29ee103
MD5 4faed54a516ee6dc7db253ba1bdf3436
BLAKE2b-256 eeac5aa0af718dbc3f0b4e5729fcf62f25369d9dac7d074deb62a24640d09ec8

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0a772f9ea2571f5fdc665f2545e054d76c10ba44d7633a07051dd145332a423b
MD5 2488c9f238ac51413024d07b8261c346
BLAKE2b-256 9d237f8be1f1ec604e7fa0316532c2a3c495fde17e00d0c472f2afe7c274c84c

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f7cd9bf65132eac1e3d2d836c6cc9a52597f7844afcafdd131e4d6da6a8f75be
MD5 ca5c2ecb9067fde2afaa9dbe39c334b3
BLAKE2b-256 0679da8c73486728f977bb0d1d331b7b552c3f8ce36404742e70bea674efc877

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3f4cdc3f4a62e2e267ff5903089d96ace436915b9eb49868d1a6d290d073c11f
MD5 aa67f61dc72f373694eb00b60bd0909e
BLAKE2b-256 d8611e1db7e75d9040281c4aef55812f10c2505c0ac890c4187137cb31e02b3e

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 88e9cf61943f68a557fb99fcb26f8f6817380d910152a8d19c35e8239d7589d6
MD5 4ad3af88aa1e70069595ab8d7e1e9cd5
BLAKE2b-256 b8ed11b409ae77833b1b1c987f89dde62f479b41f48728a61bb1c43bb4c2655e

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 41da19a9b7902e75a19529a9a900da7a71bbed726bceb77e37eb010128a62305
MD5 82b9ce1ddedd0eb8ae451b0c9d4ea630
BLAKE2b-256 6b8dfb65980564fbc93badd0337fdbbba7a2c22e0bcf90a8c4c41589afe1c4dc

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 60ab094f5cf85447b3db38a7ea100ac550325383f3f54c9540196080834124d5
MD5 450fabe30089f2bafb55e91b6c8a6e44
BLAKE2b-256 6b7a9fe83d148861c4199b9268dcb39a22978e44481b1a9fa69269f1b9836c66

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 99b78fc54175fd518852d56fb2d920267c7b0f17d16813ce7e6cd2d4e4729b7a
MD5 6e970b33fcb006c0e8aea9bceee2a6fb
BLAKE2b-256 7641423e79363093007bfc4352c5be1aff693c3533957170733130f7f48d2762

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8d71c9e67b651176b9a8dbf393df3c3e95de686a26ea7cdd1d88ce4acdc09731
MD5 5ab9f0297cee7819aab7227814b6294b
BLAKE2b-256 beb5cfc691362fa07a4409aef6be804cde3317138bad2b583781d6f9522b9739

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 65e388bcff2e21ac3149d12f9e6923e47839603af577d2d2a493fab9411ff432
MD5 ddfd46b573eb8f82f25943b07fda6558
BLAKE2b-256 79f0f3458cc6c4b5859e9c918c6a965fa67fe4869e98665cd76023e0c5baf5bc

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f768cbf1f19778320dfb20fa4b72411e9df9ee1e84be5f2f8e54bf67b0fcd509
MD5 8bdd3de98acc993e44334b5e72b27227
BLAKE2b-256 131744c3c263b2b9477d046beb4265e241be2748012b552d4dd264e73c0c0204

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7dd078bc101faf258cd43f42f507b9a755e5d10cb12215414da0afda95ee0242
MD5 5c9132647b88048a7210f2bfa7880394
BLAKE2b-256 3c1075706d679611f23afedc1546c2a09ba9a19e4d1fe26d45f525149e750391

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8eb8dc4b49fdf2801fa4e3dbdb51084196e928fd68ca77c4162c64cbe46b0adc
MD5 bda95610b40fd052f5850bb94d4db810
BLAKE2b-256 91cd785cade6fa565bdfd318c1e14f51a34d65ae8fb46f03df1e1549fefff34a

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 64f47d9074c214c90664cb3f2222c55a8963c4a0a4065c66f95a7178d6ac7d2f
MD5 3d9e6f5bafde07391fac27cbf2f31cc3
BLAKE2b-256 b34dd0305a7c469894d57c4ffba85377d6e73c527ec31afbf9cda1ac04473c14

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ac631ade00f72a0c02fd36c8bca3b8e970419ba49f9bbd06a818c2f34efefc20
MD5 31c7bd1d5de403c0b845616fb5507358
BLAKE2b-256 76273ad434dc749a423bc758a5cc2272743fb29953f3366a5e30d9347561829d

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5e8141825a7ff4aff9b63ff9f9949bc0f6ccda51f497caf71301acc79c94ac8c
MD5 23988267ff24732c58657f8aee348dd1
BLAKE2b-256 c03d8e9e0c1c02a18afc231dc638fbbe00fc4de0753d9fe02ff2077dc26bc011

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8ce8d8275a5e511c02b76d3c08366faff486ea208c01321e7c0f03a82702866d
MD5 4690f2e5f7594819188c28356dfb52c4
BLAKE2b-256 268f6992d4f75aaa3be3284df19e3fb638c94b475a86fdd3891d0f6d1745db50

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 26b623eb1a80d2d372645ddb65d4a7f52d1ffbb9b288e2ef54a1f33551e6fb71
MD5 83497dfc6c4616af71a833698ec049e8
BLAKE2b-256 bdffa3a2e9c86951b5e943fbeab9a31b3d6b33b1b0ecc38d63551eb592247a8e

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b627d91bbe4b02a6c34a9fad0f7ccb8f354b81577bd28853ee1afed30575b114
MD5 0801a44faab33c922a0421aa17a12351
BLAKE2b-256 6f6737309cce223259f5c93f6bd7eba132d0a60f6aeb1ce3df555fec315e6e81

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 00abb694d6cd3d398b224f6a25b1172d4bc23cc90a38593ba93a0b82123c7182
MD5 418a30a92e8494c1ae211a7b3d46b1b0
BLAKE2b-256 0957e6d945e409ef2d40a7e69a865d548863edf7d83698c3b732b0a85b054160

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8069684b533a49bca90e55f0336ed98039670ae71dcd547078adf86bd277e3b3
MD5 a5a8fd6149880f5947eb46f5fafa1a75
BLAKE2b-256 43f8745b0600b730912cfea13eccc3d3151bbaa9f184f6bdf60b063a1ee7f82f

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp38-cp38-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5a37060d1b18176837292c64770323ba79fcd3d162c6dda2874b0ef842308fae
MD5 18bc52404d8339997793c5e55835df77
BLAKE2b-256 8dcf41ada3cc7b2a728cdf972960401b84b0219a05a7757c87aa62ae029d7511

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 19ac449c2901b86f3104847322d9dfc60ac08a3e7450191c58d1f9d934b7efd6
MD5 a9674d68fefae4c41ccd7f68aad5a7d9
BLAKE2b-256 6420ea5d489314882315298ed244d368fb3b0845c0dbf1137bbe53ad83a717e9

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2661c8f2bb0407eb27c1408ab61688e677ea6619683047866d751a914acb7955
MD5 1acf709c48c3e3218dc638c5315488c2
BLAKE2b-256 82ba1479422b0193c137d2be47dc9735c3c931674886711e78027aa06ac5f83d

See more details on using hashes here.

File details

Details for the file pygafro-1.3.5-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.5-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 162f7653fe88df75904217bfea565490f9237402ab995bbf7b274c6649f3a131
MD5 52eefda292f87ca352593bdaf7315aa7
BLAKE2b-256 42cb59fd7009a552ff9ddb3ad17ea8a20113018999965c19d3eaf8d836b10db1

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