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
2515class BackgroundServer :
2616 # Reference: https://github.com/gosling-lang/gos/blob/main/gosling/data/_background_server.py#L10
2717 def __init__ (self , routes ):
18+ from starlette .applications import Starlette
19+ from starlette .middleware import Middleware
20+ from starlette .middleware .cors import CORSMiddleware
21+
2822 middleware = [
2923 Middleware (CORSMiddleware , allow_origins = [
3024 '*' ], allow_methods = ["OPTIONS" , "GET" ], allow_headers = ['Range' ])
@@ -47,6 +41,9 @@ def stop(self):
4741 return self
4842
4943 def start (self , port = None , timeout = 1 , daemon = True , log_level = "warning" ):
44+ from uvicorn import Config , Server
45+ from threading import Thread
46+
5047 if self .thread is not None :
5148 return self
5249
@@ -87,6 +84,7 @@ def register(self, config):
8784
8885
8986def is_port_in_use (port ):
87+ import socket
9088 with socket .socket (socket .AF_INET , socket .SOCK_STREAM ) as s :
9189 return s .connect_ex (('localhost' , port )) == 0
9290
0 commit comments