Allow to run CI checks locally

Now the developer is able to run the checks easily and locally (by
following the instructions in nova3/README.md).

PR #23262.
This commit is contained in:
Chocobo1
2025-09-14 22:17:23 +08:00
committed by GitHub
parent b0148ef36c
commit c075097acd
6 changed files with 142 additions and 32 deletions

4
src/searchengine/.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
*.egg-info
*.lock
*.pyc
*.pyi

View File

@@ -0,0 +1,46 @@
nova3 Engine
===
## Development Workflow
0. Prerequisite
* A Linux-like environment
* [Python](https://www.python.org/) installed
* [uv](https://docs.astral.sh/uv/) installed
1. Setup development environment
1. Setup virtual environment and dependencies
```shell
uv sync
```
2. Activate virtual environment
```shell
source .venv/bin/activate
```
2. Run type check
```shell
just check
```
3. Run static analyzer
```shell
just lint
```
4. Apply formatting
```shell
just format
```
## References
* [How to write a search plugin](https://github.com/qbittorrent/search-plugins/wiki/How-to-write-a-search-plugin)
* [just - Command runner](https://just.systems/man/en/)
* [uv - Python package and project manager](https://docs.astral.sh/uv/)

View File

@@ -0,0 +1,54 @@
PY_FILES := `find . -maxdepth 1 -type f -name '*.py' ! -name 'socks.py' -printf '%P '`
# Show available recipes to run
default:
just --list
# Run type check
check files=PY_FILES: fetch_aux
mypy \
{{ files }}
pyright \
{{ files }}
# Byte-compile files
build files=PY_FILES:
python \
-m compileall \
{{ files }}
# Fetch auxiliary files
[private]
fetch_aux:
#!/usr/bin/sh
if [ ! -f 'socks.pyi' ]; then
curl -L -o socks.pyi "https://github.com/python/typeshed/raw/refs/heads/main/stubs/PySocks/socks.pyi"
fi
# Apply formatting
format files=PY_FILES:
pycodestyle \
--ignore=E265,E402 \
--max-line-length=1000 \
--statistics \
{{ files }}
isort \
--line-length 1000 \
{{ files }}
just \
--fmt \
--unstable
# Run static analyzer
lint files=PY_FILES:
pyflakes \
{{ files }}
bandit \
--skip B110,B310,B314,B405 \
{{ files }}
# Run tests
test files='tests/*.py': fetch_aux
pytest \
--showlocals \
{{ files }}

View File

@@ -0,0 +1,25 @@
[project]
name = "qBittorrent-search-engine"
description = "Search engine for qBittorrent search feature"
readme = "README.md"
requires-python = ">=3.9"
dynamic = ["version"]
[dependency-groups]
dev = [
"bandit",
"isort",
"mypy",
"pycodestyle",
"pyflakes",
"pyright",
"pytest",
"rust-just",
]
[tool.mypy]
explicit_package_bases = true
strict = true
[tool.setuptools.packages.find]
where = ["./"]