mirror of
https://github.com/openzim/zimit.git
synced 2025-08-03 10:16:08 -04:00
226 lines
5.2 KiB
TOML
226 lines
5.2 KiB
TOML
[build-system]
|
|
requires = ["hatchling", "hatch-openzim"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[project]
|
|
name = "zimit"
|
|
requires-python = ">=3.13,<3.14"
|
|
description = "Make ZIM file from any website through crawling"
|
|
readme = "README.md"
|
|
dependencies = [
|
|
"requests==2.32.3",
|
|
"inotify==0.2.10",
|
|
"tld==0.13",
|
|
"warc2zim @ git+https://github.com/openzim/warc2zim@main",
|
|
]
|
|
dynamic = ["authors", "classifiers", "keywords", "license", "version", "urls"]
|
|
|
|
[tool.hatch.metadata.hooks.openzim-metadata]
|
|
kind = "scraper"
|
|
|
|
[tool.hatch.metadata]
|
|
allow-direct-references = true # to be removed once we use a released warc2zim version
|
|
|
|
[project.optional-dependencies]
|
|
scripts = [
|
|
"invoke==2.2.0",
|
|
]
|
|
lint = [
|
|
"black==25.1.0",
|
|
"ruff==0.9.4",
|
|
]
|
|
check = [
|
|
"pyright==1.1.393",
|
|
]
|
|
test = [
|
|
"pytest==8.3.4",
|
|
"coverage==7.6.10",
|
|
]
|
|
dev = [
|
|
"pre-commit==4.1.0",
|
|
"debugpy==1.8.12",
|
|
"selenium==4.28.1", # used in daily tests, convenient for dev purpose (autocompletion)
|
|
"zimit[scripts]",
|
|
"zimit[lint]",
|
|
"zimit[test]",
|
|
"zimit[check]",
|
|
]
|
|
|
|
[project.scripts]
|
|
zimit = "zimit:zimit.zimit"
|
|
|
|
[tool.hatch.version]
|
|
path = "src/zimit/__about__.py"
|
|
|
|
[tool.hatch.build]
|
|
exclude = [
|
|
"/.github",
|
|
]
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/zimit"]
|
|
|
|
[tool.hatch.envs.default]
|
|
features = ["dev"]
|
|
|
|
[tool.hatch.envs.test]
|
|
features = ["scripts", "test"]
|
|
|
|
[tool.hatch.envs.test.scripts]
|
|
run = "inv test --args '{args}'"
|
|
run-cov = "inv test-cov --args '{args}'"
|
|
report-cov = "inv report-cov"
|
|
coverage = "inv coverage --args '{args}'"
|
|
html = "inv coverage --html --args '{args}'"
|
|
|
|
[tool.hatch.envs.lint]
|
|
template = "lint"
|
|
skip-install = false
|
|
features = ["scripts", "lint"]
|
|
|
|
[tool.hatch.envs.lint.scripts]
|
|
black = "inv lint-black --args '{args}'"
|
|
ruff = "inv lint-ruff --args '{args}'"
|
|
all = "inv lintall --args '{args}'"
|
|
fix-black = "inv fix-black --args '{args}'"
|
|
fix-ruff = "inv fix-ruff --args '{args}'"
|
|
fixall = "inv fixall --args '{args}'"
|
|
|
|
[tool.hatch.envs.check]
|
|
features = ["scripts", "check"]
|
|
|
|
[tool.hatch.envs.check.scripts]
|
|
pyright = "inv check-pyright --args '{args}'"
|
|
all = "inv checkall --args '{args}'"
|
|
|
|
[tool.black]
|
|
line-length = 88
|
|
target-version = ['py313']
|
|
|
|
[tool.ruff]
|
|
target-version = "py313"
|
|
line-length = 88
|
|
src = ["src"]
|
|
|
|
[tool.ruff.lint]
|
|
select = [
|
|
"A", # flake8-builtins
|
|
# "ANN", # flake8-annotations
|
|
"ARG", # flake8-unused-arguments
|
|
# "ASYNC", # flake8-async
|
|
"B", # flake8-bugbear
|
|
# "BLE", # flake8-blind-except
|
|
"C4", # flake8-comprehensions
|
|
"C90", # mccabe
|
|
# "COM", # flake8-commas
|
|
# "D", # pydocstyle
|
|
# "DJ", # flake8-django
|
|
"DTZ", # flake8-datetimez
|
|
"E", # pycodestyle (default)
|
|
"EM", # flake8-errmsg
|
|
# "ERA", # eradicate
|
|
# "EXE", # flake8-executable
|
|
"F", # Pyflakes (default)
|
|
# "FA", # flake8-future-annotations
|
|
"FBT", # flake8-boolean-trap
|
|
# "FLY", # flynt
|
|
# "G", # flake8-logging-format
|
|
"I", # isort
|
|
"ICN", # flake8-import-conventions
|
|
# "INP", # flake8-no-pep420
|
|
# "INT", # flake8-gettext
|
|
"ISC", # flake8-implicit-str-concat
|
|
"N", # pep8-naming
|
|
# "NPY", # NumPy-specific rules
|
|
# "PD", # pandas-vet
|
|
# "PGH", # pygrep-hooks
|
|
# "PIE", # flake8-pie
|
|
# "PL", # Pylint
|
|
"PLC", # Pylint: Convention
|
|
"PLE", # Pylint: Error
|
|
"PLR", # Pylint: Refactor
|
|
"PLW", # Pylint: Warning
|
|
# "PT", # flake8-pytest-style
|
|
# "PTH", # flake8-use-pathlib
|
|
# "PYI", # flake8-pyi
|
|
"Q", # flake8-quotes
|
|
# "RET", # flake8-return
|
|
# "RSE", # flake8-raise
|
|
"RUF", # Ruff-specific rules
|
|
"S", # flake8-bandit
|
|
# "SIM", # flake8-simplify
|
|
# "SLF", # flake8-self
|
|
"T10", # flake8-debugger
|
|
"T20", # flake8-print
|
|
# "TCH", # flake8-type-checking
|
|
# "TD", # flake8-todos
|
|
"TID", # flake8-tidy-imports
|
|
# "TRY", # tryceratops
|
|
"UP", # pyupgrade
|
|
"W", # pycodestyle
|
|
"YTT", # flake8-2020
|
|
]
|
|
ignore = [
|
|
# Allow non-abstract empty methods in abstract base classes
|
|
"B027",
|
|
# Remove flake8-errmsg since we consider they bloat the code and provide limited value
|
|
"EM",
|
|
# Allow boolean positional values in function calls, like `dict.get(... True)`
|
|
"FBT003",
|
|
# Ignore checks for possible passwords
|
|
"S105", "S106", "S107",
|
|
# Ignore warnings on subprocess.run / popen
|
|
"S603",
|
|
# Ignore complexity
|
|
"C901", "PLR0911", "PLR0912", "PLR0913", "PLR0915",
|
|
]
|
|
unfixable = [
|
|
# Don't touch unused imports
|
|
"F401",
|
|
]
|
|
|
|
[tool.ruff.lint.isort]
|
|
known-first-party = ["zimit"]
|
|
|
|
[tool.ruff.lint.flake8-bugbear]
|
|
# add exceptions to B008 for fastapi.
|
|
extend-immutable-calls = ["fastapi.Depends", "fastapi.Query"]
|
|
|
|
[tool.ruff.lint.flake8-tidy-imports]
|
|
ban-relative-imports = "all"
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
# Tests can use magic values, assertions, and relative imports
|
|
"tests**/**/*" = ["PLR2004", "S101", "TID252"]
|
|
|
|
[tool.pytest.ini_options]
|
|
minversion = "7.3"
|
|
testpaths = ["tests"]
|
|
pythonpath = [".", "src"]
|
|
|
|
[tool.coverage.paths]
|
|
zimit = ["src/zimit"]
|
|
tests = ["tests"]
|
|
|
|
[tool.coverage.run]
|
|
source_pkgs = ["zimit"]
|
|
branch = true
|
|
parallel = true
|
|
omit = [
|
|
"src/zimit/__about__.py",
|
|
]
|
|
|
|
[tool.coverage.report]
|
|
exclude_lines = [
|
|
"no cov",
|
|
"if __name__ == .__main__.:",
|
|
"if TYPE_CHECKING:",
|
|
]
|
|
|
|
[tool.pyright]
|
|
include = ["src", "tests", "tasks.py"]
|
|
exclude = [".env/**", ".venv/**"]
|
|
extraPaths = ["src"]
|
|
pythonVersion = "3.13"
|
|
typeCheckingMode="basic"
|