22from urllib .parse import quote_plus
33import json
44import sys
5-
6- # Widget dependencies
7- import anywidget
8- from traitlets import Unicode , Dict , List , Int , Bool
95import time
106import uuid
7+ import anywidget
8+ from traitlets import Unicode , Dict , List , Int , Bool
119
12- # Server dependencies
13- from uvicorn import Config , Server
14-
15- from starlette .applications import Starlette
16- from starlette .middleware import Middleware
17- from starlette .middleware .cors import CORSMiddleware
18- from threading import Thread
19- import socket
2010
2111MAX_PORT_TRIES = 1000
2212DEFAULT_PORT = 8000
2313
24-
2514class BackgroundServer :
2615 # Reference: https://github.com/gosling-lang/gos/blob/main/gosling/data/_background_server.py#L10
2716 def __init__ (self , routes ):
17+ from starlette .applications import Starlette
18+ from starlette .middleware import Middleware
19+ from starlette .middleware .cors import CORSMiddleware
20+
2821 middleware = [
2922 Middleware (CORSMiddleware , allow_origins = [
3023 '*' ], allow_methods = ["OPTIONS" , "GET" ], allow_headers = ['Range' ])
@@ -47,6 +40,9 @@ def stop(self):
4740 return self
4841
4942 def start (self , port = None , timeout = 1 , daemon = True , log_level = "warning" ):
43+ from uvicorn import Config , Server
44+ from threading import Thread
45+
5046 if self .thread is not None :
5147 return self
5248
@@ -87,6 +83,7 @@ def register(self, config):
8783
8884
8985def is_port_in_use (port ):
86+ import socket
9087 with socket .socket (socket .AF_INET , socket .SOCK_STREAM ) as s :
9188 return s .connect_ex (('localhost' , port )) == 0
9289
0 commit comments