Skip to main content

a11yhat

An open-source WCAG 2.2 accessibility machine, structured the way the work is organized — by the four principles, Perceivable · Operable · Understandable · Robust (POUR). One crew in the hardHats family (hardHats is the framework; a11yhat is a crew built with it).

How it works

Each principle is a crew lead — a module that owns its success criteria. Every applicable criterion gets a recorded result; nothing is silently skipped:

  • PASS — checked and met.
  • FAIL — checked and failed, with the specific elements.
  • CHECK — a representative measurement ran; a human must confirm the rest (keyboard operation, caption quality, reading order — anything a parser can't judge alone). Each CHECK names the exact thing to look at.
  • NA — not present on this page.
Crew lead Principle Measured deterministically Representative check + human confirm
perceivable.py 1 contrast (1.4.3, luminance math), alt text (1.1.1), headings/labels/tables (1.3.1), autoplay (1.4.2), resize/zoom (1.4.4) media captions (1.2.x), sensory wording (1.3.3), use of color (1.4.1), images of text (1.4.5)
operable.py 2 bypass (2.4.1), title (2.4.2), positive tabindex (2.4.3), link purpose (2.4.4), focus-visible suppression (2.4.7), mouse-only onclick (2.1.1) keyboard operation, traps, timing, flashing, multiple ways
understandable.py 3 page language (3.1.1), auto-context-change on input (3.2.2), control labels (3.3.2) language of parts, predictability, error identification/prevention
robust.py 4 duplicate ids (4.1.1), accessible name of every interactive element (4.1.2) status-message live regions (4.1.3)

Shared foundation: dom.py (a dependency-free DOM), color.py (WCAG luminance), base.py (the uniform Finding record and the Crew base).

Install & run

pip install a11yhat            # once on PyPI
python -m a11yhat page.html    # full POUR report, exit 1 on any FAIL
python -m a11yhat page.html --json
cat page.html | python -m a11yhat -

Grounding

Criteria, topics, and pass/fail conditions follow the DHS Trusted Tester for Web (5.1.3) process. Standard library only — nothing is installed into your environment. Automated checks catch the machine-decidable failures; the CHECK items are the ones a tester must confirm, each with the exact thing to review. It is an honest tool: it does the fast 80% and tells you precisely what the human 20% is — it does not pretend a scanner can certify a page.

License

MIT. Copyright Vincent Gonzalez / F-Keys Creative LLC.

Tests

python -m unittest discover -s tests — every deterministic check is proven to catch its defect and to clear on good input, and a clean page produces zero failures.

Metadata

Release files for a11yhat 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for a11yhat 0.1.0
File Size Uploaded Provenance
a11yhat-0.1.0.tar.gz 18.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for a11yhat 0.1.0
File Interpreter ABI Platform
a11yhat-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 38.1 kB

Release files / a11yhat-0.1.0.tar.gz

Download URL a11yhat-0.1.0.tar.gz
Size 18.8 kB
Tags Source
SHA-256 checksum
How to use checksums
76b3609143a8f9e02102d183fa773d80df80ce4bbc5460005487fc238e67cc27
BLAKE2b-256 checksum
How to use checksums
e6053de224c2b930ff182d7802f7aa0fe190f7588fe38c88fdf00f5e01f32bd2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / a11yhat-0.1.0-py3-none-any.whl

Download URL a11yhat-0.1.0-py3-none-any.whl
Size 19.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c3cb8b4f6f7e7b1df40efade3f26f2b0b14c2716bbdaa8663b9bc1a9d9fb247c
BLAKE2b-256 checksum
How to use checksums
3024f21e2acbc3e5b59b4ea9d16115b7e52e7dfb0acab11a3fe9d83c236f38c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Security for a11yhat 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page