The novem python library is designed with convenience in mind and to easily integrate with existing data processing workflows.


The novem python api provides utility and convenience functions for using the novem api from python.

The primary use case is creating charts combined with pandas data frames, but most relevant novem functionality is exposed through the api.

This document explains the overall design of the library and how to use it, for examples of specific use cases please see the relevant chart, doc, grid, e-mail and view sections.

The libary offers 5 main modules

  • plot - for creating charts and other plot like objects (see CHARTS documentation)
  • doc - novem documents (see Document documentation)
  • grid - novem grids (see GRID documentation)
  • view - novem views (see VIEW documentation)
  • mail - novem mails (see MAIL documentation)


The novem python library requires python 3.8.5 or higher and is avaiable from pypi, in additon the source code can be found on our github page.

pip install novem

Once the novem library is installed you can run python -m novem --init to generate a new token and create the default config file. This token will be named novem-python-$hostname-$nounce unless otherwise specified by the --token_name switch.

For a list of all availbale options python -m novem please check out the appendix for the novem cli.

username@computer:~/$ python -m novem --init
 • novem.no username: <your_username>
 • novem.no password: <your_password>
 ✓ authenticated
 ✓ token created
 ✓ new token "novem-python-computer-rj8chk2j" saved to ~/.config/novem/novem.conf
username@computer:~/$ _

An alternative option is logging into app.novem.no, generate a token and save it to $CONFIG_DIR/novem/novem.conf manually.






The plot module exposes a novem plot class that maps to the /v1/vis/plots/ api end-point.

The class takes one positional parameter, the plot name, and several optional named parameters. All the named parameters in the constructor are also available as properties.

Below we show the various ways you can set the options on your novem plot

from novem import Plot

# everything in the constructor
barchart = Plot(<name>, \
  type='bar', \
  title='barchart tiitle', \
  caption = 'caption'

# property approach
barchart = Plot('plot_name')
barchart.type = 'bar'
barchart.title = 'barchart title'
barchart.caption = 'caption'


The mail module exposes a novem plot class that maps to the /v1/vis/mails/ api end-point.

The mail allows two primary way of constructing a plot. Either by supplying a novem markdown document as a content file or constructing the e-mail programatically.

The markdown appoarch

from novem import Mail

mail = Mail('name')                     # create mail object

mail.to = "user@example.com"            # add recipient

with open('content.txt', 'r') as f:
    mail(f)                             # add content to mail


The pythonic appoarch

from novem import Mail,S 
from novem.mail.sections import \

mail = Mail('name')                     # create mail object

mail.to = "user@example.com"            # add recipient

mail.subject = "Test e-mail"

Preview summary that is not visible in the main
body of the mail

Markdown text for text section
""", title="Section title"


Preview version of the above code.