Files
upbeatBytes/pyproject.toml
T
thejayman77 9cdcda5e02 Durability pass: tests, clearer diversity/classify behavior, Calm Filters foundation
- Add pytest suite (34 tests) covering scoring thresholds, dedup clustering +
  representative selection + time window, brief source/category diversity,
  avoid-term phrase matching, and text canonicalization/truncation.
- Rewrite _select_diverse with an explicit, tested contract (best-first, one
  per source, backfill, then inject a second category by evicting the
  lowest-ranked pick).
- classify_articles now returns attempted/succeeded/skipped (ClassifyReport) so
  silent model failures are visible in both the cycle and classify output.
- Fix clean_text truncation to stay within max_len (ellipsis no longer
  overshoots).
- New filters.py: canonical FilterPrefs shape (include/mute topics+flavors,
  avoid_terms, pauses) and pure word/phrase-boundary matching engine seeding
  Calm Filters. Not yet wired into the API.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 19:07:31 +00:00

32 lines
695 B
TOML

[build-system]
requires = ["setuptools>=68"]
build-backend = "setuptools.build_meta"
[project]
name = "goodnews"
version = "0.1.0"
description = "Local-first constructive news ingestion and filtering prototype."
requires-python = ">=3.11"
# The ingestion CLI is intentionally pure-stdlib. The optional `web` extra adds
# the API/site layer so the two halves can be deployed and upgraded independently.
dependencies = []
[project.optional-dependencies]
web = [
"fastapi>=0.110",
"uvicorn[standard]>=0.29",
]
test = [
"pytest>=8",
]
[project.scripts]
goodnews = "goodnews.cli:main"
[tool.setuptools]
packages = ["goodnews"]
[tool.setuptools.package-data]
goodnews = ["static/*"]