Files
kennethreitz.org/pyproject.toml
kennethreitzandClaude Fable 5 ea406a22f8 Add test suite: pages, content, feeds, API, and full sitemap sweep
48 tests running in ~8s against an in-process client (api.requests),
so broad refactors now have a safety net. The sweep test fetches every
URL the sitemap advertises and names any that break.

Fixes found while writing them:
- Bare-slug legacy redirects failed for YYYY-MM-DD-named essays (the
  date-strip regex only handled the old YYYY-MM- format)
- Search index was only built by background cache warming, so /api/search
  returned empty results until (or unless) warming finished; it now
  builds lazily on first use
- Sitemap advertised /docs pages that no route serves; removed

Also: make test target, pytest config in pyproject.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 22:50:56 -04:00

56 lines
1.5 KiB
TOML

[project]
name = "tuftecms"
version = "0.1.0"
description = "A Flask-based CMS for thoughtful writing, inspired by Edward Tufte's design principles"
readme = "README.md"
requires-python = ">=3.14"
dependencies = [
"flask>=3.1.1",
"uvicorn[standard]>=0.32.0",
"asgiref>=3.8.0",
"mistune>=3.0.0",
"pyyaml>=6.0.0",
"weasyprint>=66.0",
"pillow>=11.3.0",
"gunicorn[gevent]>=21.0.0",
"responder[orjson]==9.0.0",
"granian>=2.7.2",
]
authors = [
{name = "Kenneth Reitz", email = "me@kennethreitz.org"}
]
license = {text = "MIT"}
keywords = ["cms", "flask", "markdown", "tufte", "sidenotes", "blog", "digital-garden"]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.14",
"Framework :: Flask",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
"Topic :: Software Development :: Libraries :: Application Frameworks",
]
[project.urls]
Homepage = "https://github.com/kennethreitz/tuftecms"
Repository = "https://github.com/kennethreitz/tuftecms"
Documentation = "https://github.com/kennethreitz/tuftecms#readme"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["tuftecms"]
[dependency-groups]
dev = [
"pytest>=9.1.1",
]
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "-q"
filterwarnings = ["ignore::DeprecationWarning"]