Closes #15, #22, #24, #25. Closes #1 and #27 (already shipped in 0.2.0). ## CI/CD (#22) - .forgejo/workflows/ci.yml — Python lint (ruff) + pytest + Vue typecheck + vitest on every PR/push. Installs cf-core from GitHub mirror for the CI runner. - .forgejo/workflows/release.yml — Docker build/push (api + web) to Forgejo registry on v* tags; git-cliff changelog; multi-arch amd64+arm64. - .forgejo/workflows/mirror.yml — push to GitHub + Codeberg mirrors. ## Self-hosted installer (#25) - install.sh rewritten to match CF installer pattern: coloured output, named functions, --docker / --bare-metal / --help flags, auto-detect Docker/conda/ Python/Node/Chromium/Xvfb, license key prompting with format validation. ## Nginx docs (#24) - docs/nginx-self-hosted.conf — sample nginx config: SPA fallback, SSE proxy (proxy_buffering off), long-term asset cache headers. - docs/getting-started/installation.md — bare-metal install section with nginx setup, Chromium/Xvfb note, serve-ui.sh vs nginx trade-off. ## cf-orch agent (#15) - compose.override.yml — cf-orch-agent sidecar service (profiles: [orch]). Starts only with docker compose --profile orch. Registers with coordinator at CF_ORCH_COORDINATOR_URL (default 10.1.10.71:7700). - .env.example — CF_ORCH_URL / CF_ORCH_COORDINATOR_URL comments expanded. ## Docs - mkdocs.yml + full docs/ tree (getting-started, reference, user-guide) staged from prior session work. Bump version 0.2.0 → 0.3.0.
54 lines
1.3 KiB
TOML
54 lines
1.3 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=68"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "snipe"
|
|
version = "0.3.0"
|
|
description = "Auction listing monitor and trust scorer"
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
"circuitforge-core>=0.8.0",
|
|
"streamlit>=1.32",
|
|
"requests>=2.31",
|
|
"imagehash>=4.3",
|
|
"Pillow>=10.0",
|
|
"python-dotenv>=1.0",
|
|
"beautifulsoup4>=4.12",
|
|
"lxml>=5.0",
|
|
"fastapi>=0.111",
|
|
"python-multipart>=0.0.9",
|
|
"uvicorn[standard]>=0.29",
|
|
"playwright>=1.44",
|
|
"playwright-stealth>=1.0",
|
|
"cryptography>=42.0",
|
|
"PyJWT>=2.8",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"pytest>=8.0",
|
|
"pytest-cov>=5.0",
|
|
"ruff>=0.4",
|
|
"httpx>=0.27", # FastAPI test client
|
|
]
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["."]
|
|
include = ["app*", "api*"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py311"
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "W", "I"]
|
|
ignore = [
|
|
"E501", # line length — handled by formatter
|
|
"E402", # module-import-not-at-top — intentional for conditional/lazy imports
|
|
"E701", # multiple-statements-colon — `if x: return y` is accepted style
|
|
"E741", # ambiguous variable name — l/q used intentionally for listing/query
|
|
]
|