Skip to content

Commit f6f13f0

Browse files
authored
Concurrent rendering naming fixes (#1211)
1 parent 4307a09 commit f6f13f0

File tree

4 files changed

+15
-13
lines changed

4 files changed

+15
-13
lines changed

docs/source/about/changelog.rst

+4-4
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ Unreleased
2626

2727
**Added**
2828

29-
- :pull:`1165` - Allow concurrent renders of discrete component tree - enable this
30-
experimental feature by setting `REACTPY_ASYNC_RENDERING=true`. This should improve
31-
the overall responsiveness of your app, particularly when handling larger renders
32-
that would otherwise block faster renders from being processed.
29+
- :pull:`1165` - Allow concurrently rendering discrete component trees - enable this
30+
experimental feature by setting `REACTPY_ASYNC_RENDERING=true`. This improves
31+
the overall responsiveness of your app in situations where larger renders would
32+
otherwise block smaller renders from executing.
3333

3434
**Changed**
3535

src/py/reactpy/reactpy/config.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,9 @@ def boolean(value: str | bool | int) -> bool:
8282
"""A default timeout for testing utilities in ReactPy"""
8383

8484
REACTPY_ASYNC_RENDERING = Option(
85-
"REACTPY_CONCURRENT_RENDERING",
85+
"REACTPY_ASYNC_RENDERING",
8686
default=False,
8787
mutable=True,
8888
validator=boolean,
8989
)
90-
"""Whether to render components concurrently. This is currently an experimental feature."""
90+
"""Whether to render components asynchronously. This is currently an experimental feature."""

src/py/reactpy/reactpy/core/layout.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ async def deliver(self, event: LayoutEventMessage) -> None:
129129

130130
async def render(self) -> LayoutUpdateMessage:
131131
if REACTPY_ASYNC_RENDERING.current:
132-
return await self._concurrent_render()
132+
return await self._parallel_render()
133133
else: # nocov
134134
return await self._serial_render()
135135

@@ -147,8 +147,10 @@ async def _serial_render(self) -> LayoutUpdateMessage: # nocov
147147
else:
148148
return await self._create_layout_update(model_state)
149149

150-
async def _concurrent_render(self) -> LayoutUpdateMessage:
151-
"""Await the next available render. This will block until a component is updated"""
150+
async def _parallel_render(self) -> LayoutUpdateMessage:
151+
"""Await to fetch the first completed render within our asyncio task group.
152+
We use the `asyncio.tasks.wait` API in order to return the first completed task.
153+
"""
152154
await self._render_tasks_ready.acquire()
153155
done, _ = await wait(self._render_tasks, return_when=FIRST_COMPLETED)
154156
update_task: Task[LayoutUpdateMessage] = done.pop()

src/py/reactpy/tests/test_core/test_layout.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232

3333

3434
@pytest.fixture(autouse=True, params=[True, False])
35-
def concurrent_rendering(request):
35+
def async_rendering(request):
3636
with patch.object(REACTPY_ASYNC_RENDERING, "current", request.param):
3737
yield request.param
3838

@@ -1252,9 +1252,9 @@ def App():
12521252
assert c["attributes"]["color"] == "blue"
12531253

12541254

1255-
async def test_concurrent_renders(concurrent_rendering):
1256-
if not concurrent_rendering:
1257-
raise pytest.skip("Concurrent rendering not enabled")
1255+
async def test_async_renders(async_rendering):
1256+
if not async_rendering:
1257+
raise pytest.skip("Async rendering not enabled")
12581258

12591259
child_1_hook = HookCatcher()
12601260
child_2_hook = HookCatcher()

0 commit comments

Comments
 (0)