# Hacking tinycss

## Bugs and feature requests

Bug reports, feature requests and other issues should got to the tinycss issue tracker on Github. Any suggestion or feedback is welcome. Please include in full any error message, trackback or other detail that could be helpful.

## Installing the development version

First, get the latest git version:

    git clone https://github.com/SimonSapin/tinycss.git
    cd tinycss

You will need Cython and pytest. Installing in a virtualenv is recommended:

    virtualenv env
    . env/bin/activate
    pip install Cython pytest

Then, install tinycss in-place with pip’s editable mode. This will also build the accelerators:

    pip install -e .

## Running the test suite

Once you have everything installed (see above), just run pytest from the tinycss directory:

    py.test

If the accelerators are not available for some reason, use the `TINYCSS_SKIP_SPEEDUPS_TESTS` environment variable:

    TINYCSS_SKIP_SPEEDUPS_TESTS=1 py.test

If you get test failures on a fresh git clone, something may have gone wrong during the installation. Otherwise, you probably found a bug. Please report it.

### Test in multiple Python versions with tox

tox automatically creates virtualenvs for various Python versions and runs the test suite there:

    pip install tox

Change to the project’s root directory and just run:

    tox

tinycss comes with a pre-configured `tox.ini` file to test in CPython 2.6, 2.7, 3.1 and 3.2 as well as PyPy. You can change that with the `-e` parameter:

    tox -e py27,py32

If you use `--` in the arguments passed to tox, further arguments are passed to the underlying `py.test` command:

    tox -- -x --pdb

## Building the documentation

This documentation is made with Sphinx:

    pip install Sphinx

To build the HTML version of the documentation, change to the project’s root directory and run:

    python setup.py build_sphinx

The built HTML files are in `docs/_build/html`.

## Making a patch and a pull request

If you would like to see something included in tinycss, please fork the repository on Github and make a pull request. Make sure to include tests for your change.

## Mailing-list

tinycss does not have a mailing-list of its own for now, but the WeasyPrint mailing-list is appropriate to discuss it.