#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#
[versioneer]
VCS = git
style = pep440
versionfile_source = src/buildstream/_version.py
versionfile_build = buildstream/_version.py
tag_prefix =
tag_regex = *.*.*
parentdir_prefix = BuildStream-

[tool:pytest]
addopts = --verbose --basetemp ./tmp --durations=20 --timeout=1800
norecursedirs = src tests/integration/project tests/plugins/loading tests/plugins/sample-plugins integration-cache tmp __pycache__ .eggs
python_files = tests/*/*.py
env =
    D:BST_TEST_SUITE=True
    D:GRPC_ENABLE_FORK_SUPPORT=0

markers =
    datafiles: data files for tests
    integration: run test only if --integration option is specified
    remoteexecution: run test only if --remote-execution option is specified
    remotecache: run tests only if --remote-cache option is specified
xfail_strict=True

[mypy]
files = src
warn_unused_configs = True
warn_no_return = True

# Ignore missing stubs for third-party packages.
# In future, these should be re-enabled if/when stubs for them become available.
[mypy-copyreg,grpc,pluginbase,psutil,pyroaring,ruamel,multiprocessing.forkserver]
ignore_missing_imports=True

# Ignore issues with generated files and vendored code
[mypy-buildstream._protos.*,buildstream._version]
ignore_errors = True
