Pretty display text from python

pip install shakespear==1.19.47



Use Python to write different display file types (html, markdown), and transform common python data structures to comparable structures in a given file type (list in python to a <table /> in html, for example)


You can use pip to install shakespear:

pip install shakespear


Use python functions to create an html body, which can be attached to emails as the message content (or for any other use one might have for html)

Basic Usage

The functions all simply add to the existing html you've generated, so if you use the same instance across multiple functions it'll append new html. When you're finished writing your html, just use the generate function to get back your brand new html text.

For example:

from shakespear import HtmlWriter

h = HtmlWriter()
data = [
    {'first_name': 'Sam', 'last_name': 'Winchester', 'mood': 'Moody'},
    {'first_name': 'Dean', 'last_name': 'Winchester', 'mood': 'Gruff'},
    {'first_name': 'Cas', 'last_name': 'N/A', 'mood': 'Confused'}


Easy as that, you'll have a nice html table that looks like

first_name last_name mood
Sam Winchester Moody
Dean Winchester Gruff
Cas N/A Confused

There are a bunch of other html object functions (table, div, ul, etc) that can be chained OR written sequentially, or any combination of chaining and new lines , there's no difference in function it just depends on your style preference, or what seems easier to read:

h.header('My data').br().hr().ul(data).br().generate()


h.header('My data')

both do the same thing, and generate wil return the same html text.


Use python to create markdown text. My initial use case for this was to generate automatic change logs for a repo.

Basic Usage

Like to html writer, you can chain functions or use them seperatly, generate returns markdown text.

For example:

from shakespear import MarkdownWriter

m = MarkdownWriter()
data = [
    {'commiter': 'Richard', 'type': 'Bug Fix', 'title': 'Fix video compression'},
    {'commiter': 'Gilfoyle', 'type': 'New Feature', 'title': 'Add new chat'},
    {'commiter': 'Dinesh', 'type': 'Refactor', 'title': 'Update chat style'}


This will give you (in markdown) this table

commiter type title
Richard Bug Fix Fix video compression
Gilfoyle New Feature Add new chat
Dinesh Refactor Update chat style