From bcf6cffdb80c36330e61b25e6d1aa21581f2386c Mon Sep 17 00:00:00 2001
From: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
Date: Fri, 4 Dec 2020 18:42:56 -0500
Subject: [PATCH] Updated seed project for python 3.9 and docker.

---
 .bumpversion.cfg                           |   3 +-
 .cookiecutterrc                            |  16 ++--
 .python-version                            |   1 +
 .travis.yml                                |   2 +-
 CONTRIBUTING.rst                           |  16 ++--
 Dockerfile                                 |  48 ++++++++++
 MANIFEST.in                                |   4 +
 README.rst                                 |  60 ++++++------
 docker-compose.yml                         |   5 +
 docs/conf.py                               |   8 +-
 docs/installation.rst                      |   2 +-
 docs/reference/apex.rst                    |   9 --
 docs/reference/index.rst                   |   2 +-
 docs/reference/stockstack.rst              |   9 ++
 docs/usage.rst                             |   4 +-
 setup.cfg                                  |  13 +--
 setup.py                                   |  21 ++--
 src/{apex => stockstack}/__init__.py       |   0
 src/{apex => stockstack}/__main__.py       |   4 +-
 src/{apex => stockstack}/cli.py            |   6 +-
 tests/{test_apex.py => test_stockstack.py} |   2 +-
 tox.ini                                    | 106 ++++-----------------
 22 files changed, 162 insertions(+), 179 deletions(-)
 create mode 100644 .python-version
 create mode 100644 Dockerfile
 create mode 100644 docker-compose.yml
 delete mode 100644 docs/reference/apex.rst
 create mode 100644 docs/reference/stockstack.rst
 rename src/{apex => stockstack}/__init__.py (100%)
 rename src/{apex => stockstack}/__main__.py (75%)
 rename src/{apex => stockstack}/cli.py (77%)
 rename tests/{test_apex.py => test_stockstack.py} (85%)

diff --git a/.bumpversion.cfg b/.bumpversion.cfg
index 1e1ab4e..7a48aa4 100644
--- a/.bumpversion.cfg
+++ b/.bumpversion.cfg
@@ -7,5 +7,4 @@ tag = True
 
 [bumpversion:file:docs/conf.py]
 
-[bumpversion:file:src/apex/__init__.py]
-
+[bumpversion:file:src/stockstack/__init__.py]
diff --git a/.cookiecutterrc b/.cookiecutterrc
index 3c6735e..73b4f70 100644
--- a/.cookiecutterrc
+++ b/.cookiecutterrc
@@ -1,7 +1,7 @@
 # This file exists so you can easily regenerate your project.
 #
 # `cookiepatcher` is a convenient shim around `cookiecutter`
-# for regenerating projects (it will generate a .cookiecutterrc 
+# for regenerating projects (it will generate a .cookiecutterrc
 # automatically for any template). To use it:
 #
 #    pip install cookiepatcher
@@ -24,18 +24,18 @@ default_context:
     codeclimate:               'yes'
     codecov:                   'yes'
     command_line_interface:    'click'
-    command_line_interface_bin_name: 'apex'
+    command_line_interface_bin_name: 'stockstack'
     coveralls:                 'yes'
-    distribution_name:         'apex'
+    distribution_name:         'stockstack'
     email:                     'freemo@gmail.com'
     full_name:                 'Jeffrey Phillips Freeman'
-    github_username:           'syncleus'
+    github_username:           'stockstack'
     landscape:                 'yes'
-    package_name:              'apex'
-    project_name:              'APEX'
-    project_short_description: 'APEX reference implementation'
+    package_name:              'stockstack'
+    project_name:              'StockStack'
+    project_short_description: 'StockStack reference implementation'
     release_date:              '2016-3-19'
-    repo_name:                 'apex'
+    repo_name:                 'stockstack'
     requiresio:                'yes'
     scrutinizer:               'yes'
     sphinx_doctest:            'yes'
diff --git a/.python-version b/.python-version
new file mode 100644
index 0000000..a5c4c76
--- /dev/null
+++ b/.python-version
@@ -0,0 +1 @@
+3.9.0
diff --git a/.travis.yml b/.travis.yml
index 43fada4..e921384 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,5 +1,5 @@
 language: python
-python: '3.5'
+python: '3.9'
 sudo: false
 env:
   global:
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 64c072d..56617d9 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -8,7 +8,7 @@ little bit helps, and credit will always be given.
 Bug reports
 ===========
 
-When `reporting a bug <https://github.com/syncleus/apex/issues>`_ please include:
+When `reporting a bug <https://git.qoto.org/stockstack/stockstack/issues>`_ please include:
 
     * Your operating system name and version.
     * Any details about your local setup that might be helpful in troubleshooting.
@@ -17,14 +17,14 @@ When `reporting a bug <https://github.com/syncleus/apex/issues>`_ please include
 Documentation improvements
 ==========================
 
-APEX could always use more documentation, whether as part of the
-official APEX docs, in docstrings, or even on the web in blog posts,
+StockStack could always use more documentation, whether as part of the
+official StockStack docs, in docstrings, or even on the web in blog posts,
 articles, and such.
 
 Feature requests and feedback
 =============================
 
-The best way to send feedback is to file an issue at https://github.com/syncleus/apex/issues.
+The best way to send feedback is to file an issue at https://git.qoto.org/stockstack/stockstack/issues.
 
 If you are proposing a feature:
 
@@ -35,13 +35,13 @@ If you are proposing a feature:
 Development
 ===========
 
-To set up `apex` for local development:
+To set up `stockstack` for local development:
 
-1. Fork `apex <https://github.com/syncleus/apex>`_
+1. Fork `stockstack <https://git.qoto.org/stockstack/stockstack>`_
    (look for the "Fork" button).
 2. Clone your fork locally::
 
-    git clone git@github.com:your_name_here/apex.git
+    git clone git@git.qoto.org:your_name_here/stockstack.git
 
 3. Create a branch for local development::
 
@@ -74,7 +74,7 @@ For merging, you should:
 4. Add yourself to ``AUTHORS.rst``.
 
 .. [1] If you don't have all the necessary python versions available locally you can rely on Travis - it will
-       `run the tests <https://travis-ci.org/syncleus/apex/pull_requests>`_ for each change you add in the pull request.
+       `run the tests <https://travis-ci.org/stockstack/stockstack/pull_requests>`_ for each change you add in the pull request.
 
        It will be slower though ...
 
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..cdf8738
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,48 @@
+FROM python:3
+
+LABEL maintainer="Jeffrey Phillips Freeman the@jeffreyfreeman.me"
+
+ENV PYENV_ROOT="/.pyenv" \
+    PATH="/.pyenv/bin:/.pyenv/shims:$PATH"
+
+RUN curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
+
+RUN apt update -y && \
+    apt-get upgrade -y && \
+    apt-get dist-upgrade -y && \
+    apt-get install -y --no-install-recommends \
+      libssl-dev \
+      libreadline-gplv2-dev \
+      libncursesw5-dev \
+      libssl-dev \
+      libsqlite3-dev \
+      tk-dev \
+      libgdbm-dev \
+      libc6-dev \
+      libbz2-dev \
+      nano && \
+    apt-get clean && \
+    rm -r /var/lib/apt/lists/*
+
+#RUN pyenv install 2.7.18 && \
+#    pyenv install 3.3.7 && \
+#    pyenv install 3.4.10 && \
+#    pyenv install 3.5.10 && \
+#    pyenv install 3.9.0 && \
+#    pyenv install pypy-5.7.1
+
+RUN pyenv install 3.9.0 && \
+    pyenv install 2.7.18 && \
+    pyenv global 2.7.18 && \
+    pyenv global 3.9.0
+RUN /.pyenv/versions/3.9.0/bin/python3.9 -m pip install --upgrade pip
+RUN pip install tox
+
+RUN mkdir -p /usr/src/stockstack && \
+    chmod a+rwx -R /usr/src/stockstack && \
+    mkdir /.cache && \
+    chmod a+rwx /.cache && \
+    mkdir /.tox && \
+    chmod a+rwx /.tox
+
+VOLUME /usr/src/stockstack
diff --git a/MANIFEST.in b/MANIFEST.in
index 92351c4..3290df2 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -18,4 +18,8 @@ include README.rst
 
 include tox.ini .travis.yml appveyor.yml
 
+include docker-compose.yml
+include Dockerfile
+include .python-version
+
 global-exclude *.py[cod] __pycache__ *.so *.dylib
diff --git a/README.rst b/README.rst
index 010d622..532d33a 100644
--- a/README.rst
+++ b/README.rst
@@ -16,66 +16,66 @@ Overview
     * - package
       - |version| |downloads| |wheel| |supported-versions| |supported-implementations|
 
-.. |docs| image:: https://readthedocs.org/projects/apex/badge/?style=flat
-    :target: https://readthedocs.org/projects/apex
+.. |docs| image:: https://readthedocs.org/projects/stockstack/badge/?style=flat
+    :target: https://readthedocs.org/projects/stockstack
     :alt: Documentation Status
 
-.. |travis| image:: https://travis-ci.org/syncleus/apex.svg?branch=master
+.. |travis| image:: https://travis-ci.org/stockstack/stockstack.svg?branch=master
     :alt: Travis-CI Build Status
-    :target: https://travis-ci.org/syncleus/apex
+    :target: https://travis-ci.org/stockstack/stockstack
 
-.. |requires| image:: https://requires.io/github/Syncleus/apex/requirements.svg?branch=master
+.. |requires| image:: https://requires.io/github/Syncleus/stockstack/requirements.svg?branch=master
      :alt: Requirements Status
-     :target: https://requires.io/github/Syncleus/apex/requirements/?branch=master
+     :target: https://requires.io/github/Syncleus/stockstack/requirements/?branch=master
 
-.. |coveralls| image:: https://coveralls.io/repos/syncleus/apex/badge.svg?branch=master&service=github
+.. |coveralls| image:: https://coveralls.io/repos/stockstack/stockstack/badge.svg?branch=master&service=github
     :alt: Coverage Status
-    :target: https://coveralls.io/r/syncleus/apex
+    :target: https://coveralls.io/r/stockstack/stockstack
 
-.. |codecov| image:: https://codecov.io/github/syncleus/apex/coverage.svg?branch=master
+.. |codecov| image:: https://codecov.io/github/stockstack/stockstack/coverage.svg?branch=master
     :alt: Coverage Status
-    :target: https://codecov.io/github/syncleus/apex
+    :target: https://codecov.io/github/stockstack/stockstack
 
-.. |landscape| image:: https://landscape.io/github/syncleus/apex/master/landscape.svg?style=flat
-    :target: https://landscape.io/github/syncleus/apex/master
+.. |landscape| image:: https://landscape.io/github/stockstack/stockstack/master/landscape.svg?style=flat
+    :target: https://landscape.io/github/stockstack/stockstack/master
     :alt: Code Quality Status
 
 .. |codacy| image:: https://img.shields.io/codacy/REPLACE_WITH_PROJECT_ID.svg?style=flat
-    :target: https://www.codacy.com/app/syncleus/apex
+    :target: https://www.codacy.com/app/stockstack/stockstack
     :alt: Codacy Code Quality Status
 
-.. |codeclimate| image:: https://codeclimate.com/github/syncleus/apex/badges/gpa.svg
-   :target: https://codeclimate.com/github/syncleus/apex
+.. |codeclimate| image:: https://codeclimate.com/github/stockstack/stockstack/badges/gpa.svg
+   :target: https://codeclimate.com/github/stockstack/stockstack
    :alt: CodeClimate Quality Status
 
-.. |version| image:: https://img.shields.io/pypi/v/apex.svg?style=flat
+.. |version| image:: https://img.shields.io/pypi/v/stockstack.svg?style=flat
     :alt: PyPI Package latest release
-    :target: https://pypi.python.org/pypi/apex
+    :target: https://pypi.python.org/pypi/stockstack
 
-.. |downloads| image:: https://img.shields.io/pypi/dm/apex.svg?style=flat
+.. |downloads| image:: https://img.shields.io/pypi/dm/stockstack.svg?style=flat
     :alt: PyPI Package monthly downloads
-    :target: https://pypi.python.org/pypi/apex
+    :target: https://pypi.python.org/pypi/stockstack
 
-.. |wheel| image:: https://img.shields.io/pypi/wheel/apex.svg?style=flat
+.. |wheel| image:: https://img.shields.io/pypi/wheel/stockstack.svg?style=flat
     :alt: PyPI Wheel
-    :target: https://pypi.python.org/pypi/apex
+    :target: https://pypi.python.org/pypi/stockstack
 
-.. |supported-versions| image:: https://img.shields.io/pypi/pyversions/apex.svg?style=flat
+.. |supported-versions| image:: https://img.shields.io/pypi/pyversions/stockstack.svg?style=flat
     :alt: Supported versions
-    :target: https://pypi.python.org/pypi/apex
+    :target: https://pypi.python.org/pypi/stockstack
 
-.. |supported-implementations| image:: https://img.shields.io/pypi/implementation/apex.svg?style=flat
+.. |supported-implementations| image:: https://img.shields.io/pypi/implementation/stockstack.svg?style=flat
     :alt: Supported implementations
-    :target: https://pypi.python.org/pypi/apex
+    :target: https://pypi.python.org/pypi/stockstack
 
-.. |scrutinizer| image:: https://img.shields.io/scrutinizer/g/syncleus/apex/master.svg?style=flat
+.. |scrutinizer| image:: https://img.shields.io/scrutinizer/g/stockstack/stockstack/master.svg?style=flat
     :alt: Scrutinizer Status
-    :target: https://scrutinizer-ci.com/g/syncleus/apex/
+    :target: https://scrutinizer-ci.com/g/stockstack/stockstack/
 
 
 .. end-badges
 
-APEX reference implementation
+StockStack reference implementation
 
 * Free software: BSD license
 
@@ -84,12 +84,12 @@ Installation
 
 ::
 
-    pip install apex
+    pip install stockstack
 
 Documentation
 =============
 
-https://apex.readthedocs.io/
+https://stockstack.readthedocs.io/
 
 Development
 ===========
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..2835fe5
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,5 @@
+version: '2'
+services:
+  stockstack:
+    image: stockstack/stockstack:latest
+    build: .
diff --git a/docs/conf.py b/docs/conf.py
index 2943183..fd9f4e7 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -22,7 +22,7 @@ if os.getenv('SPELLCHECK'):
 
 source_suffix = '.rst'
 master_doc = 'index'
-project = u'APEX'
+project = u'StockStack'
 year = '2016'
 author = u'Jeffrey Phillips Freeman'
 copyright = '{0}, {1}'.format(year, author)
@@ -31,14 +31,14 @@ version = release = u'0.1.0'
 pygments_style = 'trac'
 templates_path = ['.']
 extlinks = {
-    'issue': ('https://github.com/syncleus/apex/issues/%s', '#'),
-    'pr': ('https://github.com/syncleus/apex/pull/%s', 'PR #'),
+    'issue': ('https://git.qoto.org/stockstack/stockstack/issues/%s', '#'),
+    'pr': ('https://git.qoto.org/stockstack/stockstack/merge_requests/%s', 'PR #'),
 }
 import sphinx_py3doc_enhanced_theme
 html_theme = "sphinx_py3doc_enhanced_theme"
 html_theme_path = [sphinx_py3doc_enhanced_theme.get_html_theme_path()]
 html_theme_options = {
-    'githuburl': 'https://github.com/syncleus/apex/'
+    'githuburl': 'https://git.qoto.org/stockstack/stockstack/'
 }
 
 html_use_smartypants = True
diff --git a/docs/installation.rst b/docs/installation.rst
index 4679608..a03ea7b 100644
--- a/docs/installation.rst
+++ b/docs/installation.rst
@@ -4,4 +4,4 @@ Installation
 
 At the command line::
 
-    pip install apex
+    pip install stockstack
diff --git a/docs/reference/apex.rst b/docs/reference/apex.rst
deleted file mode 100644
index fc3ed8f..0000000
--- a/docs/reference/apex.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-apex
-====
-
-.. testsetup::
-
-    from apex import *
-
-.. automodule:: apex
-    :members:
diff --git a/docs/reference/index.rst b/docs/reference/index.rst
index 5910edc..e59e51b 100644
--- a/docs/reference/index.rst
+++ b/docs/reference/index.rst
@@ -4,4 +4,4 @@ Reference
 .. toctree::
     :glob:
 
-    apex*
+    stockstack*
diff --git a/docs/reference/stockstack.rst b/docs/reference/stockstack.rst
new file mode 100644
index 0000000..7edf198
--- /dev/null
+++ b/docs/reference/stockstack.rst
@@ -0,0 +1,9 @@
+stockstack
+==========
+
+.. testsetup::
+
+    from stockstack import *
+
+.. automodule:: stockstack
+    :members:
diff --git a/docs/usage.rst b/docs/usage.rst
index 76c8182..319330c 100644
--- a/docs/usage.rst
+++ b/docs/usage.rst
@@ -2,6 +2,6 @@
 Usage
 =====
 
-To use APEX in a project::
+To use StockStack in a project::
 
-	import apex
+	import stockstack
diff --git a/setup.cfg b/setup.cfg
index bb5d771..85ee360 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -5,7 +5,7 @@ universal = 1
 max-line-length = 140
 exclude = tests/*,*/migrations/*,*/south_migrations/*
 
-[pytest]
+[tool:pytest]
 norecursedirs =
     .git
     .tox
@@ -32,9 +32,9 @@ addopts =
 [isort]
 force_single_line=True
 line_length=120
-known_first_party=apex
+known_first_party=stockstack
 default_section=THIRDPARTY
-forced_separate=test_apex
+forced_separate=test_stockstack
 not_skip = __init__.py
 skip = migrations, south_migrations
 
@@ -60,11 +60,7 @@ skip = migrations, south_migrations
 #  - can use as many you want
 
 python_versions =
-    2.7
-    3.3
-    3.4
-    3.5
-    pypy
+    3.9
 
 dependencies =
 #    1.4: Django==1.4.16 !python_versions[3.*]
@@ -79,4 +75,3 @@ coverage_flags =
 
 environment_variables =
     -
-
diff --git a/setup.py b/setup.py
index 270bb8a..dcea031 100644
--- a/setup.py
+++ b/setup.py
@@ -23,17 +23,17 @@ def read(*names, **kwargs):
 
 
 setup(
-    name='apex',
+    name='stockstack',
     version='0.1.0',
-    license='BSD',
-    description='APEX reference implementation',
+    license='Apache',
+    description='StockStack Algorithmic Trading Platform',
     long_description='%s\n%s' % (
         re.compile('^.. start-badges.*^.. end-badges', re.M | re.S).sub('', read('README.rst')),
         re.sub(':[a-z]+:`~?(.*?)`', r'``\1``', read('CHANGELOG.rst'))
     ),
     author='Jeffrey Phillips Freeman',
-    author_email='freemo@gmail.com',
-    url='https://github.com/syncleus/apex',
+    author_email='the@jeffreyfreeman.me',
+    url='https://git.qoto.org/stockstack/stockstack',
     packages=find_packages('src'),
     package_dir={'': 'src'},
     py_modules=[splitext(basename(path))[0] for path in glob('src/*.py')],
@@ -43,18 +43,13 @@ setup(
         # complete classifier list: http://pypi.python.org/pypi?%3Aaction=list_classifiers
         'Development Status :: 5 - Production/Stable',
         'Intended Audience :: Developers',
-        'License :: OSI Approved :: BSD License',
+        'License :: OSI Approved :: Apache License',
         'Operating System :: Unix',
         'Operating System :: POSIX',
         'Operating System :: Microsoft :: Windows',
         'Programming Language :: Python',
-        'Programming Language :: Python :: 2.7',
-        'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3.3',
-        'Programming Language :: Python :: 3.4',
-        'Programming Language :: Python :: 3.5',
+        'Programming Language :: Python :: 3.9',
         'Programming Language :: Python :: Implementation :: CPython',
-        'Programming Language :: Python :: Implementation :: PyPy',
         # uncomment if you test on these interpreters:
         # 'Programming Language :: Python :: Implementation :: IronPython',
         # 'Programming Language :: Python :: Implementation :: Jython',
@@ -74,7 +69,7 @@ setup(
     },
     entry_points={
         'console_scripts': [
-            'apex = apex.cli:main',
+            'stockstack = stockstack.cli:main',
         ]
     },
 )
diff --git a/src/apex/__init__.py b/src/stockstack/__init__.py
similarity index 100%
rename from src/apex/__init__.py
rename to src/stockstack/__init__.py
diff --git a/src/apex/__main__.py b/src/stockstack/__main__.py
similarity index 75%
rename from src/apex/__main__.py
rename to src/stockstack/__main__.py
index 2396ef2..4f136b0 100644
--- a/src/apex/__main__.py
+++ b/src/stockstack/__main__.py
@@ -1,5 +1,5 @@
 """
-Entrypoint module, in case you use `python -mapex`.
+Entrypoint module, in case you use `python -mstockstack`.
 
 
 Why does this file exist, and why __main__? For more info, read:
@@ -8,7 +8,7 @@ Why does this file exist, and why __main__? For more info, read:
 - https://docs.python.org/2/using/cmdline.html#cmdoption-m
 - https://docs.python.org/3/using/cmdline.html#cmdoption-m
 """
-from apex.cli import main
+from stockstack.cli import main
 
 if __name__ == "__main__":
     main()
diff --git a/src/apex/cli.py b/src/stockstack/cli.py
similarity index 77%
rename from src/apex/cli.py
rename to src/stockstack/cli.py
index b794116..c75b014 100644
--- a/src/apex/cli.py
+++ b/src/stockstack/cli.py
@@ -6,11 +6,11 @@ Why does this file exist, and why not put this in __main__?
   You might be tempted to import things from __main__ later, but that will cause
   problems: the code will get executed twice:
 
-  - When you run `python -mapex` python will execute
+  - When you run `python -mstockstack` python will execute
     ``__main__.py`` as a script. That means there won't be any
-    ``apex.__main__`` in ``sys.modules``.
+    ``stockstack.__main__`` in ``sys.modules``.
   - When you import __main__ it will get executed again (as a module) because
-    there's no ``apex.__main__`` in ``sys.modules``.
+    there's no ``stockstack.__main__`` in ``sys.modules``.
 
   Also see (1) from http://click.pocoo.org/5/setuptools/#setuptools-integration
 """
diff --git a/tests/test_apex.py b/tests/test_stockstack.py
similarity index 85%
rename from tests/test_apex.py
rename to tests/test_stockstack.py
index 6db136c..5f86208 100644
--- a/tests/test_apex.py
+++ b/tests/test_stockstack.py
@@ -1,7 +1,7 @@
 
 from click.testing import CliRunner
 
-from apex.cli import main
+from stockstack.cli import main
 
 
 def test_main():
diff --git a/tox.ini b/tox.ini
index e389a2b..5fb5b6b 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,24 +1,16 @@
 [tox]
 envlist =
     clean,
+    build,
     check,
-    2.7-cover,
-    2.7-nocov,
-    3.3-cover,
-    3.3-nocov,
-    3.4-cover,
-    3.4-nocov,
-    3.5-cover,
-    3.5-nocov,
-    pypy-cover,
-    pypy-nocov,
+    3.9-cover,
+    3.9-nocov,
     report,
     docs
 
 [testenv]
 basepython =
-    {docs,spell}: python2.7
-    {clean,check,report,extension-coveralls,coveralls,codecov}: python3.5
+    {clean,check,report,extension-coveralls,coveralls,codecov,docs,spell,build}: python3.9
 setenv =
     PYTHONPATH={toxinidir}/tests
     PYTHONUNBUFFERED=yes
@@ -34,7 +26,7 @@ commands =
 setenv =
     SPELLCHECK=1
 commands =
-    sphinx-build -b spelling docs dist/docs
+    sphinx-build -b spelling docs build/docs
 skip_install = true
 usedevelop = false
 deps =
@@ -46,8 +38,9 @@ deps =
 deps =
     -r{toxinidir}/docs/requirements.txt
 commands =
-    sphinx-build {posargs:-E} -b html docs dist/docs
-    sphinx-build -b linkcheck docs dist/docs
+    sphinx-build {posargs:-E} -b html docs build/docs
+    #sphinx-build -b linkcheck docs build/docs
+    sphinx-build docs build/docs
 
 [testenv:bootstrap]
 deps =
@@ -60,6 +53,10 @@ commands =
 passenv =
     *
 
+[testenv:build]
+commands =
+    python setup.py sdist bdist_wheel --universal
+
 [testenv:check]
 deps =
     docutils
@@ -68,10 +65,11 @@ deps =
     readme-renderer
     pygments
     isort
+    twine
 skip_install = true
 usedevelop = false
 commands =
-    python setup.py check --strict --metadata --restructuredtext
+    twine check dist/*
     check-manifest {toxinidir}
     flake8 src tests setup.py
     isort --verbose --check-only --diff --recursive src tests setup.py
@@ -82,7 +80,7 @@ deps =
 skip_install = true
 usedevelop = false
 commands =
-    coverage combine --append
+    - coverage combine --append
     coverage report
     coveralls []
 
@@ -92,7 +90,7 @@ deps =
 skip_install = true
 usedevelop = false
 commands =
-    coverage combine --append
+    - coverage combine --append
     coverage report
     coverage xml --ignore-errors
     codecov []
@@ -103,7 +101,7 @@ deps = coverage
 skip_install = true
 usedevelop = false
 commands =
-    coverage combine --append
+    - coverage combine --append
     coverage report
     coverage html
 
@@ -113,68 +111,12 @@ skip_install = true
 usedevelop = false
 deps = coverage
 
-[testenv:2.7-cover]
-basepython = {env:TOXPYTHON:python2.7}
-setenv =
-    {[testenv]setenv}
-    WITH_COVERAGE=yes
-usedevelop = true
-commands =
-    {posargs:py.test --cov --cov-report=term-missing -vv}
-deps =
-    {[testenv]deps}
-    pytest-cov
-
-[testenv:2.7-nocov]
-basepython = {env:TOXPYTHON:python2.7}
-
-[testenv:3.3-cover]
-basepython = {env:TOXPYTHON:python3.3}
-setenv =
-    {[testenv]setenv}
-    WITH_COVERAGE=yes
-usedevelop = true
-commands =
-    {posargs:py.test --cov --cov-report=term-missing -vv}
-deps =
-    {[testenv]deps}
-    pytest-cov
-
-[testenv:3.3-nocov]
-basepython = {env:TOXPYTHON:python3.3}
-
-[testenv:3.4-cover]
-basepython = {env:TOXPYTHON:python3.4}
-setenv =
-    {[testenv]setenv}
-    WITH_COVERAGE=yes
-usedevelop = true
-commands =
-    {posargs:py.test --cov --cov-report=term-missing -vv}
-deps =
-    {[testenv]deps}
-    pytest-cov
-
-[testenv:3.4-nocov]
-basepython = {env:TOXPYTHON:python3.4}
-
-[testenv:3.5-cover]
-basepython = {env:TOXPYTHON:python3.5}
-setenv =
-    {[testenv]setenv}
-    WITH_COVERAGE=yes
-usedevelop = true
-commands =
-    {posargs:py.test --cov --cov-report=term-missing -vv}
-deps =
-    {[testenv]deps}
-    pytest-cov
 
-[testenv:3.5-nocov]
-basepython = {env:TOXPYTHON:python3.5}
+[testenv:3.9-nocov]
+basepython = {env:TOXPYTHON:python3.9}
 
-[testenv:pypy-cover]
-basepython = {env:TOXPYTHON:pypy}
+[testenv:3.9-cover]
+basepython = {env:TOXPYTHON:python3.9}
 setenv =
     {[testenv]setenv}
     WITH_COVERAGE=yes
@@ -184,9 +126,3 @@ commands =
 deps =
     {[testenv]deps}
     pytest-cov
-
-[testenv:pypy-nocov]
-basepython = {env:TOXPYTHON:pypy}
-
-
-
-- 
GitLab