content: [project]
  name = "py7zr"
  requires-python = ">=3.9"
  description = "Pure python 7-zip library"
  license = {text = "LGPL-2.1-or-later"}
  authors = [
      {name = "Hiroshi Miura", email = "miurahr@linux.com"},
  ]
  classifiers = [
      "Development Status :: 5 - Production/Stable",
      "License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)",
      "Operating System :: MacOS :: MacOS X",
      "Operating System :: Microsoft :: Windows",
      "Operating System :: POSIX",
      "Operating System :: POSIX :: Linux",
      "Programming Language :: Python",
      "Programming Language :: Python :: 3",
      "Programming Language :: Python :: 3.9",
      "Programming Language :: Python :: 3.10",
      "Programming Language :: Python :: 3.11",
      "Programming Language :: Python :: 3.12",
      "Programming Language :: Python :: 3.13",
      "Programming Language :: Python :: 3 :: Only",
      "Programming Language :: Python :: Implementation :: CPython",
      "Programming Language :: Python :: Implementation :: PyPy",
      "Topic :: Software Development :: Libraries :: Python Modules",
  ]
  dependencies = [
        "texttable",
        "pycryptodomex>=3.20.0",
        'brotli>=1.1.0;platform_python_implementation=="CPython"',
        'brotlicffi>=1.1.0.0;platform_python_implementation=="PyPy"',
        'psutil;sys_platform!="cygwin"',
        "pyzstd>=0.16.1",
        "pyppmd>=1.1.0,<1.3.0",
        "pybcj>=1.0.0,<1.1.0",
        "multivolumefile>=0.2.3",
        "inflate64>=1.0.0,<1.1.0",
  ]
  keywords = ['compression', '7zip', 'lzma', 'zstandard', 'ppmd', 'lzma2', 'bcj', 'archive']
  dynamic = ["readme", "version"]
  
  [tool.setuptools]
  packages = ["py7zr"]
  
  [tool.setuptools.package-data]
  py7zr = ["py.typed"]
  
  [tool.setuptools.dynamic]
  readme = {file = ["README.rst"]}
  
  [project.scripts]
  py7zr = "py7zr.__main__:main"
  
  [project.optional-dependencies]
  test_compat = ["libarchive-c"]
  test = [
        "pytest",
        "pytest-benchmark",
        "pytest-cov",
        "pytest-remotedata",
        "pytest-timeout",
        "py-cpuinfo",
        "coverage[toml]>=5.2",
        "coveralls>=2.1.1",
        "requests",
        "pytest-httpserver",
  ]
  docs = [
        "sphinx>=7.0.0",
        "sphinx-py3doc-enhanced-theme",
        "sphinx-a4doc",
        "docutils",
  ]
  check = [
        "mypy>=1.10.0",
        "mypy_extensions>=1.0.0",
        "lxml",
        "types-psutil",
        "check-manifest",
        "flake8<8",
        "flake8-black>=0.3.6",
        "flake8-deprecated",
        "flake8-isort",
        "isort>=5.13.2",
        "pygments",
        "readme-renderer",
        "twine",
        "black>=24.8.0",
        "pylint",
  ]
  debug = [
        "pytest",
        "pytest-leaks",
        "pytest-profiling",
  ]
  
  [project.urls]
  Homepage = "https://py7zr.readthedocs.io/"
  Documentation = "https://py7zr.readthedocs.io/en/stable/"
  "Bug Tracker" = "https://github.com/miurahr/py7zr/issues"
  Source = "https://github.com/miurahr/py7zr"
  Changelog = "https://py7zr.readthedocs.io/en/latest/Changelog.html"
  
  [build-system]
  requires = ["setuptools>=63", "build", "setuptools_scm[toml]>=7.0.5"]
  build-backend = "setuptools.build_meta"
  
  [tool.setuptools_scm]
  local_scheme = "no-local-version"
  write_to = "py7zr/version.py"
  write_to_template = """
  __version__ = \"{version}\"
  """
  tag_regex = "^(?P<prefix>v)?(?P<version>[^\\+]+)(?P<suffix>.*)?$"
  
  [tool.coverage.run]
  branch = true
  parallel = true
  source = ["py7zr"]
  
  [tool.coverage.report]
  show_missing = true
  exclude_lines = ["if __name__ == .__main__.:", "pragma: no-cover", "@abstract", "def __repr__"]
  
  [tool.black]
  line-length = 125
  target-version = ['py39']
  
  [tool.isort]
  known_first_party = ['py7zr']
  known_third_party = ["docutils", "flake8", "pytest", "pytz", "setuptools", "sphinx", "yaml"]
  multi_line_output = 3
  include_trailing_comma = true
  force_grid_wrap = 0
  use_parentheses = true
  ensure_newline_before_comments = true
  line_length = 125
  
  [tool.mypy]
  warn_redundant_casts = true
  warn_unused_ignores = true
  warn_return_any = false
  strict_optional = true
  show_column_numbers = true
  check_untyped_defs = true
  
  [tool.check-manifest]
  ignore = ["py7zr/version.py", "azure-pipelines.yml", ".readthedocs.yml", "codecov.yml"]
  
  [tool.pytest.ini_options]
  minversion = "6.0"
  testpaths = ["tests"]
  python_files = "test*.py"
  norecursedirs = [".git", "_build", "tmp", ".eggs"]
  timeout = 480
  markers = [
      "asyncio: mark a atest as an asyncio test.",
      "basic: mark a test as a basic feature test.",
      "files: mark a test as a test with actual files.",
      "api: mark a test as an interface test.",
      "unit: mark a test as an unit test.",
      "cli: mark a test as a cli test.",
      "benchmark: mark a test as a benchmarking.",
      "misc: misc tests",
      "slow: mark a slow tests",
  ]
  
  [tool.tox]
  legacy_tox_ini = """
  [tox]
  isolated_build = True
  envlist = mypy, check, pypy{39,310}, py{39,310,311,312,313}, py39d, docs, mprof, distcheck
  
  [testenv]
  passenv =
      GITHUB_*
      PYTEST_ADDOPTS
      COVERALLS_*
      LIBARCHIVE
  extras = test
  commands =
      python -m pytest -vv
  
  [testenv:py39]
  extras = test, test_compat
  
  [testenv:pypy39]
  extras = test, test_compat
  
  [testenv:mprof]
  extras = test, debug
  commands =
      mprof run --multiprocess pytest
      mprof plot --output memory-profile.png
  deps =
      memory_profiler
      matplotlib
  
  [testenv:py39d]
  extras = test, debug
  commands =
      python3.9d -m pytest -v --no-cov -R : -k "extract_lzma_1 or extract_encrypted_2 or compress_simple_file_0 or encrypt_simple_file_0"
  deps =
      pytest-leaks
  
  [testenv:mypy]
  extras = check
  commands = mypy --html-report build/mypy py7zr
  deps =
      pyzstd
  
  [testenv:check]
  extras = check
  commands =
      check-manifest {toxinidir}
      flake8 py7zr tests
  
  [testenv:distcheck]
  extras = check
  commands =
      python -m build --sdist
      twine check dist/*
  
  [testenv:clean]
  deps = coverage[toml]>=5.2
  skip_install = true
  commands = coverage erase
  
  [testenv:coveralls]
  deps =
      coveralls
  skip_install = true
  commands =
      coveralls []
  
  [testenv:docs]
  extras = docs
  commands =
      sphinx-build {posargs:-E} -b html docs build/docs
      sphinx-build -b linkcheck docs build/docs
  
  [gh-actions]
  python =
      3.9: py39
      3.10: py310
      3.11: py311
      3.12: py312
      3.13: py313
      pypy-3.9: pypy39
  """
  