You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-Celery and CLI deps are optional; guard imports inside `taskbadger/celery.py`, `taskbadger/systems/celery.py`, `taskbadger/cli/`.
46
+
-Extras (`celery`, `procrastinate`, `cli`, `sentry`) are all optional; keep their imports inside the corresponding module (`taskbadger/celery.py`, `taskbadger/procrastinate.py`, `taskbadger/systems/`, `taskbadger/cli/`, `taskbadger/context_providers/sentry.py`).
44
47
-`taskbadger/internal/*` is generator output — lint is best-effort, don't reformat manually.
45
48
49
+
## Commits and PRs
50
+
51
+
Conventional Commits for commit subjects and PR titles: `type(scope): summary`.
52
+
53
+
- Types: `feat``fix``docs``chore``refactor``perf``test``ci`. Breaking: `feat!:` / `fix!:` plus a `BREAKING CHANGE:` footer.
-**Label every PR with its type** (`feat`, `fix`, …). Release notes are auto-generated from PR titles and grouped by label via `.github/release.yml`; an unlabelled PR falls into "Other Changes".
56
+
- PRs merge as merge commits, so only PR titles reach the changelog — commit subjects are history hygiene.
57
+
46
58
## Releasing
47
59
48
60
```bash
@@ -54,5 +66,8 @@ GitHub Actions then drafts a release; publishing the release triggers `publish.y
54
66
## Gotchas
55
67
56
68
-`pytest` skips `integration_tests/` via `norecursedirs` — name them explicitly to run.
57
-
- Integration tests need `TASKBADGER_ORG`, `TASKBADGER_PROJECT`, `TASKBADGER_API_KEY` env vars and a running Redis.
58
-
- Imports of `celery`, `typer`, `rich` must stay optional — only the core httpx/attrs deps are guaranteed.
69
+
- Integration tests need `TASKBADGER_ORG`, `TASKBADGER_PROJECT`, `TASKBADGER_API_KEY`, a running Redis, and Postgres via `PROCRASTINATE_DSN` (defaults to `postgresql://postgres:postgres@localhost:5432/procrastinate`).
70
+
- Unit tests also need Redis — `tests/conftest.py` points Celery at `redis://localhost:6379` so serialization is exercised for real.
71
+
- Don't unpin `openapi-python-client<0.29` — 0.29 generates `datetime.fromisoformat` calls that can't parse the API's `Z`-suffixed timestamps on Python 3.10.
72
+
- User-facing features are documented in `README.md`, not a docs site — add a section there when adding one.
73
+
- Only the core httpx/attrs/dateutil/tomlkit deps are guaranteed at runtime.
0 commit comments