
Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com> Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
301 lines
7.2 KiB
TOML
301 lines
7.2 KiB
TOML
[project]
|
|
name = "spack"
|
|
description = "The spack package manager"
|
|
requires-python = ">=3.6"
|
|
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.ruff]
|
|
line-length = 99
|
|
extend-include = ["bin/spack"]
|
|
extend-exclude = ["lib/spack/external", "*.pyi"]
|
|
|
|
[tool.ruff.format]
|
|
skip-magic-trailing-comma = true
|
|
|
|
[tool.ruff.lint]
|
|
extend-select = ["I"]
|
|
ignore = ["E731", "E203"]
|
|
|
|
[tool.ruff.lint.isort]
|
|
split-on-trailing-comma = false
|
|
section-order = [
|
|
"future",
|
|
"standard-library",
|
|
"third-party",
|
|
"archspec",
|
|
"llnl",
|
|
"spack",
|
|
"first-party",
|
|
"local-folder",
|
|
]
|
|
|
|
[tool.ruff.lint.isort.sections]
|
|
spack = ["spack"]
|
|
archspec = ["archspec"]
|
|
llnl = ["llnl"]
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
"var/spack/*/package.py" = ["F403", "F405", "F811", "F821"]
|
|
"*-ci-package.py" = ["F403", "F405", "F821"]
|
|
|
|
[tool.black]
|
|
line-length = 99
|
|
include = "(lib/spack|var/spack/repos|var/spack/test_repos)/.*\\.pyi?$|bin/spack$"
|
|
extend-exclude = "lib/spack/external"
|
|
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]
|
|
files = [
|
|
"lib/spack/llnl/**/*.py",
|
|
"lib/spack/spack/**/*.py",
|
|
"var/spack/repos/spack_repo/builtin/packages/*/package.py",
|
|
]
|
|
mypy_path = ["lib/spack", "lib/spack/external", "var/spack/repos"]
|
|
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 = "spack_repo.*"
|
|
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
|
|
|
|
# Spack imports a number of external packages, and they *may* require Python 3.8 or
|
|
# higher in recent versions. This can cause mypy to fail because we check for 3.7
|
|
# compatibility. We could restrict mypy to run for the oldest supported version (3.7),
|
|
# but that means most developers won't be able to run mypy, which means it'll fail
|
|
# more in CI. Instead, we exclude these imported packages from mypy checking.
|
|
[[tool.mypy.overrides]]
|
|
module = [
|
|
"IPython",
|
|
"altgraph",
|
|
"attr",
|
|
"boto3",
|
|
"botocore",
|
|
"distro",
|
|
"importlib.metadata",
|
|
"jinja2",
|
|
"jsonschema",
|
|
"macholib",
|
|
"markupsafe",
|
|
"numpy",
|
|
"pkg_resources",
|
|
"pyristent",
|
|
"pytest",
|
|
"ruamel.yaml",
|
|
"six",
|
|
]
|
|
follow_imports = "skip"
|
|
follow_imports_for_stubs = true
|
|
|
|
[tool.pyright]
|
|
useLibraryCodeForTypes = true
|
|
reportMissingImports = true
|
|
reportWildcardImportFromLibrary = false
|
|
include = ["lib/spack", "var/spack/repos", "var/spack/test_repos"]
|
|
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.paths]
|
|
source = [
|
|
".",
|
|
"/Users/runner/work/spack/spack",
|
|
"/System/Volumes/Data/home/runner/work/spack/spack",
|
|
"D:\\a\\spack\\spack",
|
|
]
|
|
|
|
[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 = [
|
|
{ match = "typing_extensions", replace = "_vendoring.typing_extensions" },
|
|
{ match = "ruamel.yaml", replace = "_vendoring.ruamel.yaml" },
|
|
{ match = "altgraph", replace = "_vendoring.altgraph" },
|
|
{ match = "macholib", replace = "_vendoring.macholib" },
|
|
{ match = "from six", replace = "from _vendoring.six" },
|
|
{ match = "markupsafe", replace = "_vendoring.markupsafe" },
|
|
{ match = "jinja2", replace = "_vendoring.jinja2" },
|
|
{ match = "pyrsistent", replace = "_vendoring.pyrsistent" },
|
|
{ match = "import attr\n", replace = "import _vendoring.attr\n" },
|
|
{ match = "from attr", replace = "from _vendoring.attr" },
|
|
{ match = "import jsonschema", replace = "import _vendoring.jsonschema" },
|
|
{ match = "from jsonschema", replace = "from _vendoring.jsonschema" },
|
|
]
|
|
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",
|
|
# Trim jsonschema tests
|
|
"jsonschema/tests",
|
|
]
|
|
|
|
[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"
|