[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