Skip to content
Strictly typed wrapper around Knio's Dominate, a Python library for creating and manipulating HTML documents
Python Other
  1. Python 99.0%
  2. Other 1.0%
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
strictdom
.gitignore
CHANGES.md
COPYING.md
README.md
W3C-Document-License.html
checks.sh
conftest.py
example.py
make_1.py
package.sh
pylintrc
setup.cfg
setup.py
util.py

README.md

Strictdom

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_1 is a frozen view of the spec

  • Consistent handling of both boolean attributes and the weird "boolean-like" attributes like contenteditable or spellcheck.

Example: Vanilla vs Strict

"Vanilla" Dominate

import dominate.tags as dom

print(dom.button("Hello world",
    cls="hello",
    some_invalid_tag="hello",
    onclick="alert('Hello world');"
))

Strictdom

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'

Usage

  • 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 with pytest.

TODO

  • Typechecked ARIA and Event Handlers
You can’t perform that action at this time.