From 8dc8a1f4ba890f4f32f0115ce96e5efa32158e73 Mon Sep 17 00:00:00 2001 From: rhinemann Date: Wed, 25 Mar 2026 19:05:16 +0100 Subject: [PATCH 01/15] [P] Add bump remove function --- MapView/main.py | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/MapView/main.py b/MapView/main.py index 8b983bb..793928d 100644 --- a/MapView/main.py +++ b/MapView/main.py @@ -15,11 +15,24 @@ line_layer_colors = [ [1, 0, 1, 1], ] + +def get_lat_lon(point: dict[str, float] | list[float] | tuple[float, float]) -> tuple[float, float] | None: + if isinstance(point, dict): + lat = point.get("lat") + lon = point.get("lon") + else: + lat, lon = point + + if lat is None or lon is None: + return None + return lat, lon + + class MapViewApp(App): def __init__(self, **kwargs): super().__init__(**kwargs) - self.mapview = None + self.mapview: MapView | None = None self.datasource = Datasource(user_id=1) self.line_layers = dict() self.car_markers = dict() @@ -111,24 +124,34 @@ class MapViewApp(App): self.pothole_markers.append(marker) def set_bump_marker(self, point): - if isinstance(point, dict): - lat = point.get("lat") - lon = point.get("lon") - else: - lat, lon = point - + lat, lon = get_lat_lon(point) if lat is None or lon is None: return - + marker = MapMarker( lat=lat, lon=lon, - source="images/bump.png" + source="images/bump.png" ) self.mapview.add_marker(marker) self.bump_markers.append(marker) + def delete_bump_marker(self, point): + lat, lon = get_lat_lon(point) + if lat is None or lon is None: + return + + marker = MapMarker( + lat=lat, + lon=lon, + source="images/bump.png" + ) + + if marker in self.bump_markers: + self.mapview.remove_marker(marker) + self.bump_markers.pop(self.bump_markers.index(marker)) + def build(self): """ -- 2.49.1 From 1e607729e2240df40eda2afa122eb26443923f41 Mon Sep 17 00:00:00 2001 From: rhinemann Date: Wed, 25 Mar 2026 19:51:10 +0100 Subject: [PATCH 02/15] Add type hints --- MapView/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MapView/main.py b/MapView/main.py index 793928d..9dd9903 100644 --- a/MapView/main.py +++ b/MapView/main.py @@ -38,8 +38,8 @@ class MapViewApp(App): self.car_markers = dict() # додати необхідні змінні - self.bump_markers = [] - self.pothole_markers = [] + self.bump_markers: list[MapMarker] = [] + self.pothole_markers: list[MapMarker] = [] def on_start(self): """ -- 2.49.1 From b2780c1c6b11457ec6a7affeae15807f7de64ee3 Mon Sep 17 00:00:00 2001 From: rhinemann Date: Wed, 25 Mar 2026 19:51:58 +0100 Subject: [PATCH 03/15] Add lat lon to pothole mapper --- MapView/main.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/MapView/main.py b/MapView/main.py index 9dd9903..4e69f2e 100644 --- a/MapView/main.py +++ b/MapView/main.py @@ -104,6 +104,12 @@ class MapViewApp(App): if user_id == config.TRACK_ID: self.mapview.center_on(lat, lon) + def map_lat_lon_to_pothole(self, lat: float, lon: float) -> MapMarker | None: + click_tolerance = self.mapview.zoom * 10 + flt = filter(lambda marker: abs(lat - marker.lat) + abs(lon - marker.lon) < click_tolerance, + self.pothole_markers) + return next(flt) + def set_pothole_marker(self, point): if isinstance(point, dict): lat = point.get("lat") -- 2.49.1 From 3bc39e011d589b588eef3c70d2c0247e75155d3e Mon Sep 17 00:00:00 2001 From: rhinemann Date: Wed, 25 Mar 2026 19:52:33 +0100 Subject: [PATCH 04/15] Use lat lon validation --- MapView/main.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/MapView/main.py b/MapView/main.py index 4e69f2e..717b8a8 100644 --- a/MapView/main.py +++ b/MapView/main.py @@ -111,12 +111,7 @@ class MapViewApp(App): return next(flt) def set_pothole_marker(self, point): - if isinstance(point, dict): - lat = point.get("lat") - lon = point.get("lon") - else: - lat, lon = point - + lat, lon = get_lat_lon(point) if lat is None or lon is None: return -- 2.49.1 From 39fca8702557d7fd5051a4af0b19e546ef8a69db Mon Sep 17 00:00:00 2001 From: rhinemann Date: Wed, 25 Mar 2026 19:52:54 +0100 Subject: [PATCH 05/15] Correct pothole deletion function --- MapView/main.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/MapView/main.py b/MapView/main.py index 717b8a8..443d27a 100644 --- a/MapView/main.py +++ b/MapView/main.py @@ -138,20 +138,15 @@ class MapViewApp(App): self.mapview.add_marker(marker) self.bump_markers.append(marker) - def delete_bump_marker(self, point): + def delete_pothole_marker(self, point): lat, lon = get_lat_lon(point) if lat is None or lon is None: return - marker = MapMarker( - lat=lat, - lon=lon, - source="images/bump.png" - ) - - if marker in self.bump_markers: - self.mapview.remove_marker(marker) - self.bump_markers.pop(self.bump_markers.index(marker)) + pothole = self.map_lat_lon_to_pothole(lat, lon) + if pothole: + self.mapview.remove_marker(pothole) + self.pothole_markers.pop(self.pothole_markers.index(pothole)) def build(self): -- 2.49.1 From 79a58f1737ea73d1f7651b8f4a9425461b95a901 Mon Sep 17 00:00:00 2001 From: rhinemann Date: Thu, 26 Mar 2026 11:32:36 +0100 Subject: [PATCH 06/15] [P] Add touch handling (untested). --- MapView/main.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/MapView/main.py b/MapView/main.py index 443d27a..53d7945 100644 --- a/MapView/main.py +++ b/MapView/main.py @@ -41,6 +41,8 @@ class MapViewApp(App): self.bump_markers: list[MapMarker] = [] self.pothole_markers: list[MapMarker] = [] + self.root_window.bind(on_touch_up = self.on_touch_up) + def on_start(self): """ Встановлює необхідні маркери, викликає функцію для оновлення мапи @@ -148,6 +150,12 @@ class MapViewApp(App): self.mapview.remove_marker(pothole) self.pothole_markers.pop(self.pothole_markers.index(pothole)) + def on_touch_up(self, touch): + self.mapview.on_touch_up(touch) + if touch.button == "right": + coordinate = self.mapview.get_latlon_at(touch.x, touch.y, self.mapview.zoom) + self.delete_pothole_marker(coordinate) + def build(self): """ -- 2.49.1 From abbc703b1bc0547a9b942f48eb804cd261944871 Mon Sep 17 00:00:00 2001 From: hasslesstech Date: Thu, 26 Mar 2026 21:11:02 +0200 Subject: [PATCH 07/15] [P] Improve marker removal architecture to allow for future extensions --- MapView/datasource.py | 18 ++++++++++++++++++ MapView/main.py | 34 ++++++++++++++++++++++------------ 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/MapView/datasource.py b/MapView/datasource.py index 74ede8e..28c59c9 100644 --- a/MapView/datasource.py +++ b/MapView/datasource.py @@ -37,6 +37,7 @@ class Datasource: self.user_id = user_id self.connection_status = None self._new_points = [] + self._active_markers = [] asyncio.ensure_future(self.connect_to_server()) def get_new_points(self): @@ -60,6 +61,20 @@ class Datasource: self.connection_status = "Disconnected" Logger.debug("SERVER DISCONNECT") + def map_lat_lon_to_ProcessedAgentData(self, lat: float, lon: float) -> ProcessedAgentData | None: + distances = tuple((abs(lon - marker.latitude) ** 2 + abs(lat - marker.longitude) ** 2) ** 0.5 for marker in self._active_markers) + + if len(distances) == 0: + return None + + min_distance = min(distances) + marker = self._active_markers[distances.index(min_distance)] + + if min_distance < 0.005: + return marker + else: + return None + def handle_received_data(self, data): # Update your UI or perform actions with received data here Logger.debug(f"Received data: {data}") @@ -70,6 +85,9 @@ class Datasource: ], key=lambda v: v.timestamp, ) + + self._active_markers += [i for i in processed_agent_data_list if i.road_state != 'normal'] + new_points = [ ( processed_agent_data.longitude, diff --git a/MapView/main.py b/MapView/main.py index 53d7945..f40f242 100644 --- a/MapView/main.py +++ b/MapView/main.py @@ -41,8 +41,6 @@ class MapViewApp(App): self.bump_markers: list[MapMarker] = [] self.pothole_markers: list[MapMarker] = [] - self.root_window.bind(on_touch_up = self.on_touch_up) - def on_start(self): """ Встановлює необхідні маркери, викликає функцію для оновлення мапи @@ -106,10 +104,8 @@ class MapViewApp(App): if user_id == config.TRACK_ID: self.mapview.center_on(lat, lon) - def map_lat_lon_to_pothole(self, lat: float, lon: float) -> MapMarker | None: - click_tolerance = self.mapview.zoom * 10 - flt = filter(lambda marker: abs(lat - marker.lat) + abs(lon - marker.lon) < click_tolerance, - self.pothole_markers) + def map_lat_lon_to_marker(self, lat: float, lon: float) -> MapMarker | None: + flt = filter(lambda marker: lon == marker.lat and lat == marker.lon, self.pothole_markers + self.bump_markers) return next(flt) def set_pothole_marker(self, point): @@ -145,16 +141,28 @@ class MapViewApp(App): if lat is None or lon is None: return - pothole = self.map_lat_lon_to_pothole(lat, lon) - if pothole: - self.mapview.remove_marker(pothole) - self.pothole_markers.pop(self.pothole_markers.index(pothole)) + clicked_marker_data = self.datasource.map_lat_lon_to_ProcessedAgentData(lat, lon) - def on_touch_up(self, touch): - self.mapview.on_touch_up(touch) + if not clicked_marker_data: + return + + clicked_marker = self.map_lat_lon_to_marker(clicked_marker_data.latitude, clicked_marker_data.longitude) + + self.mapview.remove_marker(clicked_marker) + + pothole_index = self.pothole_markers.index(clicked_marker) + bump_index = self.bump_markers.index(clicked_marker) + + if pothole_marker >= 0: + self.pothole_markers.pop(pothole_index) + elif bump_index >= 0: + self.bump_markers.pop(bump_index) + + def on_touch_down(self, widget, touch): if touch.button == "right": coordinate = self.mapview.get_latlon_at(touch.x, touch.y, self.mapview.zoom) self.delete_pothole_marker(coordinate) + return True def build(self): @@ -168,6 +176,8 @@ class MapViewApp(App): lon=30.5234 ) + self.mapview.bind(on_touch_down = self.on_touch_down) + return self.mapview -- 2.49.1 From 68504547113cdf65f0397d7faa6b20f5d5a5f6d9 Mon Sep 17 00:00:00 2001 From: hasslesstech Date: Thu, 26 Mar 2026 22:18:02 +0200 Subject: [PATCH 08/15] [P] Fix several crashes triggered in one call sequence --- MapView/main.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/MapView/main.py b/MapView/main.py index f40f242..6dcece2 100644 --- a/MapView/main.py +++ b/MapView/main.py @@ -106,7 +106,11 @@ class MapViewApp(App): def map_lat_lon_to_marker(self, lat: float, lon: float) -> MapMarker | None: flt = filter(lambda marker: lon == marker.lat and lat == marker.lon, self.pothole_markers + self.bump_markers) - return next(flt) + + try: + return next(flt) + except StopIteration as e: + return None def set_pothole_marker(self, point): lat, lon = get_lat_lon(point) @@ -148,15 +152,15 @@ class MapViewApp(App): clicked_marker = self.map_lat_lon_to_marker(clicked_marker_data.latitude, clicked_marker_data.longitude) + if clicked_marker == None: + return + self.mapview.remove_marker(clicked_marker) - pothole_index = self.pothole_markers.index(clicked_marker) - bump_index = self.bump_markers.index(clicked_marker) - - if pothole_marker >= 0: - self.pothole_markers.pop(pothole_index) - elif bump_index >= 0: - self.bump_markers.pop(bump_index) + if clicked_marker in self.pothole_markers: + self.pothole_markers.pop(self.pothole_markers.index(clicked_marker)) + elif clicked_marker in self.bump_markers: + self.bump_markers.pop(self.bump_markers.index(clicked_marker)) def on_touch_down(self, widget, touch): if touch.button == "right": -- 2.49.1 From 2c4526d0eca7f828c5908531152b9b293e60cef7 Mon Sep 17 00:00:00 2001 From: rhinemann Date: Fri, 27 Mar 2026 13:57:02 +0100 Subject: [PATCH 09/15] [P] Code cleanup. --- MapView/datasource.py | 5 +++-- MapView/main.py | 11 +++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/MapView/datasource.py b/MapView/datasource.py index 28c59c9..6b1c623 100644 --- a/MapView/datasource.py +++ b/MapView/datasource.py @@ -61,8 +61,9 @@ class Datasource: self.connection_status = "Disconnected" Logger.debug("SERVER DISCONNECT") - def map_lat_lon_to_ProcessedAgentData(self, lat: float, lon: float) -> ProcessedAgentData | None: - distances = tuple((abs(lon - marker.latitude) ** 2 + abs(lat - marker.longitude) ** 2) ** 0.5 for marker in self._active_markers) + def map_lat_lon_to_processed_agent_data(self, lat: float, lon: float) -> ProcessedAgentData | None: + distances = tuple((abs(lon - marker.latitude) ** 2 + abs(lat - marker.longitude) ** 2) ** 0.5 for marker in + self._active_markers) if len(distances) == 0: return None diff --git a/MapView/main.py b/MapView/main.py index 6dcece2..1403b4c 100644 --- a/MapView/main.py +++ b/MapView/main.py @@ -63,7 +63,7 @@ class MapViewApp(App): # Оновлює лінію маршрута if user_id not in self.line_layers: - self.line_layers[user_id] = LineMapLayer(color = line_layer_colors[user_id % len(line_layer_colors)]) + self.line_layers[user_id] = LineMapLayer(color=line_layer_colors[user_id % len(line_layer_colors)]) self.mapview.add_layer(self.line_layers[user_id]) self.line_layers[user_id].add_point((lat, lon)) @@ -109,7 +109,7 @@ class MapViewApp(App): try: return next(flt) - except StopIteration as e: + except StopIteration: return None def set_pothole_marker(self, point): @@ -145,14 +145,14 @@ class MapViewApp(App): if lat is None or lon is None: return - clicked_marker_data = self.datasource.map_lat_lon_to_ProcessedAgentData(lat, lon) + clicked_marker_data = self.datasource.map_lat_lon_to_processed_agent_data(lat, lon) if not clicked_marker_data: return clicked_marker = self.map_lat_lon_to_marker(clicked_marker_data.latitude, clicked_marker_data.longitude) - if clicked_marker == None: + if clicked_marker is None: return self.mapview.remove_marker(clicked_marker) @@ -168,7 +168,6 @@ class MapViewApp(App): self.delete_pothole_marker(coordinate) return True - def build(self): """ Ініціалізує мапу MapView(zoom, lat, lon) @@ -180,7 +179,7 @@ class MapViewApp(App): lon=30.5234 ) - self.mapview.bind(on_touch_down = self.on_touch_down) + self.mapview.bind(on_touch_down=self.on_touch_down) return self.mapview -- 2.49.1 From adae93aba4d7a056dd8612dd7c34c00ad23572e0 Mon Sep 17 00:00:00 2001 From: rhinemann Date: Fri, 27 Mar 2026 16:28:03 +0100 Subject: [PATCH 10/15] [P] Add database update after marker deletion. --- MapView/datasource.py | 9 +++++++++ MapView/main.py | 2 ++ 2 files changed, 11 insertions(+) diff --git a/MapView/datasource.py b/MapView/datasource.py index 6b1c623..5e22629 100644 --- a/MapView/datasource.py +++ b/MapView/datasource.py @@ -4,6 +4,8 @@ from datetime import datetime import websockets from kivy import Logger from pydantic import BaseModel, field_validator +from websockets.asyncio.connection import Connection + from config import STORE_HOST, STORE_PORT @@ -33,6 +35,7 @@ class ProcessedAgentData(BaseModel): class Datasource: def __init__(self, user_id: int): + self.websocket: Connection | None = None self.index = 0 self.user_id = user_id self.connection_status = None @@ -52,6 +55,7 @@ class Datasource: Logger.debug("CONNECT TO SERVER") async with websockets.connect(uri) as websocket: self.connection_status = "Connected" + self.websocket = websocket try: while True: data = await websocket.recv() @@ -61,6 +65,11 @@ class Datasource: self.connection_status = "Disconnected" Logger.debug("SERVER DISCONNECT") + async def update_db_records(self): + if self.websocket: + data = json.dumps({"id": self.user_id}) + await self.websocket.send(data, True) + def map_lat_lon_to_processed_agent_data(self, lat: float, lon: float) -> ProcessedAgentData | None: distances = tuple((abs(lon - marker.latitude) ** 2 + abs(lat - marker.longitude) ** 2) ** 0.5 for marker in self._active_markers) diff --git a/MapView/main.py b/MapView/main.py index 1403b4c..9b81419 100644 --- a/MapView/main.py +++ b/MapView/main.py @@ -162,6 +162,8 @@ class MapViewApp(App): elif clicked_marker in self.bump_markers: self.bump_markers.pop(self.bump_markers.index(clicked_marker)) + self.datasource.update_db_records() + def on_touch_down(self, widget, touch): if touch.button == "right": coordinate = self.mapview.get_latlon_at(touch.x, touch.y, self.mapview.zoom) -- 2.49.1 From 0182d20348fd7b388806c46e29a208df1ccc975f Mon Sep 17 00:00:00 2001 From: hasslesstech Date: Fri, 27 Mar 2026 18:15:34 +0200 Subject: [PATCH 11/15] [P] Sync the async function --- MapView/datasource.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/MapView/datasource.py b/MapView/datasource.py index 5e22629..d7712a9 100644 --- a/MapView/datasource.py +++ b/MapView/datasource.py @@ -4,7 +4,6 @@ from datetime import datetime import websockets from kivy import Logger from pydantic import BaseModel, field_validator -from websockets.asyncio.connection import Connection from config import STORE_HOST, STORE_PORT @@ -65,10 +64,10 @@ class Datasource: self.connection_status = "Disconnected" Logger.debug("SERVER DISCONNECT") - async def update_db_records(self): + def update_db_records(self): if self.websocket: data = json.dumps({"id": self.user_id}) - await self.websocket.send(data, True) + asyncio.ensure_future(self.websocket.send(data)) def map_lat_lon_to_processed_agent_data(self, lat: float, lon: float) -> ProcessedAgentData | None: distances = tuple((abs(lon - marker.latitude) ** 2 + abs(lat - marker.longitude) ** 2) ** 0.5 for marker in -- 2.49.1 From dc3e9b3e7a06a0d7015352374680a5cc4326807b Mon Sep 17 00:00:00 2001 From: hasslesstech Date: Fri, 27 Mar 2026 18:24:53 +0200 Subject: [PATCH 12/15] [P] Remove user_id from store <-> mapview interaction, fix update_db_record --- MapView/datasource.py | 10 +++++----- MapView/main.py | 4 ++-- store/main.py | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/MapView/datasource.py b/MapView/datasource.py index d7712a9..12ea5fe 100644 --- a/MapView/datasource.py +++ b/MapView/datasource.py @@ -10,6 +10,7 @@ from config import STORE_HOST, STORE_PORT # Pydantic models class ProcessedAgentData(BaseModel): + id: int road_state: str user_id: int x: float @@ -33,10 +34,9 @@ class ProcessedAgentData(BaseModel): class Datasource: - def __init__(self, user_id: int): + def __init__(self): self.websocket: Connection | None = None self.index = 0 - self.user_id = user_id self.connection_status = None self._new_points = [] self._active_markers = [] @@ -49,7 +49,7 @@ class Datasource: return points async def connect_to_server(self): - uri = f"ws://{STORE_HOST}:{STORE_PORT}/ws/{self.user_id}" + uri = f"ws://{STORE_HOST}:{STORE_PORT}/ws" while True: Logger.debug("CONNECT TO SERVER") async with websockets.connect(uri) as websocket: @@ -64,9 +64,9 @@ class Datasource: self.connection_status = "Disconnected" Logger.debug("SERVER DISCONNECT") - def update_db_records(self): + def update_db_record_visibility(self, record_id): if self.websocket: - data = json.dumps({"id": self.user_id}) + data = json.dumps({"id": record_id}) asyncio.ensure_future(self.websocket.send(data)) def map_lat_lon_to_processed_agent_data(self, lat: float, lon: float) -> ProcessedAgentData | None: diff --git a/MapView/main.py b/MapView/main.py index 9b81419..b733e32 100644 --- a/MapView/main.py +++ b/MapView/main.py @@ -33,7 +33,7 @@ class MapViewApp(App): super().__init__(**kwargs) self.mapview: MapView | None = None - self.datasource = Datasource(user_id=1) + self.datasource = Datasource() self.line_layers = dict() self.car_markers = dict() @@ -162,7 +162,7 @@ class MapViewApp(App): elif clicked_marker in self.bump_markers: self.bump_markers.pop(self.bump_markers.index(clicked_marker)) - self.datasource.update_db_records() + self.datasource.update_db_record_visibility(clicked_marker_data.id) def on_touch_down(self, widget, touch): if touch.button == "right": diff --git a/store/main.py b/store/main.py index f1a1a4c..7426fd6 100644 --- a/store/main.py +++ b/store/main.py @@ -39,8 +39,8 @@ subscriptions: Set[WebSocket] = set() # FastAPI WebSocket endpoint -@app.websocket("/ws/{user_id}") -async def websocket_endpoint(websocket: WebSocket, user_id: int): +@app.websocket("/ws") +async def websocket_endpoint(websocket: WebSocket): await websocket.accept() subscriptions.add(websocket) -- 2.49.1 From 8a59f601c4b3b44bf07f9fd9b6392d19d845a238 Mon Sep 17 00:00:00 2001 From: hasslesstech Date: Fri, 27 Mar 2026 18:38:22 +0200 Subject: [PATCH 13/15] [P] Send only visible records from store on websocket connection --- store/main.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/store/main.py b/store/main.py index 7426fd6..38a1ae6 100644 --- a/store/main.py +++ b/store/main.py @@ -47,7 +47,10 @@ async def websocket_endpoint(websocket: WebSocket): try: # send already available data - r = processed_agent_data.select().order_by(processed_agent_data.c.timestamp) + r = processed_agent_data.select() \ + .where(processed_agent_data.c.visible == True) \ + .order_by(processed_agent_data.c.timestamp) + session = SessionLocal() stored_data = session.execute(r).fetchall() session.close() -- 2.49.1 From b2b89064786b02a83a6c5f42c8dd7eee76004161 Mon Sep 17 00:00:00 2001 From: hasslesstech Date: Fri, 27 Mar 2026 18:40:11 +0200 Subject: [PATCH 14/15] [P] Remove uncessecary empty line --- MapView/datasource.py | 1 - 1 file changed, 1 deletion(-) diff --git a/MapView/datasource.py b/MapView/datasource.py index 12ea5fe..22f4524 100644 --- a/MapView/datasource.py +++ b/MapView/datasource.py @@ -4,7 +4,6 @@ from datetime import datetime import websockets from kivy import Logger from pydantic import BaseModel, field_validator - from config import STORE_HOST, STORE_PORT -- 2.49.1 From 57a370ad691dee5ca1b12ef9ea31887735368ec9 Mon Sep 17 00:00:00 2001 From: hasslesstech Date: Fri, 27 Mar 2026 19:51:27 +0200 Subject: [PATCH 15/15] [P] Remove trailing spaces --- MapView/datasource.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MapView/datasource.py b/MapView/datasource.py index 22f4524..29cf19e 100644 --- a/MapView/datasource.py +++ b/MapView/datasource.py @@ -53,7 +53,7 @@ class Datasource: Logger.debug("CONNECT TO SERVER") async with websockets.connect(uri) as websocket: self.connection_status = "Connected" - self.websocket = websocket + self.websocket = websocket try: while True: data = await websocket.recv() -- 2.49.1