complexity 0.9.1
A refreshingly simple static site generator, for those who like to work in HTML.
License: BSD
Keywords: complexity,static site generator,HTML,Jinja2,templates,S3

==========
Complexity
==========

.. image:: https://badge.fury.io/py/complexity.png
    :target: http://badge.fury.io/py/complexity
    
.. image:: https://travis-ci.org/audreyr/complexity.png?branch=master
        :target: https://travis-ci.org/audreyr/complexity

.. image:: https://pypip.in/d/complexity/badge.png
        :target: https://crate.io/packages/complexity?version=latest

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

Documentation
-------------

The full documentation is at http://complexity.rtfd.org.

Quickstart
----------

Try it out::

    $ pip install complexity
    $ git clone git@github.com:audreyr/complexity-example.git my_proj
    $ cd my_proj
    $ complexity project/ www/

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

Features
--------

* 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.

.. _`Using Complexity as a Library`: http://complexity.readthedocs.org/en/latest/advanced_usage.html#using-complexity-as-a-library

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.

.. _`Simplicity`: https://github.com/pydanny/simplicity
.. _`A Lot of Effort`: https://github.com/audreyr/alotofeffort
.. _`Cookiecutter`: https://github.com/audreyr/cookiecutter

Community
---------

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

.. _`how to contribute`: https://github.com/audreyr/complexity/blob/master/CONTRIBUTING.rst




History
-------

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 http://complexity.readthedocs.org/en/latest/advanced_usage.html#config-using-complexity-yml
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 http://complexity.readthedocs.org/en/latest/advanced_usage.html#config-using-complexity-json
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::

    my_repo/
    ├── 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 setup.py.

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.