Skip to main content

a HTML/SVG/MathML to htpy converter

Project description

any2htpy

any2htpy is a principled converter for HTML/SVG and MathML to htpy inspired by html2htpy, the built-in tool for htpy.

Unlike html2htpy any2htpy uses a feature-complete HTML parser called justhtml.

Features

  • adheres to SVG and MathML
  • preserves case-sensitive attributes such as SVG viewBox
  • preserves SVG path commands and other non-class attribute values with spaces
  • tries best-effort DOM for malformed HTML
  • properly preserves whitespace for respective tags
  • only supports class_ syntax to allow stable parsing by TailwindCSS

A few things any2htpy needs to fix to be better suited for :

  • auto-detect if code is just a fragment or a whole document
  • boolean attributes are not yet detected (use dict syntax)
  • special attribute detection for AlpineJS or HTMX
    • specifically passing HTMX events : or AlpineJS @

Things that any2htpy will not do:

  • add the import htpy code
  • add the shorthand syntax of htpy

Usage

usage: any2htpy [-h] [--input INPUT] [--stdin] [--debug] [--prefix PREFIX] [--fragment]

options:
  -h, --help       show this help message and exit
  --input INPUT    input as string or file
  --stdin          use stdin as input
  --debug          generate debug output
  --prefix PREFIX  use a prefix for the tags
  --fragment       use htpy fragment

input through stdin

[me@machine ] echo "<p>Hello World</p>" | uv run any2htpy --stdin --prefix htpy
htpy.p["Hello World"]

Disclaimer

As an AI-skeptic, specifically regarding code and software in general, justhtml is not exactly the obvious choice or more precisely the exact opposite one. However, the heavy test-rig with thousands of tests and the use as a parser without introducing it as a dependency in the resulting code make it a better choice than any other native Python parser library.

License

Licensed under the terms of the MIT License

Copyright

Copyright (c) 2026 Hartmut Seichter

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

any2htpy-0.1.2.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

any2htpy-0.1.2-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file any2htpy-0.1.2.tar.gz.

File metadata

  • Download URL: any2htpy-0.1.2.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for any2htpy-0.1.2.tar.gz
Algorithm Hash digest
SHA256 e672c8a1ab3cb0a7b7baed7a4f9b54f356fe4cd6e64266e48e4d7622e1043773
MD5 d737518bf97068c6000b51d98b5b4002
BLAKE2b-256 04e67640b94d22eb27ef4e84a8ccb62d27df42e5892b4d0fd4f1fa2465b580d6

See more details on using hashes here.

File details

Details for the file any2htpy-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: any2htpy-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 5.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for any2htpy-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 bd26728d9199b5a1951814bc8fb5d690bbb4cd9b6fa6abc5580b95f98704ff3a
MD5 0dcd84182e600301db69f02c0a5967ce
BLAKE2b-256 cb12a482f35e9756679d32335c158b833b46f9aa8516ec5c703e26f15c8dcbb6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page