RapidFuzz/pyproject.toml

182 lines
4.7 KiB
TOML

[build-system]
requires = [
"scikit-build-core>=0.10.7",
"Cython >=3.0.11, <3.1.0"
]
build-backend = "scikit_build_core.build"
[project]
name = "RapidFuzz"
dynamic = ["version"]
requires-python = ">= 3.9"
authors = [
{name = "Max Bachmann", email = "pypi@maxbachmann.de"},
]
description = "rapid fuzzy string matching"
readme = "README.md"
classifiers=[
"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",
"License :: OSI Approved :: MIT License",
]
Homepage = "https://github.com/rapidfuzz/RapidFuzz"
Documentation = "https://rapidfuzz.github.io/RapidFuzz/"
Repository = "https://github.com/rapidfuzz/RapidFuzz.git"
Issues = "https://github.com/rapidfuzz/RapidFuzz/issues"
Changelog = "https://github.com/rapidfuzz/RapidFuzz/blob/main/CHANGELOG.rst"
[project.optional-dependencies]
all = [
"numpy"
]
[project.entry-points.pyinstaller40]
hook-dirs = "rapidfuzz.__pyinstaller:get_hook_dirs"
tests = "rapidfuzz.__pyinstaller:get_PyInstaller_tests"
[tool.scikit-build]
minimum-version = "build-system.requires"
sdist.include = [
"src/rapidfuzz/*.cxx",
"src/rapidfuzz/distance/*.cxx",
]
sdist.exclude = [
".github"
]
wheel.exclude = [
"**.pyx",
"**.cxx",
"**.pxd",
"**.cpp",
"**.hpp",
"**.h",
"CMakeLists.txt",
"generate.sh"
]
wheel.packages = ["src/rapidfuzz"]
wheel.cmake = false
messages.after-success = "{yellow}CMake unavailable, falling back to pure Python Extension"
[[tool.scikit-build.overrides]]
if.any.system-cmake = ">=3.15"
if.any.cmake-wheel = true
wheel.cmake = true
messages.after-success = "{green}C++ Extension built successfully"
[[tool.scikit-build.overrides]]
if.failed = true
if.env.CIBUILDWHEEL = false
if.env.CONDA_BUILD = false
if.env.PIWHEELS_BUILD = false
if.env.RAPIDFUZZ_BUILD_EXTENSION = false
wheel.cmake = false
messages.after-success = "{yellow}Failed to build C++ Extension, falling back to pure Python Extension"
[[tool.scikit-build.overrides]]
if.any.env.CIBUILDWHEEL = true
if.any.env.CONDA_BUILD = true
if.any.env.PIWHEELS_BUILD = true
if.any.env.RAPIDFUZZ_BUILD_EXTENSION = true
wheel.cmake = true
messages.after-success = "{green}C++ Extension built successfully"
messages.after-failure = "{red}Failed to build C++ Extension in a packaged build"
[tool.scikit-build.metadata.version]
provider = "scikit_build_core.metadata.regex"
input = "src/rapidfuzz/__init__.py"
[tool.black]
line-length = 120
[tool.mypy]
files = ["src"]
python_version = "3.9"
warn_unused_configs = true
show_error_codes = true
enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"]
strict = true
disallow_untyped_defs = false
[tool.pytest.ini_options]
minversion = "6.0"
testpaths = ["tests"]
addopts = ["-ra", "--showlocals", "--strict-markers", "--strict-config"]
norecursedirs = ["_skbuild"]
xfail_strict = true
log_cli_level = "info"
[tool.pylint]
py-version = "3.9"
[tool.pylint.reports]
output-format = "colorized"
[tool.pylint.messages_control]
disable = [
"design",
"fixme",
"imports",
"line-too-long",
"imports",
"invalid-name",
"protected-access",
"missing-module-docstring",
]
[tool.ruff]
target-version = "py39"
src = ["src"]
exclude = []
[tool.ruff.lint]
select = [
"E", "F", "W", # flake8
"B", # flake8-bugbear
"I", # isort
"ARG", # flake8-unused-arguments
"C4", # flake8-comprehensions
"EM", # flake8-errmsg
"ICN", # flake8-import-conventions
"ISC", # flake8-implicit-str-concat
"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
]
extend-ignore = [
"PLR", # Design related pylint codes
"E501", # Line too long
"PT004", # Use underscore for non-returning fixture (use usefixture instead)
"PTH123", # use pathlib instead of builtin open
]
unfixable = [
"T20", # Removes print statements
"F841", # Removes unused variables
]
flake8-unused-arguments.ignore-variadic-names = true
isort.required-imports = ["from __future__ import annotations"]
[tool.ruff.lint.per-file-ignores]
"tests/**" = ["T20"]
"bench/**" = ["T20"]
"tools/**" = ["T20"]
"tools/test_process_typing.py" = ["ARG001"]
"_custom_build/backend.py" = ["T20"]
"setup.py" = ["T20"]