[build-system]
requires = ["scikit-build-core[pyproject]"]
build-backend = "scikit_build_core.build"

[project]
name = "pylibmagic"
dynamic = ["version"]
description = "scikit-build project with CMake for compiling libmagic"
readme = "README.rst"
requires-python = ">=3.8"
authors = [
    { name = "Giordon Stark", email = "kratsg@gmail.com" },
]
classifiers = [
    "Development Status :: 4 - Beta",
    "Intended Audience :: Developers",
    "Intended Audience :: Science/Research",
    "License :: OSI Approved :: BSD 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",
    "Topic :: Scientific/Engineering",
]
dependencies = [
    "importlib-resources;python_version<'3.9'",
]

[project.optional-dependencies]
dev = [
    "pytest-cov>=3",
    "pytest>=6",
    "tbump>=6.7.0",
    "twine",
]
docs = [
    "myst-parser>=0.13",
    "sphinx-book-theme>=0.1.0",
    "sphinx-copybutton",
    "Sphinx>=4.0",
]
test = [
    "pytest-cov>=3",
    "pytest>=6",
    "python-magic",
]

[project.urls]
"Bug Tracker" = "https://github.com/kratsg/pylibmagic/issues"
Changelog = "https://github.com/kratsg/pylibmagic/releases"
Discussions = "https://github.com/kratsg/pylibmagic/discussions"
Documentation = "https://pylibmagic.readthedocs.io/"
Homepage = "https://github.com/kratsg/pylibmagic"


[tool.scikit-build]
metadata.version.provider = "scikit_build_core.metadata.setuptools_scm"
sdist.include = ["src/pylibmagic/_version.py"]
wheel.install-dir = "pylibmagic"
minimum-version = "0.3"
wheel.py-api = "py3"


[tool.setuptools_scm]
write_to = "src/pylibmagic/_version.py"


[tool.cibuildwheel]
test-extras = ["test"]
test-command = "pytest {project}/tests"
archs = ["auto64"]
before-all = "yum install autoconf automake"
build = ["cp310-*"]

[[tool.cibuildwheel.overrides]]
select = "*-musllinux*"
before-all = "apk add autoconf automake"

[[tool.cibuildwheel.overrides]]
select = "*-macosx*"
before-all = "brew install autoconf automake libtool"


[tool.pytest.ini_options]
minversion = "6.0"
addopts = ["-ra", "--showlocals", "--strict-markers", "--strict-config", "-m", "not isolate"]
xfail_strict = true
filterwarnings = ["error"]
testpaths = [
    "tests",
]
markers = [
    "isolate",
]
log_cli_level = "INFO"


[tool.mypy]
files = "src"
python_version = "3.8"
warn_unused_configs = true
strict = true
show_error_codes = true
enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"]
warn_unreachable = true


[tool.ruff]
select = [
  "E", "F", "W", # flake8
  "B",  "B904",  # flake8-bugbear
  "I",           # isort
  "ARG",         # flake8-unused-arguments
  "C4",          # flake8-comprehensions
  "EM",          # flake8-errmsg
  "ICN",         # flake8-import-conventions
  "ISC",         # flake8-implicit-str-concat
  "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
]
extend-ignore = ["PLR", "E501"]
target-version = "py37"
typing-modules = ["mapyde._compat.typing"]
src = ["src"]
unfixable = ["T20", "F841"]
exclude = []
isort.required-imports = ["from __future__ import annotations"]

[tool.ruff.per-file-ignores]
"tests/**" = ["T20"]
"noxfile.py" = ["T20"]

[tool.pylint]
master.py-version = "3.8"
master.ignore-paths= ["src/pylibmagic/_version.py"]
reports.output-format = "colorized"
similarities.ignore-imports = "yes"
messages_control.disable = [
  "design",
  "fixme",
  "line-too-long",
  "wrong-import-position",
]