Skip to content

Commit 53fb23b

Browse files
committed
redirect BUILD_DIR imports to IDOM_CLIENT_BUILD_DIR option
1 parent 91474b3 commit 53fb23b

File tree

5 files changed

+26
-39
lines changed

5 files changed

+26
-39
lines changed

src/idom/server/flask.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from typing_extensions import TypedDict
1818

1919
import idom
20-
from idom.client.manage import BUILD_DIR
20+
from idom.config import IDOM_CLIENT_BUILD_DIR
2121
from idom.core.dispatcher import AbstractDispatcher, SingleViewDispatcher
2222
from idom.core.layout import Layout, LayoutEvent, LayoutUpdate
2323

@@ -111,7 +111,7 @@ def _setup_blueprint_routes(self, config: Config, blueprint: Blueprint) -> None:
111111

112112
@blueprint.route("/client/<path:path>")
113113
def send_build_dir(path: str) -> Any:
114-
return send_from_directory(str(BUILD_DIR), path)
114+
return send_from_directory(str(IDOM_CLIENT_BUILD_DIR.get()), path)
115115

116116
if config["redirect_root_to_index"]:
117117

src/idom/server/sanic.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from sanic_cors import CORS
1010
from websockets import WebSocketCommonProtocol
1111

12-
from idom.client.manage import BUILD_DIR
12+
from idom.client.manage import IDOM_CLIENT_BUILD_DIR
1313
from idom.core.dispatcher import (
1414
AbstractDispatcher,
1515
RecvCoroutine,
@@ -91,7 +91,7 @@ async def sock_recv() -> LayoutEvent:
9191
await self._run_dispatcher(sock_send, sock_recv, component_params)
9292

9393
if config["serve_static_files"]:
94-
blueprint.static("/client", str(BUILD_DIR))
94+
blueprint.static("/client", str(IDOM_CLIENT_BUILD_DIR.get()))
9595

9696
if config["redirect_root_to_index"]:
9797

src/idom/server/tornado.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from tornado.websocket import WebSocketHandler
1111
from typing_extensions import TypedDict
1212

13-
from idom.client.manage import BUILD_DIR
13+
from idom.config import IDOM_CLIENT_BUILD_DIR
1414
from idom.core.component import ComponentConstructor
1515
from idom.core.dispatcher import AbstractDispatcher, SingleViewDispatcher
1616
from idom.core.layout import Layout, LayoutEvent, LayoutUpdate
@@ -85,7 +85,11 @@ def _create_route_handlers(self, config: Config) -> _RouteHandlerSpecs:
8585

8686
if config["serve_static_files"]:
8787
handlers.append(
88-
(r"/client/(.*)", StaticFileHandler, {"path": str(BUILD_DIR)})
88+
(
89+
r"/client/(.*)",
90+
StaticFileHandler,
91+
{"path": str(IDOM_CLIENT_BUILD_DIR.get())},
92+
)
8993
)
9094
if config["redirect_root_to_index"]:
9195
handlers.append(("/", RedirectHandler, {"url": "./client/index.html"}))

src/idom/server/utils.py

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,35 @@
11
from contextlib import closing
22
from importlib import import_module
33
from socket import socket
4-
from types import ModuleType
54
from typing import Any, List, Type
65

76

87
def find_builtin_server_type(type_name: str) -> Type[Any]:
98
"""Find first installed server implementation"""
10-
builtin_module_names = ["sanic", "flask", "tornado"]
9+
supported_packages = ["sanic", "flask", "tornado"]
1110

12-
installed_builtin_modules: List[ModuleType] = []
13-
for module_name in builtin_module_names:
11+
installed_builtins: List[str] = []
12+
for name in supported_packages:
1413
try:
15-
installed_builtin_modules.append(
16-
import_module(f"idom.server.{module_name}")
17-
)
14+
import_module(name)
1815
except ImportError: # coverage: skip
19-
pass
20-
21-
if not installed_builtin_modules: # coverage: skip
22-
raise RuntimeError(
23-
f"Found none of the following builtin server implementations {builtin_module_names}"
24-
)
25-
26-
for builtin_module in installed_builtin_modules:
16+
continue
17+
else:
18+
builtin_module = import_module(f"idom.server.{name}")
19+
installed_builtins.append(builtin_module.__name__)
2720
try:
2821
return getattr(builtin_module, type_name) # type: ignore
2922
except AttributeError: # coverage: skip
3023
pass
3124
else: # coverage: skip
32-
installed_names = [m.__name__ for m in installed_builtin_modules]
33-
raise ImportError(
34-
f"No server type {type_name!r} found in installed implementations {installed_names}"
35-
)
25+
if not installed_builtins:
26+
raise RuntimeError(
27+
f"Found none of the following builtin server implementations {supported_packages}"
28+
)
29+
else:
30+
raise ImportError(
31+
f"No server type {type_name!r} found in installed implementations {installed_builtins}"
32+
)
3633

3734

3835
def find_available_port(host: str, port_min: int = 8000, port_max: int = 9000) -> int:

tests/test_client/test_utils.py

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,11 @@
22

33
from idom.client.utils import (
44
find_js_module_exports_in_source,
5-
open_modifiable_json,
65
split_package_name_and_version,
76
)
87
from tests.general_utils import assert_same_items
98

109

11-
def test_open_modifiable_json(tmp_path):
12-
temp_json = tmp_path / "data.json"
13-
14-
temp_json.touch()
15-
16-
with open_modifiable_json(temp_json) as data:
17-
assert data == {}
18-
data["x"] = 1
19-
20-
with open_modifiable_json(temp_json) as updated_data:
21-
assert updated_data == {"x": 1}
22-
23-
2410
@pytest.mark.parametrize(
2511
"module_source, expected_names",
2612
[

0 commit comments

Comments
 (0)