diff options
Diffstat (limited to 'pyproject.toml')
-rw-r--r-- | pyproject.toml | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..adcf366 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,157 @@ +[build-system] +requires = ["flit_core>=3.2.0,<4"] +build-backend = "flit_core.buildapi" + +[project] +name = "tomli" +version = "2.0.1" # DO NOT EDIT THIS LINE MANUALLY. LET bump2version UTILITY DO IT +description = "A lil' TOML parser" +authors = [ + { name = "Taneli Hukkinen", email = "hukkin@users.noreply.github.com" }, +] +license = { file = "LICENSE" } +requires-python = ">=3.7" +readme = "README.md" +classifiers = [ + "License :: OSI Approved :: MIT License", + "Operating System :: MacOS", + "Operating System :: Microsoft :: Windows", + "Operating System :: POSIX :: Linux", + "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 :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", + "Topic :: Software Development :: Libraries :: Python Modules", + "Typing :: Typed", +] +keywords = ["toml"] + +[project.urls] +"Homepage" = "https://github.com/hukkin/tomli" +"Changelog" = "https://github.com/hukkin/tomli/blob/master/CHANGELOG.md" + + +[tool.isort] +# Force imports to be sorted by module, independent of import type +force_sort_within_sections = true +# Group first party and local folder imports together +no_lines_before = ["LOCALFOLDER"] + +# Configure isort to work without access to site-packages +known_first_party = ["tomli", "tests"] + +# Settings for Black compatibility +profile = "black" + + +[tool.tox] +legacy_tox_ini = ''' +[tox] +# Only run unittest envs when no args given to tox +envlist = py{37,38,39,310} +isolated_build = True + +[testenv:py{37,38,39,310}] +description = run tests against a built package +commands = + python -m unittest {posargs} + +[testenv:profile] +description = run profiler (use e.g. `firefox .tox/prof/combined.svg` to open) +setenv = + PROFILER_ITERATIONS=1000 +deps = + -r profiler/requirements.txt +commands = + pytest profiler/test_for_profiler.py --profile-svg --pstats-dir "{toxworkdir}/prof" + python -c 'import pathlib; print("profiler svg output under file://\{0\}".format(pathlib.Path(r"{toxworkdir}") / "prof" / "combined.svg"))' + +[testenv:pre-commit] +description = run linters +skip_install = True +deps = pre-commit +commands = pre-commit run {posargs:--all} + +[testenv:benchmark] +description = run the benchmark script against a local Tomli version +deps = + -r benchmark/requirements.txt +commands = + python -c 'import datetime; print(datetime.date.today())' + python --version + python benchmark/run.py + +[testenv:benchmark-pypi] +description = run the benchmark script against the latest Tomli in PyPI +skip_install = True +deps = + tomli + -r benchmark/requirements.txt +commands = + python -c 'import datetime; print(datetime.date.today())' + python --version + python benchmark/run.py + +[testenv:fuzz] +description = run the fuzzer against a local Tomli version (needs "apt install clang") +deps = + -r fuzzer/requirements.txt +allowlist_externals = + mkdir + cp +commands = + # Create a folder for persistent corpus and use benchmark data as initial seed + mkdir -p {toxworkdir}/fuzzer-corpus + cp -n benchmark/data.toml {toxworkdir}/fuzzer-corpus/data.toml + # Run fuzzer + python fuzzer/fuzz.py {toxworkdir}/fuzzer-corpus {posargs:-len_control=10000} +''' + + +[tool.coverage.run] +branch = true +source = ['tomli'] + +[tool.coverage.report] +# Regexes for lines to exclude from consideration +exclude_lines = [ + # Re-enable the standard pragma (with extra strictness) + '# pragma: no cover\b', + # Code for static type checkers + 'if TYPE_CHECKING:', + # Scripts + 'if __name__ == .__main__.:', +] + + +[tool.mypy] +show_error_codes = true +warn_unreachable = true +warn_unused_ignores = true +warn_redundant_casts = true +warn_unused_configs = true +# Disabling incremental mode is required for `warn_unused_configs = true` to work +incremental = false +disallow_untyped_defs = true +check_untyped_defs = true +strict_equality = true +implicit_reexport = false +no_implicit_optional = true + +[[tool.mypy.overrides]] +module = "tests.*" +disallow_untyped_defs = false + +[[tool.mypy.overrides]] +# This matches `benchmark/run.py`. Since benchmark/ is +# not a package, we use the module name here. +module = "run" +ignore_errors = true + +[[tool.mypy.overrides]] +# This matches `fuzzer/fuzz.py`. +module = "fuzz" +ignore_errors = true |