Skip to content

Commit 5793a6a

Browse files
zeevdrclaude
andcommitted
docs: add mkdocs-material site with GH Pages deploy
Add MkDocs Material documentation site targeting https://opendecree.github.io/decree-python. - mkdocs.yml with Material theme (teal/cyan palette), mkdocstrings plugin, nav structure - docs/index.md: intro, install, quick start, examples table - docs/guide/connect.md: all client options (auth, TLS, retry, timeouts, OTel, errors) - docs/guide/watch.md: watcher lifecycle, WatchedField API, async, fork safety - docs/api/index.md: auto-generated reference via mkdocstrings for all public classes and errors - .github/workflows/docs.yml: builds and deploys to GH Pages on push to main and version tags - sdk/pyproject.toml: adds docs optional-dependencies group, updates Documentation URL - README.md: adds docs badge linking to the site Closes #8 Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 18a275d commit 5793a6a

8 files changed

Lines changed: 711 additions & 1 deletion

File tree

.github/workflows/docs.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Deploy Docs
2+
3+
on:
4+
push:
5+
branches: [main]
6+
tags: ["v*.*.*"]
7+
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
jobs:
14+
build:
15+
runs-on: ubuntu-latest
16+
steps:
17+
- uses: actions/checkout@v4
18+
- uses: actions/setup-python@v5
19+
with:
20+
python-version: "3.12"
21+
- run: pip install mkdocs-material mkdocstrings[python]
22+
- run: mkdocs build
23+
- uses: actions/upload-pages-artifact@v3
24+
with:
25+
path: site/
26+
27+
deploy:
28+
needs: build
29+
environment:
30+
name: github-pages
31+
url: ${{ steps.deployment.outputs.page_url }}
32+
runs-on: ubuntu-latest
33+
steps:
34+
- uses: actions/deploy-pages@v4
35+
id: deployment

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
[![License](https://img.shields.io/github/license/opendecree/decree-python)](LICENSE)
88
[![Project Status: WIP](https://www.repostatus.org/badges/latest/wip.svg)](https://www.repostatus.org/#wip)
99
[![codecov](https://codecov.io/gh/opendecree/decree-python/graph/badge.svg)](https://codecov.io/gh/opendecree/decree-python)
10+
[![Docs](https://img.shields.io/badge/docs-opendecree.github.io-teal)](https://opendecree.github.io/decree-python)
1011
[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/opendecree/decree-python)
1112

1213
Python SDK for [OpenDecree](https://github.com/opendecree/decree) — schema-driven configuration management.

docs/api/index.md

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
# API Reference
2+
3+
Auto-generated from source docstrings.
4+
5+
## Clients
6+
7+
### ConfigClient
8+
9+
::: opendecree.ConfigClient
10+
options:
11+
show_source: false
12+
13+
### AsyncConfigClient
14+
15+
::: opendecree.AsyncConfigClient
16+
options:
17+
show_source: false
18+
19+
## Watchers
20+
21+
### ConfigWatcher
22+
23+
::: opendecree.ConfigWatcher
24+
options:
25+
show_source: false
26+
27+
### WatchedField
28+
29+
::: opendecree.WatchedField
30+
options:
31+
show_source: false
32+
33+
### AsyncConfigWatcher
34+
35+
::: opendecree.AsyncConfigWatcher
36+
options:
37+
show_source: false
38+
39+
### AsyncWatchedField
40+
41+
::: opendecree.AsyncWatchedField
42+
options:
43+
show_source: false
44+
45+
## Data Types
46+
47+
### Change
48+
49+
::: opendecree.Change
50+
options:
51+
show_source: false
52+
53+
### FieldUpdate
54+
55+
::: opendecree.FieldUpdate
56+
options:
57+
show_source: false
58+
59+
### ServerVersion
60+
61+
::: opendecree.ServerVersion
62+
options:
63+
show_source: false
64+
65+
### RetryConfig
66+
67+
::: opendecree.RetryConfig
68+
options:
69+
show_source: false
70+
71+
## Exceptions
72+
73+
### DecreeError
74+
75+
::: opendecree.DecreeError
76+
options:
77+
show_source: false
78+
79+
### NotFoundError
80+
81+
::: opendecree.NotFoundError
82+
options:
83+
show_source: false
84+
85+
### AlreadyExistsError
86+
87+
::: opendecree.AlreadyExistsError
88+
options:
89+
show_source: false
90+
91+
### InvalidArgumentError
92+
93+
::: opendecree.InvalidArgumentError
94+
options:
95+
show_source: false
96+
97+
### LockedError
98+
99+
::: opendecree.LockedError
100+
options:
101+
show_source: false
102+
103+
### ChecksumMismatchError
104+
105+
::: opendecree.ChecksumMismatchError
106+
options:
107+
show_source: false
108+
109+
### PermissionDeniedError
110+
111+
::: opendecree.PermissionDeniedError
112+
options:
113+
show_source: false
114+
115+
### UnavailableError
116+
117+
::: opendecree.UnavailableError
118+
options:
119+
show_source: false
120+
121+
### TypeMismatchError
122+
123+
::: opendecree.TypeMismatchError
124+
options:
125+
show_source: false
126+
127+
### IncompatibleServerError
128+
129+
::: opendecree.IncompatibleServerError
130+
options:
131+
show_source: false
132+
133+
### TimeoutError
134+
135+
::: opendecree.TimeoutError
136+
options:
137+
show_source: false
138+
139+
### ResourceExhaustedError
140+
141+
::: opendecree.ResourceExhaustedError
142+
options:
143+
show_source: false
144+
145+
### CancelledError
146+
147+
::: opendecree.CancelledError
148+
options:
149+
show_source: false
150+
151+
### UnimplementedError
152+
153+
::: opendecree.UnimplementedError
154+
options:
155+
show_source: false

0 commit comments

Comments
 (0)