[isort]
profile = black
skip =
    ./build,
    .nox,
    .tox,
    .scratch,
    _vendor,
    data
known_third_party =
    pip._vendor

[flake8]
max-line-length = 88
exclude =
    ./build,
    .nox,
    .tox,
    .scratch,
    _vendor,
    data
enable-extensions = G
extend-ignore =
    G200, G202,
    # black adds spaces around ':'
    E203,
per-file-ignores =
    # G: The plugin logging-format treats every .log and .error as logging.
    noxfile.py: G
    # B011: Do not call assert False since python -O removes these calls
    tests/*: B011
    # TODO: Remove IOError from except (OSError, IOError) blocks in
    # these files when Python 2 is removed.
    # In Python 3, IOError have been merged into OSError
    # https://github.com/PyCQA/flake8-bugbear/issues/110
    src/pip/_internal/utils/filesystem.py: B014
    src/pip/_internal/network/cache.py: B014
    src/pip/_internal/utils/misc.py: B014

[mypy]
follow_imports = silent
ignore_missing_imports = True
disallow_untyped_defs = True
disallow_any_generics = True

[mypy-pip/_vendor/*]
follow_imports = skip
ignore_errors = True

[tool:pytest]
addopts = --ignore src/pip/_vendor --ignore tests/tests_cache -r aR
markers =
    network: tests that need network
    incompatible_with_test_venv
    incompatible_with_venv
    no_auto_tempdir_manager
    unit: unit tests
    integration: integration tests
    bzr: VCS: Bazaar
    svn: VCS: Subversion
    mercurial: VCS: Mercurial
    git: VCS: git
    yaml: yaml based tests
    search: tests for 'pip search'

[coverage:run]
branch = True
# Do not gather coverage for vendored libraries.
omit = */_vendor/*
# Centralized absolute file prefix for coverage files.
data_file = ${COVERAGE_OUTPUT_DIR}/.coverage
# By default, each covered process will try to truncate and then write to
# `data_file`, but with `parallel`, they will write to separate files suffixed
# with hostname, pid, and a timestamp.
parallel = True
# If not set, then at the termination of each worker (when using pytest-xdist),
# the following is traced: "Coverage.py warning: Module pip was previously
# imported, but not measured (module-not-measured)"
disable_warnings = module-not-measured

[coverage:paths]
# We intentionally use "source0" here because pytest-cov unconditionally sets
# "source" after loading the config.
source0 =
    # The primary source code path which other paths will be combined into.
    src/pip/
    # Unit test source directory e.g.
    # `.tox/coverage-py3/lib/pythonX.Y/site-packages/pip/...`
    */site-packages/pip/
    # Functional test virtual environment directories, which look like
    # `tmpdir/pip0/pip/src/pip/...`
    */pip/src/pip/

[coverage:report]
exclude_lines =
    # We must re-state the default because the `exclude_lines` option overrides
    # it.
    pragma: no cover
    # This excludes typing-specific code, which will be validated by mypy anyway.
    if MYPY_CHECK_RUNNING
    # Can be set to exclude e.g. `if PY2:` on Python 3
    ${PIP_CI_COVERAGE_EXCLUDES}

[bdist_wheel]
universal = 1

[metadata]
license_file = LICENSE.txt
