Skip to content

Commit 7b0bfb8

Browse files
committed
Remove reactpy.backend.hooks module
1 parent 4307a09 commit 7b0bfb8

File tree

7 files changed

+43
-43
lines changed

7 files changed

+43
-43
lines changed

src/py/reactpy/reactpy/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
from reactpy import backend, config, html, logging, sample, svg, types, web, widgets
2-
from reactpy.backend.hooks import use_connection, use_location, use_scope
32
from reactpy.backend.utils import run
43
from reactpy.core import hooks
54
from reactpy.core.component import component
65
from reactpy.core.events import event
76
from reactpy.core.hooks import (
87
create_context,
98
use_callback,
9+
use_connection,
1010
use_context,
1111
use_debug_value,
1212
use_effect,
13+
use_location,
1314
use_memo,
1415
use_reducer,
1516
use_ref,
17+
use_scope,
1618
use_state,
1719
)
1820
from reactpy.core.layout import Layout

src/py/reactpy/reactpy/backend/flask.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@
3535
safe_client_build_dir_path,
3636
safe_web_modules_dir_path,
3737
)
38-
from reactpy.backend.hooks import ConnectionContext
39-
from reactpy.backend.hooks import use_connection as _use_connection
38+
from reactpy.core.hooks import ConnectionContext
39+
from reactpy.core.hooks import use_connection as _use_connection
4040
from reactpy.backend.types import Connection, Location
4141
from reactpy.core.serve import serve_layout
4242
from reactpy.core.types import ComponentType, RootComponentConstructor
@@ -70,7 +70,8 @@ def configure(
7070
"""
7171
options = options or Options()
7272

73-
api_bp = Blueprint(f"reactpy_api_{id(app)}", __name__, url_prefix=str(PATH_PREFIX))
73+
api_bp = Blueprint(f"reactpy_api_{id(app)}",
74+
__name__, url_prefix=str(PATH_PREFIX))
7475
spa_bp = Blueprint(
7576
f"reactpy_spa_{id(app)}", __name__, url_prefix=options.url_prefix
7677
)
@@ -192,14 +193,15 @@ def recv() -> Any:
192193
_dispatch_in_thread(
193194
ws,
194195
# remove any url prefix from path
195-
path[len(options.url_prefix) :],
196+
path[len(options.url_prefix):],
196197
constructor(),
197198
send,
198199
recv,
199200
)
200201

201202
sock.route(STREAM_PATH.name, endpoint="without_path")(model_stream)
202-
sock.route(f"{STREAM_PATH.name}/<path:path>", endpoint="with_path")(model_stream)
203+
sock.route(f"{STREAM_PATH.name}/<path:path>",
204+
endpoint="with_path")(model_stream)
203205

204206

205207
def _dispatch_in_thread(
@@ -260,7 +262,8 @@ async def main() -> None:
260262
Thread(target=run_dispatcher, daemon=True).start()
261263

262264
dispatch_thread_info_created.wait()
263-
dispatch_thread_info = cast(_DispatcherThreadInfo, dispatch_thread_info_ref.current)
265+
dispatch_thread_info = cast(
266+
_DispatcherThreadInfo, dispatch_thread_info_ref.current)
264267

265268
if dispatch_thread_info is None:
266269
raise RuntimeError("Failed to create dispatcher thread") # nocov

src/py/reactpy/reactpy/backend/hooks.py

Lines changed: 0 additions & 30 deletions
This file was deleted.

src/py/reactpy/reactpy/backend/sanic.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
safe_web_modules_dir_path,
2525
serve_with_uvicorn,
2626
)
27-
from reactpy.backend.hooks import ConnectionContext
28-
from reactpy.backend.hooks import use_connection as _use_connection
27+
from reactpy.core.hooks import ConnectionContext
28+
from reactpy.core.hooks import use_connection as _use_connection
2929
from reactpy.backend.types import Connection, Location
3030
from reactpy.core.layout import Layout
3131
from reactpy.core.serve import RecvCoroutine, SendCoroutine, Stop, serve_layout

src/py/reactpy/reactpy/backend/starlette.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
read_client_index_html,
2525
serve_with_uvicorn,
2626
)
27-
from reactpy.backend.hooks import ConnectionContext
28-
from reactpy.backend.hooks import use_connection as _use_connection
27+
from reactpy.core.hooks import ConnectionContext
28+
from reactpy.core.hooks import use_connection as _use_connection
2929
from reactpy.backend.types import Connection, Location
3030
from reactpy.config import REACTPY_WEB_MODULES_DIR
3131
from reactpy.core.layout import Layout

src/py/reactpy/reactpy/backend/tornado.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
CommonOptions,
2525
read_client_index_html,
2626
)
27-
from reactpy.backend.hooks import ConnectionContext
28-
from reactpy.backend.hooks import use_connection as _use_connection
27+
from reactpy.core.hooks import ConnectionContext
28+
from reactpy.core.hooks import use_connection as _use_connection
2929
from reactpy.backend.types import Connection, Location
3030
from reactpy.config import REACTPY_WEB_MODULES_DIR
3131
from reactpy.core.layout import Layout

src/py/reactpy/reactpy/core/hooks.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
from __future__ import annotations
2+
from collections.abc import MutableMapping
3+
from reactpy.backend.types import Connection, Location
24

35
import asyncio
46
from collections.abc import Coroutine, Sequence
@@ -227,6 +229,19 @@ def context(
227229
return context
228230

229231

232+
# backend implementations should establish this context at the root of an app
233+
ConnectionContext: Context[Connection[Any] | None] = create_context(None)
234+
235+
236+
def use_connection() -> Connection[Any]:
237+
"""Get the current :class:`~reactpy.backend.types.Connection`."""
238+
conn = use_context(ConnectionContext)
239+
if conn is None: # nocov
240+
msg = "No backend established a connection."
241+
raise RuntimeError(msg)
242+
return conn
243+
244+
230245
def use_context(context: Context[_Type]) -> _Type:
231246
"""Get the current value for the given context type.
232247
@@ -248,6 +263,16 @@ def use_context(context: Context[_Type]) -> _Type:
248263
return provider.value
249264

250265

266+
def use_scope() -> MutableMapping[str, Any]:
267+
"""Get the current :class:`~reactpy.backend.types.Connection`'s scope."""
268+
return use_connection().scope
269+
270+
271+
def use_location() -> Location:
272+
"""Get the current :class:`~reactpy.backend.types.Connection`'s location."""
273+
return use_connection().location
274+
275+
251276
class _ContextProvider(Generic[_Type]):
252277
def __init__(
253278
self,

0 commit comments

Comments
 (0)