[project] name="spack" description="The spack package manager" dependencies=[ "clingo", "setuptools", "six", "types-six", ] 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==8.0.2", 'black==21.12b0', "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 = ['py27', 'py35', 'py36', 'py37', 'py38', 'py39', 'py310'] include = ''' \.pyi?$ ''' extend-exclude = ''' /( \.git | \.mypy_cache | ^lib/spack/external/ | ^opt/ )/ ''' [tool.isort] 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 # jinja has syntax in it that requires python3 and causes a parse error # skip importing it [[tool.mypy.overrides]] module = 'jinja2' follow_imports = 'skip' [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"