forked from sagemath/sage
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Initial support for pyproject.toml (sagemath#425)
* Initial support for pyproject.toml
- Loading branch information
1 parent
b00fff5
commit 6383aec
Showing
10 changed files
with
397 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
from collections import defaultdict | ||
from pathlib import Path | ||
from typing import Union | ||
|
||
import tomli | ||
|
||
from grayskull.utils import nested_dict | ||
|
||
|
||
def get_all_toml_info(path_toml: Union[Path, str]) -> dict: | ||
with open(path_toml, "rb") as f: | ||
toml_metadata = tomli.load(f) | ||
toml_metadata = defaultdict(dict, toml_metadata) | ||
metadata = nested_dict() | ||
|
||
metadata["requirements"]["host"] = toml_metadata["build-system"].get("requires", []) | ||
metadata["requirements"]["run"] = toml_metadata["project"].get("dependencies", []) | ||
license = toml_metadata["project"].get("license") | ||
if isinstance(license, dict): | ||
license = license.get("text", "") | ||
metadata["about"]["license"] = license | ||
metadata["test"]["requires"] = ( | ||
toml_metadata["project"].get("optional-dependencies", {}).get("testing", []) | ||
) | ||
|
||
if toml_metadata["project"].get("requires-python"): | ||
py_constrain = f"python {toml_metadata['project']['requires-python']}" | ||
metadata["requirements"]["host"].append(py_constrain) | ||
metadata["requirements"]["run"].append(py_constrain) | ||
|
||
if toml_metadata["project"].get("scripts"): | ||
metadata["build"]["entry_points"] = [] | ||
for entry_name, entry_path in ( | ||
toml_metadata["project"].get("scripts", {}).items() | ||
): | ||
metadata["build"]["entry_points"].append(f"{entry_name} = {entry_path}") | ||
all_urls = toml_metadata["project"].get("urls") | ||
if all_urls: | ||
metadata["about"]["dev_url"] = all_urls.get("Source", None) | ||
metadata["about"]["home"] = all_urls.get("Homepage", None) | ||
metadata["about"]["summary"] = toml_metadata["project"].get("description") | ||
return metadata |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,162 @@ | ||
[build-system] | ||
build-backend = "hatchling.build" | ||
requires = ["hatchling>=1.12.2", "hatch-vcs>=0.3"] | ||
|
||
[project] | ||
name = "tox" | ||
description = "tox is a generic virtualenv management and test command line tool" | ||
readme.file = "README.md" | ||
readme.content-type = "text/markdown" | ||
keywords = ["virtual", "environments", "isolated", "testing"] | ||
license = "MIT" | ||
urls.Homepage = "http://tox.readthedocs.org" | ||
urls.Documentation = "https://tox.wiki" | ||
urls.Source = "https://github.com/tox-dev/tox" | ||
urls.Tracker = "https://github.com/tox-dev/tox/issues" | ||
urls."Release Notes" = "https://tox.wiki/en/latest/changelog.html" | ||
authors = [{ name = "Bernát Gábor", email = "gaborjbernat@gmail.com" }] | ||
maintainers = [ | ||
{ name = "Anthony Sottile", email = "asottile@umich.edu" }, | ||
{ name = "Bernát Gábor", email = "gaborjbernat@gmail.com" }, | ||
{ name = "Jürgen Gmach", email = "juergen.gmach@googlemail.com" }, | ||
{ name = "Oliver Bestwalter", email = "oliver@bestwalter.de" }, | ||
] | ||
requires-python = ">=3.7" | ||
dependencies = [ | ||
"cachetools>=5.2.1", | ||
"chardet>=5.1", | ||
"colorama>=0.4.6", | ||
"packaging>=23", | ||
"platformdirs>=2.6.2", | ||
"pluggy>=1", | ||
"pyproject-api>=1.5", | ||
'tomli>=2.0.1; python_version < "3.11"', | ||
"virtualenv>=20.17.1", | ||
"filelock>=3.9", | ||
'importlib-metadata>=6; python_version < "3.8"', | ||
'typing-extensions>=4.4; python_version < "3.8"', | ||
] | ||
optional-dependencies.docs = [ | ||
"furo>=2022.12.7", | ||
"sphinx>=6.1.3", | ||
"sphinx-argparse-cli>=1.11", | ||
"sphinx-autodoc-typehints>=1.20.1", | ||
"sphinx-copybutton>=0.5.1", | ||
"sphinx-inline-tabs>=2022.1.2b11", | ||
"sphinxcontrib-towncrier>=0.2.1a0", | ||
"towncrier>=22.12", | ||
] | ||
optional-dependencies.testing = [ | ||
"build[virtualenv]>=0.9", | ||
"covdefaults>=2.2.2", | ||
"devpi-process>=0.3", | ||
"diff-cover>=7.3", | ||
"distlib>=0.3.6", | ||
"flaky>=3.7", | ||
"hatch-vcs>=0.3", | ||
"hatchling>=1.12.2", | ||
"psutil>=5.9.4", | ||
"pytest>=7.2", | ||
"pytest-cov>=4", | ||
"pytest-mock>=3.10", | ||
"pytest-xdist>=3.1", | ||
"re-assert>=1.1", | ||
"wheel>=0.38.4", | ||
"time-machine>=2.8.2; implementation_name != \"pypy\"", | ||
] | ||
scripts.tox = "tox.run:run" | ||
dynamic = ["version"] | ||
classifiers = [ | ||
"Development Status :: 5 - Production/Stable", | ||
"Framework :: tox", | ||
"Intended Audience :: Developers", | ||
"License :: OSI Approved :: MIT License", | ||
"Operating System :: MacOS :: MacOS X", | ||
"Operating System :: Microsoft :: Windows", | ||
"Operating System :: POSIX", | ||
"Programming Language :: Python :: 3", | ||
"Programming Language :: Python :: 3 :: Only", | ||
"Programming Language :: Python :: 3.7", | ||
"Programming Language :: Python :: 3.8", | ||
"Programming Language :: Python :: 3.9", | ||
"Programming Language :: Python :: 3.10", | ||
"Programming Language :: Python :: 3.11", | ||
"Topic :: Software Development :: Libraries", | ||
"Topic :: Software Development :: Testing", | ||
"Topic :: Utilities", | ||
] | ||
|
||
[tool.hatch] | ||
build.dev-mode-dirs = ["src"] | ||
build.hooks.vcs.version-file = "src/tox/version.py" | ||
build.targets.sdist.include = ["/src", "/tests"] | ||
version.source = "vcs" | ||
|
||
[tool.black] | ||
line-length = 120 | ||
|
||
[tool.coverage] | ||
html.show_contexts = true | ||
html.skip_covered = false | ||
paths.source = [ | ||
"src", | ||
".tox*/*/lib/python*/site-packages", | ||
".tox*/pypy*/site-packages", | ||
".tox*\\*\\Lib\\site-packages", | ||
"*/src", | ||
"*\\src", | ||
] | ||
report.fail_under = 88 | ||
report.omit = ["src/tox/config/cli/for_docs.py", "tests/execute/local_subprocess/bad_process.py", "tests/type_check/*"] | ||
run.parallel = true | ||
run.plugins = ["covdefaults"] | ||
|
||
[tool.isort] | ||
known_first_party = ["tox", "tests"] | ||
profile = "black" | ||
line_length = 120 | ||
|
||
[tool.mypy] | ||
python_version = "3.11" | ||
show_error_codes = true | ||
strict = true | ||
overrides = [ | ||
{ module = [ | ||
"colorama.*", | ||
"coverage.*", | ||
"distlib.*", | ||
"flaky.*", | ||
"importlib_metadata.*", | ||
"pluggy.*", | ||
"psutil.*", | ||
"re_assert.*", | ||
"virtualenv.*", | ||
], ignore_missing_imports = true }, | ||
] | ||
|
||
[tool.pep8] | ||
max-line-length = "120" | ||
|
||
[tool.flake8] | ||
max-complexity = 22 | ||
max-line-length = 120 | ||
unused-arguments-ignore-abstract-functions = true | ||
noqa-require-code = true | ||
dictionaries = ["en_US", "python", "technical", "django"] | ||
ignore = [ | ||
"E203", # whitespace before ':' | ||
"W503", # line break before binary operator | ||
] | ||
|
||
[tool.pytest.ini_options] | ||
testpaths = ["tests"] | ||
addopts = "--tb=auto -ra --showlocals --no-success-flaky-report" | ||
|
||
[tool.towncrier] | ||
name = "tox" | ||
filename = "docs/changelog.rst" | ||
directory = "docs/changelog" | ||
title_format = false | ||
issue_format = ":issue:`{issue}`" | ||
template = "docs/changelog/template.jinja2" | ||
# possible types, all default: feature, bugfix, doc, removal, misc |
Oops, something went wrong.