{
  "repository": "TheAlgorithms/Python",
  "ref": "574d100b7181956e9c8384552fd078165e4cc326",
  "methods": [
    {
      "slug": "formal",
      "title": "Formal verification and model checking"
    },
    {
      "slug": "static_analysis",
      "title": "Static analysis"
    },
    {
      "slug": "testing",
      "title": "Testing"
    },
    {
      "slug": "formatting",
      "title": "Formatting and hygiene"
    },
    {
      "slug": "supply_chain",
      "title": "Supply chain"
    },
    {
      "slug": "unclassified",
      "title": "Unclassified"
    }
  ],
  "verifications": [
    {
      "tool": "ruff-check",
      "method": "static_analysis",
      "commands": [
        "ruff check --output-format=github .",
        "pre-commit hook ruff-check"
      ],
      "triggers": [
        "pre_commit",
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/ruff.yml",
          "locator": "jobs.ruff.steps[2]"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "ci (pre-commit.ci)"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.ruff-check"
        },
        {
          "path": "pyproject.toml",
          "locator": "[tool.ruff]"
        }
      ],
      "upstream": "https://github.com/astral-sh/ruff",
      "docs": "https://docs.astral.sh/ruff/linter/#exit-codes",
      "exit_codes": {
        "0": "no violations",
        "1": "violations found",
        "2": "invalid configuration, CLI options or internal error"
      },
      "autofix": true,
      "declared_only": false
    },
    {
      "tool": "sphinx",
      "method": "static_analysis",
      "commands": [
        "sphinx-build -c docs . docs/_build/html"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/sphinx.yml",
          "locator": "jobs.build_docs.steps[5]"
        },
        {
          "path": "pyproject.toml",
          "locator": "[dependency-groups] docs: sphinx"
        }
      ],
      "upstream": "https://github.com/sphinx-doc/sphinx",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "pytest",
      "method": "testing",
      "commands": [
        "pytest --iterations=8 --parallel-threads=auto --ignore-gil-enabled --ignore=computer_vision/flip_augmentation.py --ignore=computer_vision/harris_corner.py --ignore=computer_vision/mosaic_augmentation.py --ignore=data_compression/peak_signal_to_noise_ratio.py --ignore=digital_image_processing/ --ignore=docs/conf.py --ignore=project_euler/ --ignore=scripts/validate_solutions.py --ignore=web_programming/current_stock_price.py --ignore=web_programming/fetch_anime_and_play.py --cov-report=term-missing:skip-covered --cov=. .",
        "pytest --doctest-modules --cov-report=term-missing:skip-covered --cov=project_euler/ project_euler/",
        "pytest scripts/validate_solutions.py"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/build.yml",
          "locator": "jobs.build.steps[4] (Run tests)"
        },
        {
          "path": ".github/workflows/project_euler.yml",
          "locator": "jobs.project-euler.steps[4]"
        },
        {
          "path": ".github/workflows/project_euler.yml",
          "locator": "jobs.validate-solutions.steps[4]"
        },
        {
          "path": "pyproject.toml",
          "locator": "[tool.pytest]"
        },
        {
          "path": "pyproject.toml",
          "locator": "[dependency-groups] test: pytest"
        },
        {
          "path": "matrix/tests/pytest.ini",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/pytest-dev/pytest",
      "docs": "https://docs.pytest.org/en/stable/reference/exit-codes.html",
      "exit_codes": {
        "0": "all tests passed",
        "1": "some tests failed",
        "2": "interrupted by the user",
        "3": "internal error",
        "4": "command line usage error",
        "5": "no tests were collected"
      },
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "codespell",
      "method": "formatting",
      "commands": [
        "pre-commit hook codespell"
      ],
      "triggers": [
        "pre_commit",
        "ci"
      ],
      "evidence": [
        {
          "path": ".pre-commit-config.yaml",
          "locator": "ci (pre-commit.ci)"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.codespell"
        },
        {
          "path": "pyproject.toml",
          "locator": "[tool.codespell]"
        }
      ],
      "upstream": "https://github.com/codespell-project/codespell",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "pre-commit-hooks",
      "method": "formatting",
      "commands": [
        "pre-commit hook check-executables-have-shebangs",
        "pre-commit hook check-toml",
        "pre-commit hook check-yaml",
        "pre-commit hook end-of-file-fixer",
        "pre-commit hook trailing-whitespace"
      ],
      "triggers": [
        "pre_commit",
        "ci"
      ],
      "evidence": [
        {
          "path": ".pre-commit-config.yaml",
          "locator": "ci (pre-commit.ci)"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.check-executables-have-shebangs"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.check-toml"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.check-yaml"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.end-of-file-fixer"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.trailing-whitespace"
        }
      ],
      "upstream": "https://github.com/pre-commit/pre-commit-hooks",
      "docs": null,
      "exit_codes": {},
      "autofix": true,
      "declared_only": false
    },
    {
      "tool": "ruff-format",
      "method": "formatting",
      "commands": [
        "pre-commit hook ruff-format"
      ],
      "triggers": [
        "pre_commit",
        "ci"
      ],
      "evidence": [
        {
          "path": ".pre-commit-config.yaml",
          "locator": "ci (pre-commit.ci)"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.ruff-format"
        }
      ],
      "upstream": "https://github.com/astral-sh/ruff",
      "docs": "https://docs.astral.sh/ruff/formatter/#exit-codes",
      "exit_codes": {
        "0": "already formatted",
        "1": "files would be reformatted (--check)",
        "2": "error"
      },
      "autofix": true,
      "declared_only": false
    },
    {
      "tool": "uv-lock",
      "method": "supply_chain",
      "commands": [
        "pre-commit hook uv-lock"
      ],
      "triggers": [
        "pre_commit",
        "ci"
      ],
      "evidence": [
        {
          "path": ".pre-commit-config.yaml",
          "locator": "ci (pre-commit.ci)"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.uv-lock"
        }
      ],
      "upstream": "https://github.com/astral-sh/uv",
      "docs": null,
      "exit_codes": {},
      "autofix": true,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "pre-commit hook auto-walrus"
      ],
      "triggers": [
        "pre_commit",
        "ci"
      ],
      "evidence": [
        {
          "path": ".pre-commit-config.yaml",
          "locator": "ci (pre-commit.ci)"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.auto-walrus"
        }
      ],
      "upstream": "https://github.com/MarcoGorelli/auto-walrus",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "pre-commit hook matchify"
      ],
      "triggers": [
        "pre_commit",
        "ci"
      ],
      "evidence": [
        {
          "path": ".pre-commit-config.yaml",
          "locator": "ci (pre-commit.ci)"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.matchify"
        }
      ],
      "upstream": "https://github.com/15r10nk/matchify",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "pre-commit hook pyproject-fmt"
      ],
      "triggers": [
        "pre_commit",
        "ci"
      ],
      "evidence": [
        {
          "path": ".pre-commit-config.yaml",
          "locator": "ci (pre-commit.ci)"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.pyproject-fmt"
        }
      ],
      "upstream": "https://github.com/tox-dev/pyproject-fmt",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "pre-commit hook requirements-txt-fixer"
      ],
      "triggers": [
        "pre_commit",
        "ci"
      ],
      "evidence": [
        {
          "path": ".pre-commit-config.yaml",
          "locator": "ci (pre-commit.ci)"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.requirements-txt-fixer"
        }
      ],
      "upstream": "https://github.com/pre-commit/pre-commit-hooks",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "pre-commit hook rumdl"
      ],
      "triggers": [
        "pre_commit",
        "ci"
      ],
      "evidence": [
        {
          "path": ".pre-commit-config.yaml",
          "locator": "ci (pre-commit.ci)"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.rumdl"
        }
      ],
      "upstream": "https://github.com/rvben/rumdl-pre-commit",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "pre-commit hook rumdl-fmt"
      ],
      "triggers": [
        "pre_commit",
        "ci"
      ],
      "evidence": [
        {
          "path": ".pre-commit-config.yaml",
          "locator": "ci (pre-commit.ci)"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.rumdl-fmt"
        }
      ],
      "upstream": "https://github.com/rvben/rumdl-pre-commit",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "pre-commit hook validate-pyproject"
      ],
      "triggers": [
        "pre_commit",
        "ci"
      ],
      "evidence": [
        {
          "path": ".pre-commit-config.yaml",
          "locator": "ci (pre-commit.ci)"
        },
        {
          "path": ".pre-commit-config.yaml",
          "locator": "hooks.validate-pyproject"
        }
      ],
      "upstream": "https://github.com/abravalheri/validate-pyproject",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "ty check --output-format=github --exit-zero"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/ty.yml",
          "locator": "jobs.ty.steps[3]"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    }
  ]
}
