{"id":13468268,"url":"https://github.com/beartype/beartype","last_synced_at":"2026-10-19T00:52:06.506Z","repository":{"id":38345072,"uuid":"252646465","full_name":"beartype/beartype","owner":"beartype","description":"Unbearably fast near-real-time pure-Python runtime-static type-checker.","archived":false,"fork":false,"pushed_at":"2026-10-13T10:32:11.000Z","size":18401,"stargazers_count":3505,"open_issues_count":139,"forks_count":93,"subscribers_count":12,"default_branch":"main","last_synced_at":"2026-10-14T03:12:47.913Z","etag":null,"topics":["python3","runtime-typechecking","static-typechecking"],"latest_commit_sha":null,"homepage":"https://beartype.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/beartype.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null},"funding":{"github":["leycec"]}},"created_at":"2020-04-03T06:06:22.000Z","updated_at":"2026-10-13T07:28:01.000Z","dependencies_parsed_at":"2026-09-29T04:50:04.626Z","dependency_job_id":null,"html_url":"https://github.com/beartype/beartype","commit_stats":{"total_commits":1387,"total_committers":24,"mean_commits":"57.791666666666664","dds":0.0353280461427542,"last_synced_commit":"891e1e05c28c846ea253948aebf31ce03725fc7c"},"previous_names":[],"tags_count":67,"template":false,"template_full_name":null,"purl":"pkg:github/beartype/beartype","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beartype%2Fbeartype","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beartype%2Fbeartype/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beartype%2Fbeartype/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beartype%2Fbeartype/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/beartype","download_url":"https://codeload.github.com/beartype/beartype/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beartype%2Fbeartype/sbom","scorecard":{"id":229589,"data":{"date":"2025-08-11","repo":{"name":"github.com/beartype/beartype","commit":"56bc90688f1b47f844b3aede538f166c5c00a9c7"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.2,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 27 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python_release.yml:1","Warn: no topLevel permission defined: .github/workflows/python_test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python_release.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/beartype/beartype/python_release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python_release.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/beartype/beartype/python_release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python_release.yml:86: update your workflow using https://app.stepsecurity.io/secureworkflow/beartype/beartype/python_release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python_release.yml:88: update your workflow using https://app.stepsecurity.io/secureworkflow/beartype/beartype/python_release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python_release.yml:104: update your workflow using https://app.stepsecurity.io/secureworkflow/beartype/beartype/python_release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python_test.yml:257: update your workflow using https://app.stepsecurity.io/secureworkflow/beartype/beartype/python_test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python_test.yml:259: update your workflow using https://app.stepsecurity.io/secureworkflow/beartype/beartype/python_test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python_test.yml:382: update your workflow using https://app.stepsecurity.io/secureworkflow/beartype/beartype/python_test.yml/main?enable=pin","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/python_release.yml:54"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}}]},"last_synced_at":"2025-08-17T04:36:47.037Z","repository_id":38345072,"created_at":"2025-08-17T04:36:47.037Z","updated_at":"2025-08-17T04:36:47.037Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":344794859,"owners_count":38299562,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-14T02:00:06.392Z","response_time":82,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["python3","runtime-typechecking","static-typechecking"],"created_at":"2024-07-31T15:01:07.895Z","updated_at":"2026-10-19T00:52:06.491Z","avatar_url":"https://github.com/beartype.png","language":"Python","funding_links":["https://github.com/sponsors/leycec"],"categories":["Python","Language and Tooling","👀 Status: *lookin' awesome*","Containers \u0026 Language Extentions \u0026 Linting","Linters \u0026 Style Checkers","Dynamic type checkers"],"sub_categories":["Linters and Formatters","Development","For Python"],"readme":"\u003c!--\n------------------( LICENSE                                  )------------------\nCopyright (c) 2014-2026 Beartype authors.\nSee \"LICENSE\" for further details.\n\n------------------( SYNOPSIS                                 )------------------\nFront-facing Markdown document displayed by default on our GitHub repository!\n--\u003e\n\n\u003c!-- -------------( LOGO                                     )-------------- --\u003e\n\n[![beartype —\\[ the bare-metal type checker \\]—](https://raw.githubusercontent.com/beartype/beartype-assets/main/banner/logo.svg)](https://beartype.readthedocs.io)\n\n\u003c!-- -------------( BADGES                                   )-------------- --\u003e\n\n[![beartype Read The Docs (RTD) status](https://readthedocs.org/projects/beartype/badge/?version=latest)](https://beartype.readthedocs.io/en/latest/?badge=latest) [![beartype continuous integration (CI) status](https://github.com/beartype/beartype/actions/workflows/python_test.yml/badge.svg)](https://github.com/beartype/beartype/actions?workflow=tests) [![beartype test coverage status](https://codecov.io/gh/beartype/beartype/branch/main/graph/badge.svg?token=E6F4YSY9ZQ)](https://codecov.io/gh/beartype/beartype)\n\n\u003c!-- -------------( SPONSORS                                 )-------------- --\u003e\n\n\u003e 💖 [Financially fueled](https://github.com/sponsors/leycec) by [**ml (Mirai\n\u003e Labs)**](https://trymirai.com) —On-device AI for Apple Silicon, powered by\n\u003e bears. 💖\n\n\u003c!-- -------------( FRONTISPIECE                             )-------------- --\u003e\n\n\u003e 🥳 [Beartype documentation officially lives at **ReadTheDocs\n\u003e (RTD)**](https://beartype.readthedocs.io). 🥳\n\u003e\n\u003e It's readable, structured, and soothing to the deep folds of your big galactic\n\u003e brain. Open your mind to an ocean of mundane knowledge that will exhaust you\n\u003e at work. Enter... **the Bearpedia:**\n\u003e\n\u003e \u003e \u003chttps://beartype.readthedocs.io\u003e\n\u003e\n\u003e The document you are now reading was once a monolithic ~316Kb file known to\n\u003e induce migraines in 22% of the whole devops population. For your safety, that\n\u003e document no longer exists. This is how much beartype cares.\n\n\u003c!-- -------------( INTRODUCTION                             )-------------- --\u003e\n\n**Beartype** is an\n[open-source](https://github.com/beartype/beartype/blob/main/LICENSE)\n[pure-Python](https://beartype.readthedocs.io/en/latest/faq/#what-does-pure-python-mean)\n[PEP-compliant](https://beartype.readthedocs.io/en/latest/pep/)\n[near-real-time](https://beartype.readthedocs.io/en/latest/faq/) [hybrid\nruntime-static](https://beartype.readthedocs.io/en/latest/faq/#what-does-hybrid-runtime-static-mean-pretty-sure-you-made-that-up-too)\n[third-generation](https://beartype.readthedocs.io/en/latest/faq/#third-generation-type-checker-doesnt-mean-anything-does-it)\n[type checker](https://beartype.readthedocs.io/en/latest/eli5/) emphasizing\nefficiency, usability, unsubstantiated jargon we just made up, and thrilling\npuns.\n\n``` bash\n# Install beartype.\n$ pip install beartype\n\n# Edit the \"{your_package}.__init__\" submodule with your favourite IDE.\n$ vim {your_package}/__init__.py      # \u003c-- so, i see that you too vim\n```\n\n``` python\nfrom beartype.claw import beartype_this_package       # \u003c-- hype comes\nbeartype_this_package()                               # \u003c-- hype goes\n```\n\nBeartype now implicitly type-checks *all* annotated classes, callables, and\nvariable assignments across *all* submodules of your package. Congrats. This day\nall bugs die.\n\nBut why stop at the burning tires in only *your* code? Your app depends on a\nsprawling ghetto of other packages, modules, and services. How riddled with\ninfectious diseases is *that* code? You're about to find out.\n\n``` python\n# ....................{ BIG BEAR                        }....................\n# Warn about type hint violations in *OTHER* packages outside your control;\n# only raise exceptions from violations in your package under your control.\n# Again, at the very top of your \"{your_package}.__init__\" submodule:\nfrom beartype import BeartypeConf                              # \u003c-- this isn't your fault\nfrom beartype.claw import beartype_all, beartype_this_package  # \u003c-- you didn't sign up for this\nbeartype_this_package()                                        # \u003c-- raise exceptions in your code\nbeartype_all(conf=BeartypeConf(violation_type=UserWarning))    # \u003c-- emit warnings from other code\n\n# (OPTIONAL) Issue a non-fatal warning if some competing third-party package\n# registered its own import hook reducing the above beartype_*() calls to noops.\nfrom beartype.claw import warn_if_beartype_claw_inactive       # \u003c-- boilerplate intensifies\nwarn_if_beartype_claw_inactive()  # \u003c-- if the above calls did nothing, at least now you know :(\n```\n\nBeartype now implicitly type-checks *all* annotated classes, callables, and\nvariable assignments across *all* submodules of *all* packages. When **your**\npackage violates type safety, beartype raises an exception. When any **other**\npackage violates type safety, beartype just emits a warning. The triumphal\nfanfare you hear is probably your userbase cheering. This is how the QA was won.\n\n\u003c!-- -------------( DEEP DIVE                                )-------------- --\u003e\n\nBeartype also publishes a [plethora of APIs for fine-grained control over\ntype-checking](https://beartype.readthedocs.io/en/latest/api/). For those who are\nabout to QA, beartype salutes you. Would you like to know more?\n\n``` bash\n# So let's do this.\n$ python3\n```\n\n``` python\n# ....................{ RAISE THE PAW                   }....................\n# Manually enforce type hints across individual classes and callables.\n# Do this only if you want a(nother) repetitive stress injury.\n\n# Import the @beartype decorator.\n\u003e\u003e\u003e from beartype import beartype      # \u003c-- eponymous import; it's eponymous\n\n# Annotate @beartype-decorated classes and callables with type hints.\n\u003e\u003e\u003e @beartype                          # \u003c-- you too will believe in magic\n... def quote_wiggum(lines: list[str]) -\u003e None:\n...     print('\"{}\"\\n\\t— Police Chief Wiggum'.format(\"\\n \".join(lines)))\n\n# Call those callables with valid parameters.\n\u003e\u003e\u003e quote_wiggum([\"Okay, folks. Show's over!\", \" Nothing to see here. Show's…\",])\n\"Okay, folks. Show's over!\n Nothing to see here. Show's…\"\n   — Police Chief Wiggum\n\n# Call those callables with invalid parameters.\n\u003e\u003e\u003e quote_wiggum([b\"Oh, my God! A horrible plane crash!\", b\"Hey, everybody! Get a load of this flaming wreckage!\",])\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\n  File \"\u003cstring\u003e\", line 30, in quote_wiggum\n  File \"/home/springfield/beartype/lib/python3.9/site-packages/beartype/_decor/_code/_pep/_error/errormain.py\", line 220, in get_beartype_violation\n    raise exception_cls(\nbeartype.roar.BeartypeCallHintParamViolation: @beartyped\nquote_wiggum() parameter lines=[b'Oh, my God! A horrible plane\ncrash!', b'Hey, everybody! Get a load of thi...'] violates type hint\nlist[str], as list item 0 value b'Oh, my God! A horrible plane crash!'\nnot str.\n\n# ....................{ MAKE IT SO                      }....................\n# Squash bugs by refining type hints with @beartype validators.\n\u003e\u003e\u003e from beartype.vale import Is  # \u003c---- validator factory\n\u003e\u003e\u003e from typing import Annotated  # \u003c---------------- if Python ≥ 3.9.0\n# \u003e\u003e\u003e from typing_extensions import Annotated   # \u003c-- if Python \u003c 3.9.0\n\n# Validators are type hints constrained by lambda functions.\n\u003e\u003e\u003e ListOfStrings = Annotated[  # \u003c----- type hint matching non-empty list of strings\n...     list[str],  # \u003c----------------- type hint matching possibly empty list of strings\n...     Is[lambda lst: bool(lst)]  # \u003c-- lambda matching non-empty object\n... ]\n\n# Annotate @beartype-decorated callables with validators.\n\u003e\u003e\u003e @beartype\n... def quote_wiggum_safer(lines: ListOfStrings) -\u003e None:\n...     print('\"{}\"\\n\\t— Police Chief Wiggum'.format(\"\\n \".join(lines)))\n\n# Call those callables with invalid parameters.\n\u003e\u003e\u003e quote_wiggum_safer([])\nbeartype.roar.BeartypeCallHintParamViolation: @beartyped\nquote_wiggum_safer() parameter lines=[] violates type hint\ntyping.Annotated[list[str], Is[lambda lst: bool(lst)]], as value []\nviolates validator Is[lambda lst: bool(lst)].\n\n# ....................{ AT ANY TIME                     }....................\n# Type-check anything against any type hint – anywhere at anytime.\n\u003e\u003e\u003e from beartype.door import (\n...     is_bearable,  # \u003c-------- like \"isinstance(...)\"\n...     die_if_unbearable,  # \u003c-- like \"assert isinstance(...)\"\n... )\n\u003e\u003e\u003e is_bearable(['The', 'goggles', 'do', 'nothing.'], list[str])\nTrue\n\u003e\u003e\u003e die_if_unbearable([0xCAFEBEEF, 0x8BADF00D], ListOfStrings)\nbeartype.roar.BeartypeDoorHintViolation: Object [3405692655, 2343432205]\nviolates type hint typing.Annotated[list[str], Is[lambda lst: bool(lst)]],\nas list index 0 item 3405692655 not instance of str.\n\n# ....................{ GO TO PLAID                     }....................\n# Type-check anything in around 1µs (one millionth of a second) – including\n# this list of one million 2-tuples of NumPy arrays.\n\u003e\u003e\u003e from beartype.door import is_bearable\n\u003e\u003e\u003e from numpy import array, ndarray\n\u003e\u003e\u003e data = [(array(i), array(i)) for i in range(1000000)]\n\u003e\u003e\u003e %time is_bearable(data, list[tuple[ndarray, ndarray]])\n    CPU times: user 31 µs, sys: 2 µs, total: 33 µs\n    Wall time: 36.7 µs\nTrue\n\n# ....................{ MAKE US DO IT                   }....................\n# Don't know type hints? Do but wish you didn't? What if somebody else could\n# write your type hints for you? @beartype: it's somebody. Let BeartypeAI™\n# write your type hints for you. When you no longer care, call BeartypeAI™.\n\u003e\u003e\u003e from beartype.bite import infer_hint  # \u003c----- caring begins\n\n# What type hint describes the root state of a Pygments lexer, BeartypeAI™?\n\u003e\u003e\u003e from pygments.lexers import PythonLexer\n\u003e\u003e\u003e infer_hint(PythonLexer().tokens[\"root\"])\nlist[\n    tuple[str | pygments.token._TokenType[str], ...] |\n    tuple[str | collections.abc.Callable[\n        typing.Concatenate[object, object, ...], object], ...] |\n    typing.Annotated[\n        collections.abc.Collection[str],\n        beartype.vale.IsInstance[pygments.lexer.include]]\n]  # \u003c---- caring ends\n\n# ...all righty then. Guess I'll just take your word for that, BeartypeAI™.\n```\n\n\u003c!-- -------------( CONCLUSION                               )-------------- --\u003e\n\nBeartype brings [Rust](https://www.rust-lang.org)- and\n[C++](https://en.wikipedia.org/wiki/C%2B%2B)-inspired [zero-cost\nabstractions](https://boats.gitlab.io/blog/post/zero-cost-abstractions) into the\nlawless world of [dynamically-typed](https://en.wikipedia.org/wiki/Type_system)\nPython by [enforcing type safety at the granular level of functions and\nmethods](https://beartype.readthedocs.io/en/latest/eli5/) against [type hints\nstandardized by the Python\ncommunity](https://beartype.readthedocs.io/en/latest/pep/) in [O(1) non-amortized\nworst-case time with negligible constant\nfactors](https://beartype.readthedocs.io/en/latest/math/). If the prior sentence\nwas unreadable jargon, [see our friendly and approachable FAQ for a\nhuman-readable synopsis](https://beartype.readthedocs.io/en/latest/faq/).\n\nBeartype is [portably\nimplemented](https://github.com/beartype/beartype/tree/main/beartype) in [Python\n3](https://www.python.org), [continuously\nstress-tested](https://github.com/beartype/beartype/actions?workflow=tests) via\n[GitHub Actions](https://github.com/features/actions) **×**\n[tox](https://tox.readthedocs.io) **×** [pytest](https://docs.pytest.org) **×**\n[Codecov](https://about.codecov.io), and [permissively\ndistributed](https://github.com/beartype/beartype/blob/main/LICENSE) under the\n[MIT license](https://opensource.org/licenses/MIT). Beartype has *no* runtime\ndependencies, [only one test-time dependency](https://docs.pytest.org), and\n[only one documentation-time dependency](https://zensical.org). Beartype\nsupports [all actively developed Python\nversions](https://devguide.python.org/versions/#versions), [all Python package\nmanagers](https://beartype.readthedocs.io/en/latest/install/), and [multiple\nplatform-specific package\nmanagers](https://beartype.readthedocs.io/en/latest/install/).\n\n\u003c!-- FIXME: Gah! Libraries.io has fallen down and cannot get back up... *AGAIN.*\n    Beartype [powers quality assurance across the Python\n    ecosystem](https://libraries.io/pypi/beartype/dependents).\n--\u003e\n\n\u003c!--\n------------------( IMAGES                                   )------------------\n\n------------------( LINKS                                    )------------------\n--\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeartype%2Fbeartype","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbeartype%2Fbeartype","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeartype%2Fbeartype/lists"}