600955edd4
* Vendor ruamel.yaml v0.17.21 * Add unit test for whitespace regression * Add an abstraction layer in Spack to wrap ruamel.yaml All YAML operations are routed through spack.util.spack_yaml The custom classes have been adapted to the new ruamel.yaml class hierarchy. Fixed line annotation issue in "spack config blame"
240 lines
5.3 KiB
TOML
240 lines
5.3 KiB
TOML
[project]
|
|
name="spack"
|
|
description="The spack package manager"
|
|
dependencies=[
|
|
"clingo",
|
|
"setuptools",
|
|
]
|
|
dynamic = ["version"]
|
|
|
|
[project.scripts]
|
|
spack = "lib.spack.spack_installable.main:main"
|
|
|
|
[tool.hatch.version]
|
|
path = "lib/spack/spack/__init__.py"
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"pip>=21.3",
|
|
"pytest",
|
|
"pytest-xdist",
|
|
"setuptools",
|
|
"click",
|
|
'black',
|
|
"mypy",
|
|
"isort",
|
|
"flake8",
|
|
"vermin",
|
|
]
|
|
ci = [
|
|
"pytest-cov",
|
|
"codecov[toml]",
|
|
]
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
include = [
|
|
"/bin",
|
|
"/etc",
|
|
"/lib",
|
|
"/share",
|
|
"/var",
|
|
"CITATION.cff",
|
|
"COPYRIGHT",
|
|
"LICENSE-APACHE",
|
|
"LICENSE-MIT",
|
|
"NOTICE",
|
|
"README.md",
|
|
"SECURITY.md",
|
|
]
|
|
|
|
[tool.hatch.envs.default]
|
|
features = [
|
|
"dev",
|
|
]
|
|
|
|
[tool.hatch.envs.default.scripts]
|
|
spack = "./bin/spack"
|
|
style = "./bin/spack style"
|
|
test = "./bin/spack unit-test"
|
|
|
|
[tool.hatch.envs.ci]
|
|
features = [
|
|
"dev",
|
|
"ci",
|
|
]
|
|
|
|
[tool.black]
|
|
line-length = 99
|
|
target-version = ['py36', 'py37', 'py38', 'py39', 'py310']
|
|
include = '''
|
|
\.pyi?$
|
|
'''
|
|
extend-exclude = '''
|
|
/(
|
|
\.git
|
|
| \.mypy_cache
|
|
| ^lib/spack/external/
|
|
| ^opt/
|
|
)/
|
|
'''
|
|
skip_magic_trailing_comma = true
|
|
|
|
[tool.isort]
|
|
line_length = 99
|
|
profile = "black"
|
|
sections = [
|
|
"FUTURE",
|
|
"STDLIB",
|
|
"THIRDPARTY",
|
|
"ARCHSPEC", "LLNL", "FIRSTPARTY",
|
|
"LOCALFOLDER",
|
|
]
|
|
known_first_party = "spack"
|
|
known_archspec = "archspec"
|
|
known_llnl = "llnl"
|
|
known_third_party = ["ruamel", "six"]
|
|
src_paths = "lib"
|
|
honor_noqa = true
|
|
|
|
[tool.mypy]
|
|
python_version = 3.7
|
|
files = ['lib/spack/llnl/**/*.py', 'lib/spack/spack/**/*.py', './var/spack/repos/builtin/packages/*/package.py']
|
|
mypy_path = ['bin', 'lib/spack', 'lib/spack/external', 'var/spack/repos/builtin']
|
|
allow_redefinition = true
|
|
|
|
# This and a generated import file allows supporting packages
|
|
namespace_packages = true
|
|
|
|
# To avoid re-factoring all the externals, ignore errors and missing imports
|
|
# globally, then turn back on in spack and spack submodules
|
|
ignore_errors = true
|
|
ignore_missing_imports = true
|
|
|
|
[[tool.mypy.overrides]]
|
|
module = 'spack.*'
|
|
ignore_errors = false
|
|
ignore_missing_imports = false
|
|
|
|
[[tool.mypy.overrides]]
|
|
module = 'packages.*'
|
|
ignore_errors = false
|
|
ignore_missing_imports = false
|
|
# we can't do this here, not a module scope option, in spack style instead
|
|
# disable_error_code = 'no-redef'
|
|
|
|
[[tool.mypy.overrides]]
|
|
module = 'llnl.*'
|
|
ignore_errors = false
|
|
ignore_missing_imports = false
|
|
|
|
[[tool.mypy.overrides]]
|
|
module = 'spack.test.packages'
|
|
ignore_errors = true
|
|
|
|
# ignore errors in fake import path for packages
|
|
[[tool.mypy.overrides]]
|
|
module = 'spack.pkg.*'
|
|
ignore_errors = true
|
|
ignore_missing_imports = true
|
|
|
|
# pytest (which we depend on) optionally imports numpy, which requires Python 3.8 in
|
|
# recent versions. mypy still imports its .pyi file, which has positional-only
|
|
# arguments, which don't work in 3.7, which causes mypy to bail out early if you have
|
|
# numpy installed.
|
|
[[tool.mypy.overrides]]
|
|
module = 'numpy'
|
|
follow_imports = 'skip'
|
|
follow_imports_for_stubs = true
|
|
|
|
[tool.pyright]
|
|
useLibraryCodeForTypes = true
|
|
reportMissingImports = true
|
|
reportWildcardImportFromLibrary = false
|
|
include = ['lib/spack']
|
|
ignore = ['lib/spack/external']
|
|
extraPaths = ['lib/spack', 'lib/spack/external']
|
|
|
|
|
|
[tool.coverage.run]
|
|
parallel = true
|
|
concurrency = ["multiprocessing"]
|
|
branch = true
|
|
source = ["bin", "lib"]
|
|
data_file = "./tests-coverage/.coverage"
|
|
omit = [
|
|
'lib/spack/spack/test/*',
|
|
'lib/spack/docs/*',
|
|
'lib/spack/external/*',
|
|
'share/spack/qa/*',
|
|
]
|
|
|
|
[tool.coverage.report]
|
|
# Regexes for lines to exclude from consideration
|
|
exclude_lines = [
|
|
# Have to re-enable the standard pragma
|
|
'pragma: no cover',
|
|
|
|
# Don't complain about missing debug-only code:
|
|
'def __repr__',
|
|
'if self\.debug',
|
|
|
|
# Don't complain if tests don't hit defensive assertion code:
|
|
'raise AssertionError',
|
|
'raise NotImplementedError',
|
|
|
|
# Don't complain if non-runnable code isn't run:
|
|
'if 0:',
|
|
'if False:',
|
|
'if __name__ == .__main__.:',
|
|
]
|
|
ignore_errors = true
|
|
|
|
[tool.coverage.html]
|
|
directory = "htmlcov"
|
|
|
|
[tool.vendoring]
|
|
destination = "lib/spack/external/_vendoring"
|
|
requirements = "lib/spack/external/vendor.txt"
|
|
namespace = ""
|
|
|
|
protected-files = ["__init__.py", "README.rst", "vendor.txt"]
|
|
patches-dir = "lib/spack/external/patches"
|
|
|
|
[tool.vendoring.transformations]
|
|
substitute = [
|
|
]
|
|
drop = [
|
|
# contains unnecessary scripts
|
|
"bin/",
|
|
# interpreter and OS specific msgpack libs
|
|
"msgpack/*.so",
|
|
# unneeded parts of setuptools
|
|
"easy_install.py",
|
|
"setuptools",
|
|
"pkg_resources/_vendor/",
|
|
"pkg_resources/extern/",
|
|
# trim vendored pygments styles and lexers
|
|
"pygments/styles/[!_]*.py",
|
|
'^pygments/lexers/(?!python|__init__|_mapping).*\.py$',
|
|
# trim rich's markdown support
|
|
"rich/markdown.py",
|
|
# ruamel.yaml installs unneded files
|
|
"ruamel.*.pth",
|
|
"pvectorc.*.so"
|
|
]
|
|
|
|
[tool.vendoring.typing-stubs]
|
|
six = ["six.__init__", "six.moves.__init__", "six.moves.configparser"]
|
|
distro = []
|
|
|
|
[tool.vendoring.license.directories]
|
|
setuptools = "pkg_resources"
|
|
|
|
[tool.vendoring.license.fallback-urls]
|
|
CacheControl = "https://raw.githubusercontent.com/ionrock/cachecontrol/v0.12.6/LICENSE.txt"
|
|
distlib = "https://bitbucket.org/pypa/distlib/raw/master/LICENSE.txt"
|
|
webencodings = "https://github.com/SimonSapin/python-webencodings/raw/master/LICENSE"
|