content: [build-system]
  requires = ["scikit-build-core"]
  build-backend = "scikit_build_core.build"
  
  [project]
  name = "pybit7z"
  description = "A wrapper based on bit7z."
  readme = "README.md"
  license = { text = "Apache-2.0" }
  authors = [{ email = "msclock@126.com", name = "l.feng" }]
  requires-python = ">=3.8"
  classifiers = [
    "Intended Audience :: Science/Research",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: Apache Software License",
    "Operating System :: OS Independent",
    "Programming Language :: Python",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3 :: Only",
    "Programming Language :: Python :: 3.8",
    "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",
    "Topic :: Scientific/Engineering",
    "Typing :: Typed",
  ]
  dynamic = ["version"]
  dependencies = [
    "typing-extensions>=3.10.0; python_version<'3.9'",
    "importlib_metadata>=1.4",
  ]
  
  [project.scripts]
  pybit7z = "pybit7z.cli:main"
  
  [project.optional-dependencies]
  test = ["pytest >=6", "pytest-cov >=3"]
  dev = ["pytest >=6", "pytest-cov >=3"]
  docs = [
    "sphinx>=7.0",
    "myst_parser>=0.13",
    "sphinx_copybutton",
    "sphinx_autodoc_typehints",
    "furo>=2023.08.17",
  ]
  
  [project.urls]
  Homepage = "https://github.com/msclock/pybit7z"
  "Bug Tracker" = "https://github.com/msclock/pybit7z/issues"
  Discussions = "https://github.com/msclock/pybit7z/discussions"
  Changelog = "https://github.com/msclock/pybit7z/releases"
  
  [tool.scikit-build]
  minimum-version = "0.9"
  build-dir = "build/{wheel_tag}"
  cmake.verbose = false
  logging.level = "DEBUG"
  metadata.version.provider = "scikit_build_core.metadata.setuptools_scm"
  sdist.include = ["src/pybit7z/_version.py"]
  
  [tool.scikit-build.cmake.define]
  BUILD_TESTING="OFF"
  CMAKE_BUILD_TYPE="Release"
  VCPKG_INSTALL_REPORT_FAILURE="ON"
  VCPKG_INSTALL_OPTIONS="--allow-unsupported"
  CMAKE_TOOLCHAIN_FILE="cmake/vcpkg/vcpkg.toolchain.cmake"
  VCPKG_OVERLAY_TRIPLETS="cmake/vcpkg/triplets"
  VCPKG_OVERLAY_PORTS="cmake/vcpkg/ports"
  
  [tool.setuptools_scm]
  write_to = "src/pybit7z/_version.py"
  
  [tool.cibuildwheel]
  build-verbosity = 1
  skip = "pp*"
  test-command = "pytest {project}/tests"
  test-extras = ["test"]
  test-skip = ["*-win_arm64", "*-macosx_arm64"]
  
  [tool.cibuildwheel.linux]
  before-build = [
    'yum install zip perl-IPC-Cmd -y || apk add zip || true',
    'apt update && apt install zip pkg-config -y || true',
    'pip install cmake==3.31.6',
    'pip install ninja==1.11.1.4',
    'cmake --version',
    'ninja --version',
  ]
  
  [[tool.cibuildwheel.overrides]]
  select = "*linux_{aarch64,armv7l,ppc64le,s390x}"
  environment = { VCPKG_FORCE_SYSTEM_BINARIES = "1" }
  
  [[tool.cibuildwheel.overrides]]
  select = "*-macos*"
  environment = { MACOSX_DEPLOYMENT_TARGET = "10.15" }
  
  [tool.pytest.ini_options]
  minversion = "6.0"
  addopts = ["-ra", "--showlocals", "--strict-markers", "--strict-config"]
  xfail_strict = true
  filterwarnings = ["error"]
  log_cli_level = "INFO"
  testpaths = ["tests"]
  
  [tool.coverage]
  run.source = ["pybit7z"]
  report.exclude_also = ['\.\.\.', 'if typing.TYPE_CHECKING:']
  
  [tool.mypy]
  files = ["src", "tests"]
  python_version = "3.8"
  warn_unused_configs = true
  strict = true
  enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"]
  warn_unreachable = true
  disallow_untyped_defs = false
  disallow_incomplete_defs = false
  
  [[tool.mypy.overrides]]
  module = "pybit7z.*"
  disallow_untyped_defs = true
  disallow_incomplete_defs = true
  
  [tool.ruff]
  src = ["src"]
  
  [tool.ruff.lint]
  extend-select = [
    "B",   # flake8-bugbear
    "I",   # isort
    "ARG", # flake8-unused-arguments
    "C4",  # flake8-comprehensions
    "EM",  # flake8-errmsg
    "ICN", # flake8-import-conventions
    "G",   # flake8-logging-format
    "PGH", # pygrep-hooks
    "PIE", # flake8-pie
    "PL",  # pylint
    "PT",  # flake8-pytest-style
    "PTH", # flake8-use-pathlib
    "RET", # flake8-return
    "RUF", # Ruff-specific
    "SIM", # flake8-simplify
    "T20", # flake8-print
    "UP",  # pyupgrade
    "YTT", # flake8-2020
    "EXE", # flake8-executable
    "NPY", # NumPy specific rules
    "PD",  # pandas-vet
  ]
  ignore = [
    "UP006",   # pyupgrade removes f-strings
    "UP007",   # pyupgrade removes dict comprehensions
    "PLR09",   # Too many <...>
    "PLR2004", # Magic value used in comparison
    "ISC001",  # Conflicts with formatter
  ]
  isort.required-imports = ["from __future__ import annotations"]
  # Uncomment if using a _compat.typing backport
  # typing-modules = ["pybit7z._compat.typing"]
  
  [tool.ruff.lint.per-file-ignores]
  "tests/**" = ["T20"]
  
  [tool.pylint]
  py-version = "3.8"
  ignore-paths = [".*/_version.py", ".*/*.pyi"]
  extension-pkg-allow-list = ["pybit7z._core"]
  reports.output-format = "colorized"
  similarities.ignore-imports = "yes"
  messages_control.disable = [
    "design",
    "fixme",
    "line-too-long",
    "missing-module-docstring",
    "wrong-import-position",
  ]
  