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}
}

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.1.tar.gz (87.9 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.1-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.1-cp313-cp313-musllinux_1_2_aarch64.whl (13.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pygafro-1.3.1-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.1-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.1-cp313-cp313-macosx_11_0_arm64.whl (10.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pygafro-1.3.1-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.1-cp312-cp312-musllinux_1_2_aarch64.whl (13.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pygafro-1.3.1-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.1-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.1-cp312-cp312-macosx_11_0_arm64.whl (10.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pygafro-1.3.1-cp311-cp311-musllinux_1_2_x86_64.whl (13.9 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pygafro-1.3.1-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.1-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.1-cp311-cp311-macosx_11_0_arm64.whl (10.5 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pygafro-1.3.1-cp310-cp310-musllinux_1_2_x86_64.whl (13.9 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pygafro-1.3.1-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.1-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.1-cp310-cp310-macosx_11_0_arm64.whl (10.5 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pygafro-1.3.1-cp39-cp39-musllinux_1_2_x86_64.whl (13.9 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

pygafro-1.3.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (12.4 MB view details)

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

pygafro-1.3.1-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.1-cp39-cp39-macosx_11_0_arm64.whl (10.5 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

pygafro-1.3.1-cp38-cp38-musllinux_1_2_x86_64.whl (13.9 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

pygafro-1.3.1-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.1-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.1-cp38-cp38-macosx_11_0_arm64.whl (10.5 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: pygafro-1.3.1.tar.gz
  • Upload date:
  • Size: 87.9 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.1.tar.gz
Algorithm Hash digest
SHA256 1f7d90d4d231a0d3b1922f2cc24332ca71171cbff9393a1321437d9d78990aec
MD5 d485f1602a1ccac474c557ca693d58e0
BLAKE2b-256 b22180b8668dc4e6ff9eb9627a674065a60b7f10957ae243e8eb5155c8252d7f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f0248f05ec56ced73e52a810f705700755e622784f7365358d61c303f9287a79
MD5 87163181c736658b9d5945c273e47b3f
BLAKE2b-256 3e733cf07911959e985285160ad67f08a4245503c1f03a2c56dac83dd4e7e00a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1933afa297698649b80c92aec8368808fb104d2729ab4ce93a9f128c62e38b51
MD5 4af0427130e22efea1b8d88980258a5e
BLAKE2b-256 978c481e0bbd050bc89acb6892f6758781836dba746c3ff533d3f572e7cbbaab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b0b674d2805210b706160fbc5319d911e99f112cf1d4db14ad3d151093178d25
MD5 f5be6e3c18dc05ddcb950bc1bf255f1e
BLAKE2b-256 94d070c681c23ce3b31d2b667ccc7d58157d35d06dafb88bb312391cda9eea4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 946b0bc5a61024f09423e9ba0b69b6fa7d027581252645f587f8bdd7a769cc21
MD5 d3365f0fbd38cabe9024a84354451edb
BLAKE2b-256 8725610260d90b372ce04797d9eb9483af92d27d51ee7fa089a98587facec894

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f61a47afa8b4dc8ef156ca676f560e1b5a879852af18e5f9c1e9303fa3f32402
MD5 76f9cc730c30152f7f284b771319d3c9
BLAKE2b-256 5ebae2581dce922de044e12b08b4e7666dabb8e87add163d0d7cc46e95990300

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ef582581e7d9ed09cb7b809d1f0d6c6f046d9b00df7c73be36a7f67c41097541
MD5 8fe68c5218676b83bb485ff0951f559e
BLAKE2b-256 d13628c6b198c0b57820c8aa2e76d46451ca077954289f9a7e7cd1486e7913a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 880aef76b664935a9e0da0021cd8f08a922b9cabc0deaf58ba6525048b3f3051
MD5 7a365932659a84379f1070dd753eeb63
BLAKE2b-256 289d5a9f00cfefb82345bc90ee14f0c1461a0960f1dce4cb4fcd995d23782aa2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 248385846d4ac064e42ebdfa01ebfa0687580853f0f499485f897417c2fd9a3c
MD5 9f5a59ced42d19c0c264bcadecb85b1e
BLAKE2b-256 51726815fb713238445d79d2a806b0ee26272a4625fe7ce3ace87710a554ee9b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cc06025f1dc1432738b3d1690afddb38f4e923047b8ddc6eede2715bae708ef6
MD5 3f771ab17ccad7b53afd488baa761cdf
BLAKE2b-256 62713eb4c65e18c15342f7f8940c1bff53178bc648af4e21168f6212e959d81f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fef5459198da6cf8fd91fc66b50dd5fa8436ad8c398d401827bf1ac65c89ae2c
MD5 fe1b03eebbe1e8baa3a599c4807a6ed3
BLAKE2b-256 0b9d887e3c7a6d859218a05e1fbae6ed54a914d26783c500ca590d52f9e7986d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b273553ecb0673afa8c99d005ea709e9797a0e892eace38401fcc887cb0d8eee
MD5 ac3b8b03913acc96410cf746c18f4ddf
BLAKE2b-256 b03a98c04faedc74bf1b42330d2ac18fca3f10ed7f28dc5af2c3acecdcee47a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6caf6e600ec56a982aaf55b427f42e259ab7ab481ac851fcdeb7f47a4da7c2b3
MD5 73c5420b35c4a2d378f68e26fa39e1f1
BLAKE2b-256 7b7ab4457a6b1ed81df6e96c4c8ff3c2b09fc562494412b3af697d0be017a78a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1063d64917e558d62216f6ccff4236b7c7e7f66bcb53df991613ad5b01ebe1ea
MD5 76a1413db777c10539aa84fa0fe462b7
BLAKE2b-256 918e8891c503478e70c9da5a16c168318fb5d337340a545f34d5739e69d8233c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 722f58989f78578365678af1db8a1bdffcb36289003c80386a8b867b8f1d7849
MD5 07efb318438791ff717677c1e4355242
BLAKE2b-256 2a619b6ded782ec3132011706ccc12e6e1216c27bd10d30a73ee03ea8d24c955

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 753cbfa5fe29e0d786f9d9b0c022b54c4043428c657a84f983531c93ca41d437
MD5 3a4d7203d99582580eec3defed3beb8a
BLAKE2b-256 d6ec483ceea571617ba58e14052b2496bccf95a1602803b165c2191049539c5d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 427902f59b0f60847b5f77fbebd85945b03da173c2c9c6eece8f267414d1c569
MD5 c3aca300a4f8024ac592d293dd16866d
BLAKE2b-256 34a1330a5ac0ebcdb9557087824f0626cda2703c142179171cfa6d8316925140

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6514e4dc425810bf5c74677c536192da92e2fa9352fe834fa032101fc3d3d09c
MD5 9d0c131e48f11ff3c38be177cdd63bb8
BLAKE2b-256 7612a1642a3c14ad302e943a3f7d5e0d892b56ca6c8ee18d4024639d62071f8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fc38ab136578491702d7d9a9f8844ec206fec8bec702ff0eb13aa4543cd0df45
MD5 c765733abc21d5026d118466570e9f54
BLAKE2b-256 134538510e7f7b36941c64fef404e250ff97ea25473fac99bcde7870cadfa018

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 90d8663ea0aec58142518efdb893cbf7d88066e54592a427f52eb4037e363d1d
MD5 aa7eddc56c23e42c906e8783636e5942
BLAKE2b-256 c9641e85f2459fb06c4d787a9262e3d9720580334043abe76366a2ea5244e9c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b2853168189d6721e10743118ad66f449d26f675b462d09b4797f3684a217638
MD5 d1ac8f108fb64346b63ffbcbebca8f0b
BLAKE2b-256 57fdcdb264f3ce4c4ca0f3c794de1800d35ef9466778c9190190457f0bc2381d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cca03a3d0b40c08d6ba39d7bd21e4cde7cc84764b97efbf348e13993ef4483be
MD5 a045fa99f529daeff0075550dd487178
BLAKE2b-256 6018621ac8a14a2cfb619ff930498137b7e5eaa57daec787942355b76cc10705

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0dc41f8d3d397072019a7acc7b5423e58649148330c137e6a76e6ba48352fade
MD5 67b2972800d9d0c436634c68358c05bb
BLAKE2b-256 c5aa836b19a3d9b7c7bb9e81d6080edb57d447f2241fa4137981b467b38dd85d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5d485dbd9b6eb0fd1f1eabbfbc2729260263083d55f439904c1bd43a62e34721
MD5 c21b921fae666a7ecde7a7d2c3e25e0e
BLAKE2b-256 70b73fa1d4f1ab18c684314347d4169eb2d438c188ad646b18bd8874602950ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 157cf465b51e482759ceb24c71d731efddd177600f6a28a7d119424e23ed2b57
MD5 1e94854556507c4d0da6947cde80700a
BLAKE2b-256 eee39d6029d59a04119f1026be45cebb466d13e044bf866e3b9ed3b9d22d9ea6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ce7049df0ef074384c37f27cc96a2ddda930bfb0620e970419550d0fc7e7d2ed
MD5 02ca5d93b6877645f2bf5b44f0824915
BLAKE2b-256 f0c8f3ad5be0075fb8c7848e50e2380279a7178c2e5dc3285892d668dd1a6261

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 279c161f6d1e4ed1e2ad5927a5aa2bcb380819888b4ef46442da685e2a572dd8
MD5 d11db189b506b6da3d6ebafe493906fb
BLAKE2b-256 0e18e9b1fb80380f1d111231baa9b881a9995f2147f7ffb9da3e15ac3e90481b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 06fce75213ca8c8e0d3483827c094ffa7a554282b249997f1ac38e60e4575aba
MD5 8e060b460127a50c73c693df890f82b1
BLAKE2b-256 f235870af34e1e2fe46e257d898c73f033f03268b9238268a70c3bfb972066ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 67cb41553da69675394a211effd06f30ae633be7747fe6629f775a9c0c1d3207
MD5 71a676cd494c51b56289dd3e803bdb80
BLAKE2b-256 3e9490d328b66f6c8089aa34738e762a79d91ebe3d996f31dc1d420e91811ea2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a62975f77fdbbf39d426bc557fde6991bb8107d019f0c04e96894cfdbc5fed11
MD5 31f09f9594bf595e8b89369aa566254c
BLAKE2b-256 e1e3502ed0c7ab6bc3a0e8ba9005a4bae5e4de0d1d49bf5ef07c7a5ac831454b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pygafro-1.3.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 59dfa5fd687632d607ebe63e758c68e3c0d5f3c90c53980b7382059bd197df87
MD5 22506e22abcc3b942485b99c2ef97ccf
BLAKE2b-256 8e01eed1a3f65c4f0b9b07acc171a7369e114ae6d5ef0ce178360235b94fdcad

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