Skip to content

Commit

Permalink
Use poetry
Browse files Browse the repository at this point in the history
  • Loading branch information
DurgNomis-drol committed Mar 12, 2021
1 parent d24fa60 commit 8c45680
Show file tree
Hide file tree
Showing 10 changed files with 802 additions and 122 deletions.
7 changes: 1 addition & 6 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,6 @@ repos:
language: system
types: [python]
require_serial: true
- id: mypy
name: mypy
entry: poetry run mypy
language: system
types: [python]
- id: flake8
name: flake8
entry: poetry run flake8
Expand All @@ -38,4 +33,4 @@ repos:
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v2.2.1
hooks:
- id: prettier
- id: prettier
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
# ha_toyota

Toyota integration for Home Assistant
60 changes: 40 additions & 20 deletions custom_components/toyota/__init__.py
Original file line number Diff line number Diff line change
@@ -1,32 +1,48 @@
"""Toyota integration"""
import asyncio
import aiohttp
from datetime import timedelta
import logging

import aiohttp
import async_timeout
from .toyota import MyT

from homeassistant.config_entries import SOURCE_REAUTH, ConfigEntry
from homeassistant.const import CONF_EMAIL, CONF_PASSWORD, CONF_API_TOKEN
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_API_TOKEN, CONF_EMAIL, CONF_PASSWORD
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers import aiohttp_client
from homeassistant.helpers.update_coordinator import (
CoordinatorEntity,
DataUpdateCoordinator,
UpdateFailed,
)
from .const import DATA_CLIENT, DATA_COORDINATOR, DOMAIN
from .const import ODOMETER, ODOMETER_UNIT, FUEL, PARKING, BATTERY, HVAC, LAST_UPDATED, VEHICLE_INFO, NICKNAME, VIN
from .const import CONF_NICKNAME, CONF_VIN, CONF_LOCALE, CONF_UUID

from .const import (
BATTERY,
CONF_LOCALE,
CONF_NICKNAME,
CONF_UUID,
CONF_VIN,
DATA_CLIENT,
DATA_COORDINATOR,
DOMAIN,
FUEL,
HVAC,
LAST_UPDATED,
NICKNAME,
ODOMETER,
ODOMETER_UNIT,
PARKING,
VEHICLE_INFO,
VIN,
)
from .toyota import MyT

_LOGGER = logging.getLogger(__name__)

PLATFORMS = ["sensor"]


async def async_setup(hass: HomeAssistant, config: dict):
async def async_setup(hass: HomeAssistant):
"""Set up the Toyota Connected Services component."""
hass.data[DOMAIN] = {}
return True
Expand All @@ -50,7 +66,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
vin=vin,
uuid=uuid,
token=token,
session=session
session=session,
)

async def async_update_data():
Expand Down Expand Up @@ -136,8 +152,8 @@ def __init__(
vin: str,
session: aiohttp.ClientSession,
uuid: str = None,
token: str = None
) -> None:
token: str = None,
) -> None:
self.username = username
self.password = password
self.locale = locale
Expand All @@ -151,19 +167,22 @@ def __init__(
locale=self.locale,
vin=self.vin,
token=self.token,
session=self.session
session=self.session,
)

async def test_credentials(self):
"""Tests if your credentials are valid."""
token, uuid = await self.client.perform_login(username=self.username, password=self.password)
token, uuid = await self.client.perform_login(
username=self.username, password=self.password
)
if token is not None and uuid is not None:
return True, token, uuid
else:
return False, None, None

return False, None, None

async def gather_information(self, nickname: str, vin: str) -> dict:
"""Gather information from different endpoints and collect it."""

async def with_timeout(task):
async with async_timeout.timeout(10):
return await task
Expand All @@ -172,7 +191,9 @@ async def with_timeout(task):

parking = await with_timeout(self.client.get_parking())

battery, hvac, last_updated = await with_timeout(self.client.get_vehicle_information())
battery, hvac, last_updated = await with_timeout(
self.client.get_vehicle_information()
)

vehicle = {
NICKNAME: nickname,
Expand All @@ -184,11 +205,10 @@ async def with_timeout(task):
ODOMETER_UNIT: odometer_unit,
FUEL: fuel,
BATTERY: battery,
HVAC: hvac
}
HVAC: hvac,
},
}

_LOGGER.debug(vehicle)

return vehicle

17 changes: 7 additions & 10 deletions custom_components/toyota/config_flow.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
"""Config flow for Toyota Connected Services integration."""
import logging

import aiohttp

from . import ToyotaApi
from .toyota import ToyotaVinNotValid, ToyotaLocaleNotValid, ToyotaLoginError
import voluptuous as vol

from homeassistant import config_entries
from homeassistant.const import CONF_EMAIL, CONF_PASSWORD, CONF_API_TOKEN
from homeassistant.const import CONF_API_TOKEN, CONF_EMAIL, CONF_PASSWORD
from homeassistant.helpers import aiohttp_client

from . import ToyotaApi
from .const import CONF_LOCALE, CONF_NICKNAME, CONF_UUID, CONF_VIN

# https://github.com/PyCQA/pylint/issues/3202
from .const import DOMAIN # pylint: disable=unused-import
from .const import CONF_NICKNAME, CONF_VIN, CONF_UUID, CONF_LOCALE
from .toyota import ToyotaLocaleNotValid, ToyotaLoginError, ToyotaVinNotValid

_LOGGER = logging.getLogger(__name__)

Expand Down Expand Up @@ -48,7 +47,7 @@ async def async_step_user(self, user_input=None):
password=user_input[CONF_PASSWORD],
locale=user_input[CONF_LOCALE],
vin=user_input[CONF_VIN],
session=session
session=session,
)
valid, token, uuid = await client.test_credentials()
if valid:
Expand All @@ -70,9 +69,7 @@ async def async_step_user(self, user_input=None):
_LOGGER.error(ex)
except Exception as ex: # pylint: disable=broad-except
errors["base"] = "unknown"
_LOGGER.error(
"An error occurred during Toyota login request: %s", ex
)
_LOGGER.error("An error occurred during Toyota login request: %s", ex)
else:
return self.async_create_entry(
title=user_input[CONF_EMAIL], data=user_input
Expand Down
4 changes: 2 additions & 2 deletions custom_components/toyota/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": ["requests","langcodes"],
"requirements": ["requests", "langcodes"],
"version": "0.1.0"
}
}
23 changes: 18 additions & 5 deletions custom_components/toyota/sensor.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,23 @@
"""Platform for Toyota sensor integration."""

from . import ToyotaEntity
from homeassistant.const import DEVICE_CLASS_TEMPERATURE, PERCENTAGE
from .const import DATA_COORDINATOR, DOMAIN, ICON_FUEL, FUEL, VEHICLE_INFO, ICON_ODOMETER, ODOMETER, ODOMETER_UNIT, ICON_HVAC
from .const import HVAC, HVAC_TEMPERATURE, ICON_PARKING, PARKING

from . import ToyotaEntity
from .const import (
DATA_COORDINATOR,
DOMAIN,
FUEL,
HVAC,
HVAC_TEMPERATURE,
ICON_FUEL,
ICON_HVAC,
ICON_ODOMETER,
ICON_PARKING,
ODOMETER,
ODOMETER_UNIT,
PARKING,
VEHICLE_INFO,
)


async def async_setup_entry(hass, config_entry, async_add_devices):
Expand Down Expand Up @@ -139,5 +153,4 @@ def device_state_attributes(self):
@property
def state(self):
"""Return the state of the sensor."""
return self.coordinator.data[PARKING]['address']

return self.coordinator.data[PARKING]["address"]
Loading

0 comments on commit 8c45680

Please sign in to comment.