Skip to content

Commit ee1a453

Browse files
committed
docs linting workflow
1 parent 79b422a commit ee1a453

8 files changed

Lines changed: 32 additions & 14 deletions

File tree

‎.github/workflows/check.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,4 @@ jobs:
6767
- name: Check docs build
6868
run: hatch run docs:build
6969
- name: Check docs examples
70-
run: hatch fmt docs --check
70+
run: hatch run docs:check

‎docs/examples/passing_props_to_a_component/changing/app.py‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import asyncio
2-
from datetime import datetime, timezone
2+
from datetime import UTC, datetime
33

44
from reactpy import component, html, use_async_effect, use_state
55

@@ -14,12 +14,12 @@ def clock(color, time):
1414
@component
1515
def app():
1616
color, set_color = use_state("lightcoral")
17-
now, set_now = use_state(datetime.now(timezone.utc))
17+
now, set_now = use_state(datetime.now(UTC))
1818

1919
async def tick():
2020
while True:
2121
await asyncio.sleep(1)
22-
set_now(datetime.now(timezone.utc))
22+
set_now(datetime.now(UTC))
2323

2424
use_async_effect(tick, dependencies=[])
2525

‎docs/examples/reference_use_effect/async_clock/app.py‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
# start
22
import asyncio
3-
from datetime import datetime, timezone
3+
from datetime import UTC, datetime
44

55
from reactpy import component, html, use_async_effect, use_state
66

77

88
@component
99
def clock():
10-
now, set_now = use_state(datetime.now(timezone.utc))
10+
now, set_now = use_state(datetime.now(UTC))
1111

1212
async def effect():
1313
# Zero arguments. A long-running effect loops and honours cancellation.
1414
while True:
15-
set_now(datetime.now(timezone.utc))
15+
set_now(datetime.now(UTC))
1616
try:
1717
await asyncio.sleep(1)
1818
except asyncio.CancelledError:

‎docs/examples/render_and_commit/re_render/app.py‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
import asyncio
2-
from datetime import datetime, timezone
2+
from datetime import UTC, datetime
33

44
from reactpy import component, html, use_async_effect, use_state
55

66

77
# start
88
@component
99
def clock():
10-
now, set_now = use_state(datetime.now(timezone.utc))
10+
now, set_now = use_state(datetime.now(UTC))
1111

1212
async def tick():
1313
while True:
1414
await asyncio.sleep(1)
15-
set_now(datetime.now(timezone.utc))
15+
set_now(datetime.now(UTC))
1616

1717
use_async_effect(tick, dependencies=[])
1818

‎docs/examples/reusing_logic_with_custom_hooks/hook_order_safe/app.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
def use_profile(show_nickname):
1010
name, set_name = use_state("name")
1111
# the hook is called unconditionally; only the returned value is conditional
12-
nickname, set_nickname = use_state("nickname")
12+
nickname, _set_nickname = use_state("nickname")
1313
bio, set_bio = use_state("bio")
1414
return name, (nickname if show_nickname else "-"), bio, set_bio
1515

@@ -19,7 +19,7 @@ def profile(show_nickname):
1919
name, nickname, bio, set_bio = use_profile(show_nickname)
2020

2121
async def extend_bio(event):
22-
set_bio(bio + "!")
22+
set_bio(f"{bio}!")
2323

2424
return html.div(
2525
html.button({"onClick": extend_bio}, f"bio={bio}"),

‎docs/examples/reusing_logic_with_custom_hooks/hook_order_violation/app.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def profile(show_nickname):
2424
name, nickname, bio, set_bio = use_profile(show_nickname)
2525

2626
async def extend_bio(event):
27-
set_bio(bio + "!")
27+
set_bio(f"{bio}!")
2828

2929
return html.div(
3030
html.button({"onClick": extend_bio}, f"bio={bio}"),

‎docs/examples/thinking_in_react/use_state.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
# start
55
@component
66
def filterable_product_table(products):
7-
filter_text, set_filter_text = use_state("")
7+
_filter_text, _set_filter_text = use_state("")
88
in_stock_only, set_in_stock_only = use_state(False)

‎pyproject.toml‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,10 +144,17 @@ dependencies = [
144144
"mkdocs-minify-plugin",
145145
"mike",
146146
"linkcheckmd",
147+
"pyright",
148+
"starlette",
149+
"orjson",
150+
"asgi_tools",
151+
"servestatic",
152+
"websockets"
147153
]
148154

149155
[tool.hatch.envs.docs.scripts]
150156
serve = ["cd docs && mkdocs serve"]
157+
check = ["hatch check code docs/ && hatch check fmt docs/ && pyright docs/"]
151158
build = ["cd docs && mkdocs build --strict"]
152159
linkcheck = [
153160
"linkcheckMarkdown docs/ -v -r",
@@ -337,6 +344,17 @@ known-third-party = ["js"]
337344
"S102",
338345
# Allow print
339346
"T201",
347+
# Docs render these files as teaching snippets, not importable modules.
348+
# Relative imports (`from .my_button import my_button`) are what the docs
349+
# deliberately teach, snippets unpack both halves of `use_state()` to show
350+
# the full signature even when one half is unused, and each snippet file is
351+
# standalone rather than part of a package.
352+
"TID252",
353+
"RUF059",
354+
"INP001",
355+
# "Keeping Components Pure" has to mutate a module-level variable with
356+
# `global` in order to demonstrate why that is wrong.
357+
"PLW0603",
340358
]
341359
"scripts/**/*.py" = [
342360
# Allow print

0 commit comments

Comments
 (0)