From f707e6ad683c4a50d018f9829f5c2853445383de Mon Sep 17 00:00:00 2001 From: lingniu Date: Wed, 12 Aug 2026 11:30:07 +0800 Subject: [PATCH] fix(navigation): support Python 3.6 static assets --- station-navigation/server.py | 8 +++----- station-navigation/tests/test_server.py | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/station-navigation/server.py b/station-navigation/server.py index 96037190..2f681ec5 100644 --- a/station-navigation/server.py +++ b/station-navigation/server.py @@ -125,11 +125,6 @@ def _prewarm_station_directory_cache(): class StationNavigationHandler(SimpleHTTPRequestHandler): server_version = "LingniuStationNavigation/1.0" - def __init__(self, *args, **kwargs): - # Static files must resolve from this release directory even when the - # local launcher is invoked from the repository root. - super().__init__(*args, directory=str(ROOT), **kwargs) - def do_GET(self): path = urlparse(self.path).path if path in {"/", "/index.html"}: @@ -224,6 +219,9 @@ class StationNavigationHandler(SimpleHTTPRequestHandler): if __name__ == "__main__": + # Python 3.6 on ECS predates SimpleHTTPRequestHandler(directory=...). + # Resolve static assets from this release directory before serving. + os.chdir(str(ROOT)) server = ThreadingHTTPServer((HOST, PORT), StationNavigationHandler) threading.Thread(target=_prewarm_station_directory_cache, daemon=True).start() print(f"Lingniu Station Navigation listening on http://{HOST}:{PORT}") diff --git a/station-navigation/tests/test_server.py b/station-navigation/tests/test_server.py index 358abb19..c4c4b013 100644 --- a/station-navigation/tests/test_server.py +++ b/station-navigation/tests/test_server.py @@ -31,7 +31,7 @@ class StationNavigationTest(unittest.TestCase): self.assertRegex(server.STATIC_ASSET_VERSION, r"^[0-9a-f]{16}$") def test_static_assets_resolve_from_the_release_directory(self): - self.assertIn('directory=str(ROOT)', Path(__file__).parents[1].joinpath('server.py').read_text(encoding='utf-8')) + self.assertIn('os.chdir(str(ROOT))', Path(__file__).parents[1].joinpath('server.py').read_text(encoding='utf-8')) def test_default_cache_window_is_two_minutes(self): self.assertEqual(server.STATION_CACHE_SECONDS, 120)