| [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.8" |
| 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 :: 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{38,39,310,311,312} |
| isolated_build = True |
| |
| [testenv:py{38,39,310,311,312}] |
| description = run tests against a built package |
| commands = |
| python -m unittest {posargs} |
| |
| [testenv:profile] |
| description = run profiler (use e.g. `firefox .tox/prof/output.svg` to open) |
| deps = |
| -r profiler/requirements.txt |
| allowlist_externals = |
| mkdir |
| dot |
| commands = |
| mkdir -p "{toxworkdir}/prof" |
| python -m cProfile -o "{toxworkdir}/prof/output.pstats" profiler/profiler_script.py |
| gprof2dot -f pstats -o "{toxworkdir}/prof/output.dot" "{toxworkdir}/prof/output.pstats" |
| dot -Tsvg -o "{toxworkdir}/prof/output.svg" "{toxworkdir}/prof/output.dot" |
| python -c 'import pathlib; print("profiler svg output under file://\{0\}".format(pathlib.Path(r"{toxworkdir}") / "prof" / "output.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 |