diff --git a/.gitignore b/.gitignore
index 25ff4b0..9560f1b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -127,3 +127,4 @@ dmypy.json
# Pyre type checker
.pyre/
+/tests
diff --git a/README.md b/README.md
index 21f671d..bcb40f6 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-
+
Toyota community integration
@@ -21,16 +21,17 @@ it working but there are no promises.
## Features
-Only Europe is supported right now. If you want to help to add other regions, please open an issue over at [`mytoyota`](https://github.com/DurgNomis-drol/mytoyota).
+Only Europe is supported right now. If you want to help add other regions, please open an issue over at [`mytoyota`](https://github.com/DurgNomis-drol/mytoyota).
This component will set up the following platforms:
-| Platform | Sample sensor | Description |
-| ---------------- | ----------------------- | --------------------------------- |
-| `sensor` | `sensor.aygo` | Static data about your car |
-| `sensor` | `sensor.aygo_fuel_tank` | Fuel tank information |
-| `sensor` | `sensor.aygo_odometer` | Odometer information |
-| `device_tracker` | `device_tracker.aygo` | Shows you last parked information |
+| Platform | Sample sensor | Description |
+| ---------------- | ----------------------------- | --------------------------------- |
+| `sensor` | `sensor.aygo` | Static data about your car |
+| `sensor` | `sensor.aygo_odometer` | Odometer information |
+| `sensor` | `sensor.aygo_fuel_tank` | Fuel tank information |
+| `sensor` | `sensor.aygo_starter_battery` | Starter battery health |
+| `device_tracker` | `device_tracker.aygo` | Shows you last parked information |
**Sensors displaying statistical information are coming soon...**
diff --git a/custom_components/toyota/__init__.py b/custom_components/toyota/__init__.py
index ddad566..ebdab40 100644
--- a/custom_components/toyota/__init__.py
+++ b/custom_components/toyota/__init__.py
@@ -7,7 +7,7 @@
from mytoyota.exceptions import ToyotaLoginError
from homeassistant.config_entries import ConfigEntry
-from homeassistant.const import CONF_API_TOKEN, CONF_EMAIL, CONF_PASSWORD, CONF_REGION
+from homeassistant.const import CONF_EMAIL, CONF_PASSWORD, CONF_REGION
from homeassistant.core import Config, HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers.update_coordinator import (
@@ -18,21 +18,20 @@
from .const import (
ALIAS,
CONF_LOCALE,
- CONF_UUID,
DATA_CLIENT,
DATA_COORDINATOR,
DETAILS,
DOMAIN,
HYBRID,
+ IMAGE,
MODEL,
+ PLATFORMS,
STARTUP_MESSAGE,
VIN,
)
_LOGGER = logging.getLogger(__name__)
-PLATFORMS = ["sensor", "device_tracker"]
-
# Update sensors every 5 minutes
UPDATE_INTERVAL = timedelta(seconds=300)
@@ -51,26 +50,24 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
email = entry.data[CONF_EMAIL]
password = entry.data[CONF_PASSWORD]
locale = entry.data[CONF_LOCALE]
- uuid = entry.data[CONF_UUID]
- token = entry.data[CONF_API_TOKEN]
region = entry.data[CONF_REGION]
client = MyT(
username=email,
password=password,
locale=locale,
- uuid=uuid,
region=region.lower(),
- token=token,
)
+ await client.login()
+
async def async_update_data():
"""Fetch data from Toyota API."""
vehicles = []
try:
- vehicles = await client.gather_information()
+ vehicles = await client.gather_all_information()
except ToyotaLoginError as ex:
_LOGGER.error(ex)
except Exception as ex: # pylint: disable=broad-except
@@ -134,6 +131,7 @@ def __init__(self, coordinator, index):
self.alias = self.coordinator.data[self.index][ALIAS]
self.model = self.coordinator.data[self.index][DETAILS][MODEL]
self.hybrid = self.coordinator.data[self.index][DETAILS][HYBRID]
+ self.image = self.coordinator.data[self.index][DETAILS][IMAGE]
@property
def device_info(self):
@@ -142,5 +140,5 @@ def device_info(self):
"identifiers": {(DOMAIN, self.vin)},
"name": self.alias,
"model": self.model,
- "manufacturer": "ha_toyota",
+ "manufacturer": DOMAIN,
}
diff --git a/custom_components/toyota/config_flow.py b/custom_components/toyota/config_flow.py
index 45dbf32..b917d6f 100644
--- a/custom_components/toyota/config_flow.py
+++ b/custom_components/toyota/config_flow.py
@@ -11,21 +11,25 @@
import voluptuous as vol
from homeassistant import config_entries
-from homeassistant.const import CONF_API_TOKEN, CONF_EMAIL, CONF_PASSWORD, CONF_REGION
+from homeassistant.const import CONF_EMAIL, CONF_PASSWORD, CONF_REGION
-from .const import CONF_LOCALE, CONF_REGION_SUPPORTED, CONF_UUID
+from .const import CONF_LOCALE, CONF_REGION_SUPPORTED
# https://github.com/PyCQA/pylint/issues/3202
from .const import DOMAIN # pylint: disable=unused-import
_LOGGER = logging.getLogger(__name__)
+supported_regions = CONF_REGION_SUPPORTED
+
DATA_SCHEMA = vol.Schema(
{
vol.Required(CONF_EMAIL): str,
vol.Required(CONF_PASSWORD): str,
vol.Required(CONF_LOCALE): str,
- vol.Required(CONF_REGION): vol.In(CONF_REGION_SUPPORTED),
+ vol.Required(CONF_REGION): vol.In(
+ [region.capitalize() for region in supported_regions]
+ ),
}
)
@@ -53,11 +57,7 @@ async def async_step_user(self, user_input=None):
region=region.lower(),
)
- token = await client.get_token()
- uuid = client.get_uuid()
-
- data = user_input
- data.update({CONF_API_TOKEN: token, CONF_UUID: uuid})
+ await client.login()
except ToyotaLoginError as ex:
errors["base"] = "invalid_auth"
diff --git a/custom_components/toyota/const.py b/custom_components/toyota/const.py
index 50fcabb..b582f5a 100644
--- a/custom_components/toyota/const.py
+++ b/custom_components/toyota/const.py
@@ -1,45 +1,47 @@
"""Constants for the Toyota Connected Services integration."""
+PLATFORMS = ["sensor", "device_tracker"]
+
DOMAIN = "toyota"
NAME = "Toyota Connected Services"
ISSUES_URL = "https://github.com/DurgNomis-drol/ha_toyota/issues"
-DATA_CLIENT = "toyota_client"
-DATA_COORDINATOR = "coordinator"
-
# CONF
CONF_LOCALE = "locale"
-CONF_UUID = "uuid"
CONF_REGION_SUPPORTED = [
- "Europe",
+ "europe",
]
-# COORDINATOR DATA ATTRIBUTES
-DETAILS = "details"
-MODEL = "model"
+# DATA COORDINATOR
+DATA_CLIENT = "toyota_client"
+DATA_COORDINATOR = "coordinator"
+
+# DATA COORDINATOR ATTRIBUTES
ALIAS = "alias"
-VIN = "vin"
-STATUS = "status"
-ODOMETER = "odometer"
+BATTERY_HEALTH = "batteryHealth"
+CONNECTED_SERVICES = "connectedServices"
+DETAILS = "details"
+ENGINE = "engine"
+FUEL = "Fuel"
+FUEL_TYPE = "fuel"
+HYBRID = "hybrid"
+IMAGE = "imageUrl"
+LICENSE_PLATE = "licensePlate"
MILEAGE = "mileage"
MILEAGE_UNIT = "mileage_unit"
-FUEL = "Fuel"
-FUEL_TYPE = "fuel_type"
+MODEL = "modelName"
+ODOMETER = "odometer"
PARKING = "parking"
-BATTERY = "battery"
-HVAC = "hvac"
-HVAC_TEMPERATURE = "InsideTemperature"
-HYBRID = "hybrid"
-LAST_UPDATED = "last_updated"
-IMAGE = "image"
+STATUS = "status"
+SERVICES = "servicesEnabled"
+VIN = "vin"
# ICONS
+ICON_BATTERY = "mdi:car-battery"
ICON_CAR = "mdi:car"
ICON_FUEL = "mdi:gas-station"
-ICON_ODOMETER = "mdi:speedometer"
-ICON_HVAC = "mdi:hvac"
+ICON_ODOMETER = "mdi:counter"
ICON_PARKING = "mdi:map-marker"
-ICON_BATTERY = "mdi:car-battery"
STARTUP_MESSAGE = f"""
diff --git a/custom_components/toyota/device_tracker.py b/custom_components/toyota/device_tracker.py
index 9235c13..4b5c3f4 100644
--- a/custom_components/toyota/device_tracker.py
+++ b/custom_components/toyota/device_tracker.py
@@ -5,26 +5,27 @@
from homeassistant.components.device_tracker.config_entry import TrackerEntity
from . import ToyotaEntity
-from .const import DATA_COORDINATOR, DOMAIN, ICON_CAR, PARKING, STATUS
+from .const import (
+ CONNECTED_SERVICES,
+ DATA_COORDINATOR,
+ DOMAIN,
+ ICON_CAR,
+ PARKING,
+ SERVICES,
+ STATUS,
+)
_LOGGER = logging.getLogger(__name__)
async def async_setup_entry(hass, config_entry, async_add_devices):
"""Set up the BMW ConnectedDrive tracker from config entry."""
- coordinator = hass.data[DOMAIN][config_entry.entry_id][DATA_COORDINATOR]
-
tracker = []
- def check_if_enabled(service):
- """Check if Toyota Connected Services is enabled for the car."""
- if "error" in service:
- return False
-
- return True
+ coordinator = hass.data[DOMAIN][config_entry.entry_id][DATA_COORDINATOR]
for index, _ in enumerate(coordinator.data):
- if check_if_enabled(coordinator.data[index][STATUS][PARKING]):
+ if coordinator.data[index][SERVICES][CONNECTED_SERVICES]:
tracker.append(ToyotaParkingTracker(coordinator, index))
async_add_devices(tracker, True)
@@ -46,12 +47,12 @@ def longitude(self):
@property
def name(self):
"""Return the name of the sensor."""
- return f"{self.alias}"
+ return f"{self.alias} parking location"
@property
def unique_id(self):
"""Return a unique identifier for this entity."""
- return f"{self.alias}/last_parked"
+ return f"{self.vin}/parking_location"
@property
def source_type(self):
@@ -67,3 +68,8 @@ def icon(self):
def force_update(self):
"""All updates do not need to be written to the state machine."""
return False
+
+ @property
+ def entity_picture(self):
+ """Return entity picture."""
+ return self.image
diff --git a/custom_components/toyota/manifest.json b/custom_components/toyota/manifest.json
index b46fcb4..a868543 100644
--- a/custom_components/toyota/manifest.json
+++ b/custom_components/toyota/manifest.json
@@ -6,6 +6,6 @@
"documentation": "https://github.com/DurgNomis-drol/ha_toyota",
"issue_tracker": "https://github.com/DurgNomis-drol/ha_toyota/issues",
"codeowners": ["@DurgNomis-drol"],
- "requirements": ["mytoyota==0.1.4"],
- "version": "0.1.0"
+ "requirements": ["mytoyota==0.2.1"],
+ "version": "0.2.0"
}
diff --git a/custom_components/toyota/sensor.py b/custom_components/toyota/sensor.py
index e3de89f..70f8c17 100644
--- a/custom_components/toyota/sensor.py
+++ b/custom_components/toyota/sensor.py
@@ -1,54 +1,44 @@
"""Platform for Toyota sensor integration."""
-from homeassistant.const import DEVICE_CLASS_TEMPERATURE, PERCENTAGE
+from homeassistant.const import PERCENTAGE, STATE_UNKNOWN
from . import ToyotaEntity
from .const import (
- BATTERY,
+ BATTERY_HEALTH,
+ CONNECTED_SERVICES,
DATA_COORDINATOR,
DETAILS,
DOMAIN,
FUEL,
FUEL_TYPE,
- HVAC,
- HVAC_TEMPERATURE,
ICON_BATTERY,
ICON_CAR,
ICON_FUEL,
- ICON_HVAC,
ICON_ODOMETER,
- IMAGE,
+ LICENSE_PLATE,
MILEAGE,
MILEAGE_UNIT,
ODOMETER,
+ SERVICES,
STATUS,
)
async def async_setup_entry(hass, config_entry, async_add_devices):
"""Set up the sensor platform."""
- coordinator = hass.data[DOMAIN][config_entry.entry_id][DATA_COORDINATOR]
-
sensors = []
- def check_if_enabled(service):
- """Check if Toyota Connected Services is enabled for the car."""
- if "error" in service:
- return False
-
- return True
+ coordinator = hass.data[DOMAIN][config_entry.entry_id][DATA_COORDINATOR]
for index, _ in enumerate(coordinator.data):
sensors.append(ToyotaCarSensor(coordinator, index))
# If Connected Services is setup for the car, setup additional sensors
- if check_if_enabled(coordinator.data[index][STATUS][ODOMETER]):
- sensors.append(ToyotaFuelRemainingSensor(coordinator, index))
+ if coordinator.data[index][SERVICES][CONNECTED_SERVICES]:
+ sensors.append(ToyotaStarterBatterySensor(coordinator, index))
sensors.append(ToyotaOdometerSensor(coordinator, index))
- # if check_if_enabled(coordinator.data[index][STATUS][HVAC]):
- # sensors.append(ToyotaHVACSensor(coordinator, index))
- # if coordinator.data[index][DETAILS][HYBRID]:
- # sensors.append(ToyotaEVSensor(coordinator, index))
+ if FUEL in coordinator.data[index][STATUS][ODOMETER]:
+ sensors.append(ToyotaFuelRemainingSensor(coordinator, index))
async_add_devices(sensors, True)
@@ -64,7 +54,7 @@ def name(self):
@property
def unique_id(self):
"""Return a unique identifier for this entity."""
- return f"{self.alias}/car"
+ return f"{self.vin}/car"
@property
def device_state_attributes(self):
@@ -79,146 +69,103 @@ def icon(self):
@property
def state(self):
"""Return the state of the sensor."""
- return self.model
+ if LICENSE_PLATE in self.coordinator.data[self.index][DETAILS]:
+ return self.coordinator.data[self.index][DETAILS][LICENSE_PLATE]
- @property
- def entity_picture(self):
- """Return entity picture."""
- return self.coordinator.data[self.index][DETAILS][IMAGE]
+ return STATE_UNKNOWN
-class ToyotaFuelRemainingSensor(ToyotaEntity):
+class ToyotaStarterBatterySensor(ToyotaEntity):
"""Class for the fuel remaining sensor."""
@property
def name(self):
"""Return the name of the sensor."""
- return f"{self.alias} fuel tank"
+ return f"{self.alias} starter battery health"
@property
def unique_id(self):
"""Return a unique identifier for this entity."""
- return f"{self.alias}/fuel_tank"
-
- @property
- def unit_of_measurement(self):
- """Return the unit of measurement."""
- return PERCENTAGE
-
- @property
- def device_state_attributes(self):
- """Return the state attributes."""
- return {
- FUEL_TYPE: self.coordinator.data[self.index][DETAILS][FUEL_TYPE],
- }
+ return f"{self.vin}/starter_battery_condition"
@property
def icon(self):
"""Return the icon to use in the frontend."""
- return ICON_FUEL
+ return ICON_BATTERY
@property
def state(self):
"""Return the state of the sensor."""
- return self.coordinator.data[self.index][STATUS][ODOMETER][FUEL]
+ if BATTERY_HEALTH in self.coordinator.data[self.index][DETAILS]:
+ return (
+ self.coordinator.data[self.index][DETAILS][BATTERY_HEALTH]
+ .lower()
+ .capitalize()
+ )
+ return STATE_UNKNOWN
-class ToyotaOdometerSensor(ToyotaEntity):
+
+class ToyotaFuelRemainingSensor(ToyotaEntity):
"""Class for the fuel remaining sensor."""
@property
def name(self):
"""Return the name of the sensor."""
- return f"{self.alias} Odometer"
+ return f"{self.alias} fuel tank"
@property
def unique_id(self):
"""Return a unique identifier for this entity."""
- return f"{self.alias}/odometer"
+ return f"{self.vin}/fuel_tank"
@property
def unit_of_measurement(self):
"""Return the unit of measurement."""
- return self.coordinator.data[self.index][STATUS][ODOMETER][MILEAGE_UNIT]
-
- @property
- def icon(self):
- """Return the icon to use in the frontend."""
- return ICON_ODOMETER
-
- @property
- def state(self):
- """Return the state of the sensor."""
- return self.coordinator.data[self.index][STATUS][ODOMETER][MILEAGE]
-
-
-# Is disabled for now
-class ToyotaHVACSensor(ToyotaEntity):
- """Class for the fuel remaining sensor."""
-
- @property
- def name(self):
- """Return the name of the sensor."""
- return f"{self.alias} HVAC"
-
- @property
- def unique_id(self):
- """Return a unique identifier for this entity."""
- return f"{self.alias}/hvac"
+ return PERCENTAGE
@property
- def device_class(self):
- """Return the class of this device, from DEVICE_CLASS_*"""
- return DEVICE_CLASS_TEMPERATURE
+ def device_state_attributes(self):
+ """Return the state attributes."""
+ return {
+ FUEL_TYPE: self.coordinator.data[self.index][DETAILS][FUEL_TYPE],
+ }
@property
def icon(self):
"""Return the icon to use in the frontend."""
- return ICON_HVAC
-
- @property
- def device_state_attributes(self):
- """Return the state attributes."""
- return self.coordinator.data[self.index][STATUS][HVAC]
+ return ICON_FUEL
@property
def state(self):
"""Return the state of the sensor."""
- return self.coordinator.data[self.index][STATUS][HVAC][HVAC_TEMPERATURE]
+ return self.coordinator.data[self.index][STATUS][ODOMETER][FUEL]
-# Is disabled for now
-class ToyotaEVSensor(ToyotaEntity):
+class ToyotaOdometerSensor(ToyotaEntity):
"""Class for the fuel remaining sensor."""
@property
def name(self):
"""Return the name of the sensor."""
- return f"{self.alias} battery"
+ return f"{self.alias} Odometer"
@property
def unique_id(self):
"""Return a unique identifier for this entity."""
- return f"{self.alias}/battery"
+ return f"{self.vin}/odometer"
@property
def unit_of_measurement(self):
"""Return the unit of measurement."""
- return PERCENTAGE
+ return self.coordinator.data[self.index][STATUS][ODOMETER][MILEAGE_UNIT]
@property
def icon(self):
"""Return the icon to use in the frontend."""
- return ICON_BATTERY
-
- @property
- def device_state_attributes(self):
- """Return the state attributes."""
- return self.coordinator.data[self.index][STATUS][BATTERY]
+ return ICON_ODOMETER
@property
def state(self):
"""Return the state of the sensor."""
- return self.coordinator.data[self.index][STATUS][BATTERY][
- "ChargeRemainingAmount"
- ]
+ return self.coordinator.data[self.index][STATUS][ODOMETER][MILEAGE]
diff --git a/poetry.lock b/poetry.lock
index 37e07d5..fe37088 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -214,16 +214,16 @@ python-versions = "*"
[[package]]
name = "flake8"
-version = "3.8.4"
+version = "3.9.0"
description = "the modular source code checker: pep8 pyflakes and co"
category = "dev"
optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
[package.dependencies]
mccabe = ">=0.6.0,<0.7.0"
-pycodestyle = ">=2.6.0a1,<2.7.0"
-pyflakes = ">=2.2.0,<2.3.0"
+pycodestyle = ">=2.7.0,<2.8.0"
+pyflakes = ">=2.3.0,<2.4.0"
[[package]]
name = "h11"
@@ -235,7 +235,7 @@ python-versions = ">=3.6"
[[package]]
name = "homeassistant"
-version = "2021.3.3"
+version = "2021.3.4"
description = "Open-source home automation platform running on Python 3."
category = "main"
optional = false
@@ -298,14 +298,14 @@ http2 = ["h2 (>=3.0.0,<4.0.0)"]
[[package]]
name = "identify"
-version = "2.1.2"
+version = "2.2.1"
description = "File identification library for Python"
category = "dev"
optional = false
python-versions = ">=3.6.1"
[package.extras]
-license = ["editdistance"]
+license = ["editdistance-s"]
[[package]]
name = "idna"
@@ -317,7 +317,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
name = "isort"
-version = "5.7.0"
+version = "5.8.0"
description = "A Python utility / library to sort Python imports."
category = "dev"
optional = false
@@ -355,11 +355,11 @@ data = ["language_data (>=1.0)"]
[[package]]
name = "lazy-object-proxy"
-version = "1.5.2"
+version = "1.6.0"
description = "A fast and thorough lazy object proxy."
category = "dev"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
[[package]]
name = "markupsafe"
@@ -395,7 +395,7 @@ python-versions = "*"
[[package]]
name = "mytoyota"
-version = "0.1.4"
+version = "0.2.1"
description = "Python client for Toyota Connected Services."
category = "main"
optional = false
@@ -404,6 +404,7 @@ python-versions = "*"
[package.dependencies]
httpx = "*"
langcodes = "*"
+pendulum = "*"
[[package]]
name = "nodeenv"
@@ -421,6 +422,18 @@ category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+[[package]]
+name = "pendulum"
+version = "2.1.2"
+description = "Python datetimes made easy"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+
+[package.dependencies]
+python-dateutil = ">=2.6,<3.0"
+pytzdata = ">=2020.1"
+
[[package]]
name = "pre-commit"
version = "2.11.1"
@@ -439,7 +452,7 @@ virtualenv = ">=20.0.8"
[[package]]
name = "pycodestyle"
-version = "2.6.0"
+version = "2.7.0"
description = "Python style guide checker"
category = "dev"
optional = false
@@ -455,7 +468,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
name = "pyflakes"
-version = "2.2.0"
+version = "2.3.1"
description = "passive checker of Python programs"
category = "dev"
optional = false
@@ -492,6 +505,17 @@ toml = ">=0.7.1"
[package.extras]
docs = ["sphinx (==3.5.1)", "python-docs-theme (==2020.12)"]
+[[package]]
+name = "python-dateutil"
+version = "2.8.1"
+description = "Extensions to the standard Python datetime module"
+category = "main"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
+
+[package.dependencies]
+six = ">=1.5"
+
[[package]]
name = "python-slugify"
version = "4.0.1"
@@ -514,6 +538,14 @@ category = "main"
optional = false
python-versions = "*"
+[[package]]
+name = "pytzdata"
+version = "2020.1"
+description = "The Olson timezone database for Python."
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+
[[package]]
name = "pyyaml"
version = "5.4.1"
@@ -524,7 +556,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
[[package]]
name = "regex"
-version = "2020.11.13"
+version = "2021.3.17"
description = "Alternative regular expression module, to replace re."
category = "dev"
optional = false
@@ -624,20 +656,20 @@ python-versions = "*"
[[package]]
name = "urllib3"
-version = "1.26.3"
+version = "1.26.4"
description = "HTTP library with thread-safe connection pooling, file post, and more."
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
[package.extras]
-brotli = ["brotlipy (>=0.6.0)"]
secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"]
socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
+brotli = ["brotlipy (>=0.6.0)"]
[[package]]
name = "virtualenv"
-version = "20.4.2"
+version = "20.4.3"
description = "Virtual Python Environment builder"
category = "dev"
optional = false
@@ -695,7 +727,7 @@ multidict = ">=4.0"
[metadata]
lock-version = "1.1"
python-versions = "^3.8"
-content-hash = "92fb9ae6ad193de0160dcaa4e668750a7c6e968e0fcd9248fccab5e7acbdb411"
+content-hash = "59044a356046fd41fea9170b6d579840ce2790b11b04d9afc6a15f5a4e192a7d"
[metadata.files]
aiohttp = [
@@ -872,16 +904,16 @@ filelock = [
{file = "filelock-3.0.12.tar.gz", hash = "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59"},
]
flake8 = [
- {file = "flake8-3.8.4-py2.py3-none-any.whl", hash = "sha256:749dbbd6bfd0cf1318af27bf97a14e28e5ff548ef8e5b1566ccfb25a11e7c839"},
- {file = "flake8-3.8.4.tar.gz", hash = "sha256:aadae8761ec651813c24be05c6f7b4680857ef6afaae4651a4eccaef97ce6c3b"},
+ {file = "flake8-3.9.0-py2.py3-none-any.whl", hash = "sha256:12d05ab02614b6aee8df7c36b97d1a3b2372761222b19b58621355e82acddcff"},
+ {file = "flake8-3.9.0.tar.gz", hash = "sha256:78873e372b12b093da7b5e5ed302e8ad9e988b38b063b61ad937f26ca58fc5f0"},
]
h11 = [
{file = "h11-0.12.0-py3-none-any.whl", hash = "sha256:36a3cb8c0a032f56e2da7084577878a035d3b61d104230d4bd49c0c6b555a9c6"},
{file = "h11-0.12.0.tar.gz", hash = "sha256:47222cb6067e4a307d535814917cd98fd0a57b6788ce715755fa2b6c28b56042"},
]
homeassistant = [
- {file = "homeassistant-2021.3.3-py3-none-any.whl", hash = "sha256:53a804924fbd120d5749cd5c87a08389510d7c796626df8b48e5f9acfcc01fc4"},
- {file = "homeassistant-2021.3.3.tar.gz", hash = "sha256:d4831319d3ac333dcc6544e942d96dbaef33e3d892f292a04d055ff82a045c4d"},
+ {file = "homeassistant-2021.3.4-py3-none-any.whl", hash = "sha256:aedadd2416f9fdb8787f34bfaa19f4123b642acc45dc4c78fed79550b630763b"},
+ {file = "homeassistant-2021.3.4.tar.gz", hash = "sha256:fedcef096e10bd52f504fc86ac8888d750f49056077cba1a0e3b0efe596d385f"},
]
httpcore = [
{file = "httpcore-0.12.3-py3-none-any.whl", hash = "sha256:93e822cd16c32016b414b789aeff4e855d0ccbfc51df563ee34d4dbadbb3bcdc"},
@@ -892,16 +924,16 @@ httpx = [
{file = "httpx-0.16.1.tar.gz", hash = "sha256:126424c279c842738805974687e0518a94c7ae8d140cd65b9c4f77ac46ffa537"},
]
identify = [
- {file = "identify-2.1.2-py2.py3-none-any.whl", hash = "sha256:fab0d3a3ab0d7d5f513985b0335ccccad9d61420c5216fb779237bf7edc3e5d1"},
- {file = "identify-2.1.2.tar.gz", hash = "sha256:e3b7fd755b7ceee44fe22957005a92c2a085c863c2e65a6efdec35d0e06666db"},
+ {file = "identify-2.2.1-py2.py3-none-any.whl", hash = "sha256:9cc5f58996cd359b7b72f0a5917d8639de5323917e6952a3bfbf36301b576f40"},
+ {file = "identify-2.2.1.tar.gz", hash = "sha256:1cfb05b578de996677836d5a2dde14b3dffde313cf7d2b3e793a0787a36e26dd"},
]
idna = [
{file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"},
{file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"},
]
isort = [
- {file = "isort-5.7.0-py3-none-any.whl", hash = "sha256:fff4f0c04e1825522ce6949973e83110a6e907750cd92d128b0d14aaaadbffdc"},
- {file = "isort-5.7.0.tar.gz", hash = "sha256:c729845434366216d320e936b8ad6f9d681aab72dc7cbc2d51bedc3582f3ad1e"},
+ {file = "isort-5.8.0-py3-none-any.whl", hash = "sha256:2bb1680aad211e3c9944dbce1d4ba09a989f04e238296c87fe2139faa26d655d"},
+ {file = "isort-5.8.0.tar.gz", hash = "sha256:0a943902919f65c5684ac4e0154b1ad4fac6dcaa5d9f3426b732f1c8b5419be6"},
]
jinja2 = [
{file = "Jinja2-2.11.3-py2.py3-none-any.whl", hash = "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419"},
@@ -911,30 +943,28 @@ langcodes = [
{file = "langcodes-3.1.0.tar.gz", hash = "sha256:1ccd37e3a68760d29ec3b17f5962cd1d8f242f4d9705ad1601c5cb7fab48199c"},
]
lazy-object-proxy = [
- {file = "lazy-object-proxy-1.5.2.tar.gz", hash = "sha256:5944a9b95e97de1980c65f03b79b356f30a43de48682b8bdd90aa5089f0ec1f4"},
- {file = "lazy_object_proxy-1.5.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:e960e8be509e8d6d618300a6c189555c24efde63e85acaf0b14b2cd1ac743315"},
- {file = "lazy_object_proxy-1.5.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:522b7c94b524389f4a4094c4bf04c2b02228454ddd17c1a9b2801fac1d754871"},
- {file = "lazy_object_proxy-1.5.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:3782931963dc89e0e9a0ae4348b44762e868ea280e4f8c233b537852a8996ab9"},
- {file = "lazy_object_proxy-1.5.2-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:429c4d1862f3fc37cd56304d880f2eae5bd0da83bdef889f3bd66458aac49128"},
- {file = "lazy_object_proxy-1.5.2-cp35-cp35m-win32.whl", hash = "sha256:cd1bdace1a8762534e9a36c073cd54e97d517a17d69a17985961265be6d22847"},
- {file = "lazy_object_proxy-1.5.2-cp35-cp35m-win_amd64.whl", hash = "sha256:ddbdcd10eb999d7ab292677f588b658372aadb9a52790f82484a37127a390108"},
- {file = "lazy_object_proxy-1.5.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:ecb5dd5990cec6e7f5c9c1124a37cb2c710c6d69b0c1a5c4aa4b35eba0ada068"},
- {file = "lazy_object_proxy-1.5.2-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:b6577f15d5516d7d209c1a8cde23062c0f10625f19e8dc9fb59268859778d7d7"},
- {file = "lazy_object_proxy-1.5.2-cp36-cp36m-win32.whl", hash = "sha256:c8fe2d6ff0ff583784039d0255ea7da076efd08507f2be6f68583b0da32e3afb"},
- {file = "lazy_object_proxy-1.5.2-cp36-cp36m-win_amd64.whl", hash = "sha256:fa5b2dee0e231fa4ad117be114251bdfe6afe39213bd629d43deb117b6a6c40a"},
- {file = "lazy_object_proxy-1.5.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1d33d6f789697f401b75ce08e73b1de567b947740f768376631079290118ad39"},
- {file = "lazy_object_proxy-1.5.2-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:57fb5c5504ddd45ed420b5b6461a78f58cbb0c1b0cbd9cd5a43ad30a4a3ee4d0"},
- {file = "lazy_object_proxy-1.5.2-cp37-cp37m-win32.whl", hash = "sha256:e7273c64bccfd9310e9601b8f4511d84730239516bada26a0c9846c9697617ef"},
- {file = "lazy_object_proxy-1.5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6f4e5e68b7af950ed7fdb594b3f19a0014a3ace0fedb86acb896e140ffb24302"},
- {file = "lazy_object_proxy-1.5.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:cadfa2c2cf54d35d13dc8d231253b7985b97d629ab9ca6e7d672c35539d38163"},
- {file = "lazy_object_proxy-1.5.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:e7428977763150b4cf83255625a80a23dfdc94d43be7791ce90799d446b4e26f"},
- {file = "lazy_object_proxy-1.5.2-cp38-cp38-win32.whl", hash = "sha256:2f2de8f8ac0be3e40d17730e0600619d35c78c13a099ea91ef7fb4ad944ce694"},
- {file = "lazy_object_proxy-1.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:38c3865bd220bd983fcaa9aa11462619e84a71233bafd9c880f7b1cb753ca7fa"},
- {file = "lazy_object_proxy-1.5.2-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:8a44e9901c0555f95ac401377032f6e6af66d8fc1fbfad77a7a8b1a826e0b93c"},
- {file = "lazy_object_proxy-1.5.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:fa7fb7973c622b9e725bee1db569d2c2ee64d2f9a089201c5e8185d482c7352d"},
- {file = "lazy_object_proxy-1.5.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:71a1ef23f22fa8437974b2d60fedb947c99a957ad625f83f43fd3de70f77f458"},
- {file = "lazy_object_proxy-1.5.2-cp39-cp39-win32.whl", hash = "sha256:ef3f5e288aa57b73b034ce9c1f1ac753d968f9069cd0742d1d69c698a0167166"},
- {file = "lazy_object_proxy-1.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:37d9c34b96cca6787fe014aeb651217944a967a5b165e2cacb6b858d2997ab84"},
+ {file = "lazy-object-proxy-1.6.0.tar.gz", hash = "sha256:489000d368377571c6f982fba6497f2aa13c6d1facc40660963da62f5c379726"},
+ {file = "lazy_object_proxy-1.6.0-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:c6938967f8528b3668622a9ed3b31d145fab161a32f5891ea7b84f6b790be05b"},
+ {file = "lazy_object_proxy-1.6.0-cp27-cp27m-win32.whl", hash = "sha256:ebfd274dcd5133e0afae738e6d9da4323c3eb021b3e13052d8cbd0e457b1256e"},
+ {file = "lazy_object_proxy-1.6.0-cp27-cp27m-win_amd64.whl", hash = "sha256:ed361bb83436f117f9917d282a456f9e5009ea12fd6de8742d1a4752c3017e93"},
+ {file = "lazy_object_proxy-1.6.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d900d949b707778696fdf01036f58c9876a0d8bfe116e8d220cfd4b15f14e741"},
+ {file = "lazy_object_proxy-1.6.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:5743a5ab42ae40caa8421b320ebf3a998f89c85cdc8376d6b2e00bd12bd1b587"},
+ {file = "lazy_object_proxy-1.6.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:bf34e368e8dd976423396555078def5cfc3039ebc6fc06d1ae2c5a65eebbcde4"},
+ {file = "lazy_object_proxy-1.6.0-cp36-cp36m-win32.whl", hash = "sha256:b579f8acbf2bdd9ea200b1d5dea36abd93cabf56cf626ab9c744a432e15c815f"},
+ {file = "lazy_object_proxy-1.6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:4f60460e9f1eb632584c9685bccea152f4ac2130e299784dbaf9fae9f49891b3"},
+ {file = "lazy_object_proxy-1.6.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d7124f52f3bd259f510651450e18e0fd081ed82f3c08541dffc7b94b883aa981"},
+ {file = "lazy_object_proxy-1.6.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:22ddd618cefe54305df49e4c069fa65715be4ad0e78e8d252a33debf00f6ede2"},
+ {file = "lazy_object_proxy-1.6.0-cp37-cp37m-win32.whl", hash = "sha256:9d397bf41caad3f489e10774667310d73cb9c4258e9aed94b9ec734b34b495fd"},
+ {file = "lazy_object_proxy-1.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:24a5045889cc2729033b3e604d496c2b6f588c754f7a62027ad4437a7ecc4837"},
+ {file = "lazy_object_proxy-1.6.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:17e0967ba374fc24141738c69736da90e94419338fd4c7c7bef01ee26b339653"},
+ {file = "lazy_object_proxy-1.6.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:410283732af311b51b837894fa2f24f2c0039aa7f220135192b38fcc42bd43d3"},
+ {file = "lazy_object_proxy-1.6.0-cp38-cp38-win32.whl", hash = "sha256:85fb7608121fd5621cc4377a8961d0b32ccf84a7285b4f1d21988b2eae2868e8"},
+ {file = "lazy_object_proxy-1.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:d1c2676e3d840852a2de7c7d5d76407c772927addff8d742b9808fe0afccebdf"},
+ {file = "lazy_object_proxy-1.6.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:b865b01a2e7f96db0c5d12cfea590f98d8c5ba64ad222300d93ce6ff9138bcad"},
+ {file = "lazy_object_proxy-1.6.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:4732c765372bd78a2d6b2150a6e99d00a78ec963375f236979c0626b97ed8e43"},
+ {file = "lazy_object_proxy-1.6.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:9698110e36e2df951c7c36b6729e96429c9c32b3331989ef19976592c5f3c77a"},
+ {file = "lazy_object_proxy-1.6.0-cp39-cp39-win32.whl", hash = "sha256:1fee665d2638491f4d6e55bd483e15ef21f6c8c2095f235fef72601021e64f61"},
+ {file = "lazy_object_proxy-1.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:f5144c75445ae3ca2057faac03fda5a902eff196702b0a24daf1d6ce0650514b"},
]
markupsafe = [
{file = "MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161"},
@@ -1038,8 +1068,8 @@ mypy-extensions = [
{file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
]
mytoyota = [
- {file = "mytoyota-0.1.4-py3-none-any.whl", hash = "sha256:cf52ea9ed2aebfcdc1cad872eec660400b47b5c4cbbda7fb22b83d1d096a8526"},
- {file = "mytoyota-0.1.4.tar.gz", hash = "sha256:ac0ba14237f57ec2968d9392e988084366155ed4c450851a586e8a82e00ced37"},
+ {file = "mytoyota-0.2.1-py3-none-any.whl", hash = "sha256:d55bd67285e23ff303ad5fbf9f67ee945b9c25eb761e463a20a8d76dd8ab1c81"},
+ {file = "mytoyota-0.2.1.tar.gz", hash = "sha256:f759f3065074560532c1ca724765b257a030bb997b6657d0d91b1aaaf20bce43"},
]
nodeenv = [
{file = "nodeenv-1.5.0-py2.py3-none-any.whl", hash = "sha256:5304d424c529c997bc888453aeaa6362d242b6b4631e90f3d4bf1b290f1c84a9"},
@@ -1049,21 +1079,44 @@ pathspec = [
{file = "pathspec-0.8.1-py2.py3-none-any.whl", hash = "sha256:aa0cb481c4041bf52ffa7b0d8fa6cd3e88a2ca4879c533c9153882ee2556790d"},
{file = "pathspec-0.8.1.tar.gz", hash = "sha256:86379d6b86d75816baba717e64b1a3a3469deb93bb76d613c9ce79edc5cb68fd"},
]
+pendulum = [
+ {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"},
+ {file = "pendulum-2.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739"},
+ {file = "pendulum-2.1.2-cp35-cp35m-macosx_10_15_x86_64.whl", hash = "sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394"},
+ {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0"},
+ {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3"},
+ {file = "pendulum-2.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b"},
+ {file = "pendulum-2.1.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360"},
+ {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0"},
+ {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087"},
+ {file = "pendulum-2.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db"},
+ {file = "pendulum-2.1.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002"},
+ {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5"},
+ {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b"},
+ {file = "pendulum-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b"},
+ {file = "pendulum-2.1.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116"},
+ {file = "pendulum-2.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052"},
+ {file = "pendulum-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be"},
+ {file = "pendulum-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269"},
+ {file = "pendulum-2.1.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a"},
+ {file = "pendulum-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7"},
+ {file = "pendulum-2.1.2.tar.gz", hash = "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"},
+]
pre-commit = [
{file = "pre_commit-2.11.1-py2.py3-none-any.whl", hash = "sha256:94c82f1bf5899d56edb1d926732f4e75a7df29a0c8c092559c77420c9d62428b"},
{file = "pre_commit-2.11.1.tar.gz", hash = "sha256:de55c5c72ce80d79106e48beb1b54104d16495ce7f95b0c7b13d4784193a00af"},
]
pycodestyle = [
- {file = "pycodestyle-2.6.0-py2.py3-none-any.whl", hash = "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367"},
- {file = "pycodestyle-2.6.0.tar.gz", hash = "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e"},
+ {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"},
+ {file = "pycodestyle-2.7.0.tar.gz", hash = "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"},
]
pycparser = [
{file = "pycparser-2.20-py2.py3-none-any.whl", hash = "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"},
{file = "pycparser-2.20.tar.gz", hash = "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0"},
]
pyflakes = [
- {file = "pyflakes-2.2.0-py2.py3-none-any.whl", hash = "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92"},
- {file = "pyflakes-2.2.0.tar.gz", hash = "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8"},
+ {file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"},
+ {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"},
]
pyjwt = [
{file = "PyJWT-1.7.1-py2.py3-none-any.whl", hash = "sha256:5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e"},
@@ -1073,6 +1126,10 @@ pylint = [
{file = "pylint-2.7.2-py3-none-any.whl", hash = "sha256:d09b0b07ba06bcdff463958f53f23df25e740ecd81895f7d2699ec04bbd8dc3b"},
{file = "pylint-2.7.2.tar.gz", hash = "sha256:0e21d3b80b96740909d77206d741aa3ce0b06b41be375d92e1f3244a274c1f8a"},
]
+python-dateutil = [
+ {file = "python-dateutil-2.8.1.tar.gz", hash = "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"},
+ {file = "python_dateutil-2.8.1-py2.py3-none-any.whl", hash = "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"},
+]
python-slugify = [
{file = "python-slugify-4.0.1.tar.gz", hash = "sha256:69a517766e00c1268e5bbfc0d010a0a8508de0b18d30ad5a1ff357f8ae724270"},
]
@@ -1080,6 +1137,10 @@ pytz = [
{file = "pytz-2021.1-py2.py3-none-any.whl", hash = "sha256:eb10ce3e7736052ed3623d49975ce333bcd712c7bb19a58b9e2089d4057d0798"},
{file = "pytz-2021.1.tar.gz", hash = "sha256:83a4a90894bf38e243cf052c8b58f381bfe9a7a483f6a9cab140bc7f702ac4da"},
]
+pytzdata = [
+ {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"},
+ {file = "pytzdata-2020.1.tar.gz", hash = "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540"},
+]
pyyaml = [
{file = "PyYAML-5.4.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922"},
{file = "PyYAML-5.4.1-cp27-cp27m-win32.whl", hash = "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393"},
@@ -1112,47 +1173,47 @@ pyyaml = [
{file = "PyYAML-5.4.1.tar.gz", hash = "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e"},
]
regex = [
- {file = "regex-2020.11.13-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:8b882a78c320478b12ff024e81dc7d43c1462aa4a3341c754ee65d857a521f85"},
- {file = "regex-2020.11.13-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:a63f1a07932c9686d2d416fb295ec2c01ab246e89b4d58e5fa468089cab44b70"},
- {file = "regex-2020.11.13-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:6e4b08c6f8daca7d8f07c8d24e4331ae7953333dbd09c648ed6ebd24db5a10ee"},
- {file = "regex-2020.11.13-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:bba349276b126947b014e50ab3316c027cac1495992f10e5682dc677b3dfa0c5"},
- {file = "regex-2020.11.13-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:56e01daca75eae420bce184edd8bb341c8eebb19dd3bce7266332258f9fb9dd7"},
- {file = "regex-2020.11.13-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:6a8ce43923c518c24a2579fda49f093f1397dad5d18346211e46f134fc624e31"},
- {file = "regex-2020.11.13-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:1ab79fcb02b930de09c76d024d279686ec5d532eb814fd0ed1e0051eb8bd2daa"},
- {file = "regex-2020.11.13-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:9801c4c1d9ae6a70aeb2128e5b4b68c45d4f0af0d1535500884d644fa9b768c6"},
- {file = "regex-2020.11.13-cp36-cp36m-win32.whl", hash = "sha256:49cae022fa13f09be91b2c880e58e14b6da5d10639ed45ca69b85faf039f7a4e"},
- {file = "regex-2020.11.13-cp36-cp36m-win_amd64.whl", hash = "sha256:749078d1eb89484db5f34b4012092ad14b327944ee7f1c4f74d6279a6e4d1884"},
- {file = "regex-2020.11.13-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b2f4007bff007c96a173e24dcda236e5e83bde4358a557f9ccf5e014439eae4b"},
- {file = "regex-2020.11.13-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:38c8fd190db64f513fe4e1baa59fed086ae71fa45083b6936b52d34df8f86a88"},
- {file = "regex-2020.11.13-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5862975b45d451b6db51c2e654990c1820523a5b07100fc6903e9c86575202a0"},
- {file = "regex-2020.11.13-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:262c6825b309e6485ec2493ffc7e62a13cf13fb2a8b6d212f72bd53ad34118f1"},
- {file = "regex-2020.11.13-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:bafb01b4688833e099d79e7efd23f99172f501a15c44f21ea2118681473fdba0"},
- {file = "regex-2020.11.13-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:e32f5f3d1b1c663af7f9c4c1e72e6ffe9a78c03a31e149259f531e0fed826512"},
- {file = "regex-2020.11.13-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:3bddc701bdd1efa0d5264d2649588cbfda549b2899dc8d50417e47a82e1387ba"},
- {file = "regex-2020.11.13-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:02951b7dacb123d8ea6da44fe45ddd084aa6777d4b2454fa0da61d569c6fa538"},
- {file = "regex-2020.11.13-cp37-cp37m-win32.whl", hash = "sha256:0d08e71e70c0237883d0bef12cad5145b84c3705e9c6a588b2a9c7080e5af2a4"},
- {file = "regex-2020.11.13-cp37-cp37m-win_amd64.whl", hash = "sha256:1fa7ee9c2a0e30405e21031d07d7ba8617bc590d391adfc2b7f1e8b99f46f444"},
- {file = "regex-2020.11.13-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:baf378ba6151f6e272824b86a774326f692bc2ef4cc5ce8d5bc76e38c813a55f"},
- {file = "regex-2020.11.13-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e3faaf10a0d1e8e23a9b51d1900b72e1635c2d5b0e1bea1c18022486a8e2e52d"},
- {file = "regex-2020.11.13-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:2a11a3e90bd9901d70a5b31d7dd85114755a581a5da3fc996abfefa48aee78af"},
- {file = "regex-2020.11.13-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:d1ebb090a426db66dd80df8ca85adc4abfcbad8a7c2e9a5ec7513ede522e0a8f"},
- {file = "regex-2020.11.13-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:b2b1a5ddae3677d89b686e5c625fc5547c6e492bd755b520de5332773a8af06b"},
- {file = "regex-2020.11.13-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:2c99e97d388cd0a8d30f7c514d67887d8021541b875baf09791a3baad48bb4f8"},
- {file = "regex-2020.11.13-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:c084582d4215593f2f1d28b65d2a2f3aceff8342aa85afd7be23a9cad74a0de5"},
- {file = "regex-2020.11.13-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:a3d748383762e56337c39ab35c6ed4deb88df5326f97a38946ddd19028ecce6b"},
- {file = "regex-2020.11.13-cp38-cp38-win32.whl", hash = "sha256:7913bd25f4ab274ba37bc97ad0e21c31004224ccb02765ad984eef43e04acc6c"},
- {file = "regex-2020.11.13-cp38-cp38-win_amd64.whl", hash = "sha256:6c54ce4b5d61a7129bad5c5dc279e222afd00e721bf92f9ef09e4fae28755683"},
- {file = "regex-2020.11.13-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1862a9d9194fae76a7aaf0150d5f2a8ec1da89e8b55890b1786b8f88a0f619dc"},
- {file = "regex-2020.11.13-cp39-cp39-manylinux1_i686.whl", hash = "sha256:4902e6aa086cbb224241adbc2f06235927d5cdacffb2425c73e6570e8d862364"},
- {file = "regex-2020.11.13-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7a25fcbeae08f96a754b45bdc050e1fb94b95cab046bf56b016c25e9ab127b3e"},
- {file = "regex-2020.11.13-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:d2d8ce12b7c12c87e41123997ebaf1a5767a5be3ec545f64675388970f415e2e"},
- {file = "regex-2020.11.13-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:f7d29a6fc4760300f86ae329e3b6ca28ea9c20823df123a2ea8693e967b29917"},
- {file = "regex-2020.11.13-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:717881211f46de3ab130b58ec0908267961fadc06e44f974466d1887f865bd5b"},
- {file = "regex-2020.11.13-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:3128e30d83f2e70b0bed9b2a34e92707d0877e460b402faca908c6667092ada9"},
- {file = "regex-2020.11.13-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:8f6a2229e8ad946e36815f2a03386bb8353d4bde368fdf8ca5f0cb97264d3b5c"},
- {file = "regex-2020.11.13-cp39-cp39-win32.whl", hash = "sha256:f8f295db00ef5f8bae530fc39af0b40486ca6068733fb860b42115052206466f"},
- {file = "regex-2020.11.13-cp39-cp39-win_amd64.whl", hash = "sha256:a15f64ae3a027b64496a71ab1f722355e570c3fac5ba2801cafce846bf5af01d"},
- {file = "regex-2020.11.13.tar.gz", hash = "sha256:83d6b356e116ca119db8e7c6fc2983289d87b27b3fac238cfe5dca529d884562"},
+ {file = "regex-2021.3.17-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b97ec5d299c10d96617cc851b2e0f81ba5d9d6248413cd374ef7f3a8871ee4a6"},
+ {file = "regex-2021.3.17-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:cb4ee827857a5ad9b8ae34d3c8cc51151cb4a3fe082c12ec20ec73e63cc7c6f0"},
+ {file = "regex-2021.3.17-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:633497504e2a485a70a3268d4fc403fe3063a50a50eed1039083e9471ad0101c"},
+ {file = "regex-2021.3.17-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:a59a2ee329b3de764b21495d78c92ab00b4ea79acef0f7ae8c1067f773570afa"},
+ {file = "regex-2021.3.17-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:f85d6f41e34f6a2d1607e312820971872944f1661a73d33e1e82d35ea3305e14"},
+ {file = "regex-2021.3.17-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:4651f839dbde0816798e698626af6a2469eee6d9964824bb5386091255a1694f"},
+ {file = "regex-2021.3.17-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:39c44532d0e4f1639a89e52355b949573e1e2c5116106a395642cbbae0ff9bcd"},
+ {file = "regex-2021.3.17-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:3d9a7e215e02bd7646a91fb8bcba30bc55fd42a719d6b35cf80e5bae31d9134e"},
+ {file = "regex-2021.3.17-cp36-cp36m-win32.whl", hash = "sha256:159fac1a4731409c830d32913f13f68346d6b8e39650ed5d704a9ce2f9ef9cb3"},
+ {file = "regex-2021.3.17-cp36-cp36m-win_amd64.whl", hash = "sha256:13f50969028e81765ed2a1c5fcfdc246c245cf8d47986d5172e82ab1a0c42ee5"},
+ {file = "regex-2021.3.17-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b9d8d286c53fe0cbc6d20bf3d583cabcd1499d89034524e3b94c93a5ab85ca90"},
+ {file = "regex-2021.3.17-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:201e2619a77b21a7780580ab7b5ce43835e242d3e20fef50f66a8df0542e437f"},
+ {file = "regex-2021.3.17-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d47d359545b0ccad29d572ecd52c9da945de7cd6cf9c0cfcb0269f76d3555689"},
+ {file = "regex-2021.3.17-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:ea2f41445852c660ba7c3ebf7d70b3779b20d9ca8ba54485a17740db49f46932"},
+ {file = "regex-2021.3.17-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:486a5f8e11e1f5bbfcad87f7c7745eb14796642323e7e1829a331f87a713daaa"},
+ {file = "regex-2021.3.17-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:18e25e0afe1cf0f62781a150c1454b2113785401ba285c745acf10c8ca8917df"},
+ {file = "regex-2021.3.17-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:a2ee026f4156789df8644d23ef423e6194fad0bc53575534101bb1de5d67e8ce"},
+ {file = "regex-2021.3.17-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:4c0788010a93ace8a174d73e7c6c9d3e6e3b7ad99a453c8ee8c975ddd9965643"},
+ {file = "regex-2021.3.17-cp37-cp37m-win32.whl", hash = "sha256:575a832e09d237ae5fedb825a7a5bc6a116090dd57d6417d4f3b75121c73e3be"},
+ {file = "regex-2021.3.17-cp37-cp37m-win_amd64.whl", hash = "sha256:8e65e3e4c6feadf6770e2ad89ad3deb524bcb03d8dc679f381d0568c024e0deb"},
+ {file = "regex-2021.3.17-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a0df9a0ad2aad49ea3c7f65edd2ffb3d5c59589b85992a6006354f6fb109bb18"},
+ {file = "regex-2021.3.17-cp38-cp38-manylinux1_i686.whl", hash = "sha256:b98bc9db003f1079caf07b610377ed1ac2e2c11acc2bea4892e28cc5b509d8d5"},
+ {file = "regex-2021.3.17-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:808404898e9a765e4058bf3d7607d0629000e0a14a6782ccbb089296b76fa8fe"},
+ {file = "regex-2021.3.17-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:5770a51180d85ea468234bc7987f5597803a4c3d7463e7323322fe4a1b181578"},
+ {file = "regex-2021.3.17-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:976a54d44fd043d958a69b18705a910a8376196c6b6ee5f2596ffc11bff4420d"},
+ {file = "regex-2021.3.17-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:63f3ca8451e5ff7133ffbec9eda641aeab2001be1a01878990f6c87e3c44b9d5"},
+ {file = "regex-2021.3.17-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:bcd945175c29a672f13fce13a11893556cd440e37c1b643d6eeab1988c8b209c"},
+ {file = "regex-2021.3.17-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:3d9356add82cff75413bec360c1eca3e58db4a9f5dafa1f19650958a81e3249d"},
+ {file = "regex-2021.3.17-cp38-cp38-win32.whl", hash = "sha256:f5d0c921c99297354cecc5a416ee4280bd3f20fd81b9fb671ca6be71499c3fdf"},
+ {file = "regex-2021.3.17-cp38-cp38-win_amd64.whl", hash = "sha256:14de88eda0976020528efc92d0a1f8830e2fb0de2ae6005a6fc4e062553031fa"},
+ {file = "regex-2021.3.17-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4c2e364491406b7888c2ad4428245fc56c327e34a5dfe58fd40df272b3c3dab3"},
+ {file = "regex-2021.3.17-cp39-cp39-manylinux1_i686.whl", hash = "sha256:8bd4f91f3fb1c9b1380d6894bd5b4a519409135bec14c0c80151e58394a4e88a"},
+ {file = "regex-2021.3.17-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:882f53afe31ef0425b405a3f601c0009b44206ea7f55ee1c606aad3cc213a52c"},
+ {file = "regex-2021.3.17-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:07ef35301b4484bce843831e7039a84e19d8d33b3f8b2f9aab86c376813d0139"},
+ {file = "regex-2021.3.17-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:360a01b5fa2ad35b3113ae0c07fb544ad180603fa3b1f074f52d98c1096fa15e"},
+ {file = "regex-2021.3.17-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:709f65bb2fa9825f09892617d01246002097f8f9b6dde8d1bb4083cf554701ba"},
+ {file = "regex-2021.3.17-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:c66221e947d7207457f8b6f42b12f613b09efa9669f65a587a2a71f6a0e4d106"},
+ {file = "regex-2021.3.17-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:c782da0e45aff131f0bed6e66fbcfa589ff2862fc719b83a88640daa01a5aff7"},
+ {file = "regex-2021.3.17-cp39-cp39-win32.whl", hash = "sha256:dc9963aacb7da5177e40874585d7407c0f93fb9d7518ec58b86e562f633f36cd"},
+ {file = "regex-2021.3.17-cp39-cp39-win_amd64.whl", hash = "sha256:a0d04128e005142260de3733591ddf476e4902c0c23c1af237d9acf3c96e1b38"},
+ {file = "regex-2021.3.17.tar.gz", hash = "sha256:4b8a1fb724904139149a43e172850f35aa6ea97fb0545244dc0b805e0154ed68"},
]
requests = [
{file = "requests-2.25.1-py2.py3-none-any.whl", hash = "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e"},
@@ -1236,12 +1297,12 @@ typing-extensions = [
{file = "typing_extensions-3.7.4.3.tar.gz", hash = "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c"},
]
urllib3 = [
- {file = "urllib3-1.26.3-py2.py3-none-any.whl", hash = "sha256:1b465e494e3e0d8939b50680403e3aedaa2bc434b7d5af64dfd3c958d7f5ae80"},
- {file = "urllib3-1.26.3.tar.gz", hash = "sha256:de3eedaad74a2683334e282005cd8d7f22f4d55fa690a2a1020a416cb0a47e73"},
+ {file = "urllib3-1.26.4-py2.py3-none-any.whl", hash = "sha256:2f4da4594db7e1e110a944bb1b551fdf4e6c136ad42e4234131391e21eb5b0df"},
+ {file = "urllib3-1.26.4.tar.gz", hash = "sha256:e7b021f7241115872f92f43c6508082facffbd1c048e3c6e2bb9c2a157e28937"},
]
virtualenv = [
- {file = "virtualenv-20.4.2-py2.py3-none-any.whl", hash = "sha256:2be72df684b74df0ea47679a7df93fd0e04e72520022c57b479d8f881485dbe3"},
- {file = "virtualenv-20.4.2.tar.gz", hash = "sha256:147b43894e51dd6bba882cf9c282447f780e2251cd35172403745fc381a0a80d"},
+ {file = "virtualenv-20.4.3-py2.py3-none-any.whl", hash = "sha256:83f95875d382c7abafe06bd2a4cdd1b363e1bb77e02f155ebe8ac082a916b37c"},
+ {file = "virtualenv-20.4.3.tar.gz", hash = "sha256:49ec4eb4c224c6f7dd81bb6d0a28a09ecae5894f4e593c89b0db0885f565a107"},
]
voluptuous = [
{file = "voluptuous-0.12.1-py3-none-any.whl", hash = "sha256:8ace33fcf9e6b1f59406bfaf6b8ec7bcc44266a9f29080b4deb4fe6ff2492386"},
diff --git a/pyproject.toml b/pyproject.toml
index 8b05359..b062a99 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[tool.poetry]
name = "toyota"
-version = "0.1.0"
+version = "0.2.0"
description = "Toyota Connected Services integration for Home Assistant"
authors = ["DurgNomis-drol "]
license = "MIT"
@@ -9,7 +9,7 @@ license = "MIT"
python = "^3.8"
langcodes = "^3.1.0"
homeassistant = "^2021.3.3"
-mytoyota = "^0.1.4"
+mytoyota = "^0.2.1"
[tool.poetry.dev-dependencies]
pre-commit = "^2.11.1"
diff --git a/tests/fixtures/gather_all_information.json b/tests/fixtures/gather_all_information.json
new file mode 100644
index 0000000..9d918c7
--- /dev/null
+++ b/tests/fixtures/gather_all_information.json
@@ -0,0 +1,60 @@
+[
+ {
+ "alias": "Aygo",
+ "vin": "JTXXXXXXXXXXXXXXX",
+ "details": {
+ "batteryHealth": "GOOD",
+ "claimedBy": "MT-XXXX",
+ "engine": "1.0 benzin (72 hk)",
+ "entitledBy": "MT-XXXX",
+ "entitledOn": "2021-03-10T09:20:42.152Z",
+ "exteriorColour": "1E0 ",
+ "fuel": "PETROL",
+ "fullKatashiki": "KDDD0L-ADDGDD",
+ "grade": "Mid/High",
+ "horsePower": 72,
+ "hybrid": false,
+ "id": 1111111,
+ "imageUrl": "https://dj3z27z47basa.cloudfront.net/5957a713-f80f-483f-998c-97f956367048",
+ "interiorColour": "20",
+ "isEntitled": true,
+ "isNC": true,
+ "licensePlate": "CXXXXXX",
+ "modelCode": "AY",
+ "modelDescription": "Aygo 2B",
+ "modelDocumentId": "12345",
+ "modelName": "Aygo 2B",
+ "owner": true,
+ "ownerFlag": true,
+ "productionYear": "2021",
+ "source": "NMSC",
+ "startDate": "2021-03-11T09:20:42.152Z",
+ "transmission": "5-trins man. gear",
+ "transmissionType": "MT",
+ "vehicleAddedOn": "2021-03-01T09:43:42.350Z"
+ },
+ "status": {
+ "battery": null,
+ "hvac": null,
+ "odometer": {
+ "mileage": 250,
+ "mileage_unit": "km",
+ "Fuel": 29.02
+ },
+ "parking": {
+ "event": {
+ "lat": "56.111111",
+ "lon": "9.111111",
+ "address": null,
+ "timestamp": "1616936418000"
+ },
+ "tripStatus": "0",
+ "energy": null,
+ "protectionState": null
+ }
+ },
+ "servicesEnabled": {
+ "connectedServices": true
+ }
+ }
+]