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.2.tar.gz (88.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.2-cp313-cp313-musllinux_1_2_x86_64.whl (14.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pygafro-1.3.2-cp313-cp313-musllinux_1_2_aarch64.whl (13.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pygafro-1.3.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (12.8 MB view details)

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

pygafro-1.3.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (12.1 MB view details)

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

pygafro-1.3.2-cp313-cp313-macosx_11_0_arm64.whl (10.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pygafro-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl (14.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pygafro-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl (13.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pygafro-1.3.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (12.8 MB view details)

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

pygafro-1.3.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (12.1 MB view details)

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

pygafro-1.3.2-cp312-cp312-macosx_11_0_arm64.whl (10.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pygafro-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl (14.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pygafro-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl (14.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pygafro-1.3.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (12.5 MB view details)

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

pygafro-1.3.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (12.0 MB view details)

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

pygafro-1.3.2-cp311-cp311-macosx_11_0_arm64.whl (10.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pygafro-1.3.2-cp310-cp310-musllinux_1_2_x86_64.whl (14.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pygafro-1.3.2-cp310-cp310-musllinux_1_2_aarch64.whl (14.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pygafro-1.3.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (12.5 MB view details)

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

pygafro-1.3.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (12.0 MB view details)

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

pygafro-1.3.2-cp310-cp310-macosx_11_0_arm64.whl (10.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pygafro-1.3.2-cp39-cp39-musllinux_1_2_x86_64.whl (14.0 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

pygafro-1.3.2-cp39-cp39-musllinux_1_2_aarch64.whl (14.0 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

pygafro-1.3.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (12.5 MB view details)

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

pygafro-1.3.2-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (12.0 MB view details)

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

pygafro-1.3.2-cp39-cp39-macosx_11_0_arm64.whl (10.7 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

pygafro-1.3.2-cp38-cp38-musllinux_1_2_x86_64.whl (14.0 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

pygafro-1.3.2-cp38-cp38-musllinux_1_2_aarch64.whl (14.0 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

pygafro-1.3.2-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (12.5 MB view details)

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

pygafro-1.3.2-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (12.0 MB view details)

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

pygafro-1.3.2-cp38-cp38-macosx_11_0_arm64.whl (10.7 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: pygafro-1.3.2.tar.gz
  • Upload date:
  • Size: 88.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.2.tar.gz
Algorithm Hash digest
SHA256 0fccc127b9e6e9b02de28ddbb3bc424ea79c215bb76ea7f10f8c3e90e095af25
MD5 cf4a24fd443bf2406b3b1e5a2aeeb947
BLAKE2b-256 c92e12f593c96ae2a5321d6aef7a965d94e06db8eeff1f3bf04c9f98a2703885

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2596e03fbdc18d63ed9efbc00728368212e4e78510242e237cee561437b99fd3
MD5 3cc209ad0d995d94b01a16a76b505b48
BLAKE2b-256 9937e207d2945313493088bed704fb6796adb4c41718625b20f19bd69da85ba3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7a28537d067f2310ad6bbe0a06c4d464a342ff5d0a7b5e522cb507c3e370650e
MD5 c2cd478ccd58df4126dcfbbbf6be8752
BLAKE2b-256 f4ea74e7550cd35322a04c2afa0ec3aa03217f591650be6bf341ff9bc8331294

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c21f4331f4d33cb0ae99b6480f263585bbdef86e11c29153aed6775d82c58d28
MD5 3e2b3be68d9d00513f0a3d61dc2db1d8
BLAKE2b-256 62b4a18b3c0b5c3bb278a8bfd6b4527722822f40f17cd9cdfcc9786d19c68764

See more details on using hashes here.

File details

Details for the file pygafro-1.3.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e0793f2f8f7d19e074361a079f1018ca9039a57c04c2501f881c9b91ea8a81a4
MD5 6897a68d2f52ecf9092ad693b6f611a7
BLAKE2b-256 a78716918324c5d682a222e7d1d3ee19067fe7113d05dd8e50a77c4c5c477d29

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fbcc24ac86264b5a0e73b6dd0ccc88dad968fa45885b22faa5e9e1b9c3cc9ae5
MD5 0d62d58b3e53b5266c27b061007b2c2a
BLAKE2b-256 80f48d87fa92abf83b967c4ded467d509d82679535e9f6e52e43c05ab5a87f8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 56078639e46ee11b833d010e9ffa051774ea9497529ab2f16a50b6a1dfdc6002
MD5 a2525c66a5a83451c1b76732ad829e43
BLAKE2b-256 08a0fc40087044634e567ada527cc8f1aaefa4e865c3b9d9963ff3b56663e3d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 da659bc880a2c2f3008fad6716011df5cf114a17b2142fc2f64fd27301725f5e
MD5 4257e74e1a7979f8aad67acfb5fd7ae8
BLAKE2b-256 9d603a4da1607f2b667a54f59e6537b61062b8962b5a5edb5d7db3cdcc1e0af3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f60e542ef844b841cb053b0de2b99d0b3aa0a0d12560680a46215b7b8ed038a9
MD5 ddcbda0835528cf9b0676a27700a3c76
BLAKE2b-256 8205a064988af8e2bf1127b5cbc2655a7995872c97a5512bd80fc80cd1db0748

See more details on using hashes here.

File details

Details for the file pygafro-1.3.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0af19e7aa63052a9c0e49ed0fd8b949072bfcec27b461c7de164dc5b06bf6b17
MD5 e74f78a0531e2f83961c69e693418d34
BLAKE2b-256 098545289baf37694510dc7f886e3414671c35712ab19b1ae052b8afbc5d83cd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 be8e0e69326cec2ff79d9fe411ae8585135bf5290f3f2f6204abf553221f7d1a
MD5 a673b7327acc6618e6e7980639f19083
BLAKE2b-256 df1b41e0524400df064fc7790377f59d28f4fb9e507da727498fe2ef44b3a6cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 84863b949ae40ba3fdd562d335852d855482dc4a47f232bf8d6a70a45e7a665f
MD5 d1c5830462dc3ca5ab83349246857959
BLAKE2b-256 2687cff856b01c12380bb72aab1a8fe4192b4580b1f54a2c12e78cc5993d3eab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 aed3581904231fcb2b82a2f653b3154c9064ea6349ddefeeb0027bc1d96363e9
MD5 ecb524ffb20456d8b72d08018a932ed3
BLAKE2b-256 a058c00710f744bdda970d6a5cf5b48da3de6df1e0d4e55803d819f40da4fb50

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e31559d2562d38f0ac2ad4b7132cdb31aa2eba357a43b7ad32e0dbe575701e05
MD5 525f9d204c42d56ffaf457f01ea2dd4b
BLAKE2b-256 cefc30acf8eaf084849eb57c62b2287f8a8a2deb71b1f93969b3fbeb7a2f8cba

See more details on using hashes here.

File details

Details for the file pygafro-1.3.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e13e11bb5dea1e7f3302023961807d967926eaa7f728be677599e5ca65ff0e2d
MD5 67c16e41dd8eb002bcde6d242a0d2dde
BLAKE2b-256 8076aed77355585e30c6c1c3e54517febcfa0060a465c72af51c21edcb90d456

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3d0172d14e4e30e0ab40d3f04b94d9a44f3b1f60fb6b201e305e01cd8dc55589
MD5 2afe580a58aa416fd1a45d17b75da297
BLAKE2b-256 89f7c1fb1e7536c3601b0ef85f597dc0d923644bc365b35e8f380de5241ae1b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d2e4943f68c4b00b1abef7d1b4e99adc34b6fd2991ee7e1bc12d04d221dcf34d
MD5 8cdeaab38a4bfe7c0bd4a5ea00a52574
BLAKE2b-256 9ffe959975cd5bc8250094309cac0616a99bbae991fc1cea8d5b1116ce11937f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 74556063a11bc5e7fb14bd9a6e2c2a144133cabaf60d33531224364622540006
MD5 726dc214bbd03a4898f63cac5b2e4719
BLAKE2b-256 4664ee691d4badb4f516a782d73e0ade462383e62a52be4f71d3dbc27e07614f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f39c38820d55126942e6fa281f5b792da4bde81dde72508c6febbd91620a8ca9
MD5 2c46950f212855b675a086ca240ffd7b
BLAKE2b-256 16504aac74caf357c0458c41572a1d148c440891c68f1252b2eb6ba0b78f1e39

See more details on using hashes here.

File details

Details for the file pygafro-1.3.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 043e4dd64ef6654e4d8c789e96899496a1c113a0ff091c091032451efb976c06
MD5 0e0d6cde77117eeb0a1ea19ef5c7fee6
BLAKE2b-256 df4edca2a056285d3c73a27f9405d313f169bb0c33366eb5c15c1a3fdc4287f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e0ab0afe784e8979aaac3fc1501c7ad67d82301a2058e72141f5ceb827745d84
MD5 98e06ac741e1ab48222cb7380031433e
BLAKE2b-256 6111049a79be5a8171fa814313dcda6253c19a7c0d6c20de92e7a545e6486074

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3baefe5c03473ff96ccca630d342eb6b582d292cc4fa05f4f363c440b62b18cd
MD5 5ed005b75592f91388c6d4ee3e2b58fa
BLAKE2b-256 8a34e781d3d0bc1ffd815dec1121a3e9e9db2092873df2dea0aaf4eeb54ae8b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6926f557125778fb0a84e4e7c3a731b2cb90f7043280cb48a3da4b8aaf498f2f
MD5 e186ee2ac251cb8ef783810dd71c0ddd
BLAKE2b-256 06920a76d5c62434bd39b63f1bbdb4cb575298c62730fcf6f13049d732b069f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c984de97b7d875dd8484f61374f108640b70df1384ba3ca7f03fe4d63725cd91
MD5 c8c0b373a00ea4a30ea9e39b166d4929
BLAKE2b-256 7b071d7091595a061e513997d4cfe692d3af161c0ca692d42ddcabd17f88260c

See more details on using hashes here.

File details

Details for the file pygafro-1.3.2-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.2-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 85fa00a337d156ba4132e652dea85595ec1028dceaa9b3c4790ca1d20c46c905
MD5 beed0b0f29bc8f2f3fe0a27d4f20335f
BLAKE2b-256 9c36dad0f4f30d313894a7c2bb5e8943fa995cc5443f0567452de1deec7517a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 70d2e0340c5b8bc41a216f8eb5fde54ca3059140ed0d97e2950b565d19ccae52
MD5 fe4c1fcea3c7cf4d4b9bac8518411084
BLAKE2b-256 06785dcdb7aad249308ce1cbd1133ac111232549213af47eb8c084507832e09a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 67d9c78f0c31b84ff342388eb3237a8bc4b1e57bbc88e74982fae77624f21fb7
MD5 90fad8b218274a0d6dbacf9c9e24aa79
BLAKE2b-256 5a8497604731b08e1456a1b0cd0c6569646ab4c38c2b0817d3a80e01ef7f63c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6a432ea7000d100d912a0b242d0a63d3a6930b44781c085ae5b8d4150c228b66
MD5 df7e168aa6d17e20e14b2cdffbf3032a
BLAKE2b-256 4c855d4f68e710080cb9a0c33f0b50c78692d3a006884115f0eff2cd97072f33

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c62be214a31bef340ede0f938f62327b151ffcd9554a3fd0ca72110fe68fda31
MD5 b73fdf1d82d7c89c034823a0d08ddddf
BLAKE2b-256 7b14ee05dcb8b69c3814804867ba0e4e1b0467be79bb6a59c1d970fbc65900eb

See more details on using hashes here.

File details

Details for the file pygafro-1.3.2-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pygafro-1.3.2-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e82e0ea479a275dc3b634f51ec28d5d3b4ce32b02f413bb49130d9638f3bff14
MD5 6ac74969d90df2912c47ed1d2d601520
BLAKE2b-256 e8535f9a1e8a2304c760553f1acf18ce6c3b3671c79a33e44bfed13b309ab930

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5786fdf0039e58ea49c1962b2c7c1f81e6374aa6b7106386e4a111be36a2b1d5
MD5 3e6f33791a9d4da7c47c17bdb8220f1b
BLAKE2b-256 807c19a4132e855a5534d6d2fbba619fcd80f68f205f4f20da7222dfe9c65c62

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