# Petitioners

[![Build Status](https://secure.travis-ci.org/balanced/petitioners.png?branch=master)](http://travis-ci.org/balanced/petitioners) [![Latest Version](https://pypip.in/version/petitioners/badge.svg)](https://pypi.python.org/pypi/petitioners/) [![Downloads](https://pypip.in/download/petitioners/badge.svg)](https://pypi.python.org/pypi/petitioners/) [![Supported Python versions](https://pypip.in/py_versions/petitioners/badge.svg)](https://pypi.python.org/pypi/petitioners/) [![License](https://pypip.in/license/petitioners/badge.svg)](https://pypi.python.org/pypi/petitioners/)

Adds tracing to requests generated by Flask apps.

```python
@petitioners.register_flask_app('X-Request-Trace', 'Trace-')
class FlaskApp(flask.Flask):
    pass

app = FlaskApp('name')

# or if you prefer not to use a decorator
petitioners.Petitioner.register(app)
```

Requests to `app` will now generate response with headers tagged like

```
X-Request-Trace: Trace-123123
```

If this header already exists then it will be appended to like

```
X-Request-Trace: Trace-123123,Trace-123432
```

The current trace value can be accessed from `app` via the `petitioners` property

```python
>>> import flask
>>> import petitioners
>>> app = flask.Flask('name')
>>> petitioners.Petitioner.register(app)
>>> app.test_request_context().push()
>>> print flask.current_app.petitioners
<Petitioner (<Flask 'name'>)X-Petitioners=[u'OHM-c92bffaf1b27497aad73a1cb02b22059']>
```
