skip to navigation
skip to content

Not Logged In

complexity 0.9.1

A refreshingly simple static site generator, for those who like to work in HTML.

A refreshingly simple static site generator, for those who like to work in HTML.


The full documentation is at


Try it out:

$ pip install complexity
$ git clone my_proj
$ cd my_proj
$ complexity project/ www/

Once you've done that, open a web browser to to see the newly generated Complexity static site.


  • Works on Python 2.6, 2.7, and 3.3, and on PyPy.
  • Takes simple HTML templates as input.
  • Data from .json files turns into template context data.
  • Template inheritance, filters, etc. (Brought to you by Jinja2.)
  • Auto-expands .html file URLs into cleaner URLs (e.g. about.html gets expanded to /about/)
  • Can optionally be used as a library instead of from the command line. See Using Complexity as a Library for details.

Best Used With

Complexity is designed to be used with these packages:

  • Simplicity: Converts ReStructuredText into JSON, which Complexity can use as input.
  • A Lot of Effort: Deploys a static website (e.g. the output of Complexity) to Amazon S3.
  • Cookiecutter: Creates projects from project templates.

Sure, they could have all been built into Complexity, but decoupling them seemed like a nice thing to do.


  • Stuck? Don't know where to begin? File an issue and we'll help you.
  • We love contributions. Read about how to contribute.


0.9.1 (2013-12-02)

  • Depend on Jinja2 >= 2.4, not == 2.7.

0.9.0 (2013-08-28)

  • CONFIG CHANGE: Configuration is now via a complexity.yml file inside the project, instead of a complexity.json file.
  • Support for an unexpanded_templates config option (#23).
  • Support for non-HTML files in templates/ (or whatever you set templates_dir to be).

See for more info.

0.8.0 (2013-08-10)

  • USAGE CHANGE: At the command line, Complexity no longer takes an output_dir argument. It now assumes that your output_dir is www/ by default, but you can customize it in complexity.json.
  • Support for configuration via complexity.json: you can specify any or all of the following key/value pairs:
    • output_dir
    • templates_dir
    • assets_dir
    • context_dir

See for more info.

0.7 (2013-08-05)

A couple of small but important renames. If you rely on either of the following defaults, you will need to rename them in your Complexity project.

  • Directory parameter for .json files to be turned into context data has been renamed from json_dir to context_dir.
  • Default context directory value json/ has been changed to context/.

Sometimes you want your .json files to be turned into context variables, and sometimes you don't. This rename alleviates confusion when working with non-context .json files.

0.6 (2013-07-26)

  • Support for multi-level template directories. (Upgrade to at least 0.6 if you want to have folders within folders and beyond in templates/.)
  • Skip non-HTML files in templates/ rather than raising NonHTMLFileException.

0.5 (2013-07-25)

  • Improved static site generation API - better parameters are used.
  • Files in the root of assets/ (or the asset directory) now get copied over to the output.
  • Much more documentation.

0.4.2 (2013-07-21)

  • Make reading of JSON files from json/ optional.

0.4.1 (2013-07-19)

  • Fix reading of JSON files from json/.

0.4 (2013-07-19)

  • Project layout is now:

    ├── project/       <--------- input
    │   ├── assets/
    │   │   ├── css/
    │   │   ├── js/
    │   │   └── img/
    │   ├── json/
    │   │   └── stuff.json
    │   └── templates/
    │       ├── base.html
    │       ├── index.html
    │       └── about.html
    └── www/          <---------- output (generated)
        ├── index.html
        ├── about/
        │   └── index.html
        ├── css/
        ├── js/
        └── img/
  • Assets are copied over to www/ during site generation.

  • If the www/ directory was previously created, it prompts the user and then deletes it before site regeneration.

  • Templates starting with base are not generated as individual pages. They are meant to be extended in other templates.

0.3 (2013-07-18)

  • Graceful shutdown/restart of dev server.
  • Required input and output dir arguments.
  • Optional port argument.
  • Improved server start/stop messages.
  • Major internal refactor.

0.2.1 (2013-07-15)

  • Fixes to

0.2.0 (2013-07-15)

  • Data from .json files now gets read as template context data.
  • Tested (and passing!) on Python 2.6, 2.7, 3.3, PyPy.

0.1.1 (2013-07-10)

  • First release on PyPI.
File Type Py Version Uploaded on Size
complexity-0.9.1.tar.gz (md5) Source 2013-12-03 12KB
  • Downloads (All Versions):
  • 76 downloads in the last day
  • 394 downloads in the last week
  • 1661 downloads in the last month