0e46d134c1
Pipenv is a tool that brings better package dependency management to python. It can automatically create and manage virtualenv as well as managing package dependencies using Pipfile and Pipfile.lock. Adding this dependency manager into Airship projects will decrease package version conflicts between projects and help increase security through hash validation of packages and vulnerability scans. Changes: - Imports requirements.txt type files into Pipfile - Pipenv dependency management in tox - Switches Safety package for "pipenv check", an implementation of Safety - Adds `-e` flag on VCS dependencies to resolve good versions on all packages - Unpins or loosens pins on "dev"-type packages Pipenv Docs: https://docs.pipenv.org/en/latest/ Helpful Pipenv Guide: https://realpython.com/pipenv-guide/ Change-Id: I47e7e7b440d76103b4984499e6ffce4482a59353
124 lines
2.9 KiB
INI
124 lines
2.9 KiB
INI
[tox]
|
|
envlist = py36,py37,pep8,docs,cover
|
|
minversion = 3.6
|
|
skipsdist = True
|
|
|
|
[testenv]
|
|
usedevelop = True
|
|
setenv =
|
|
VIRTUAL_ENV={envdir}
|
|
LANGUAGE=en_US
|
|
LC_ALL=en_US.utf-8
|
|
PIPENV_VERBOSITY=-1
|
|
PIPENV_IGNORE_PIPFILE=1
|
|
deps =
|
|
pipenv
|
|
passenv = http_proxy https_proxy HTTP_PROXY HTTPS_PROXY no_proxy NO_PROXY PBR_VERSION
|
|
whitelist_externals =
|
|
bash
|
|
find
|
|
commands =
|
|
pipenv install --dev
|
|
find . -type f -name "*.pyc" -delete
|
|
bash -c "{toxinidir}/tools/install-cfssl.sh"
|
|
{toxinidir}/tools/gate/run-unit-tests.sh '{posargs}'
|
|
|
|
[testenv:fmt]
|
|
basepython = python3
|
|
deps =
|
|
pipenv
|
|
commands =
|
|
pipenv install --dev
|
|
yapf -ir {toxinidir}/pegleg {toxinidir}/tests
|
|
|
|
[testenv:pep8]
|
|
basepython = python3
|
|
deps =
|
|
pipenv
|
|
safety
|
|
commands =
|
|
pipenv install --dev
|
|
bash -c "{toxinidir}/tools/gate/whitespace-linter.sh"
|
|
bandit -r pegleg -n 5
|
|
flake8 {toxinidir}/pegleg
|
|
yapf -dr {toxinidir}/pegleg {toxinidir}/tests
|
|
whitelist_externals =
|
|
bash
|
|
|
|
[testenv:docs]
|
|
basepython = python3
|
|
deps =
|
|
pipenv
|
|
-r{toxinidir}/doc/requirements.txt
|
|
commands =
|
|
pipenv install --dev
|
|
bash -c "{toxinidir}/tools/gate/build-docs.sh"
|
|
whitelist_externals =
|
|
bash
|
|
|
|
[testenv:bandit]
|
|
basepython = python3
|
|
commands = bandit -r pegleg -n 5
|
|
|
|
[testenv:safety]
|
|
basepython = python3
|
|
deps =
|
|
pipenv
|
|
safety
|
|
commands =
|
|
pipenv check
|
|
safety check -r {toxinidir}/doc/requirements.txt --full-report
|
|
|
|
[testenv:cover]
|
|
basepython = python3
|
|
deps =
|
|
pipenv
|
|
commands =
|
|
pipenv install --dev
|
|
{toxinidir}/tools/install-cfssl.sh
|
|
bash -c 'PATH=$PATH:~/.local/bin; pytest --cov=pegleg --cov-report \
|
|
html:cover --cov-report xml:cover/coverage.xml --cov-report term \
|
|
--cov-fail-under 87 tests/'
|
|
whitelist_externals =
|
|
bash
|
|
|
|
[testenv:update-requirements]
|
|
deps =
|
|
pipenv
|
|
commands =
|
|
pipenv lock --clear
|
|
bash -c "pipenv lock -r > {toxinidir}/requirements.txt"
|
|
whitelist_externals =
|
|
bash
|
|
|
|
[testenv:releasenotes]
|
|
basepython = python3
|
|
deps = -r{toxinidir}/doc/requirements.txt
|
|
commands =
|
|
rm -rf releasenotes/build
|
|
sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
|
|
whitelist_externals =
|
|
rm
|
|
|
|
[testenv:venv]
|
|
commands = {posargs}
|
|
|
|
[flake8]
|
|
filename = *.py
|
|
show-source = true
|
|
# [H106] Don't put vim configuration in source files.
|
|
# [H201] No 'except:' at least use 'except Exception:'
|
|
# [H904] Delay string interpolations at logging calls.
|
|
enable-extensions = H106,H201,H904
|
|
# TODO(lamt) Clean up these docstring violations if possible
|
|
# [H403] multi line docstrings should end on a new line
|
|
# [H404] multi line docstring should start without a leading new line
|
|
# [H405] multi line docstring summary not separated with an empty line
|
|
# [W503] line break before binary operator
|
|
ignore = H403,H404,H405,W503
|
|
exclude=.venv,.git,.tox,build,dist,*lib/python*,*egg,tools,*.ini,*.po,*.pot
|
|
max-complexity = 24
|
|
application-import-names = pegleg
|
|
application-package-names = deckhand,promenade,shipyard
|
|
import-order-style = pep8
|