| [build-system] |
| requires = ["flit_core>=3.2.0,<4"] |
| build-backend = "flit_core.buildapi" |
| |
| [project] |
| name = "tomli" |
| version = "1.2.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.6" |
| 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.6", |
| "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.flit.sdist] |
| exclude = [ |
| "tests/", |
| "benchmark/", |
| "fuzzer/", |
| ".*", |
| "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.pytest.ini_options] |
| addopts = "--strict-markers --strict-config" |
| xfail_strict = true |
| |
| |
| [tool.tox] |
| legacy_tox_ini = ''' |
| [tox] |
| # Only run pytest envs when no args given to tox |
| envlist = py{36,37,38,39} |
| isolated_build = True |
| |
| [testenv:py{36,37,38,39}] |
| description = run tests against unpackaged source |
| skip_install = True |
| deps = -r tests/requirements.txt |
| commands = |
| pytest {posargs} |
| |
| [testenv:py{36,37,38,39}-package] |
| description = run tests against a built package (can fail, in theory, if test dependencies need a tomli version incompatible with local state) |
| deps = -r tests/requirements.txt |
| commands = |
| pytest --import-mode=append {posargs} |
| |
| [testenv:profile] |
| description = run profiler (use e.g. `firefox .tox/prof/combined.svg` to open) |
| skip_install = True |
| setenv = |
| PROFILER_ITERATIONS=1000 |
| deps = |
| -r tests/requirements.txt |
| pytest-profiling |
| commands = |
| pytest tests/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 |
| omit = ["tests/*", "*/site-packages/*"] |
| |
| [tool.coverage.report] |
| # Regexes for lines to exclude from consideration |
| exclude_lines = [ |
| # Have to re-enable the standard pragma |
| "pragma: no cover", |
| # 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 |