Skip to content

Commit dbc23e6

Browse files
committed
feat: adding port param in webserver
1 parent 61f8838 commit dbc23e6

File tree

3 files changed

+15
-100
lines changed

3 files changed

+15
-100
lines changed

pygwalker/api/adapter.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ def walk(
4444
- kanaries_api_key (str): kanaries api key, Default to "".
4545
- default_tab (Literal["data", "vis"]): default tab to show. Default to "vis"
4646
- cloud_computation(bool): Whether to use cloud compute for datas, it upload your data to kanaries cloud. Default to False.
47+
- port(int): only works in web server mode. port to use for the server. Default to None, which means a random port will be used.
4748
"""
4849
cur_env = get_current_env()
4950
if cur_env == "jupyter":
@@ -100,6 +101,7 @@ def render(
100101
- appearance (Literal['media' | 'light' | 'dark']): 'media': auto detect OS theme.
101102
- kernel_computation(bool): Whether to use kernel compute for datas, Default to None.
102103
- kanaries_api_key (str): kanaries api key, Default to "".
104+
- port(int): only works in web server mode. port to use for the server. Default to None, which means a random port will be used.
103105
"""
104106
cur_env = get_current_env()
105107
if cur_env == "jupyter":
@@ -142,6 +144,7 @@ def table(
142144
- appearance (Literal['media' | 'light' | 'dark']): 'media': auto detect OS theme.
143145
- kernel_computation(bool): Whether to use kernel compute for datas, Default to None.
144146
- kanaries_api_key (str): kanaries api key, Default to "".
147+
- port(int): only works in web server mode. port to use for the server. Default to None, which means a random port will be used.
145148
"""
146149
cur_env = get_current_env()
147150
if cur_env == "jupyter":

pygwalker/api/webserver.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,14 @@ class CustomPygWalkerHandler(_PygWalkerHandler):
100100
return CustomPygWalkerHandler
101101

102102

103-
def _start_server(walker: PygWalker):
103+
def _start_server(walker: PygWalker, port: Optional[int]):
104104
"""Start a server with walker"""
105105
state = _GlobalState()
106106
walker._init_callback(BaseCommunication(str(walker.gid)))
107107

108108
handler = _create_handler_with_walker(walker, state)
109-
port = find_free_port()
109+
if port is None:
110+
port = find_free_port()
110111
address = f"http://localhost:{port}"
111112

112113
try:
@@ -144,6 +145,7 @@ def walk(
144145
show_cloud_tool: bool = True,
145146
kanaries_api_key: str = "",
146147
default_tab: Literal["data", "vis"] = "vis",
148+
port: Optional[int] = None,
147149
**kwargs
148150
):
149151
"""Walk through pandas.DataFrame df with Graphic Walker
@@ -161,6 +163,7 @@ def walk(
161163
- kanaries_api_key (str): kanaries api key, Default to "".
162164
- default_tab (Literal["data", "vis"]): default tab to show. Default to "vis"
163165
- cloud_computation(bool): Whether to use cloud compute for datas, it upload your data to kanaries cloud. Default to False.
166+
- port (int): port to use for the server. Default to None, which means a random port will be used.
164167
"""
165168
check_expired_params(kwargs)
166169

@@ -186,7 +189,7 @@ def walk(
186189
cloud_computation=cloud_computation,
187190
**kwargs
188191
)
189-
_start_server(walker)
192+
_start_server(walker, port)
190193

191194

192195
def render(
@@ -197,6 +200,7 @@ def render(
197200
appearance: IAppearance = 'media',
198201
kernel_computation: Optional[bool] = None,
199202
kanaries_api_key: str = "",
203+
port: Optional[int] = None,
200204
**kwargs
201205
):
202206
"""
@@ -209,6 +213,7 @@ def render(
209213
- appearance (Literal['media' | 'light' | 'dark']): 'media': auto detect OS theme.
210214
- kernel_computation(bool): Whether to use kernel compute for datas, Default to None.
211215
- kanaries_api_key (str): kanaries api key, Default to "".
216+
- port (int): port to use for the server. Default to None, which means a random port will be used.
212217
"""
213218

214219
walker = PygWalker(
@@ -230,7 +235,7 @@ def render(
230235
cloud_computation=False,
231236
**kwargs
232237
)
233-
_start_server(walker)
238+
_start_server(walker, port)
234239

235240

236241
def table(
@@ -240,6 +245,7 @@ def table(
240245
appearance: IAppearance = 'media',
241246
kernel_computation: Optional[bool] = None,
242247
kanaries_api_key: str = "",
248+
port: Optional[int] = None,
243249
**kwargs
244250
):
245251
"""
@@ -251,6 +257,7 @@ def table(
251257
- appearance (Literal['media' | 'light' | 'dark']): 'media': auto detect OS theme.
252258
- kernel_computation(bool): Whether to use kernel compute for datas, Default to None.
253259
- kanaries_api_key (str): kanaries api key, Default to "".
260+
- port (int): port to use for the server. Default to None, which means a random port will be used.
254261
"""
255262
walker = PygWalker(
256263
gid=None,
@@ -271,4 +278,4 @@ def table(
271278
cloud_computation=False,
272279
**kwargs
273280
)
274-
_start_server(walker)
281+
_start_server(walker, port)

tests/stress-test-polars.ipynb

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

0 commit comments

Comments
 (0)