From d0bce345dd810cc26f8aaf90f854bf752a3f4731 Mon Sep 17 00:00:00 2001 From: Tom Arne Pedersen Date: Fri, 19 Jan 2024 09:59:56 +0100 Subject: [PATCH] Working on #17, fixing some ruff and black warnings --- src/trafficgen/encounter.py | 9 ++------- src/trafficgen/plot_traffic_situation.py | 4 +--- src/trafficgen/read_files.py | 10 +++++----- src/trafficgen/types.py | 14 +++++++++----- src/trafficgen/write_traffic_situation_to_file.py | 6 +----- 5 files changed, 18 insertions(+), 25 deletions(-) diff --git a/src/trafficgen/encounter.py b/src/trafficgen/encounter.py index 94ca3c1..94da44a 100644 --- a/src/trafficgen/encounter.py +++ b/src/trafficgen/encounter.py @@ -5,7 +5,6 @@ """ import random -from operator import pos from typing import List, Optional, Tuple, Union import numpy as np @@ -123,9 +122,7 @@ def generate_encounter( else: target_ship.initial.sog = relative_sog * own_ship.initial.sog - target_ship.initial.sog = np.minimum( - target_ship.initial.sog, target_ship.static.speed_max - ) + target_ship.initial.sog = np.minimum(target_ship.initial.sog, target_ship.static.speed_max) target_ship_vector_length = knot_2_m_pr_min(target_ship.initial.sog) * vector_time start_position_target_ship, position_found = find_start_position_target_ship( @@ -535,8 +532,7 @@ def calculate_ship_cog(pos_0: Position, pos_1: Position) -> float: ------- cog: Ship cog [deg] """ - cog: float = np.arctan2(pos_1.east - pos_0.east, - pos_1.north - pos_0.north) + cog: float = np.arctan2(pos_1.east - pos_0.east, pos_1.north - pos_0.north) if cog < 0.0: cog += 2 * np.pi return round(np.rad2deg(cog), 1) @@ -717,7 +713,6 @@ def update_position_data_own_ship( ship_position_future.latitude = round(rad_2_deg(lat_future), 6) ship_position_future.longitude = round(rad_2_deg(lon_future), 6) - ship.waypoints = [ Waypoint(position=ship.initial.position.model_copy()), Waypoint(position=ship_position_future), diff --git a/src/trafficgen/plot_traffic_situation.py b/src/trafficgen/plot_traffic_situation.py index 03419e5..fc9dad4 100644 --- a/src/trafficgen/plot_traffic_situation.py +++ b/src/trafficgen/plot_traffic_situation.py @@ -239,9 +239,7 @@ def add_ship_to_map( vector_length = vector_time * knot_2_m_pr_min(ship.initial.sog) _ = map_plot.add_child( Polygon( - calculate_vector_arrow( - ship.initial.position, ship.initial.cog, vector_length, lat_lon_0 - ), + calculate_vector_arrow(ship.initial.position, ship.initial.cog, vector_length, lat_lon_0), fill=True, fill_opacity=1, color=color, diff --git a/src/trafficgen/read_files.py b/src/trafficgen/read_files.py index e6bf4c6..a1eb97c 100644 --- a/src/trafficgen/read_files.py +++ b/src/trafficgen/read_files.py @@ -4,7 +4,7 @@ import os from pathlib import Path from typing import List -from uuid import UUID, uuid1, uuid4 +from uuid import UUID, uuid4 from trafficgen.types import EncounterSettings, OwnShip, TargetShip, TrafficSituation @@ -46,9 +46,9 @@ def read_own_ship_file(own_ship_file: Path) -> OwnShip: with open(own_ship_file, encoding="utf-8") as f: data = json.load(f) - if 'static' in data and 'id' not in data['static']: + if "static" in data and "id" not in data["static"]: ship_id: UUID = uuid4() - data['static'].update({'id':ship_id}) + data["static"].update({"id": ship_id}) ship: OwnShip = OwnShip(**data) return ship @@ -71,9 +71,9 @@ def read_target_ship_files(target_ship_folder: Path) -> List[TargetShip]: with open(file_path, encoding="utf-8") as f: data = json.load(f) - if 'static' in data and 'id' not in data['static']: + if "static" in data and "id" not in data["static"]: ship_id: UUID = uuid4() - data['static'].update({'id':ship_id}) + data["static"].update({"id": ship_id}) target_ship: TargetShip = TargetShip(**data) target_ships.append(target_ship) return target_ships diff --git a/src/trafficgen/types.py b/src/trafficgen/types.py index da1c229..881597b 100644 --- a/src/trafficgen/types.py +++ b/src/trafficgen/types.py @@ -2,16 +2,17 @@ from enum import Enum from typing import List, Union -from uuid import UUID, uuid4 +from uuid import UUID -from pydantic import BaseModel, Field +from pydantic import BaseModel def to_camel(string: str) -> str: """Return a camel case formated string from snake case string.""" - words = string.split('_') - return words[0] + ''.join(word.capitalize() for word in words[1:]) + words = string.split("_") + return words[0] + "".join(word.capitalize() for word in words[1:]) + class Position(BaseModel): """Data type for a ship's position with attributes north, east in [m].""" @@ -65,7 +66,6 @@ class GeneralShipType(str, Enum): OTHER_TYPE = "Other Type" - class ShipStatic(BaseModel): """Static ship data that will not change during the scenario.""" @@ -98,6 +98,7 @@ class OwnShip(Ship): pass + class TargetShip(Ship): """Data type for a target ship.""" @@ -129,6 +130,7 @@ class Config: alias_generator = to_camel populate_by_name = True + class TrafficSituation(BaseModel): """Data type for a traffic situation.""" @@ -147,6 +149,7 @@ class Config: alias_generator = to_camel populate_by_name = True + class EncounterClassification(BaseModel): """Data type for the encounter classification.""" @@ -177,6 +180,7 @@ class Config: alias_generator = to_camel populate_by_name = True + class EncounterSettings(BaseModel): """Data type for encounter settings.""" diff --git a/src/trafficgen/write_traffic_situation_to_file.py b/src/trafficgen/write_traffic_situation_to_file.py index fbf4e65..955a43a 100644 --- a/src/trafficgen/write_traffic_situation_to_file.py +++ b/src/trafficgen/write_traffic_situation_to_file.py @@ -20,11 +20,7 @@ def write_traffic_situations_to_json_file(situations: List[TrafficSituation], wr file_number: int = i + 1 output_file_path: Path = write_folder / f"traffic_situation_{file_number:02d}.json" data: str = situation.model_dump_json( - by_alias=True, - indent=4, - exclude_unset=True, - exclude_defaults=False, - exclude_none=True + by_alias=True, indent=4, exclude_unset=True, exclude_defaults=False, exclude_none=True ) with open(output_file_path, "w", encoding="utf-8") as outfile: _ = outfile.write(data)