From 08b32c0d606fa58e938b2c337ef32069c08eda69 Mon Sep 17 00:00:00 2001 From: Frederick Gnodtke Date: Tue, 24 Sep 2024 21:12:23 +0200 Subject: [PATCH] Use orjson --- myskoda/auth/authorization.py | 6 +++--- myskoda/auth/csrf_parser.py | 4 ++-- myskoda/models/air_conditioning.py | 12 ++++++------ myskoda/models/charging.py | 12 ++++++------ myskoda/models/common.py | 6 +++--- myskoda/models/driving_range.py | 6 +++--- myskoda/models/health.py | 6 +++--- myskoda/models/info.py | 20 ++++++++++---------- myskoda/models/maintenance.py | 18 +++++++++--------- myskoda/models/operation_request.py | 4 ++-- myskoda/models/position.py | 8 ++++---- myskoda/models/service_event.py | 6 +++--- myskoda/models/status.py | 8 ++++---- myskoda/models/trip_statistics.py | 6 +++--- myskoda/models/user.py | 6 +++--- 15 files changed, 64 insertions(+), 64 deletions(-) diff --git a/myskoda/auth/authorization.py b/myskoda/auth/authorization.py index 595d1f26..92c9854a 100644 --- a/myskoda/auth/authorization.py +++ b/myskoda/auth/authorization.py @@ -14,7 +14,7 @@ import jwt from aiohttp import ClientSession, FormData from mashumaro import field_options -from mashumaro.mixins.json import DataClassJSONMixin +from mashumaro.mixins.orjson import DataClassORJSONMixin from myskoda.auth.csrf_parser import CSRFParser, CSRFState from myskoda.const import BASE_URL_IDENT, BASE_URL_SKODA, CLIENT_ID, MAX_RETRIES @@ -23,7 +23,7 @@ @dataclass -class IDKAuthorizationCode(DataClassJSONMixin): +class IDKAuthorizationCode(DataClassORJSONMixin): """One-time authorization code that can be obtained by logging in. This authorization code can later be exchanged for a set of JWT tokens. @@ -38,7 +38,7 @@ class IDKAuthorizationCode(DataClassJSONMixin): @dataclass -class IDKSession(DataClassJSONMixin): +class IDKSession(DataClassORJSONMixin): """Stores the JWT tokens relevant for a session at the IDK server. Can be used to authorized and refresh the authorization token. diff --git a/myskoda/auth/csrf_parser.py b/myskoda/auth/csrf_parser.py index db2efb1f..b121fb4a 100644 --- a/myskoda/auth/csrf_parser.py +++ b/myskoda/auth/csrf_parser.py @@ -5,14 +5,14 @@ from html.parser import HTMLParser from mashumaro import field_options -from mashumaro.mixins.json import DataClassJSONMixin +from mashumaro.mixins.orjson import DataClassORJSONMixin from mashumaro.mixins.yaml import DataClassYAMLMixin json_object = re.compile(r"window\._IDK\s=\s((?:\n|.)*?)$") @dataclass -class TemplateModel(DataClassJSONMixin): +class TemplateModel(DataClassORJSONMixin): hmac: str relay_state: str = field(metadata=field_options(alias="relayState")) diff --git a/myskoda/models/air_conditioning.py b/myskoda/models/air_conditioning.py index e8b443a2..f7d5b080 100644 --- a/myskoda/models/air_conditioning.py +++ b/myskoda/models/air_conditioning.py @@ -6,7 +6,7 @@ from typing import Any from mashumaro import field_options -from mashumaro.mixins.json import DataClassJSONMixin +from mashumaro.mixins.orjson import DataClassORJSONMixin from .common import ChargerLockedState, ConnectionState, OnOffState, Side, Weekday @@ -21,7 +21,7 @@ class TimerMode(StrEnum): @dataclass -class Timer(DataClassJSONMixin): +class Timer(DataClassORJSONMixin): enabled: bool id: int time: time @@ -30,26 +30,26 @@ class Timer(DataClassJSONMixin): @dataclass -class SeatHeating(DataClassJSONMixin): +class SeatHeating(DataClassORJSONMixin): front_left: bool = field(metadata=field_options(alias="frontLeft")) front_right: bool = field(metadata=field_options(alias="frontRight")) @dataclass -class TargetTemperature(DataClassJSONMixin): +class TargetTemperature(DataClassORJSONMixin): temperature_value: float = field(metadata=field_options(alias="temperatureValue")) unit_in_car: TemperatureUnit = field(metadata=field_options(alias="unitInCar")) @dataclass -class WindowHeatingState(DataClassJSONMixin): +class WindowHeatingState(DataClassORJSONMixin): front: OnOffState rear: OnOffState unspecified: Any @dataclass -class AirConditioning(DataClassJSONMixin): +class AirConditioning(DataClassORJSONMixin): """Information related to air conditioning.""" timers: list[Timer] diff --git a/myskoda/models/charging.py b/myskoda/models/charging.py index e2f57270..ff15cc27 100644 --- a/myskoda/models/charging.py +++ b/myskoda/models/charging.py @@ -5,7 +5,7 @@ from enum import StrEnum from mashumaro import field_options -from mashumaro.mixins.json import DataClassJSONMixin +from mashumaro.mixins.orjson import DataClassORJSONMixin from .common import ActiveState, EnabledState @@ -20,7 +20,7 @@ class ChargingErrorType(StrEnum): @dataclass -class ChargingError(DataClassJSONMixin): +class ChargingError(DataClassORJSONMixin): type: ChargingErrorType description: str @@ -60,7 +60,7 @@ class PlugUnlockMode(StrEnum): @dataclass -class Settings(DataClassJSONMixin): +class Settings(DataClassORJSONMixin): available_charge_modes: list[ChargeMode] = field( metadata=field_options(alias="availableChargeModes") ) @@ -79,7 +79,7 @@ class Settings(DataClassJSONMixin): @dataclass -class Battery(DataClassJSONMixin): +class Battery(DataClassORJSONMixin): remaining_cruising_range_in_meters: int = field( metadata=field_options(alias="remainingCruisingRangeInMeters") ) @@ -87,7 +87,7 @@ class Battery(DataClassJSONMixin): @dataclass -class ChargingStatus(DataClassJSONMixin): +class ChargingStatus(DataClassORJSONMixin): battery: Battery state: ChargingState charging_rate_in_kilometers_per_hour: float = field( @@ -103,7 +103,7 @@ class ChargingStatus(DataClassJSONMixin): @dataclass -class Charging(DataClassJSONMixin): +class Charging(DataClassORJSONMixin): """Information related to charging an EV.""" errors: list[ChargingError] diff --git a/myskoda/models/common.py b/myskoda/models/common.py index 056465b1..a19e7ecc 100644 --- a/myskoda/models/common.py +++ b/myskoda/models/common.py @@ -4,7 +4,7 @@ from enum import StrEnum from mashumaro import field_options -from mashumaro.mixins.json import DataClassJSONMixin +from mashumaro.mixins.orjson import DataClassORJSONMixin class OnOffState(StrEnum): @@ -52,13 +52,13 @@ class Side(StrEnum): @dataclass -class Coordinates(DataClassJSONMixin): +class Coordinates(DataClassORJSONMixin): latitude: float longitude: float @dataclass -class Address(DataClassJSONMixin): +class Address(DataClassORJSONMixin): city: str street: str country_code: str = field(metadata=field_options(alias="countryCode")) diff --git a/myskoda/models/driving_range.py b/myskoda/models/driving_range.py index 42531104..20a79590 100644 --- a/myskoda/models/driving_range.py +++ b/myskoda/models/driving_range.py @@ -5,7 +5,7 @@ from enum import StrEnum from mashumaro import field_options -from mashumaro.mixins.json import DataClassJSONMixin +from mashumaro.mixins.orjson import DataClassORJSONMixin class EngineType(StrEnum): @@ -14,7 +14,7 @@ class EngineType(StrEnum): @dataclass -class EngineRange(DataClassJSONMixin): +class EngineRange(DataClassORJSONMixin): current_soc_in_percent: int = field(metadata=field_options(alias="currentSoCInPercent")) engine_type: EngineType = field(metadata=field_options(alias="engineType")) remaining_range_in_km: int = field(metadata=field_options(alias="remainingRangeInKm")) @@ -24,7 +24,7 @@ class EngineRange(DataClassJSONMixin): @dataclass -class DrivingRange(DataClassJSONMixin): +class DrivingRange(DataClassORJSONMixin): car_captured_timestamp: datetime = field(metadata=field_options(alias="carCapturedTimestamp")) car_type: EngineType = field(metadata=field_options(alias="carType")) primary_engine_range: EngineRange = field(metadata=field_options(alias="primaryEngineRange")) diff --git a/myskoda/models/health.py b/myskoda/models/health.py index 21f27078..2c2d86e4 100644 --- a/myskoda/models/health.py +++ b/myskoda/models/health.py @@ -6,7 +6,7 @@ from typing import Any from mashumaro import field_options -from mashumaro.mixins.json import DataClassJSONMixin +from mashumaro.mixins.orjson import DataClassORJSONMixin class WarningLightCategory(StrEnum): @@ -21,13 +21,13 @@ class WarningLightCategory(StrEnum): @dataclass -class WarningLight(DataClassJSONMixin): +class WarningLight(DataClassORJSONMixin): category: WarningLightCategory defects: list[Any] @dataclass -class Health(DataClassJSONMixin): +class Health(DataClassORJSONMixin): """Information about the car's health (currently only mileage).""" captured_at: datetime = field(metadata=field_options(alias="capturedAt")) diff --git a/myskoda/models/info.py b/myskoda/models/info.py index e88b4772..019e1873 100644 --- a/myskoda/models/info.py +++ b/myskoda/models/info.py @@ -6,7 +6,7 @@ from enum import StrEnum from mashumaro import field_options -from mashumaro.mixins.json import DataClassJSONMixin +from mashumaro.mixins.orjson import DataClassORJSONMixin _LOGGER = logging.getLogger(__name__) @@ -86,7 +86,7 @@ class CapabilityStatus(StrEnum): @dataclass -class Capability(DataClassJSONMixin): +class Capability(DataClassORJSONMixin): id: CapabilityId statuses: list[CapabilityStatus] @@ -107,14 +107,14 @@ def drop_unknown_capabilities(value: list[dict]) -> list[Capability]: @dataclass -class Capabilities(DataClassJSONMixin): +class Capabilities(DataClassORJSONMixin): capabilities: list[Capability] = field( metadata=field_options(deserialize=drop_unknown_capabilities) ) @dataclass -class Battery(DataClassJSONMixin): +class Battery(DataClassORJSONMixin): capacity: int = field(metadata=field_options(alias="capacityInKWh")) @@ -130,7 +130,7 @@ class VehicleState(StrEnum): @dataclass -class Engine(DataClassJSONMixin): +class Engine(DataClassORJSONMixin): type: str power: int = field(metadata=field_options(alias="powerInKW")) capacity_in_liters: float | None = field( @@ -139,12 +139,12 @@ class Engine(DataClassJSONMixin): @dataclass -class Gearbox(DataClassJSONMixin): +class Gearbox(DataClassORJSONMixin): type: str @dataclass -class Specification(DataClassJSONMixin): +class Specification(DataClassORJSONMixin): body: BodyType engine: Engine model: str @@ -161,7 +161,7 @@ class Specification(DataClassJSONMixin): @dataclass -class ServicePartner(DataClassJSONMixin): +class ServicePartner(DataClassORJSONMixin): id: str = field(metadata=field_options(alias="servicePartnerId")) @@ -170,13 +170,13 @@ class ErrorType(StrEnum): @dataclass -class Error(DataClassJSONMixin): +class Error(DataClassORJSONMixin): description: str type: ErrorType @dataclass -class Info(DataClassJSONMixin): +class Info(DataClassORJSONMixin): """Basic vehicle information.""" state: VehicleState diff --git a/myskoda/models/maintenance.py b/myskoda/models/maintenance.py index 755f522a..d6e469f9 100644 --- a/myskoda/models/maintenance.py +++ b/myskoda/models/maintenance.py @@ -5,13 +5,13 @@ from enum import StrEnum from mashumaro import field_options -from mashumaro.mixins.json import DataClassJSONMixin +from mashumaro.mixins.orjson import DataClassORJSONMixin from .common import Address, Coordinates, Weekday @dataclass -class MaintenanceReport(DataClassJSONMixin): +class MaintenanceReport(DataClassORJSONMixin): captured_at: datetime = field(metadata=field_options(alias="capturedAt")) inspection_due_in_days: int = field(metadata=field_options(alias="inspectionDueInDays")) mileage_in_km: int = field(metadata=field_options(alias="mileageInKm")) @@ -27,20 +27,20 @@ class MaintenanceReport(DataClassJSONMixin): @dataclass -class Contact(DataClassJSONMixin): +class Contact(DataClassORJSONMixin): email: str | None = field(default=None) phone: str | None = field(default=None) url: str | None = field(default=None) @dataclass -class TimeRange(DataClassJSONMixin): +class TimeRange(DataClassORJSONMixin): start: time = field(metadata=field_options(alias="from")) end: time = field(metadata=field_options(alias="to")) @dataclass -class OpeningHoursPeriod(DataClassJSONMixin): +class OpeningHoursPeriod(DataClassORJSONMixin): opening_times: list[TimeRange] = field(metadata=field_options(alias="openingTimes")) period_end: Weekday = field(metadata=field_options(alias="periodEnd")) period_start: Weekday = field(metadata=field_options(alias="periodStart")) @@ -51,7 +51,7 @@ class CommunicationChannel(StrEnum): @dataclass -class PredictiveMaintenanceSettings(DataClassJSONMixin): +class PredictiveMaintenanceSettings(DataClassORJSONMixin): email: str phone: str preferred_channel: CommunicationChannel = field( @@ -61,12 +61,12 @@ class PredictiveMaintenanceSettings(DataClassJSONMixin): @dataclass -class PredictiveMaintenance(DataClassJSONMixin): +class PredictiveMaintenance(DataClassORJSONMixin): setting: PredictiveMaintenanceSettings @dataclass -class ServicePartner(DataClassJSONMixin): +class ServicePartner(DataClassORJSONMixin): address: Address brand: str contact: Contact @@ -78,7 +78,7 @@ class ServicePartner(DataClassJSONMixin): @dataclass -class Maintenance(DataClassJSONMixin): +class Maintenance(DataClassORJSONMixin): maintenance_report: MaintenanceReport = field(metadata=field_options(alias="maintenanceReport")) predictive_maintenance: PredictiveMaintenance | None = field( default=None, metadata=field_options(alias="predictiveMaintenance") diff --git a/myskoda/models/operation_request.py b/myskoda/models/operation_request.py index 0ee42875..68ccb48c 100644 --- a/myskoda/models/operation_request.py +++ b/myskoda/models/operation_request.py @@ -4,7 +4,7 @@ from enum import StrEnum from mashumaro import field_options -from mashumaro.mixins.json import DataClassJSONMixin +from mashumaro.mixins.orjson import DataClassORJSONMixin class OperationStatus(StrEnum): @@ -52,7 +52,7 @@ class OperationName(StrEnum): @dataclass -class OperationRequest(DataClassJSONMixin): +class OperationRequest(DataClassORJSONMixin): version: int trace_id: str = field(metadata=field_options(alias="traceId")) request_id: str = field(metadata=field_options(alias="requestId")) diff --git a/myskoda/models/position.py b/myskoda/models/position.py index 08d16e47..aa100e9c 100644 --- a/myskoda/models/position.py +++ b/myskoda/models/position.py @@ -4,7 +4,7 @@ from enum import StrEnum from mashumaro import field_options -from mashumaro.mixins.json import DataClassJSONMixin +from mashumaro.mixins.orjson import DataClassORJSONMixin from .common import Address, Coordinates @@ -14,7 +14,7 @@ class PositionType(StrEnum): @dataclass -class Position(DataClassJSONMixin): +class Position(DataClassORJSONMixin): address: Address gps_coordinates: Coordinates = field(metadata=field_options(alias="gpsCoordinates")) type: PositionType @@ -25,13 +25,13 @@ class ErrorType(StrEnum): @dataclass -class Error(DataClassJSONMixin): +class Error(DataClassORJSONMixin): type: ErrorType description: str @dataclass -class Positions(DataClassJSONMixin): +class Positions(DataClassORJSONMixin): """Positional information (GPS) for the vehicle and other things.""" errors: list[Error] diff --git a/myskoda/models/service_event.py b/myskoda/models/service_event.py index d1d50778..6f29071c 100644 --- a/myskoda/models/service_event.py +++ b/myskoda/models/service_event.py @@ -6,7 +6,7 @@ from typing import Generic, TypeVar from mashumaro import field_options -from mashumaro.mixins.json import DataClassJSONMixin +from mashumaro.mixins.orjson import DataClassORJSONMixin from .charging import ChargeMode, ChargingState @@ -21,7 +21,7 @@ class ServiceEventName(StrEnum): @dataclass -class ServiceEventData(DataClassJSONMixin): +class ServiceEventData(DataClassORJSONMixin): user_id: str = field(metadata=field_options(alias="userId")) vin: str @@ -30,7 +30,7 @@ class ServiceEventData(DataClassJSONMixin): @dataclass -class ServiceEvent(Generic[T], DataClassJSONMixin): +class ServiceEvent(Generic[T], DataClassORJSONMixin): version: int producer: str name: ServiceEventName diff --git a/myskoda/models/status.py b/myskoda/models/status.py index 1e71324c..e34474e3 100644 --- a/myskoda/models/status.py +++ b/myskoda/models/status.py @@ -4,20 +4,20 @@ from datetime import datetime from mashumaro import field_options -from mashumaro.mixins.json import DataClassJSONMixin +from mashumaro.mixins.orjson import DataClassORJSONMixin from myskoda.models.common import DoorLockedState, OnOffState, OpenState @dataclass -class Detail(DataClassJSONMixin): +class Detail(DataClassORJSONMixin): bonnet: OpenState sunroof: OpenState trunk: OpenState @dataclass -class Overall(DataClassJSONMixin): +class Overall(DataClassORJSONMixin): doors: OpenState doors_locked: DoorLockedState = field(metadata=field_options(alias="doorsLocked")) lights: OnOffState @@ -26,7 +26,7 @@ class Overall(DataClassJSONMixin): @dataclass -class Status(DataClassJSONMixin): +class Status(DataClassORJSONMixin): """Current status information for a vehicle.""" car_captured_timestamp: datetime = field(metadata=field_options(alias="carCapturedTimestamp")) diff --git a/myskoda/models/trip_statistics.py b/myskoda/models/trip_statistics.py index cf63e6d0..4e4005c9 100644 --- a/myskoda/models/trip_statistics.py +++ b/myskoda/models/trip_statistics.py @@ -5,7 +5,7 @@ from enum import StrEnum from mashumaro import field_options -from mashumaro.mixins.json import DataClassJSONMixin +from mashumaro.mixins.orjson import DataClassORJSONMixin class VehicleType(StrEnum): @@ -13,7 +13,7 @@ class VehicleType(StrEnum): @dataclass -class StatisticsEntry(DataClassJSONMixin): +class StatisticsEntry(DataClassORJSONMixin): date: date average_fuel_consumption: float | None = field( default=None, metadata=field_options(alias="averageFuelConsumption") @@ -29,7 +29,7 @@ class StatisticsEntry(DataClassJSONMixin): @dataclass -class TripStatistics(DataClassJSONMixin): +class TripStatistics(DataClassORJSONMixin): overall_average_fuel_consumption: float = field( metadata=field_options(alias="overallAverageFuelConsumption") ) diff --git a/myskoda/models/user.py b/myskoda/models/user.py index 84d4d3c5..4334ae64 100644 --- a/myskoda/models/user.py +++ b/myskoda/models/user.py @@ -5,7 +5,7 @@ from enum import StrEnum from mashumaro import field_options -from mashumaro.mixins.json import DataClassJSONMixin +from mashumaro.mixins.orjson import DataClassORJSONMixin class UserCapabilityId(StrEnum): @@ -16,12 +16,12 @@ class UserCapabilityId(StrEnum): @dataclass -class UserCapability(DataClassJSONMixin): +class UserCapability(DataClassORJSONMixin): id: UserCapabilityId @dataclass -class User(DataClassJSONMixin): +class User(DataClassORJSONMixin): capabilities: list[UserCapability] country: str date_of_birth: date = field(metadata=field_options(alias="dateOfBirth"))