Skip to main content

HTML5 generator from your Python code

GitHub Release GitHub issue custom search in repo PyPI - Downloads

Features

  • HTML5 tag creation with classes such as A() for <a></a>, Hr() for <hr />, etc.
  • Pretty printing the html content with pretty() method.
  • Create multiple html pages using HTMLPage class.
  • Custom tag creation by inheriting Element class which declared at markupify.tags

Goals

  • Generate *.html files after creating html content.
  • Create an CSSPage class to create some css contents.
  • Generate *.css files.
  • Show tag structure like <body> -> <div> -> h1 -> "This is heading one!" or something.
  • Create a page object with specific head and body.

Installation

pip install markupify

Usage

from markupify.page import HTMLPage
from markupify.tags import Meta, Link, Title, Div, H, Comment

# Alternatively, you can import these classes from markupify directly:
# from markupify import HTMLPage, Meta, Link, Title, Div, H, Comment


page = HTMLPage()

meta = Meta(charset="UTF-8")
link = Link(href="css/styles.css", rel="stylesheet")
title = Title("My first website")
div = Div(
    tag_content=H(
        tag_content="Greetings text"
    )
)
comment = Comment("This is a comment")

page.add_tag_to_head(meta, link, title)
page.add_tag_to_body(comment, div)

print(page)

Output:

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><link href="css/styles.css" rel="stylesheet" /><title>My first website</title></head><body><!-- This is a comment --><div><h1>Greetings text</h1></div></body></html>

To prettify that, use the pretty() method of the page object:

print(page.pretty())

Output:

<!DOCTYPE html>
<html lang="en">
 <head>
  <meta charset="utf-8"/>
  <link href="css/styles.css" rel="stylesheet"/>
  <title>
   My first website
  </title>
 </head>
 <body>
  <!-- This is a comment -->
  <div>
   <h1>
    Greetings text
   </h1>
  </div>
 </body>
</html>

Customizing

Devs! Maybe I forgot to create some tags you need. Feel free to create them yourself by inheriting from the Element class.

For example, create a double tag:

from typing import Optional, Union
from markupify.tags import Element


class MyCustomTag(Element):
    def __init__(self, tag_content: Optional[Union[str, Element]], **props):
        """
        A tag class to represent <my_tag> tag.
        """
        super().__init__(tag_name="my_tag", tag_content=tag_content, **props)


my_tag = MyCustomTag("This my custom tag! 🥳")
print(my_tag)

Output:

<my_tag>This my custom tag! 🥳</my_tag>

Add class property with add_properties

my_tag.add_properties(_class="custom my-tag")
print(my_tag)

Output:

<my_tag class="custom my-tag">This my custom tag! 🥳</my_tag>

[!NOTE] Some keywords like class are built-in names in Python. So you need to use them with underscore before them. For example, instead of class, write _class and everything will be fine.

Create a single tag:

from markupify.tags import Element


class Vl(Element):
    def __init__(self, **props):
        """
        A tag class to represent <vl> (Vertical Line) tag.
        """
        super().__init__(tag_name="vl", has_end_tag=False, **props)


vl = Vl()
print(vl)

Output:

<vl />

Add width property with add_property

vl.add_property("width", "5px")
print(vl)

Output:

<vl width="5px" />

Metadata

Release files for markupify 1.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 markupify 1.1.0
File Size Uploaded
markupify-1.1.0.tar.gz 10.7 kB Details

Built distribution (wheel)

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

Total release size: 20.8 kB

Release files / markupify-1.1.0.tar.gz

Download URL markupify-1.1.0.tar.gz
Size 10.7 kB
Tags Source
SHA-256 checksum
How to use checksums
4a19bf4a76b15970e751a216420689b3546643b199582297268e77d7c5814688
BLAKE2b-256 checksum
How to use checksums
897ff71f508d658464a96309b5ad593344aad36fd62498b4a68a25db46a37377
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.1 CPython/3.9.18 Linux/6.5.0-1015-azure

Release files / markupify-1.1.0-py3-none-any.whl

Download URL markupify-1.1.0-py3-none-any.whl
Size 10.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5063e2b3195ded7d1e7029b7777c585f93dca500fbe7367ef28da27e6696e731
BLAKE2b-256 checksum
How to use checksums
16f40b0d6f8a9dbb9fce700e25371277f1ba4bfa9d5b35e379961a4f6766b2ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.1 CPython/3.9.18 Linux/6.5.0-1015-azure

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.0

2 release files

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