Skip to main content

Cython bindings and Python interface to FastANI, a method for fast whole-genome similarity estimation.

Project description

🐍⏩🧬 PyFastANI Stars

Cython bindings and Python interface to FastANI, a method for fast whole-genome similarity estimation. Now with multithreading!

Actions Coverage License PyPI Bioconda AUR Wheel Python Versions Python Implementations Source Mirror Issues Docs Changelog Downloads Talk

🗺️ Overview

FastANI is a method published in 2018 by Chirag Jain et al. for high-throughput computation of whole-genome Average Nucleotide Identity (ANI). It uses MashMap to compute orthologous mappings without the need for expensive alignments.

pyfastani is a Python module, implemented using the Cython language, that provides bindings to FastANI. It directly interacts with the FastANI internals, which has the following advantages over CLI wrappers:

  • simpler compilation: FastANI requires several additional libraries, which make compilation of the original binary non-trivial. In PyFastANI, libraries that were needed for threading or I/O are provided as stubs, and Boost::math headers are vendored so you can build the package without hassle. Or even better, just install from one of the provided wheels!
  • single dependency: If your software or your analysis pipeline is distributed as a Python package, you can add pyfastani as a dependency to your project, and stop worrying about the FastANI binary being present on the end-user machine.
  • sans I/O: Everything happens in memory, in Python objects you control, making it easier to pass your sequences to FastANI without needing to write them to a temporary file.
  • multi-threading: Genome query resolves the fragment mapping step in parallel, leading to shorter querying times even with a single genome.

This library is still a work-in-progress, and in an experimental stage, but it should already pack enough features to be used in a standard pipeline.

🔧 Installing

PyFastANI can be installed directly from PyPI, which hosts some pre-built CPython wheels for x86-64 Unix platforms, as well as the code required to compile from source with Cython:

$ pip install pyfastani

In the event you have to compile the package from source, all the required libraries are vendored in the source distribution, so you'll only need a C/C++ compiler.

Otherwise, PyFastANI is also available as a Bioconda package:

$ conda install -c bioconda pyfastani

💡 Example

The following snippets show how to compute the ANI between two genomes, with the reference being a draft genome. For one-to-many or many-to-many searches, simply add additional references with m.add_draft before indexing. Note that any name can be given to the reference sequences, this will just affect the name attribute of the hits returned for a query.

🔬 Biopython

Biopython does not let us access to the sequence directly, so we need to convert it to bytes first with the bytes builtin function. For older versions of Biopython (earlier than 1.79), use record.seq.encode() instead of bytes(record.seq).

import pyfastani
import Bio.SeqIO

sketch = pyfastani.Sketch()

# add a single draft genome to the mapper, and index it
ref = list(Bio.SeqIO.parse("vendor/FastANI/data/Shigella_flexneri_2a_01.fna", "fasta"))
sketch.add_draft("S. flexneri", (bytes(record.seq) for record in ref))

# index the sketch and get a mapper
mapper = sketch.index()

# read the query and query the mapper
query = Bio.SeqIO.read("vendor/FastANI/data/Escherichia_coli_str_K12_MG1655.fna", "fasta")
hits = mapper.query_sequence(bytes(query.seq))

for hit in hits:
    print("E. coli K12 MG1655", hit.name, hit.identity, hit.matches, hit.fragments)

🧪 Scikit-bio

Scikit-bio lets us access to the sequence directly as a numpy array, but shows the values as byte strings by default. To make them readable as char (for compatibility with the C code), they must be cast with seq.values.view('B').

import pyfastani
import skbio.io

sketch = pyfastani.Sketch()

ref = list(skbio.io.read("vendor/FastANI/data/Shigella_flexneri_2a_01.fna", "fasta"))
sketch.add_draft("Shigella_flexneri_2a_01", (seq.values.view('B') for seq in ref))

mapper = sketch.index()

# read the query and query the mapper
query = next(skbio.io.read("vendor/FastANI/data/Escherichia_coli_str_K12_MG1655.fna", "fasta"))
hits = mapper.query_genome(query.values.view('B'))

for hit in hits:
    print("E. coli K12 MG1655", hit.name, hit.identity, hit.matches, hit.fragments)

⏱️ Benchmarks

In the original FastANI tool, multi-threading was only used to improve the performance of many-to-many searches: each thread would have a chunk of the reference genomes, and querying would be done in parallel for each reference. However, with a small set of reference genomes, there may not be enough for all the threads to work, so it cannot scale with a large number of threads. In addition, this causes the same query genome to be hashed several times, which is not optimal. In pyfastani, multi-threading is used to compute the hashes and mapping of query genome fragments. This allows parallelism to be useful even when a only few reference genomes are available.

The benchmarks below show the time for querying a single genome (with Mapper.query_draft) using a variable number of threads. Benchmarks were run on a i7-8550U CPU running @1.80GHz with 4 physical / 8 logical cores, using 50 bacterial genomes from the proGenomes database. For clarity, only 5 randomly-selected genomes are shown on the second graph. Each run was repeated 3 times.

Benchmarks

🔖 Citation

PyFastANI is scientific software; it was presented among other optimized software at the European Student Council Symposium (ESCS) 2022 during ECCB 2022. Please cite both PyFastANI and FastANI if you are using it in an academic work, for instance as:

PyFastANI (Larralde, 2022), a Python library with optimized bindings to FastANI (Jain et al., 2018).

🔎 See Also

Computing ANI for metagenomic sequences? You may be interested in pyskani, a Python package for computing ANI using the skani method developed by Jim Shaw and Yun William Yu.

💭 Feedback

⚠️ Issue Tracker

Found a bug ? Have an enhancement request ? Head over to the GitHub issue tracker if you need to report or ask something. If you are filing in on a bug, please include as much information as you can about the issue, and try to recreate the same bug in a simple, easily reproducible situation.

🏗️ Contributing

Contributions are more than welcome! See CONTRIBUTING.md for more details.

⚖️ License

This library is provided under the MIT License.

The FastANI code was written by Chirag Jain and is distributed under the terms of the Apache License 2.0, unless otherwise specified in vendored sources. See vendor/FastANI/LICENSE for more information. The cpu_features code was written by Guillaume Chatelet and is distributed under the terms of the Apache License 2.0. See vendor/cpu_features/LICENSE for more information. The Boost::math headers were written by Boost Libraries contributors and is distributed under the terms of the Boost Software License. See vendor/boost-math/LICENSE for more information.

This project is in no way not affiliated, sponsored, or otherwise endorsed by the original FastANI authors. It was developed by Martin Larralde during his PhD project at the European Molecular Biology Laboratory in the Zeller team.

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

pyfastani-0.6.0.tar.gz (24.8 MB view details)

Uploaded Source

Built Distributions

pyfastani-0.6.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

pyfastani-0.6.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

pyfastani-0.6.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl (3.2 MB view details)

Uploaded PyPy macOS 10.15+ x86-64

pyfastani-0.6.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

pyfastani-0.6.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

pyfastani-0.6.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl (3.2 MB view details)

Uploaded PyPy macOS 10.15+ x86-64

pyfastani-0.6.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

pyfastani-0.6.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

pyfastani-0.6.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl (3.2 MB view details)

Uploaded PyPy macOS 10.12+ x86-64

pyfastani-0.6.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

pyfastani-0.6.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

pyfastani-0.6.0-pp37-pypy37_pp73-macosx_10_12_x86_64.whl (3.2 MB view details)

Uploaded PyPy macOS 10.12+ x86-64

pyfastani-0.6.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

pyfastani-0.6.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.3 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARM64

pyfastani-0.6.0-cp313-cp313-macosx_11_0_arm64.whl (3.2 MB view details)

Uploaded CPython 3.13 macOS 11.0+ ARM64

pyfastani-0.6.0-cp313-cp313-macosx_10_13_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.13 macOS 10.13+ x86-64

pyfastani-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

pyfastani-0.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.3 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

pyfastani-0.6.0-cp312-cp312-macosx_11_0_arm64.whl (3.2 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

pyfastani-0.6.0-cp312-cp312-macosx_10_13_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.12 macOS 10.13+ x86-64

pyfastani-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pyfastani-0.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

pyfastani-0.6.0-cp311-cp311-macosx_11_0_arm64.whl (3.2 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

pyfastani-0.6.0-cp311-cp311-macosx_10_12_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.11 macOS 10.12+ x86-64

pyfastani-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pyfastani-0.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

pyfastani-0.6.0-cp310-cp310-macosx_11_0_arm64.whl (3.2 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

pyfastani-0.6.0-cp310-cp310-macosx_10_12_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.10 macOS 10.12+ x86-64

pyfastani-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pyfastani-0.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

pyfastani-0.6.0-cp39-cp39-macosx_11_0_arm64.whl (3.2 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

pyfastani-0.6.0-cp39-cp39-macosx_10_12_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.9 macOS 10.12+ x86-64

pyfastani-0.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

pyfastani-0.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.3 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

pyfastani-0.6.0-cp38-cp38-macosx_11_0_arm64.whl (3.2 MB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

pyfastani-0.6.0-cp38-cp38-macosx_10_12_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.8 macOS 10.12+ x86-64

pyfastani-0.6.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

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

pyfastani-0.6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.3 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

pyfastani-0.6.0-cp37-cp37m-macosx_10_12_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.7m macOS 10.12+ x86-64

File details

Details for the file pyfastani-0.6.0.tar.gz.

File metadata

  • Download URL: pyfastani-0.6.0.tar.gz
  • Upload date:
  • Size: 24.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pyfastani-0.6.0.tar.gz
Algorithm Hash digest
SHA256 255e890d3ee6bbd051bb94d71a5245703b254be1ff2b5dc6789d28b715ec5fa9
MD5 93f7c722949f8bb30f32764407bc0e37
BLAKE2b-256 105ad307448350b2d3485dca6345e009aa939c3f2c249597e39c15096ee4d5aa

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f2d4cc6d26154f04f78bf593676ed611f6d4e5ec9513e92f9774d45b05cdf73b
MD5 d736acf86a8e769c138f94ec07694603
BLAKE2b-256 58e98105dfc46a6b5968952d882c96bdcbd90aea1a585e4153894a3a3c9bb300

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dc524b84d083d0319e21741f92416ad6674ac0355745d72d9524828b785d2d22
MD5 7619dd3f3ec9de0298b126bd3de32850
BLAKE2b-256 c773adbf0985333305b4a41cbaa6c37b110ae721fdc9865caf9a2cc9de487083

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 56d175329b90537601b55e8b2494d408d5616e756837b51fafff527b68ca09aa
MD5 9f86601b1c03dc21a74e5d6ec11428ab
BLAKE2b-256 51fc52f777db68350f18c4802d0b07befffacd087de80c3c95289839a8982984

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2c2bbfa3a0f1264ca4586091ca5c39f9184e094bd88e10d78d7fc468b9ab8544
MD5 6456b13a65549f8564345fc0368acadc
BLAKE2b-256 e1628ca24863d4dce18d68e69f1e4edab22151a9c23e46ad2730e7a363e9b2a8

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3614371bf2d93b71bac80a10b4794367ce6dd8f0abc6b444a17a78cfe8a245d7
MD5 6f787749b6733d3686ad4719b2cee88a
BLAKE2b-256 34e8611f98f085ab3500fade325405b97443fb5f09bdebf2d980c9dd933c9a07

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 42193683396f48977c45f8106b60b8707effc298a48ef17537f26eb876fac510
MD5 d18c89fa646c9095f7dc288408894bbc
BLAKE2b-256 c3dcaeeb8a1e981c163c7798cba99c5d361cc834b9437d7795048cef18da9aea

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1201173ab9e1fedd18454566dd12689aaf1b3ba3771aa530921c32dd5d5a10d8
MD5 fcbc5570e2bf52b756d3845cb37d140b
BLAKE2b-256 65a55a5f0bbb2641c1c4822e2ded582e1132e147a5ecf52ca259a8d03a1f6d05

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 128eaf5d809b14a59d935a4483418af5aff3cb74ff3f813be854153c11643333
MD5 8fe12e175e3fe22361944d7de671bf2e
BLAKE2b-256 9db75676aceeb3bd9a76e4200097319ebb0545215ddabd75b012d3f9b7a54c07

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 da06a21519683a928988d1dd2be14550b82a970d4e29cc6427d7d163f9b73108
MD5 223b5c0a8cc275bbd89b8c1f3e4ad6fd
BLAKE2b-256 ac43ab0e9ebe432d24398003e48f133053667324f6c2ea238f8013912d032ced

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bc7c1127e442afcfd14847fe5a5697cfaf4ce3a84a733f1d176f1026b1456fc9
MD5 5855db8e54d96b90ff09fa0a8a453565
BLAKE2b-256 eef2819e61e5e51a712efddcd99f3b1239520f9920b6400027d5ed69f9356c62

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4bb889267b0964adfb6ea074264603d6aff8cdd27e0ccd6c9e0c98998234f6bd
MD5 d163391a760425bbfcc3661a2ff366d8
BLAKE2b-256 7d6e8bb9d2e4b9cf45ceeeaadca88ce05fb6655a1d643e77a730eb1d4b07c500

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-pp37-pypy37_pp73-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-pp37-pypy37_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a7ab5b05b35b4634837d5e36229a5289aef602b05d2aba203c33c54f9e9908dc
MD5 cc25b882941caf9f50dc2b1554e746a6
BLAKE2b-256 03465a400e66549e9a7501537e2b9553c2afee0e123e4933ada3f4ce4d843ce8

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bfc0c57bedaefce173b2d6225be85ddeea2df82d0d7674798a6ed224ee2c8b53
MD5 6c4fa9679ce29f6185d41fefe2797ef0
BLAKE2b-256 edd972be7a5417dd7bc811dd96b97ff079400e54e283cf049b8638da13972e76

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d0f94b5378493da7dba5377536ef92693f85094bb256222ff2439160ae9f03a5
MD5 602ceb1a27ea2d2b6f872b2ffc3614be
BLAKE2b-256 5b1604bf3aa5f929c6d4a8ca34d8daf9e96709f89edd8d8333436ad81bb3334e

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c7cdb0a29539a681ece487ba82b0400d1c01c9a5ac2487f8e61a1dda41401bc8
MD5 0ca569b0465046f88939dd4d1b84295e
BLAKE2b-256 0f4459b19798792ffa859dad238cae9dcc5487c9297b25d7ff62cf08ec45612b

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 850bf65fe88d70a4f30bc34b1d37bf8d512aa9de3dc373bf63dae869f4454507
MD5 ec56e373be804d0a222b21b48d71cf57
BLAKE2b-256 ecd809a11a32cb0b184e610d14bc30142cbd42b5a7e882bcee34a8ae5e38c41e

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1dabfafd8885215060d883807c73a1989ee7ea6bb6d120c62b769a12745b263a
MD5 38964b6d4134d78af5729746c77f12d4
BLAKE2b-256 b306710bfdc12306922d7f0e13a2c11618e41dd0b94226c959c49065130e5570

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d2ffe81c8006d8fb99ee8ffc09bfeefce461263de31de2c517435d298c221bb4
MD5 8cbc49fe2506db335b9eab95fd123ed7
BLAKE2b-256 71ddf08a4019877a43fcbe085f9df075fa469ae880fa092a21cb0fb9b80bad47

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3ac80b236a1554e9b473ee646ecefbbc7762e57631eb7cb9307d26b4797ae88a
MD5 ce28500668a6df8a4693aa27ee578dce
BLAKE2b-256 b85041ac34ea53e9565c4c9be6db7e77473414a9c96b96e61ca762ec8e46966c

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 c1c784621d9a6b6362715f303be4adb069adc118c2ccf0d3967dbc6bca20b425
MD5 717782b94bbbead2d889c1a0e33b761d
BLAKE2b-256 0c42c99705a4a83744d9daa5651f0f93be711d08dd95ff4873687921d5616555

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bcc6399043ddedcbcfc19b36aa85a168ec284f912aaf2f6e54a3a1f6f31d2850
MD5 3e6695d795a395777cf598517491891e
BLAKE2b-256 ef7c7cc92ce623eaa258dba1a24a8bcf50b5f2dcb65a0441ac490bc91cc91f0d

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 45108b9cefac17d1d16d2ef1af55c53ee6ba125c3d5a5184694aa47132dcf650
MD5 1a816a9749aedbe9358ea1a0f08316dd
BLAKE2b-256 5c2c492b735fd2b078850f1dd438bce5e58984a58a0c25e3889439d6623a96d3

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b2990a4a3fe89319d7387ce041964ede568a6e7843597e1ac032b75bb2112420
MD5 14100217ef7230c2b1894996e88e5de2
BLAKE2b-256 d65937b81f4963b0f514dd04b22fb3cc89f6b303379342c8c49dbe2dee81ac78

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0926145bfaf839e55e234d58f4657e8e088802a2e1de371d30aba490e1c72f9a
MD5 a07d8109a2df868299c183517a97a813
BLAKE2b-256 e44fa7ff92c2ed9917bdeabbb259f8131b6c47333eb7e2289ed8eae51d2a0f8f

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1b1a3ab43d9be14fb1c4533fba4a87764582660d0c8a9be77bb7a2734daaa68d
MD5 29e633eaec36fc3c8fffcaf80518b2c3
BLAKE2b-256 6e9e6502d4435f4d7a879b431475295c990d536f8c83cbd83c03069bc9b94eb1

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e51d4741c7e522e5957f5d26ec83b71dba66f67d4a9c9554f08360bb4d4e88b7
MD5 daba4efb49bad5e6985de6e926b8d66a
BLAKE2b-256 744069c843735d72ff62ef86c32f349eb71c93969827358ab3dc1824ccfb6db5

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6a7cd98b8bf43987921ec465de4775f8648b47842034115a503dabf7bcddf654
MD5 056ab78f854769a1fb7ff68378b5d40a
BLAKE2b-256 90cc0c21d15567c3a605abda49b139b467761172539266a0c04ec116b4a73366

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e0c750f6283fbd92c3ca4aec4b8254f6119b19426df1226f47fef94f82fc7f9d
MD5 4a9bd25202edc7d2f8468b8a0d0511c1
BLAKE2b-256 274c57413ba4321a71ad4060c8ffb7bc46474a197a4851cb551a00085da2210a

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2161e2a1208b42a1042535512c931e35b357647f41aaa4b5f7eeebfe82d9f791
MD5 a428e942787fe7bdb3ed3ad8b87dfcad
BLAKE2b-256 c6fe71a1bd19d807f47c4ee8ea6efb634c02d1129ce99ef4ad0bc3b64b2b7de5

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1db9ed8b112c7aaab51f1a8dddea03bb39382bc7d503a80f91ac22e46f876719
MD5 06a9957f710aab1cefc89606943b1f1d
BLAKE2b-256 ad56f9dacf83b07eb64b59571f7f6dbd8c48bf33e6d8d472253f5d412145aa5e

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f2f5acb848991661c1d9c85c799198ede5b844ba2fc0d5463fef0bfcf0fec7c
MD5 63461316c1c8fb15d63d7e1e810b0074
BLAKE2b-256 83f63f295369c19d89851f7c30dddb852bdac1e00f4c3f78d9febd68c765d3e6

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 77e6f0649ce8bd942f1039512e13c1215dbef7b9207c39ee295a86103dfa54c6
MD5 993dd7ba9f231723bf1521c5231b55a9
BLAKE2b-256 9514b40bb53991c6996b2c416583781190197b7405c067c46c9757028bff59e7

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0cc2457f3032f9763e3890846a85ffad350e48f84af95fb1fbcb0ce2d5b0dc25
MD5 e1ffff3ed9a8474ac41f355f45bf3c7b
BLAKE2b-256 9fe5ede1b82f0ce702fe14997cb62ab6838087d25fd77c3348b6687746d1d8ec

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bd2ae685d84f27ec56aaef3590d98e1cde4a5f0172ee8f8a5bd5b923bef4c9f9
MD5 2a522778a0e99503cbacf6c268b868e0
BLAKE2b-256 dce6fd902902f0df135a83497c39397147bb2b4033ed03ecd2cfc6b89f029dfa

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 96543499c847bfb8f1add9c5958c17b8624fa0174c18d774ad7ae447fe97570d
MD5 f8a0bc4aeaf5bf4d88390e1ad918ca82
BLAKE2b-256 aa5a259a3696e59deadb21101f113c27bff796ed1429581fe070426cce597425

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp38-cp38-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp38-cp38-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1fd0d26e6cc146652d8c6109b4bfc57e9f64e3371cfc21d1972baa471f44535f
MD5 af5982ab097e65aaedbda09d1555be34
BLAKE2b-256 20c0a5b1539d070638c14f1b14e6c3e12cdf4a16949e27bb108ea7058e76509e

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a03b859e8cf7f0fa28cd123243c9a790d112688d5957288ecc2add84c0334820
MD5 4d757daa7d89c30d118359a828cd78ef
BLAKE2b-256 c6659d3b278ea5b5d6e425978b4894f6521f919818c9ce144bab72c48c4188c1

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 acb02c7937904463edc346e8b33dad5e7896f810db5e7c47cd74464574eecdd6
MD5 48416e09dc275361ad37f71c5489758a
BLAKE2b-256 3ae7d0a9106e9eb21c0e5cc916cd42cd9fdbd90da59a5877ddc0e3fb1f5a5c30

See more details on using hashes here.

File details

Details for the file pyfastani-0.6.0-cp37-cp37m-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pyfastani-0.6.0-cp37-cp37m-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0c0196fc83dd01ddfd7b8b07cb57bae0c1e89888755a3512ed3d77ab5751a50c
MD5 5e20321939ca6f59c3fab53e3435d58a
BLAKE2b-256 4457a1883b91ce77b6b7baf67d7a2143484418d7f5fb86466ff2e688172f6207

See more details on using hashes here.

Supported by

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