@nox.session def bootstrap(session): session.install("jinja2", "matrix") session.run("python", "-c", """\ import os.path import jinja2 import matrix jinja = jinja2.Environment( loader=jinja2.FileSystemLoader(os.path.join("ci", "templates")), trim_blocks=True, lstrip_blocks=True, keep_trailing_newline=True ) nox_environments = {} for (alias, conf) in matrix.from_file("setup.cfg").items(): python = conf["python_versions"] deps = conf["dependencies"] nox_environments[alias] = { "python": "python" + python if "py" not in python else python, "deps": deps.split(), } if "coverage_flags" in conf: cover = {"false": False, "true": True}[conf["coverage_flags"].lower()] nox_environments[alias].update(cover=cover) if "environment_variables" in conf: env_vars = conf["environment_variables"] nox_environments[alias].update(env_vars=env_vars.split()) for name in os.listdir(os.path.join("ci", "templates")): with open(name, "w") as fh: fh.write(jinja.get_template(name).render(nox_environments=nox_environments)) print("Wrote {}".format(name)) print("DONE.") """)