From f4d26d986396dd8c4df9af85fea4a4d49d710b75 Mon Sep 17 00:00:00 2001
From: Stephen Finucane <stephenfin@redhat.com>
Date: Tue, 30 Apr 2019 17:41:57 -0600
Subject: [PATCH] Remove tox templating

Cmon guys. Not cool.

Change-Id: Ib12ff96340687dd9fb64bef44def9f1e28ac45d9
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
---
 tox-tmpl.ini | 141 -------------
 tox.ini      | 568 +++++++++++++++++++++++++--------------------------
 toxgen.py    | 144 -------------
 3 files changed, 284 insertions(+), 569 deletions(-)
 delete mode 100644 tox-tmpl.ini
 delete mode 100644 toxgen.py

diff --git a/tox-tmpl.ini b/tox-tmpl.ini
deleted file mode 100644
index 692b570..0000000
--- a/tox-tmpl.ini
+++ /dev/null
@@ -1,141 +0,0 @@
-# content of: tox.ini , put in same dir as setup.py
-[tox]
-envlist = py27,py27-nolxml,pypy,cornice,cornice-py3,coverage,py36,py35,py36-nolxml,py35-nolxml,pecan-dev27,pecan-dev35,pecan-dev36,pep8
-
-[common]
-testtools=
-    nose
-    coverage < 3.99
-    pbr
-    webtest
-basedeps=
-    transaction
-    pecan
-    cloud_sptheme
-    Sphinx < 1.2.99
-    Flask
-    flask-restful
-    SQLAlchemy<=0.7.99
-
-[axes]
-python=py27,py35,py36,pypy
-lxml=lxml*,nolxml
-json=json*,simplejson
-
-[axis:python]
-deps =
-    {[common]testtools}
-    {[common]basedeps}
-    suds-jurko
-
-commands=
-    {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-    {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-
-[axis:python:py27]
-basepython=python2.7
-
-[axis:python:py35]
-basepython=python3.5
-
-[axis:python:py36]
-basepython=python3.6
-
-[axis:json:simplejson]
-deps=
-    simplejson
-
-[axis:lxml:lxml]
-deps=
-    lxml
-
-[testenv]
-setenv=
-    COVERAGE_FILE=.coverage.{envname}
-
-[testenv:cornice]
-basepython=python2.7
-usedevelop=True
-deps=
-    pbr
-    nose
-    webtest
-    coverage < 3.99
-    cornice
-commands=
-    {envbindir}/nosetests tests/test_cornice.py --with-xunit --xunit-file nosetests-{envname}.xml --verbose --with-coverage --cover-package wsmeext {posargs}
-    {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py wsmeext/cornice.py
-
-[testenv:cornice-py3]
-basepython = python3.6
-usedevelop = {[testenv:cornice]usedevelop}
-deps = {[testenv:cornice]deps}
-# disable hash randomization
-setenv =
-        PYTHONHASHSEED=0
-commands =
-    {envbindir}/nosetests tests/test_cornice.py --with-xunit --xunit-file nosetests-{envname}.xml --verbose --with-coverage --cover-package wsmeext {posargs}
-    {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py wsmeext/cornice.py
-
-[testenv:pecan-dev-base]
-deps=
-    {[common]testtools}
-    transaction
-    suds-jurko
-    https://github.com/pecan/pecan/zipball/master
-
-[testenv:pecan-dev27]
-basepython=python2.7
-deps={[testenv:pecan-dev-base]deps}
-commands=
-    {envbindir}/nosetests tests/pecantest --with-xunit --xunit-file nosetests-{envname}.xml --verbose {posargs}
-
-[testenv:pecan-dev35]
-basepython=python3.5
-deps={[testenv:pecan-dev-base]deps}
-commands=
-    {envbindir}/nosetests tests/pecantest --with-xunit --xunit-file nosetests-{envname}.xml --verbose {posargs}
-
-[testenv:pecan-dev36]
-basepython=python3.6
-deps={[testenv:pecan-dev-base]deps}
-commands=
-    {envbindir}/nosetests tests/pecantest --with-xunit --xunit-file nosetests-{envname}.xml --verbose {posargs}
-
-[testenv:coverage]
-basepython=python3
-deps=
-    coverage < 3.99
-setenv=
-    COVERAGE_FILE=.coverage
-commands=
-    {envbindir}/coverage erase
-    {envbindir}/coverage combine
-    {envbindir}/coverage xml wsme/*.py wsme/rest/*.py wsmeext/*.py
-    {envbindir}/coverage report --show-missing wsme/*.py wsme/protocols/*.py wsmeext/*.py
-
-[testenv:doc]
-basepython=python3
-deps=
-    cloud_sptheme
-    Sphinx < 1.2.99
-
-changedir=
-    doc
-
-commands=
-    make clean ziphtml
-
-[testenv:pep8]
-basepython=python3
-deps = flake8
-commands = flake8 wsme wsmeext setup.py
-
-# Generic environment for running commands like packaging
-[testenv:venv]
-commands = {posargs}
-usedevelop=True
-deps =
-    pbr
-    oslo.config
-    oslotest
diff --git a/tox.ini b/tox.ini
index 2509ec4..278bc1b 100644
--- a/tox.ini
+++ b/tox.ini
@@ -2,93 +2,93 @@
 envlist = py27,py27-nolxml,pypy,cornice,cornice-py3,coverage,py36,py35,py36-nolxml,py35-nolxml,pecan-dev27,pecan-dev35,pecan-dev36,pep8
 
 [common]
-testtools = 
-	nose
-	coverage < 3.99
-	pbr
-	webtest
-basedeps = 
-	transaction
-	pecan
-	cloud_sptheme
-	Sphinx < 1.2.99
-	Flask
-	flask-restful
-	SQLAlchemy<=0.7.99
+testtools =
+  nose
+  coverage < 3.99
+  pbr
+  webtest
+basedeps =
+  transaction
+  pecan
+  cloud_sptheme
+  Sphinx < 1.2.99
+  Flask
+  flask-restful
+  SQLAlchemy<=0.7.99
 
 [testenv]
-setenv = 
-	COVERAGE_FILE=.coverage.{envname}
+setenv =
+  COVERAGE_FILE=.coverage.{envname}
 
 [testenv:cornice]
 basepython = python2.7
 usedevelop = True
-deps = 
-	pbr
-	nose
-	webtest
-	coverage < 3.99
-	cornice
-commands = 
-	{envbindir}/nosetests tests/test_cornice.py --with-xunit --xunit-file nosetests-{envname}.xml --verbose --with-coverage --cover-package wsmeext {posargs}
-	{envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py wsmeext/cornice.py
+deps =
+  pbr
+  nose
+  webtest
+  coverage < 3.99
+  cornice
+commands =
+  {envbindir}/nosetests tests/test_cornice.py --with-xunit --xunit-file nosetests-{envname}.xml --verbose --with-coverage --cover-package wsmeext {posargs}
+  {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py wsmeext/cornice.py
 
 [testenv:cornice-py3]
 basepython = python3.6
 usedevelop = {[testenv:cornice]usedevelop}
 deps = {[testenv:cornice]deps}
-setenv = 
-	PYTHONHASHSEED=0
-commands = 
-	{envbindir}/nosetests tests/test_cornice.py --with-xunit --xunit-file nosetests-{envname}.xml --verbose --with-coverage --cover-package wsmeext {posargs}
-	{envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py wsmeext/cornice.py
+setenv =
+  PYTHONHASHSEED=0
+commands =
+  {envbindir}/nosetests tests/test_cornice.py --with-xunit --xunit-file nosetests-{envname}.xml --verbose --with-coverage --cover-package wsmeext {posargs}
+  {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py wsmeext/cornice.py
 
 [testenv:pecan-dev-base]
-deps = 
-	{[common]testtools}
-	transaction
-	suds-jurko
-	https://github.com/pecan/pecan/zipball/master
+deps =
+  {[common]testtools}
+  transaction
+  suds-jurko
+  https://github.com/pecan/pecan/zipball/master
 
 [testenv:pecan-dev27]
 basepython = python2.7
 deps = {[testenv:pecan-dev-base]deps}
-commands = 
-	{envbindir}/nosetests tests/pecantest --with-xunit --xunit-file nosetests-{envname}.xml --verbose {posargs}
+commands =
+  {envbindir}/nosetests tests/pecantest --with-xunit --xunit-file nosetests-{envname}.xml --verbose {posargs}
 
 [testenv:pecan-dev35]
 basepython = python3.5
 deps = {[testenv:pecan-dev-base]deps}
-commands = 
-	{envbindir}/nosetests tests/pecantest --with-xunit --xunit-file nosetests-{envname}.xml --verbose {posargs}
+commands =
+  {envbindir}/nosetests tests/pecantest --with-xunit --xunit-file nosetests-{envname}.xml --verbose {posargs}
 
 [testenv:pecan-dev36]
 basepython = python3.6
 deps = {[testenv:pecan-dev-base]deps}
-commands = 
-	{envbindir}/nosetests tests/pecantest --with-xunit --xunit-file nosetests-{envname}.xml --verbose {posargs}
+commands =
+  {envbindir}/nosetests tests/pecantest --with-xunit --xunit-file nosetests-{envname}.xml --verbose {posargs}
 
 [testenv:coverage]
 basepython = python3
-deps = 
-	coverage < 3.99
-setenv = 
-	COVERAGE_FILE=.coverage
-commands = 
-	{envbindir}/coverage erase
-	{envbindir}/coverage combine
-	{envbindir}/coverage xml wsme/*.py wsme/rest/*.py wsmeext/*.py
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/protocols/*.py wsmeext/*.py
+deps =
+  coverage < 3.99
+setenv =
+  COVERAGE_FILE=.coverage
+commands =
+  {envbindir}/coverage erase
+  {envbindir}/coverage combine
+  {envbindir}/coverage xml wsme/*.py wsme/rest/*.py wsmeext/*.py
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/protocols/*.py wsmeext/*.py
 
 [testenv:doc]
 basepython = python3
-deps = 
-	cloud_sptheme
-	Sphinx < 1.2.99
-changedir = 
-	doc
-commands = 
-	make clean ziphtml
+deps =
+  cloud_sptheme
+  Sphinx < 1.2.99
+changedir =
+  doc
+commands =
+  make clean ziphtml
 
 [testenv:pep8]
 basepython = python3
@@ -98,309 +98,309 @@ commands = flake8 wsme wsmeext setup.py
 [testenv:venv]
 commands = {posargs}
 usedevelop = True
-deps = 
-	pbr
-	oslo.config
-	oslotest
+deps =
+  pbr
+  oslo.config
+  oslotest
 
 [testenv:py27-lxml-json]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
-	lxml
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
+  lxml
 basepython = python2.7
 
 [testenv:py27]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
-	lxml
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
+  lxml
 basepython = python2.7
 
 [testenv:py27-lxml-simplejson]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
-	lxml
-	simplejson
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
+  lxml
+  simplejson
 basepython = python2.7
 
 [testenv:py27-simplejson]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
-	lxml
-	simplejson
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
+  lxml
+  simplejson
 basepython = python2.7
 
 [testenv:py27-nolxml-json]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
 basepython = python2.7
 
 [testenv:py27-nolxml]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
 basepython = python2.7
 
 [testenv:py27-nolxml-simplejson]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
-	simplejson
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
+  simplejson
 basepython = python2.7
 
 [testenv:py35-lxml-json]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
-	lxml
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
+  lxml
 basepython = python3.5
 
 [testenv:py35]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
-	lxml
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
+  lxml
 basepython = python3.5
 
 [testenv:py35-lxml-simplejson]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
-	lxml
-	simplejson
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
+  lxml
+  simplejson
 basepython = python3.5
 
 [testenv:py35-simplejson]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
-	lxml
-	simplejson
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
+  lxml
+  simplejson
 basepython = python3.5
 
 [testenv:py35-nolxml-json]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
 basepython = python3.5
 
 [testenv:py35-nolxml]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
 basepython = python3.5
 
 [testenv:py35-nolxml-simplejson]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
-	simplejson
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
+  simplejson
 basepython = python3.5
 
 [testenv:py36-lxml-json]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
-	lxml
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
+  lxml
 basepython = python3.6
 
 [testenv:py36]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
-	lxml
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
+  lxml
 basepython = python3.6
 
 [testenv:py36-lxml-simplejson]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
-	lxml
-	simplejson
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
+  lxml
+  simplejson
 basepython = python3.6
 
 [testenv:py36-simplejson]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
-	lxml
-	simplejson
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
+  lxml
+  simplejson
 basepython = python3.6
 
 [testenv:py36-nolxml-json]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
 basepython = python3.6
 
 [testenv:py36-nolxml]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
 basepython = python3.6
 
 [testenv:py36-nolxml-simplejson]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
-	simplejson
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
+  simplejson
 basepython = python3.6
 
 [testenv:pypy-lxml-json]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
-	lxml
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
+  lxml
 
 [testenv:pypy]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
-	lxml
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
+  lxml
 
 [testenv:pypy-lxml-simplejson]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
-	lxml
-	simplejson
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
+  lxml
+  simplejson
 
 [testenv:pypy-simplejson]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
-	lxml
-	simplejson
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
+  lxml
+  simplejson
 
 [testenv:pypy-nolxml-json]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
 
 [testenv:pypy-nolxml]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
 
 [testenv:pypy-nolxml-simplejson]
-commands = 
-	{envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
-	{envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
-deps = 
-	{[common]testtools}
-	{[common]basedeps}
-	suds-jurko
-	simplejson
+commands =
+  {envbindir}/coverage run {envbindir}/nosetests --nologcapture --with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
+  {envbindir}/coverage report --show-missing wsme/*.py wsme/rest/*.py wsmeext/*.py
+deps =
+  {[common]testtools}
+  {[common]basedeps}
+  suds-jurko
+  simplejson
 
diff --git a/toxgen.py b/toxgen.py
deleted file mode 100644
index 862c80f..0000000
--- a/toxgen.py
+++ /dev/null
@@ -1,144 +0,0 @@
-"""
-Produce a tox.ini file from a template config file.
-
-The template config file is a standard tox.ini file with additional sections.
-Theses sections will be combined to create new testenv: sections if they do
-not exists yet.
-
-See REAME.rst for more detail.
-"""
-
-import itertools
-import collections
-import optparse
-
-try:
-    from configparser import ConfigParser
-except:
-    from ConfigParser import ConfigParser  # noqa
-
-
-parser = optparse.OptionParser(epilog=__doc__)
-parser.add_option('-i', '--input', dest='input',
-                  default='tox-tmpl.ini', metavar='FILE')
-parser.add_option('-o', '--output', dest='output',
-                  default='tox.ini', metavar='FILE')
-
-
-class AxisItem(object):
-    def __init__(self, axis, name, config):
-        self.axis = axis
-        self.isdefault = name[-1] == '*'
-        self.name = name[:-1] if self.isdefault else name
-        self.load(config)
-
-    def load(self, config):
-        sectionname = 'axis:%s:%s' % (self.axis.name, self.name)
-        if config.has_section(sectionname):
-            self.options = collections.OrderedDict(config.items(sectionname))
-        else:
-            self.options = collections.OrderedDict()
-
-        for name, value in self.axis.defaults.items():
-            if name not in self.options:
-                self.options[name] = value
-
-
-class Axis(object):
-    def __init__(self, name, config):
-        self.name = name
-        self.load(config)
-
-    def load(self, config):
-        self.items = collections.OrderedDict()
-        values = config.get('axes', self.name).split(',')
-        if config.has_section('axis:%s' % self.name):
-            self.defaults = collections.OrderedDict(
-                config.items('axis:%s' % self.name)
-            )
-        else:
-            self.defaults = {}
-        for value in values:
-            self.items[value.strip('*')] = AxisItem(self, value, config)
-
-
-def render(incfg):
-    axes = collections.OrderedDict()
-
-    if incfg.has_section('axes'):
-        for axis in incfg.options('axes'):
-            axes[axis] = Axis(axis, incfg)
-
-    out = ConfigParser()
-    for section in incfg.sections():
-        if section == 'axes' or section.startswith('axis:'):
-            continue
-        out.add_section(section)
-        for name, value in incfg.items(section):
-            out.set(section, name, value)
-
-    for combination in itertools.product(
-            *[axis.items.keys() for axis in axes.values()]):
-        options = collections.OrderedDict()
-
-        section_name = (
-            'testenv:' + '-'.join([item for item in combination if item])
-        )
-        section_alt_name = (
-            'testenv:' + '-'.join([
-                itemname
-                for axis, itemname in zip(axes.values(), combination)
-                if itemname and not axis.items[itemname].isdefault
-            ])
-        )
-        if section_alt_name == section_name:
-            section_alt_name = None
-
-        axes_items = [
-            '%s:%s' % (axis, itemname)
-            for axis, itemname in zip(axes, combination)
-        ]
-
-        for axis, itemname in zip(axes.values(), combination):
-            axis_options = axis.items[itemname].options
-            if 'constraints' in axis_options:
-                constraints = axis_options['constraints'].split('\n')
-                for c in constraints:
-                    if c.startswith('!') and c[1:] in axes_items:
-                        continue
-            for name, value in axis_options.items():
-                if name in options:
-                    options[name] += value
-                else:
-                    options[name] = value
-
-        constraints = options.pop('constraints', '').split('\n')
-        neg_constraints = [c[1:] for c in constraints if c and c[0] == '!']
-        if not set(neg_constraints).isdisjoint(axes_items):
-            continue
-
-        if not out.has_section(section_name):
-            out.add_section(section_name)
-
-        if (section_alt_name and not out.has_section(section_alt_name)):
-            out.add_section(section_alt_name)
-
-        for name, value in reversed(options.items()):
-            if not out.has_option(section_name, name):
-                out.set(section_name, name, value)
-            if section_alt_name and not out.has_option(section_alt_name, name):
-                out.set(section_alt_name, name, value)
-
-    return out
-
-
-def main():
-    options, args = parser.parse_args()
-    tmpl = ConfigParser()
-    tmpl.read(options.input)
-    with open(options.output, 'wb') as outfile:
-        render(tmpl).write(outfile)
-
-
-if __name__ == '__main__':
-    main()