Also:
- rename `first_startup` to `py27-first_startup`
- rename other tox environments to use hyphens only to delimit factors
- use the more specific
```
setenv =
GALAXY_VIRTUAL_ENV={envdir}
```
instead of passing `--no-create-venv` to run unit tests inside the tox
virtualenv (xref. commit 744835bbfe).
Previously, `.venv` would be used if present.
- Add flake8-import-order to flake8 Pipfile and remove py27-lint-imports
and py27-lint-imports-include-list tox envs
- Fix most E201 and E202 errors reported by flake8-import-order v0.15,
but pin flake8-import-order to v0.14.3 until
https://github.com/PyCQA/flake8-import-order/issues/123
is fixed
This let us drop 2 jobs on Travis per each job.
Now simply running:
```
$ tox
```
is the equivalent of running all the Travis jobs that are not in the
`allow_failures` list.
Also:
- remove py33-lint env
- sort envs alphabetically
- Rework pattern for linting dependencies to work for dev-requirements.txt.
- Get rid of dev-requirements.txt and replace it with a symbolic link to the latest pinned versions of dependencies.
Rebased against dev to bring in @nsoranzo's bashism bashings in #4876 and fixed up to strip trailing whitespace from generated requirement files.
- Use completely pinned and hashed dependencies for more consistent, reproducible linting.
- Leverage the awesomeness of pipenv to automate updating these.
- These will always be locked now so builds don't break randomly on other people updating their software. When we finally have the bot up and running that forward merges fixes for Galaxy we can add another if statement that runs this check against dev once a day and opens a PR if needed.
This is pinned to 0.11 in release_16.10 and unpinned in dev, when merging forward keep these "forward" branches the same (i.e. do not revert to flake8-import-order 0.10).
- Apply one docstring lint to the global lint list (D302 - unicode docstrings should start with u""").
- Create an inclusion list with many more docstring checks (public modules need a docstring, white space and quoting issue, check imperative mood and capitializaton). Add a couple modules to this inclusion list.
- Add tox and Travis targets for this linting.
This gives a person who wants to work on improving Galaxy's in-code docstring documentation three ways to "raise the bar" for the project. One could:
- Add more modules to the inclusion list (.ci/flake8_docstrings_include_list.txt). Many more modules should contain docstrings - especially things in galaxy-lib and web controllers.
- Add more checks to the existing inclusion list checks - I'd say D101 and/or D103 first or any of the missing D2XX or D4XX options. D102 seems a bit too ambitious and I worry it'd be too much of a burden.
- Pick some DXXX check that is ignored globally and fix it for the whole project and then remove it from the exclude list in setup.cfg.
Adds two tasks:
- Add a task that just lints everything the way Galaxy's default linting is (py27-lint-imports) and don't enforce it passes on Travis.
- Add a task that just lints a subset we expect to past, hopefully we can grow this subset over time.
Once the inverse of the subset we are testing is just the blacklist, we can eliminate bothtasks and just wrap this into Galaxy's default linting.
These tasks require an older flake8 until https://github.com/PyCQA/flake8-import-order/issues/79#issuecomment-235052270 is part of a released version of flake8.