is-aes
Command line and Python client for is-aesthetic.com. Requires Python 3.9 or later. No runtime dependencies. MIT licensed.
Install from PyPI, or run it without installing through uvx or pipx run:
pip install is-aes
is-aes vercel.com
uvx is-aes vercel.com
is-aes vercel.com --wait --timeout 120
is-aes vercel.com --json --wait
python -m is_aes vercel.com
Bare hosts and host/path inputs default to HTTPS: vercel.com becomes
https://vercel.com/, and www.gov.uk/browse keeps its path. Explicit HTTP(S)
URLs work too. Credentials, other schemes, malformed hosts, and localhost are
refused by the client; the API also enforces public-URL safety checks.
The command fetches the latest report for the URL's host, or starts a scan if none
exists. Without --wait, a queued/running job is printed immediately. With
--wait, it polls at least every 3 seconds, respecting the API's Retry-After,
until complete. --timeout s bounds requests and polling (default: 120 seconds).
--json writes the raw JSON object (report or queued job), with no summary or
progress text. Errors go to stderr and exit with status 1. --help and
--version are available.
The API is public. If it is temporarily unavailable, the command asks you to try later. Findings are grouped by check id, ordered by reported points lost, and list the affected pages. Measurements come from the highest-loss occurrence.
Library
from is_aes import check, IsAesError
try:
report = check("vercel.com", wait=True, timeout=120)
if report["status"] == "complete":
print(report["score"])
else:
print(report["status"])
except IsAesError as error:
print(error.code, str(error))
check(url, *, wait=False, timeout=120, api_url=API_URL, poll_interval=3) is
synchronous and returns the raw JSON dict. Time arguments are in seconds.
api_url is the full endpoint for staging/tests; the CLI also accepts the
IS_AES_API_URL environment override. Errors expose code (INVALID_URL,
INVALID_OPTIONS, TIMEOUT, API_UNAVAILABLE, PRIVATE_SERVICE, HTTP_ERROR, or
INVALID_REPORT) and status for HTTP errors. Failed scans include the API's
explanation. Rate limits are surfaced; failed requests are not silently retried.
What the score means
The 0–100 score summarizes evaluated design checks across six domains: visual communication; information and findability; functional and interaction support; inclusion and adaptation; visual expression; transparency and agency. Essential checks carry most of the score. Recommended checks count only where the relevant surface exists. Bonus checks may raise the score but never lower it. Excluded checks do not count as failures. A null score means no trustworthy checks were evaluated, not a zero. The client displays the server's score and grade without recalculating them.
Reports reflect one public snapshot of up to 3 pages, at the viewports recorded in the report, with explicit coverage limits. Read the methodology for the rubric, sources, exclusions and scoring details.
See the documentation for API usage.
Metadata
Release files for is-aes 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| is_aes-0.1.1.tar.gz | 12.0 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| is_aes-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.5 kB
Release files / is_aes-0.1.1.tar.gz
| Download URL | is_aes-0.1.1.tar.gz |
|---|---|
| Size | 12.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
310e00086d00a13929a3ef1f8936bcd342eaafac3e57c0c9ff2bfff4f654704e
|
|
BLAKE2b-256 checksum How to use checksums |
6c5c4c620af2560e6427d59026e49b46e2119dc79444ed2942fa61046adb465d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logRelease files / is_aes-0.1.1-py3-none-any.whl
| Download URL | is_aes-0.1.1-py3-none-any.whl |
|---|---|
| Size | 9.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c7d0355ef3a56d99058690024ae67bc97a62055beb8e46f90e3dab2b606d9dda
|
|
BLAKE2b-256 checksum How to use checksums |
c239e4e781fcf9ca189e4d4d92c78bf220d681eb68f79fb6d369020e8ae45839
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logSecurity for is-aes 0.1.1
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for is_aes-0.1.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logA 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.