mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-11-02 03:41:41 +00:00
LICENSE_TRIAL_DAYS now defaults to 14, and the site, READMEs, docs and plans say 14 days. The backend version moves to 0.1.1.
56 lines
2.2 KiB
TOML
56 lines
2.2 KiB
TOML
[project]
|
|
name = "surfsense-backend"
|
|
version = "0.1.1"
|
|
description = "The one SurfSense backend: the license portal and every SurfSense plugin, each at /<id>/mcp."
|
|
requires-python = ">=3.12"
|
|
license = { text = "Apache-2.0" }
|
|
# Every module's dependencies, every plugin's included: the backend is one project and one image.
|
|
dependencies = [
|
|
# The minor version the app's client is pinned to.
|
|
"mcp>=2.3,<2.4",
|
|
"uvicorn[standard]>=0.34.0",
|
|
# What mcp itself speaks HTTP with; the license check calls Keygen with it.
|
|
"httpx2>=2.10.0",
|
|
# Passes a Stop to the copy of the host running the call.
|
|
"redis>=5.2",
|
|
# The scraper plugins' fetchers and stealth browsers; `scrapling install` adds the browsers.
|
|
# Exact: the shared browser pool reuses its private context and challenge helpers,
|
|
# and a contract test fails on an upgrade that moves them.
|
|
"scrapling[fetchers]==0.4.15",
|
|
# The shared fail-fast transport speaks curl_cffi directly and reads JSON with orjson.
|
|
"curl_cffi>=0.16.3",
|
|
"orjson>=3.13.0",
|
|
# YouTube's subtitles.
|
|
"youtube-transcript-api>=1.0.3",
|
|
"fake-useragent>=2.2.0",
|
|
"requests>=2.33",
|
|
# Web Crawl's page text, its markdown and its URL checks.
|
|
"trafilatura>=2.0.0",
|
|
"markdownify>=0.14.1",
|
|
"validators>=0.34.0",
|
|
# The license portal's: the versions surfsense_backend ran it on, so the move changes no behaviour.
|
|
# The backend's app; the license routes were written for it.
|
|
"fastapi>=0.161.1",
|
|
"stripe>=15.0.0,<16",
|
|
"email-validator>=2.3.0",
|
|
"disposable-email-domains>=0.0.271",
|
|
"posthog>=7.28.0,<8",
|
|
]
|
|
|
|
[dependency-groups]
|
|
dev = ["pytest>=8.0", "pytest-asyncio>=0.24", "ruff>=0.8"]
|
|
|
|
[tool.uv]
|
|
package = false
|
|
|
|
[tool.pytest.ini_options]
|
|
# Two import roots: backend/ for server, and backend/plugins/ for host, mcp_server
|
|
# and proprietary, so no plugin's imports changed when plugins/ moved here.
|
|
pythonpath = [".", "plugins"]
|
|
testpaths = ["server", "license", "mailer", "plugins/host/tests", "plugins/proprietary"]
|
|
addopts = "-v --tb=short -ra --strict-markers --import-mode=importlib"
|
|
asyncio_mode = "auto"
|
|
markers = [
|
|
"unit: pure logic, no external service",
|
|
"integration: a real Keygen or SMTP server, opted into by its own variable",
|
|
]
|