Stictdom is a strictly typed wrapper over Dominate, a Python library for creating and manipulating HTML documents.
Compared to using Dominate directly, strictdom offers:
- 
Type hints for code-completion / IntelliSense / IDE hints 
- 
Type hints and explicit arguments for HTML5 & ARIA conformance at runtime, or at compile-time with mypy. 
Features:
- 
Nothing new to learn - mostly the same interface as vanilla. 
- 
Stable versioned interface e.g. strictdom.tags_1is a frozen view of the spec
- 
Consistent handling of both boolean attributes and the weird "boolean-like" attributes like contenteditableorspellcheck.
import dominate.tags as dom
print(dom.button("Hello world",
    cls="hello",
    some_invalid_tag="hello",
    onclick="alert('Hello world');"
))
import strictdom.tags_1 as tags
print(tags.button("Hello world",
    class_="hello",
    # some_invalid_tag="hello",
    events=tags.Events(click="alert('Hello world');")
))
some_invalid_tag will raise a runtime error if not removed:
TypeError: __init__() got an unexpected keyword argument 'some_invalid_tag'
- 
Install with sudo pip3 install strictdom --upgrade --no-cache-dir
- 
Build from source with python3 make_1.py(requires html5spec) in a sibling directory and test withpytest.
- Typechecked ARIA and Event Handlers