Skip to main content

Forbid-Iterative (FI) Planner is an Automated PDDL based planner that includes planners for top-k, top-quality, and diverse computational tasks.

Project description

Forbid-Iterative (FI) Planner is an Automated PDDL based planner that includes planners for top-k, top-quality, and diverse computational tasks.

The codebase consists of multiple planners, for multiple computational problems, roughly divided into three categories:

  1. Top-k planning
  2. Top-quality planning
    2.1. Top-quality planning
    2.2. Unordered top-quality planning
    2.3. Sub(multi)set top-quality planning
  3. Diverse planning
    3.1. Satisficing/Agile diverse planning

The planners are based on the idea of obtaining multiple solutions by iteratively reformulating planning tasks to restrict the set of valid plans, forbidding previously found ones. Thus, the planners can be referred to as FI-top-k, FI-top-quality, FI-unordered-top-quality, FI-diverse-agl.

The codebase also includes multiple useful utilities:

  1. Getting the landmarks of a planning problem
  2. Constructing a graph from plans
  3. Constructing graph representations of a planning task 3.1 Problem Description Graph (PDG) 3.2 Abstract Structure Graph (ASG)

Installation

pip install forbiditerative 

Running

from forbiditerative import planners
from pathlib import Path

domain_file = Path("your/path/domain.pddl")
problem_file = Path("your/path/problem.pddl")

# Example: FI-unordered-top-quality
plans = planners.plan_unordered_topq(domain_file=domain_file, problem_file=problem_file, quality_bound=1.0, number_of_plans_bound=100, timeout=20)
print(plans)

# Example: FI-submultisets-top-quality
plans = planners.plan_submultisets_topq(domain_file=domain_file, problem_file=problem_file, quality_bound=1.0, number_of_plans_bound=None)
print(plans)

# Example: FI-subsets-top-quality
plans = planners.plan_subsets_topq(domain_file=domain_file, problem_file=problem_file, quality_bound=1.0, number_of_plans_bound=None)
print(plans)

# Example: FI-topk
plans = planners.plan_topk(domain_file=domain_file, problem_file=problem_file, number_of_plans_bound=100)
print(plans)

# Example: FI-diverse-agl
plans = planners.plan_diverse_agl(domain_file=domain_file, problem_file=problem_file, number_of_plans_bound=100)
print(plans)

# Example: getting landmarks (default method 'rhw')
landmarks = planners.get_landmarks(domain_file=domain_file, problem_file=problem_file)
print(landmarks)

# Example: getting exhaustive landmarks (https://www.fast-downward.org/Doc/LandmarkFactory) 
landmarks = planners.get_landmarks(domain_file=domain_file, problem_file=problem_file, method = 'exhaust')
print(landmarks)

# Example: create a dot graph out of plans
import graphviz
dot_txt = planners.get_dot(domain_file=domain_file, problem_file=problem_file, plans = plans)
src = graphviz.Source(dot_txt)
src.render('plans.gv', view=True)

# Example: get a problem description graph (PDG) in dot format
import graphviz
dot_txt = planners.get_PDG(domain_file=domain_file, problem_file=problem_file)
src = graphviz.Source(dot_txt)
src.render('PDG.gv', view=True)

# Example: get an abstract structure graph (ASG) in dot format
import graphviz
dot_txt = planners.get_ASG(domain_file=domain_file, problem_file=problem_file)
src = graphviz.Source(dot_txt)
src.render('ASG.gv', view=True)

Citing

Top-k planning

@InProceedings{katz-et-al-icaps2018,
  title =        "A Novel Iterative Approach to Top-k Planning",
  author =       "Michael Katz and Shirin Sohrabi and Octavian Udrea and Dominik Winterer",
  booktitle =    "Proceedings of the Twenty-Eighth International Conference on
                  Automated Planning and Scheduling (ICAPS 2018)",
  publisher =    "{AAAI} Press",
  pages =        "132--140",
  year =         "2018"
}

Top-quality planning

@InProceedings{katz-et-al-aaai2020,
  author =       "Michael Katz and Shirin Sohrabi and Octavian Udrea",
  title =        "Top-Quality Planning: Finding Practically Useful Sets of Best Plans",
  booktitle =    "Proceedings of the Thirty-Fourth {AAAI} Conference on
                  Artificial Intelligence ({AAAI} 2020)",
  publisher =    "{AAAI} Press",
  pages =        "9900--9907",
  year =         "2020"
}

@InProceedings{katz-sohrabi-icaps2022,
  author =       "Michael Katz and Shirin Sohrabi",
  title =        "Who Needs These Operators Anyway: Top Quality Planning with Operator Subset Criteria",
  booktitle =    "Proceedings of the Thirty-Second International Conference on
                  Automated Planning and Scheduling (ICAPS 2022)",
  publisher =    "{AAAI} Press",
  year =         "2022"
}

Diverse planning

@InProceedings{katz-sohrabi-aaai2020,
  title =        "Reshaping diverse planning",
  author =       "Michael Katz and Shirin Sohrabi",
  booktitle =    "Proceedings of the Thirty-Fourth {AAAI} Conference on
                  Artificial Intelligence ({AAAI} 2020)",
  publisher =    "{AAAI} Press",
  pages =        "9892--9899",
  year =         "2020"
}

PDG (this modified version, for original see Pochter et al AAAI 2011)

@InProceedings{shleyfman-et-al-aaai2015,
  title =        "Heuristics and Symmetries in Classical Planning",
  author =       "Alexander Shleyfman and Michael Katz and Malte Helmert and Silvan Sievers and Martin Wehrle",
  booktitle =    "Proceedings of the Twenty-Ninth {AAAI} Conference on
                  Artificial Intelligence ({AAAI} 2015)",
  publisher =    "{AAAI} Press",
  pages =        "3371--3377",
  year =         "2015"
}

ASG

@InProceedings{sievers-et-al-icaps2019,
  title =        "Theoretical Foundations for Structural Symmetries of Lifted {PDDL} Tasks",
  author =       "Silvan Sievers and Gabriele R{\"o}ger and Martin Wehrle and Michael Katz",
  booktitle =    "Proceedings of the Twenty-Ninth International Conference on
                  Automated Planning and Scheduling (ICAPS 2019)",
  publisher =    "{AAAI} Press",
  pages =        "446--454",
  year =         "2019"
}

Licensing

Forbid-Iterative (FI) Planner is an Automated PDDL based planner that includes planners for top-k, top-quality, and diverse computational tasks. Copyright (C) 2019 Michael Katz, IBM Research, USA. The code extends the Fast Downward planning system. The license for the extension is specified in the LICENSE file.

Fast Downward

Fast Downward

Fast Downward is a domain-independent classical planning system.

Copyright 2003-2022 Fast Downward contributors (see below).

For further information:

Tested software versions

This version of Fast Downward has been tested with the following software versions:

OS Python C++ compiler CMake
Ubuntu 20.04 3.8 GCC 9, GCC 10, Clang 10, Clang 11 3.16
Ubuntu 18.04 3.6 GCC 7, Clang 6 3.10
macOS 10.15 3.6 AppleClang 12 3.19
Windows 10 3.6 Visual Studio Enterprise 2017 (MSVC 19.16) and 2019 (MSVC 19.28) 3.19

We test LP support with CPLEX 12.9, SoPlex 3.1.1 and Osi 0.107.9. On Ubuntu, we test both CPLEX and SoPlex. On Windows, we currently only test CPLEX, and on macOS, we do not test LP solvers (yet).

Contributors

The following list includes all people that actively contributed to Fast Downward, i.e. all people that appear in some commits in Fast Downward's history (see below for a history on how Fast Downward emerged) or people that influenced the development of such commits. Currently, this list is sorted by the last year the person has been active, and in case of ties, by the earliest year the person started contributing, and finally by last name.

  • 2003-2022 Malte Helmert
  • 2008-2016, 2018-2022 Gabriele Roeger
  • 2010-2022 Jendrik Seipp
  • 2010-2011, 2013-2022 Silvan Sievers
  • 2012-2022 Florian Pommerening
  • 2013, 2015-2022 Salomé Eriksson
  • 2018-2022 Patrick Ferber
  • 2021-2022 Clemens Büchner
  • 2021-2022 Dominik Drexler
  • 2022 Remo Christen
  • 2015, 2021 Thomas Keller
  • 2016-2020 Cedric Geissmann
  • 2017-2020 Guillem Francès
  • 2018-2020 Augusto B. Corrêa
  • 2020 Rik de Graaff
  • 2015-2019 Manuel Heusner
  • 2017 Daniel Killenberger
  • 2016 Yusra Alkhazraji
  • 2016 Martin Wehrle
  • 2014-2015 Patrick von Reth
  • 2009-2014 Erez Karpas
  • 2014 Robert P. Goldman
  • 2010-2012 Andrew Coles
  • 2010, 2012 Patrik Haslum
  • 2003-2011 Silvia Richter
  • 2009-2011 Emil Keyder
  • 2010-2011 Moritz Gronbach
  • 2010-2011 Manuela Ortlieb
  • 2011 Vidal Alcázar Saiz
  • 2011 Michael Katz
  • 2011 Raz Nissim
  • 2010 Moritz Goebelbecker
  • 2007-2009 Matthias Westphal
  • 2009 Christian Muise

History

The current version of Fast Downward is the merger of three different projects:

  • the original version of Fast Downward developed by Malte Helmert and Silvia Richter
  • LAMA, developed by Silvia Richter and Matthias Westphal based on the original Fast Downward
  • FD-Tech, a modified version of Fast Downward developed by Erez Karpas and Michael Katz based on the original code

In addition to these three main sources, the codebase incorporates code and features from numerous branches of the Fast Downward codebase developed for various research papers. The main contributors to these branches are Malte Helmert, Gabi Röger and Silvia Richter.

License

The following directory is not part of Fast Downward as covered by this license:

  • ./src/search/ext

For the rest, the following license applies:

Fast Downward is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at
your option) any later version.

Fast Downward is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

forbiditerative-1.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (64.8 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

forbiditerative-1.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (64.4 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

forbiditerative-1.1.3-cp312-cp312-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

forbiditerative-1.1.3-cp312-cp312-macosx_10_9_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

forbiditerative-1.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (64.8 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

forbiditerative-1.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (64.4 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

forbiditerative-1.1.3-cp311-cp311-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

forbiditerative-1.1.3-cp311-cp311-macosx_10_9_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

forbiditerative-1.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (64.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

forbiditerative-1.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (64.4 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

forbiditerative-1.1.3-cp310-cp310-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

forbiditerative-1.1.3-cp310-cp310-macosx_10_9_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

forbiditerative-1.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (64.8 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

forbiditerative-1.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (64.4 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

forbiditerative-1.1.3-cp39-cp39-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

forbiditerative-1.1.3-cp39-cp39-macosx_10_9_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

forbiditerative-1.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (64.8 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

forbiditerative-1.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (64.4 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

forbiditerative-1.1.3-cp38-cp38-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

forbiditerative-1.1.3-cp38-cp38-macosx_10_9_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

Details for the file forbiditerative-1.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for forbiditerative-1.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9bd4bdd26bf2a7e08ff811b87ba165d989e5cd5cffda22673e09e8d2715dea51
MD5 a46bf7fbe3eed5efa3fc631a9f225a64
BLAKE2b-256 efffd65739416126561ced9cc181db9fbd6cb19e40386a2c77ddb6cf2d02de94

See more details on using hashes here.

File details

Details for the file forbiditerative-1.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for forbiditerative-1.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 612d6127b9c5041799f1b74c4d9b95143ee6908072087331f7626f3253906af1
MD5 0e885d473647047d9a88d825dad787b8
BLAKE2b-256 4db14e2953820a141ea5351bf441b53dc3fd73cc376e68508714d62731469950

See more details on using hashes here.

File details

Details for the file forbiditerative-1.1.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for forbiditerative-1.1.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 93a3e2834c547d5ed3cb9ed7f2a07be53bd90d743edb037c3e0dc32b9447924c
MD5 11abbffb8decbac298d6a83473e3b725
BLAKE2b-256 a32706cde81c0b43ce20189646b4393c2fcf960e9f0a2e1bae5016ceb82ba2ee

See more details on using hashes here.

File details

Details for the file forbiditerative-1.1.3-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for forbiditerative-1.1.3-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 87ca822b141f0f88b7fbef1813baf5683e7a6f4f3e00e46983f609d22f8173d6
MD5 b23159787d205301f8aa21e045c8233d
BLAKE2b-256 bc44882061aebce5dd60e68fbb2e9afc156a317e7f5fafa2dda0ea44465e5a11

See more details on using hashes here.

File details

Details for the file forbiditerative-1.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for forbiditerative-1.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ead3fc79b6d281014cbe9f8b56c2ca505ddf1ad8798c80072738e95febee1eb5
MD5 b8887295dffa3dfe66682eb1b7295d1d
BLAKE2b-256 96932c9e752624a1dac31cdfb6557bc2f282a0ab2c563a834fdf96246bff5d1c

See more details on using hashes here.

File details

Details for the file forbiditerative-1.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for forbiditerative-1.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3f176b261beb0f03222d3ae7d84f5495401cec6bddda53fe7247be91db849a05
MD5 d3f017fb652f3c517253e9f0fb86c7ff
BLAKE2b-256 919f455fb14d8efd944a05c7684b7364c3fa8913832ed59a4df051f1a75712fd

See more details on using hashes here.

File details

Details for the file forbiditerative-1.1.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for forbiditerative-1.1.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d931b9ddd826c91557235fad7b697de068cedb4b6a91298819d4e9b1418ee0c7
MD5 3279c0d606181321e74b96da9597e9dc
BLAKE2b-256 ec50ec23e5a4d2012680e8e3676a5e90ccca1937ad8f30aa66ca2a9554a74fc3

See more details on using hashes here.

File details

Details for the file forbiditerative-1.1.3-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for forbiditerative-1.1.3-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d3a675d438ae85847cbf482bff3323d172c155dfb08a29f5027c584daa318c83
MD5 7f46540ab040096e9be4c707ee04a59e
BLAKE2b-256 8a7e9e0d350d3cc9422da5e915ea910282f9eb91b0ea66818ce23cfdc8b98d3b

See more details on using hashes here.

File details

Details for the file forbiditerative-1.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for forbiditerative-1.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 600ebe5648a9c04bd800e8c80eddd143808a765be1f446fd50e2f95b071f638d
MD5 189fec08986662b98e22a94f4c2049ae
BLAKE2b-256 1a666d9c265bd4d9f08ad6bcc7450697fbaaa19d6e5e70499580e53f14ed895e

See more details on using hashes here.

File details

Details for the file forbiditerative-1.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for forbiditerative-1.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 acd2810ff9e0338df855c2992386d04c2300ec4e721c6418a3f59caa676b48ea
MD5 c9272d9b5f53a70f2f920d1e9475dc38
BLAKE2b-256 ca75ecd8d74fee680b33a76b8abb93dbff6873155839545c15df83af7809330d

See more details on using hashes here.

File details

Details for the file forbiditerative-1.1.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for forbiditerative-1.1.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7c4d70df541e64d7184011353be0edbe01170091b0dc88a73713be7e4bb98aac
MD5 f75cdf4fb542e442be386b8eaed77d98
BLAKE2b-256 4afcf31cccefb58ffce70364558334b03602d29a5537579a01c27f19cb6995f5

See more details on using hashes here.

File details

Details for the file forbiditerative-1.1.3-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for forbiditerative-1.1.3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9f174fa02202cca0d5271ad5bc54ade7cfd1b70fc9312626a10fca3a8cb6fef0
MD5 135810d010e066ca80f3b95b4c473a5f
BLAKE2b-256 54e9de0eae07ebdebee2fedd9444ca0b1d9ba4e75babf172b17926f76c71858a

See more details on using hashes here.

File details

Details for the file forbiditerative-1.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for forbiditerative-1.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8a059cc8bf95f4b0eebfd8b09758980d2f33958a78d71a09611e1d22da37dd30
MD5 cf99487bc8515f70c7d8f8b7fd7c8b64
BLAKE2b-256 824daa4e59138aef6a973efde13ba1849afba61f847b1641374709536bba7fc3

See more details on using hashes here.

File details

Details for the file forbiditerative-1.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for forbiditerative-1.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c13ecd6ab3eca5013d0f413464e3ed3b1a035196bc9268becf2d88b639ab0906
MD5 d9d65fe692d85ede2d3172019291fb9e
BLAKE2b-256 814a97f8638b36708973bc2fcb372a04554bf2008d74865178adb9bf53b9f322

See more details on using hashes here.

File details

Details for the file forbiditerative-1.1.3-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for forbiditerative-1.1.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 04a384acbeabc11e3951fc70be0c2ba90bec4d57b83f66e1cd4e1885f2f2305f
MD5 08556c012f03ea4a3c23a7de859d98ea
BLAKE2b-256 9a6c7d0ee12e9f2c6f25daa0b9a8a89d71d18bc2b3dc60bf58018efde622fe20

See more details on using hashes here.

File details

Details for the file forbiditerative-1.1.3-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for forbiditerative-1.1.3-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cc275c56f107d56ed7969e521d06ec5a121898109e659d241aa9edc0a45eb3e1
MD5 445bf7e6166a826a14bd819c3399e97c
BLAKE2b-256 e25ff92bdb95e3718d1841df5e493923187ac5092d9c154ae86a0e94ae85e5d3

See more details on using hashes here.

File details

Details for the file forbiditerative-1.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for forbiditerative-1.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 da88533334687825a034b56803cd8323e0881dba8122c61dcab44d513ec8f11d
MD5 fc8e15c0a4086d19668224ed97318829
BLAKE2b-256 4978758665ad00de48997815fce48b0174e2b30d5c4f27d4567c9f3d3776e9d9

See more details on using hashes here.

File details

Details for the file forbiditerative-1.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for forbiditerative-1.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a63c48df4c8753ed56be45934d60bd1e6839a90c955a2f357d8c4413034dc36a
MD5 ae32474c7f0e390729e54c717698c218
BLAKE2b-256 4eb2640664a803fecdd421af0eb34910a6e1cfd20277b7f2454e28bed3cab05b

See more details on using hashes here.

File details

Details for the file forbiditerative-1.1.3-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for forbiditerative-1.1.3-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5658cccc7d10a226360fc52e86cc5d614e2882f4247cffe8aa6eb51d0835f967
MD5 9a168a1cfbe9170c1838bafad47ac67c
BLAKE2b-256 cc90474ce2df1345b20c33da51facb3f2db3b4042fe60e56f9a50b75f719876a

See more details on using hashes here.

File details

Details for the file forbiditerative-1.1.3-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for forbiditerative-1.1.3-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f3d961a3a55ed55b447c82f80e62f3ee97fab62d675f36967c448427a2b66b23
MD5 f48b52330b63587ecfff5ee59da677bf
BLAKE2b-256 41340d037e6ecf2a8e445201e2da16781b3522e4152d446bf6faafa51f538ef7

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