After building this locally I noticed all of the expected files were in
the wheel where as before this patch it was missing a lot of files.
This idea of using a src/ directory is mentioned in the official Python
documentation for packaging files at:
https://packaging.python.org/en/latest/tutorials/packaging-projects/
It's also used in Flask and other large Python projects.
Update to the newer PyPI / python packaging metadata file structure.
A lot of this was cribbed from how [`Flask`](https://github.com/pallets/flask) itself
exposes its metadata.
Jinja 3.0 throws a deprecation warning that this will be removed in 3.1
because it's built into Jinja now without needing an extension.
However since folks might want to use Jinja 2 for a while this supports
both versions by only using the extension with Jinja 2.
When I switched over to `flask run` entrypoint in b92391d177,
I forgot that the `if name==__main__` code no longer triggers.
So the SQLite in-memory database wasn't getting created for the example
app.
This moves the DB creation to a werkzeug/Flask hook that runs before the
first request to the app, so that the DB table is created when we query
it.
Also updated the test which worked fine previously, but this is more
idiomatic.
* Switch to python 3.8 in Travis. I tried to add 3.8 while keeping 3.7
and 3.6, but ran into issues with Travis config, so instead just bumped
straight to 3.8. Long term I'd like to explore moving to Azure
Pipelines, but don't have the time to figure that out just yet.
* `flake8` was renamed to `pycodestyle`
* `py.test` was deprecated in favor of `pytest`
Drop `flask_script` in favor of Flask's native CLI:
* https://flask.palletsprojects.com/en/master/cli/
This also requires changing the tests so that `pytest` mocks the env var
`FLASK_ENV` so that the test app starts in development mode. Unlike
normal test apps, we _do_ want development/debug mode, in addition to
testing mode.
This reverts commit 45b70c952f.
This commit broke the readthedocs build because RTD is building the docs
without running setup.py. So there is no package metadata.