Source code for toxmatrix.template

#!/usr/bin/env python
'''
Module for creating tox.ini files
'''
from string import ascii_uppercase
from jinja2 import Template

DEFAULT_TEMPLATE = '''[tox]
envlist = {% for toxenv in envs %}{{ toxenv.name }}{% if not loop.last %}, {% endif %}{% endfor %}

[testenv]
commands = py.test
deps = pytest
{% for toxenv in envs %}
[testenv:{{ toxenv.name }}]
basepython = {{ toxenv.basepython }}
deps = {[testenv]deps}
{%- for dep in toxenv.deps %}
    {{ dep }}
{%- endfor %}
{% endfor %}
'''


[docs]def generate_tox_ini(matrix, template=None): ''' Generate a tox.ini file contents from a given matrix using a template :param matrix: as returned from `toxmatrix.lib.generate_matrix` :param template: a template to render tox.ini with Jinja2 ''' tox_env = { 'name': None, 'basepython': None, 'deps': [], } envs = [] env_suffixes = ascii_uppercase if template is None: template = Template(DEFAULT_TEMPLATE) for basepython, dep_lists in matrix: for deps, suffix in zip(dep_lists, env_suffixes): env = tox_env.copy() env['basepython'] = basepython env['name'] = basepython.replace('thon', '').replace('.', '') + '-' + suffix env['deps'] = deps envs.append(env) rendered = template.render(envs=envs) return rendered