clean 09 + use of json is safe

This commit is contained in:
2026-03-14 14:09:29 +01:00
parent 3d55c9ac25
commit 4f31ce6762
15 changed files with 72 additions and 1957 deletions
+40 -170
View File
@@ -1,109 +1,6 @@
import datetime
from typing import Optional
from pydantic import BaseModel, Field, ValidationError
SPACE_STATIONS = [
{
"station_id": "LGW125",
"name": "Titan Mining Outpost",
"crew_size": 6,
"power_level": 76.4,
"oxygen_level": 95.5,
"last_maintenance": "2023-07-11T00:00:00",
"is_operational": True,
"notes": None,
},
{
"station_id": "QCH189",
"name": "Deep Space Observatory",
"crew_size": 3,
"power_level": 70.8,
"oxygen_level": 88.1,
"last_maintenance": "2023-08-24T00:00:00",
"is_operational": False,
"notes": "System diagnostics required",
},
{
"station_id": "ISS674",
"name": "Europa Research Station",
"crew_size": 11,
"power_level": 82.0,
"oxygen_level": 91.4,
"last_maintenance": "2023-10-21T00:00:00",
"is_operational": True,
"notes": None,
},
{
"station_id": "ISS877",
"name": "Mars Orbital Platform",
"crew_size": 9,
"power_level": 79.7,
"oxygen_level": 87.2,
"last_maintenance": "2023-10-06T00:00:00",
"is_operational": False,
"notes": "System diagnostics required",
},
{
"station_id": "LGW194",
"name": "Deep Space Observatory",
"crew_size": 4,
"power_level": 80.2,
"oxygen_level": 89.9,
"last_maintenance": "2023-10-25T00:00:00",
"is_operational": False,
"notes": "System diagnostics required",
},
{
"station_id": "ISS847",
"name": "Solar Wind Monitor",
"crew_size": 11,
"power_level": 73.6,
"oxygen_level": 98.1,
"last_maintenance": "2023-12-11T00:00:00",
"is_operational": False,
"notes": "System diagnostics required",
},
{
"station_id": "QCH400",
"name": "Asteroid Belt Relay",
"crew_size": 12,
"power_level": 75.5,
"oxygen_level": 86.0,
"last_maintenance": "2023-07-15T00:00:00",
"is_operational": False,
"notes": "System diagnostics required",
},
{
"station_id": "ERS891",
"name": "Titan Mining Outpost",
"crew_size": 4,
"power_level": 94.4,
"oxygen_level": 97.3,
"last_maintenance": "2023-09-25T00:00:00",
"is_operational": True,
"notes": "All systems nominal",
},
{
"station_id": "ABR266",
"name": "Asteroid Belt Relay",
"crew_size": 8,
"power_level": 76.0,
"oxygen_level": 88.8,
"last_maintenance": "2023-07-10T00:00:00",
"is_operational": False,
"notes": "System diagnostics required",
},
{
"station_id": "LGW723",
"name": "Mars Orbital Platform",
"crew_size": 11,
"power_level": 90.8,
"oxygen_level": 87.3,
"last_maintenance": "2023-09-25T00:00:00",
"is_operational": False,
"notes": "System diagnostics required",
},
]
from json import load
class SpaceStation(BaseModel):
@@ -119,73 +16,46 @@ class SpaceStation(BaseModel):
def main() -> None:
try:
valid_station = {
"station_id": "ISS001",
"name": "International Space Station",
"crew_size": 6,
"power_level": 85.5,
"oxygen_level": 92.3,
"last_maintenance": "2023-09-25T00:00:00",
}
with open("../generated_data/space_stations.json") as valids, open(
"../generated_data/invalid_stations.json"
) as invalids:
print("\ninvalid stations:\n")
data = load(invalids)
for station in data:
try:
print("========================================")
ss = SpaceStation(**station)
print("Valid station created")
print(
f"ID: {ss.station_id}\n"
f"Name {ss.name}\n"
f"Crew: {ss.crew_size} people\n"
f"Power: {ss.power_level}%\n"
f"Oxygen: {ss.oxygen_level}%\n"
f"Status: {'operational' if ss.is_operational else 'not operational'}\n"
f"Note: {ss.notes}\n"
)
except ValidationError as err:
print(err.errors()[0]["msg"])
invalid_station = {
"station_id": "ISS001",
"name": "International Space Station",
"crew_size": 26,
"power_level": 85.5,
"oxygen_level": 92.3,
"last_maintenance": "2023-09-25T00:00:00",
}
try:
print("\nValid station:n\n")
ss = SpaceStation(**valid_station)
print("Valid station created")
print(
f"ID: {ss.station_id}\n"
f"Name {ss.name}\n"
f"Crew: {ss.crew_size} people\n"
f"Power: {ss.power_level}%\n"
f"Oxygen: {ss.oxygen_level}%\n"
f"Status: {'operational' if ss.is_operational else 'not operational'}\n"
f"Note: {ss.notes}\n"
)
except ValidationError as err:
print(err)
try:
print("\nInvalid station:\n")
ss = SpaceStation(**invalid_station)
print("Valid station created")
print(
f"ID: {ss.station_id}\n"
f"Name {ss.name}\n"
f"Crew: {ss.crew_size} people\n"
f"Power: {ss.power_level}%\n"
f"Oxygen: {ss.oxygen_level}%\n"
f"Status: {'operational' if ss.is_operational else 'not operational'}\n"
f"Note: {ss.notes}\n"
)
except ValidationError as err:
print(err)
print("\nBatch stations:\n")
for station in SPACE_STATIONS:
try:
ss = SpaceStation(**station)
print("========================================")
print("Valid station created")
print(
f"ID: {ss.station_id}\n"
f"Name {ss.name}\n"
f"Crew: {ss.crew_size} people\n"
f"Power: {ss.power_level}%\n"
f"Oxygen: {ss.oxygen_level}%\n"
f"Status: {'operational' if ss.is_operational else 'not operational'}\n"
f"Note: {ss.notes}\n"
)
except ValidationError as e:
print(e.errors())
print("\nvalid stations:\n")
data = load(valids)
for station in data:
try:
print("========================================")
ss = SpaceStation(**station)
print("Valid station created")
print(
f"ID: {ss.station_id}\n"
f"Name {ss.name}\n"
f"Crew: {ss.crew_size} people\n"
f"Power: {ss.power_level}%\n"
f"Oxygen: {ss.oxygen_level}%\n"
f"Status: {'operational' if ss.is_operational else 'not operational'}\n"
f"Note: {ss.notes}\n"
)
except ValidationError as err:
print(err.errors()[0]["msg"])
except Exception as err:
print(err)