| [tox] | 
 | minversion = 3.18.0 | 
 | envlist = pep8 | 
 | skipsdist = True | 
 | ignore_basepython_conflict = True | 
 |  | 
 | [testenv] | 
 | basepython = python3 | 
 | usedevelop = True | 
 | install_command = pip install {opts} {packages} | 
 | deps = | 
 |        -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} | 
 |        -r{toxinidir}/requirements.txt | 
 |        -r{toxinidir}/test-requirements.txt | 
 | setenv = | 
 |     VIRTUAL_ENV={envdir} | 
 |   PYTHONDONTWRITEBYTECODE=1 | 
 | allowlist_externals = sh | 
 |                       find | 
 |                       rm | 
 | commands = | 
 |   find . -type f -name "*.pyc" -delete | 
 |   stestr run {posargs} | 
 | passenv = http_proxy | 
 |           HTTP_PROXY | 
 |           https_proxy | 
 |           HTTPS_PROXY | 
 |           no_proxy | 
 |           NO_PROXY | 
 |           OS_DEBUG | 
 |           OS_LOG_CAPTURE | 
 |           OS_STDERR_CAPTURE | 
 |           OS_STDOUT_CAPTURE | 
 |  | 
 | [testenv:pep8] | 
 | commands = sh tools/pretty_flake8.sh | 
 |  | 
 | [testenv:docs] | 
 | deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} | 
 |        -r{toxinidir}/doc/requirements.txt | 
 | commands = rm -rf doc/build | 
 |            sphinx-build -E -W -b html doc/source doc/build/html | 
 |  | 
 | [testenv:releasenotes] | 
 | deps = {[testenv:docs]deps} | 
 | allowlist_externals = rm | 
 | commands = | 
 |   rm -rf releasenotes/build | 
 |   sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html | 
 |  | 
 | [testenv:bashate] | 
 | deps = bashate | 
 | allowlist_externals = bash | 
 | commands = bash -c "find {toxinidir}/devstack         \ | 
 |          -not \( -type d -name .?\* -prune \)         \ | 
 |          -not \( -type d -name doc -prune \)          \ | 
 |          -type f                                      \ | 
 |          -not -name \*~                               \ | 
 |          -not -name \*.md                             \ | 
 |          \(                                           \ | 
 |           -name \*.sh -or                             \ | 
 |           -name \*rc -or                              \ | 
 |           -name functions\* -or                       \ | 
 |           -wholename \*/lib/\*                        \ | 
 |          \)                                           \ | 
 |          -print0 | xargs -0 bashate -v" | 
 |  | 
 | [testenv:pip-check-reqs] | 
 | # do not install test-requirements as that will pollute the virtualenv for | 
 | # determining missing packages | 
 | # this also means that pip-missing-reqs must be installed separately, outside | 
 | # of the requirements.txt files | 
 | deps = pip-check-reqs | 
 |        -r{toxinidir}/requirements.txt | 
 | commands=pip-missing-reqs -d --ignore-file=designate/tests/* designate | 
 |  | 
 | [testenv:venv] | 
 | commands = {posargs} | 
 |  | 
 | [flake8] | 
 | # ignored flake8 codes: | 
 | # H302 import only modules | 
 | # H306 imports not in alphabetical order | 
 | # H402 one line docstring needs punctuation | 
 | # H404 multi line docstring should start with a summary | 
 | # H405 multi line docstring summary not separated with an empty line | 
 | # H904 Wrap long lines in parentheses instead of a backslash | 
 | # E126 continuation line over-indented for hanging indent | 
 | # E128 continuation line under-indented for visual indent | 
 | # W504 line break after binary operator | 
 | ignore = H302,H306,H402,H404,H405,H904,E126,E128,W504 | 
 | exclude = .venv,.git,.tox,dist,doc,*openstack/common*,*openstack/deprecated*,*lib/python*,*egg,build,tools,.ropeproject | 
 |  | 
 | [flake8:local-plugins] | 
 | extension = | 
 |   T102 = tempest.hacking.checks:import_no_clients_in_api_and_scenario_tests | 
 |   T104 = tempest.hacking.checks:scenario_tests_need_service_tags | 
 |   T105 = tempest.hacking.checks:no_setup_teardown_class_for_tests | 
 |   T107 = tempest.hacking.checks:service_tags_not_in_module_path | 
 |   T108 = tempest.hacking.checks:no_hyphen_at_end_of_rand_name | 
 |   N322 = tempest.hacking.checks:no_mutable_default_args | 
 |   T109 = tempest.hacking.checks:no_testtools_skip_decorator | 
 | # TODO(johnsom) Re-enable these once tempest updates hacking to > 3.1.0 | 
 | #  T110 = tempest.hacking.checks:get_resources_on_service_clients | 
 | #  T111 = tempest.hacking.checks:delete_resources_on_service_clients | 
 |   T112 = tempest.hacking.checks:dont_import_local_tempest_into_lib | 
 |   T113 = tempest.hacking.checks:dont_use_config_in_tempest_lib | 
 |   T114 = tempest.hacking.checks:use_rand_uuid_instead_of_uuid4 | 
 |   D701 = checks:mutable_default_arguments | 
 |   D703 = checks:check_explicit_underscore_import | 
 |   D704 = checks:no_import_graduated_oslo_libraries | 
 |   D705 = checks:use_timeutils_utcnow | 
 |   D706 = checks:no_translate_debug_logs | 
 |   D707 = checks:check_no_basestring | 
 |   D708 = checks:check_python3_xrange | 
 |   D709 = checks:check_no_log_audit | 
 |   D710 = checks:check_no_log_warn | 
 |   D711 = checks:check_line_continuation_no_backslash | 
 | paths = ./designate_tempest_plugin/hacking | 
 |  |