DevPlace CI / test (push) Failing after 27m37s
config.STATIC_VERSION becomes f"{APP_VERSION}-{BOOT_ID}": APP_VERSION is
read live from pyproject.toml's version (auto-bumped on every commit by
.githooks/pre-commit), BOOT_ID is the same per-process launch marker as
before (DEVPLACE_STATIC_VERSION env or a wall-clock fallback). The static
asset URL /static/v<version>/... now names the actual commit's version
alongside the boot marker, instead of a bare timestamp.
Fixes nginx/nginx.conf.template's versioned-mount location regex, which
matched digits only (^/static/v\d+/) and would have silently dropped the
immutable, max-age=31536000 cache header for every asset in production
once the version segment carried a dot or hyphen. Verified live against a
running instance that the header still applies to the new URL shape.
Updates README, devplacepy/static/js/CLAUDE.md, and the
/docs/static-caching.html page to describe the new APP_VERSION/BOOT_ID
composition.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TwLhnueWrsK15wrieXE5m7
62 lines
1.3 KiB
TOML
62 lines
1.3 KiB
TOML
[project]
|
|
name = "devplacepy"
|
|
version = "1.0.3"
|
|
description = "DevPlace - The Developer Social Network"
|
|
requires-python = ">=3.12"
|
|
dependencies = [
|
|
"fastapi",
|
|
"uvicorn[standard]",
|
|
"jinja2",
|
|
"python-multipart",
|
|
"dataset",
|
|
"passlib[bcrypt]",
|
|
"python-dotenv",
|
|
"aiofiles",
|
|
"httpx[http2]",
|
|
"curl_cffi",
|
|
"brotli",
|
|
"zstandard",
|
|
"cryptography",
|
|
"PyJWT",
|
|
"multiavatar",
|
|
"locust",
|
|
"Pillow",
|
|
"imagehash",
|
|
"uuid_utils",
|
|
"mistune",
|
|
"emoji",
|
|
"pypdf",
|
|
"playwright",
|
|
"playwright-stealth",
|
|
"chromadb",
|
|
"weasyprint",
|
|
"cairosvg",
|
|
"sqlglot",
|
|
"curl_cffi",
|
|
"faker",
|
|
"defusedxml",
|
|
]
|
|
|
|
[project.scripts]
|
|
devplace = "devplacepy.cli:main"
|
|
devii = "devplacepy.services.devii.cli:main"
|
|
devplace-xmlrpc = "devplacepy.services.xmlrpc.server:main"
|
|
|
|
[project.optional-dependencies]
|
|
dev = ["pytest", "playwright", "requests", "coverage"]
|
|
bots = ["playwright", "faker"]
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests/unit", "tests/api", "tests/e2e"]
|
|
python_files = ["*.py"]
|
|
addopts = "--tb=line -rf -p no:xdist"
|
|
filterwarnings = [
|
|
"ignore:'crypt' is deprecated",
|
|
"ignore:Using `httpx` with `starlette.testclient` is deprecated",
|
|
"ignore:invalid escape sequence",
|
|
]
|