summaryrefslogtreecommitdiffstats
path: root/pyproject.toml
diff options
context:
space:
mode:
Diffstat (limited to 'pyproject.toml')
-rw-r--r--pyproject.toml157
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