Skip to content

Commit a63b5f3

Browse files
chrisguidryclaude
andauthored
Migrate docs from mkdocs-material to Zensical (#343)
mkdocs-material has entered maintenance mode in favor of Zensical, which is built by the same team and reads mkdocs.yml directly. This swaps the docs dependencies and build command accordingly. Also removes a stale top-level sitecustomize.py that snuck in with #170, adds site/ to .gitignore, and updates the README with current Redis/Valkey test versions and a note on working with docs locally. Closes #273 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 5969e1e commit a63b5f3

File tree

9 files changed

+63
-79
lines changed

9 files changed

+63
-79
lines changed

.coveragerc-cli

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ parallel = true
66
include =
77
src/docket/cli/*
88
tests/cli/*
9+
tests/sitecustomize.py
910
exclude_also = ["\\.\\.\\.$"]

.coveragerc-core

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ omit =
1010
**/conftest.py
1111
tests/_key_leak_checker.py
1212
tests/_container.py
13+
tests/sitecustomize.py
1314
tests/cli/*.py
1415

1516
[report]

.github/workflows/docs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939
run: uv sync --group docs
4040

4141
- name: Build documentation
42-
run: uv run mkdocs build
42+
run: uv run zensical build
4343

4444
- name: Upload artifact
4545
uses: actions/upload-artifact@v6

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
__pycache__/
99
build/
1010
dist/
11+
site/
1112
wheels/
1213

1314
.coverage.*

README.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,8 @@ pip install pydocket
8484
Docket requires a [Redis](http://redis.io/) server with Streams support (which was
8585
introduced in Redis 5.0.0). Docket is tested with:
8686

87-
- Redis 6.2, 7.4, and 8.0 (standalone and cluster modes)
88-
- [Valkey](https://valkey.io/) 8.0
87+
- Redis 6.2, 7.4, and 8.6 (standalone and cluster modes)
88+
- [Valkey](https://valkey.io/) 8.1
8989
- In-memory backend via [fakeredis](https://github.com/cunla/fakeredis-py) for testing
9090

9191
For testing without Redis, use the in-memory backend:
@@ -120,3 +120,13 @@ believe that `docket` should stay small, simple, understandable, and reliable, a
120120
begins with testing all the dusty branches and corners. This will give us the
121121
confidence to upgrade dependencies quickly and to adapt to new versions of Redis over
122122
time.
123+
124+
To work on the documentation locally:
125+
126+
```bash
127+
uv sync --group docs
128+
uv run zensical serve
129+
```
130+
131+
This will start a local preview server. The docs are built with
132+
[Zensical](https://zensical.dev/) and configured in `mkdocs.yml`.

pyproject.toml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,8 @@ dev = [
7575
]
7676

7777
docs = [
78-
"mkdocs>=1.5.3",
79-
"mkdocs-material>=9.7.1",
80-
"mkdocstrings>=0.24.1",
78+
"zensical",
79+
"mkdocstrings>=1.0.2",
8180
"mkdocstrings-python>=2.0.1",
8281
]
8382
examples = [
@@ -145,6 +144,8 @@ omit = [
145144
# Test infrastructure with conditional branches for cluster/standalone
146145
"tests/_key_leak_checker.py",
147146
"tests/_container.py",
147+
# Subprocess coverage hook, exercised by CLI tests only
148+
"tests/sitecustomize.py",
148149
]
149150
branch = true
150151
parallel = true

tests/cli/run.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,10 @@ async def run_cli(
2929
if has_pytest_cov:
3030
argv = [same_python, "-m", "docket", *args] # pragma: no cover
3131
else:
32-
# Try sitecustomize auto-start first
3332
merged_env.setdefault("COVERAGE_PROCESS_START", "pyproject.toml")
34-
# Ensure *this repo* (where sitecustomize.py lives) is on PYTHONPATH
35-
repo_root = os.path.abspath(os.getcwd())
33+
tests_dir = os.path.join(os.path.abspath(os.getcwd()), "tests")
3634
merged_env["PYTHONPATH"] = os.pathsep.join(
37-
[repo_root, merged_env.get("PYTHONPATH", "")]
35+
[tests_dir, merged_env.get("PYTHONPATH", "")]
3836
)
3937
argv = [same_python, "-m", "docket", *args]
4038

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
# This file ensures that we can collect coverage data for the CLI when it's running in a subprocess
21
import os
32

43
if os.getenv("COVERAGE_PROCESS_START"):

uv.lock

Lines changed: 41 additions & 68 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)