Compare commits

..

1 Commits

22 changed files with 82 additions and 82 deletions

View File

@ -3,7 +3,7 @@ default_config:
logger:
default: info
logs:
custom_components.integration_blueprint: debug
custom_components.octopusenergy: debug
# If you need to debug uncomment the line below (doc: https://www.home-assistant.io/integrations/debugpy/)
# debugpy:

View File

@ -49,7 +49,7 @@ jobs:
--timeout=9 \
--durations=10 \
-n auto \
--cov custom_components.integration_blueprint \
--cov custom_components.octopusenergy \
-o console_output_style=count \
-p no:sugar \
tests

View File

@ -52,7 +52,7 @@ jobs:
--timeout=9 \
--durations=10 \
-n auto \
--cov custom_components.integration_blueprint \
--cov custom_components.octopusenergy \
-o console_output_style=count \
-p no:sugar \
tests

View File

@ -24,21 +24,21 @@ File | Purpose
`.github/ISSUE_TEMPLATE/feature_request.md` | Template for Feature Requests
`.github/ISSUE_TEMPLATE/issue.md` | Template for issues
`.vscode/tasks.json` | Tasks for the devcontainer.
`custom_components/integration_blueprint/translations/*` | [Translation files.](https://developers.home-assistant.io/docs/internationalization/custom_integration)
`custom_components/integration_blueprint/__init__.py` | The component file for the integration.
`custom_components/integration_blueprint/api.py` | This is a sample API client.
`custom_components/integration_blueprint/binary_sensor.py` | Binary sensor platform for the integration.
`custom_components/integration_blueprint/config_flow.py` | Config flow file, this adds the UI configuration possibilities.
`custom_components/integration_blueprint/const.py` | A file to hold shared variables/constants for the entire integration.
`custom_components/integration_blueprint/manifest.json` | A [manifest file](https://developers.home-assistant.io/docs/en/creating_integration_manifest.html) for Home Assistant.
`custom_components/integration_blueprint/sensor.py` | Sensor platform for the integration.
`custom_components/integration_blueprint/switch.py` | Switch sensor platform for the integration.
`custom_components/octopusenergy/translations/*` | [Translation files.](https://developers.home-assistant.io/docs/internationalization/custom_integration)
`custom_components/octopusenergy/__init__.py` | The component file for the integration.
`custom_components/octopusenergy/api.py` | This is a sample API client.
`custom_components/octopusenergy/binary_sensor.py` | Binary sensor platform for the integration.
`custom_components/octopusenergy/config_flow.py` | Config flow file, this adds the UI configuration possibilities.
`custom_components/octopusenergy/const.py` | A file to hold shared variables/constants for the entire integration.
`custom_components/octopusenergy/manifest.json` | A [manifest file](https://developers.home-assistant.io/docs/en/creating_integration_manifest.html) for Home Assistant.
`custom_components/octopusenergy/sensor.py` | Sensor platform for the integration.
`custom_components/octopusenergy/switch.py` | Switch sensor platform for the integration.
`tests/__init__.py` | Makes the `tests` folder a module.
`tests/conftest.py` | Global [fixtures](https://docs.pytest.org/en/stable/fixture.html) used in tests to [patch](https://docs.python.org/3/library/unittest.mock.html#unittest.mock.patch) functions.
`tests/test_api.py` | Tests for `custom_components/integration_blueprint/api.py`.
`tests/test_config_flow.py` | Tests for `custom_components/integration_blueprint/config_flow.py`.
`tests/test_init.py` | Tests for `custom_components/integration_blueprint/__init__.py`.
`tests/test_switch.py` | Tests for `custom_components/integration_blueprint/switch.py`.
`tests/test_api.py` | Tests for `custom_components/octopusenergy/api.py`.
`tests/test_config_flow.py` | Tests for `custom_components/octopusenergy/config_flow.py`.
`tests/test_init.py` | Tests for `custom_components/octopusenergy/__init__.py`.
`tests/test_switch.py` | Tests for `custom_components/octopusenergy/switch.py`.
`CONTRIBUTING.md` | Guidelines on how to contribute.
`example.png` | Screenshot that demonstrate how it might look in the UI.
`info.md` | An example on a info file (used by [hacs][hacs]).
@ -72,7 +72,7 @@ to ensure Home Assistant update the code of the python library. (example `"requi
README content if this was a published component:
***
# integration_blueprint
# octopusenergy
[![GitHub Release][releases-shield]][releases]
[![GitHub Activity][commits-shield]][commits]
@ -85,7 +85,7 @@ README content if this was a published component:
[![Discord][discord-shield]][discord]
[![Community Forum][forum-shield]][forum]
_Component to integrate with [integration_blueprint][integration_blueprint]._
_Component to integrate with [octopusenergy][octopusenergy]._
**This component will set up the following platforms.**
@ -101,8 +101,8 @@ Platform | Description
1. Using the tool of choice open the directory (folder) for your HA configuration (where you find `configuration.yaml`).
2. If you do not have a `custom_components` directory (folder) there, you need to create it.
3. In the `custom_components` directory (folder) create a new folder called `integration_blueprint`.
4. Download _all_ the files from the `custom_components/integration_blueprint/` directory (folder) in this repository.
3. In the `custom_components` directory (folder) create a new folder called `octopusenergy`.
4. Download _all_ the files from the `custom_components/octopusenergy/` directory (folder) in this repository.
5. Place the files you downloaded in the new directory (folder) you created.
6. Restart Home Assistant
7. In the HA UI go to "Configuration" -> "Integrations" click "+" and search for "Integration blueprint"
@ -110,17 +110,17 @@ Platform | Description
Using your HA configuration directory (folder) as a starting point you should now also have this:
```text
custom_components/integration_blueprint/translations/en.json
custom_components/integration_blueprint/translations/nb.json
custom_components/integration_blueprint/translations/sensor.nb.json
custom_components/integration_blueprint/__init__.py
custom_components/integration_blueprint/api.py
custom_components/integration_blueprint/binary_sensor.py
custom_components/integration_blueprint/config_flow.py
custom_components/integration_blueprint/const.py
custom_components/integration_blueprint/manifest.json
custom_components/integration_blueprint/sensor.py
custom_components/integration_blueprint/switch.py
custom_components/octopusenergy/translations/en.json
custom_components/octopusenergy/translations/nb.json
custom_components/octopusenergy/translations/sensor.nb.json
custom_components/octopusenergy/__init__.py
custom_components/octopusenergy/api.py
custom_components/octopusenergy/binary_sensor.py
custom_components/octopusenergy/config_flow.py
custom_components/octopusenergy/const.py
custom_components/octopusenergy/manifest.json
custom_components/octopusenergy/sensor.py
custom_components/octopusenergy/switch.py
```
## Configuration is done in the UI
@ -133,11 +133,11 @@ If you want to contribute to this please read the [Contribution guidelines](CONT
***
[integration_blueprint]: https://github.com/custom-components/integration_blueprint
[octopusenergy]: https://github.com/custom-components/octopusenergy
[buymecoffee]: https://www.buymeacoffee.com/ludeeus
[buymecoffeebadge]: https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg?style=for-the-badge
[commits-shield]: https://img.shields.io/github/commit-activity/y/custom-components/blueprint.svg?style=for-the-badge
[commits]: https://github.com/custom-components/integration_blueprint/commits/master
[commits]: https://github.com/custom-components/octopusenergy/commits/master
[hacs]: https://github.com/custom-components/hacs
[hacsbadge]: https://img.shields.io/badge/HACS-Custom-orange.svg?style=for-the-badge
[discord]: https://discord.gg/Qa5fW2R
@ -148,4 +148,4 @@ If you want to contribute to this please read the [Contribution guidelines](CONT
[license-shield]: https://img.shields.io/github/license/custom-components/blueprint.svg?style=for-the-badge
[maintenance-shield]: https://img.shields.io/badge/maintainer-Joakim%20Sørensen%20%40ludeeus-blue.svg?style=for-the-badge
[releases-shield]: https://img.shields.io/github/release/custom-components/blueprint.svg?style=for-the-badge
[releases]: https://github.com/custom-components/integration_blueprint/releases
[releases]: https://github.com/custom-components/octopusenergy/releases

View File

@ -1,8 +1,8 @@
"""
Custom integration to integrate integration_blueprint with Home Assistant.
Custom integration to integrate octopusenergy with Home Assistant.
For more details about this integration, please refer to
https://github.com/custom-components/integration_blueprint
https://github.com/custom-components/octopusenergy
"""
import asyncio
from datetime import timedelta
@ -14,7 +14,7 @@ from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .api import IntegrationBlueprintApiClient
from .api import OctopusEnergyApiClient
from .const import (
CONF_PASSWORD,
@ -44,7 +44,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
password = entry.data.get(CONF_PASSWORD)
session = async_get_clientsession(hass)
client = IntegrationBlueprintApiClient(username, password, session)
client = OctopusEnergyApiClient(username, password, session)
coordinator = BlueprintDataUpdateCoordinator(hass, client=client)
await coordinator.async_refresh()
@ -69,7 +69,7 @@ class BlueprintDataUpdateCoordinator(DataUpdateCoordinator):
"""Class to manage fetching data from the API."""
def __init__(
self, hass: HomeAssistant, client: IntegrationBlueprintApiClient
self, hass: HomeAssistant, client: OctopusEnergyApiClient
) -> None:
"""Initialize."""
self.api = client

View File

@ -14,7 +14,7 @@ _LOGGER: logging.Logger = logging.getLogger(__package__)
HEADERS = {"Content-type": "application/json; charset=UTF-8"}
class IntegrationBlueprintApiClient:
class OctopusEnergyApiClient:
def __init__(
self, username: str, password: str, session: aiohttp.ClientSession
) -> None:

View File

@ -1,4 +1,4 @@
"""Binary sensor platform for integration_blueprint."""
"""Binary sensor platform for octopusenergy."""
from homeassistant.components.binary_sensor import BinarySensorEntity
from .const import (
@ -7,17 +7,17 @@ from .const import (
DEFAULT_NAME,
DOMAIN,
)
from .entity import IntegrationBlueprintEntity
from .entity import OctopusEnergyEntity
async def async_setup_entry(hass, entry, async_add_devices):
"""Setup binary_sensor platform."""
coordinator = hass.data[DOMAIN][entry.entry_id]
async_add_devices([IntegrationBlueprintBinarySensor(coordinator, entry)])
async_add_devices([OctopusEnergyBinarySensor(coordinator, entry)])
class IntegrationBlueprintBinarySensor(IntegrationBlueprintEntity, BinarySensorEntity):
"""integration_blueprint binary_sensor class."""
class OctopusEnergyBinarySensor(OctopusEnergyEntity, BinarySensorEntity):
"""octopusenergy binary_sensor class."""
@property
def name(self):

View File

@ -4,7 +4,7 @@ from homeassistant.core import callback
from homeassistant.helpers.aiohttp_client import async_create_clientsession
import voluptuous as vol
from .api import IntegrationBlueprintApiClient
from .api import OctopusEnergyApiClient
from .const import (
CONF_PASSWORD,
CONF_USERNAME,
@ -73,7 +73,7 @@ class BlueprintFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
"""Return true if credentials is valid."""
try:
session = async_create_clientsession(self.hass)
client = IntegrationBlueprintApiClient(username, password, session)
client = OctopusEnergyApiClient(username, password, session)
await client.async_get_data()
return True
except Exception: # pylint: disable=broad-except

View File

@ -1,11 +1,11 @@
"""Constants for integration_blueprint."""
"""Constants for octopusenergy."""
# Base component constants
NAME = "Integration blueprint"
DOMAIN = "integration_blueprint"
DOMAIN = "octopusenergy"
DOMAIN_DATA = f"{DOMAIN}_data"
VERSION = "0.0.1"
ATTRIBUTION = "Data provided by http://jsonplaceholder.typicode.com/"
ISSUE_URL = "https://github.com/custom-components/integration_blueprint/issues"
ISSUE_URL = "https://github.com/custom-components/octopusenergy/issues"
# Icons
ICON = "mdi:format-quote-close"

View File

@ -4,7 +4,7 @@ from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN, NAME, VERSION, ATTRIBUTION
class IntegrationBlueprintEntity(CoordinatorEntity):
class OctopusEnergyEntity(CoordinatorEntity):
def __init__(self, coordinator, config_entry):
super().__init__(coordinator)
self.config_entry = config_entry

View File

@ -1,9 +1,9 @@
{
"domain": "integration_blueprint",
"domain": "octopusenergy",
"name": "Integration blueprint",
"documentation": "https://github.com/custom-components/integration_blueprint",
"documentation": "https://github.com/custom-components/octopusenergy",
"iot_class": "cloud_polling",
"issue_tracker": "https://github.com/custom-components/integration_blueprint/issues",
"issue_tracker": "https://github.com/custom-components/octopusenergy/issues",
"version": "0.0.0",
"config_flow": true,
"codeowners": [

View File

@ -1,16 +1,16 @@
"""Sensor platform for integration_blueprint."""
"""Sensor platform for octopusenergy."""
from .const import DEFAULT_NAME, DOMAIN, ICON, SENSOR
from .entity import IntegrationBlueprintEntity
from .entity import OctopusEnergyEntity
async def async_setup_entry(hass, entry, async_add_devices):
"""Setup sensor platform."""
coordinator = hass.data[DOMAIN][entry.entry_id]
async_add_devices([IntegrationBlueprintSensor(coordinator, entry)])
async_add_devices([OctopusEnergySensor(coordinator, entry)])
class IntegrationBlueprintSensor(IntegrationBlueprintEntity):
"""integration_blueprint Sensor class."""
class OctopusEnergySensor(OctopusEnergyEntity):
"""octopusenergy Sensor class."""
@property
def name(self):

View File

@ -1,18 +1,18 @@
"""Switch platform for integration_blueprint."""
"""Switch platform for octopusenergy."""
from homeassistant.components.switch import SwitchEntity
from .const import DEFAULT_NAME, DOMAIN, ICON, SWITCH
from .entity import IntegrationBlueprintEntity
from .entity import OctopusEnergyEntity
async def async_setup_entry(hass, entry, async_add_devices):
"""Setup sensor platform."""
coordinator = hass.data[DOMAIN][entry.entry_id]
async_add_devices([IntegrationBlueprintBinarySwitch(coordinator, entry)])
async_add_devices([OctopusEnergyBinarySwitch(coordinator, entry)])
class IntegrationBlueprintBinarySwitch(IntegrationBlueprintEntity, SwitchEntity):
"""integration_blueprint switch class."""
class OctopusEnergyBinarySwitch(OctopusEnergyEntity, SwitchEntity):
"""octopusenergy switch class."""
async def async_turn_on(self, **kwargs): # pylint: disable=unused-argument
"""Turn on the switch."""

View File

@ -3,7 +3,7 @@
"step": {
"user": {
"title": "Blueprint",
"description": "If you need help with the configuration have a look here: https://github.com/custom-components/integration_blueprint",
"description": "If you need help with the configuration have a look here: https://github.com/custom-components/octopusenergy",
"data": {
"username": "Username",
"password": "Password"

View File

@ -3,7 +3,7 @@
"step": {
"user": {
"title": "Blueprint",
"description": "Si vous avez besoin d'aide pour la configuration, regardez ici: https://github.com/custom-components/integration_blueprint",
"description": "Si vous avez besoin d'aide pour la configuration, regardez ici: https://github.com/custom-components/octopusenergy",
"data": {
"username": "Identifiant",
"password": "Mot de Passe"

View File

@ -3,7 +3,7 @@
"step": {
"user": {
"title": "Blueprint",
"description": "Hvis du trenger hjep til konfigurasjon ta en titt her: https://github.com/custom-components/integration_blueprint",
"description": "Hvis du trenger hjep til konfigurasjon ta en titt her: https://github.com/custom-components/octopusenergy",
"data": {
"username": "Brukernavn",
"password": "Passord"

16
info.md
View File

@ -9,7 +9,7 @@
[![Discord][discord-shield]][discord]
[![Community Forum][forum-shield]][forum]
_Component to integrate with [integration_blueprint][integration_blueprint]._
_Component to integrate with [octopusenergy][octopusenergy]._
**This component will set up the following platforms.**
@ -36,11 +36,11 @@ Platform | Description
***
[integration_blueprint]: https://github.com/custom-components/integration_blueprint
[octopusenergy]: https://github.com/custom-components/octopusenergy
[buymecoffee]: https://www.buymeacoffee.com/ludeeus
[buymecoffeebadge]: https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg?style=for-the-badge
[commits-shield]: https://img.shields.io/github/commit-activity/y/custom-components/integration_blueprint.svg?style=for-the-badge
[commits]: https://github.com/custom-components/integration_blueprint/commits/master
[commits-shield]: https://img.shields.io/github/commit-activity/y/custom-components/octopusenergy.svg?style=for-the-badge
[commits]: https://github.com/custom-components/octopusenergy/commits/master
[hacs]: https://hacs.xyz
[hacsbadge]: https://img.shields.io/badge/HACS-Custom-orange.svg?style=for-the-badge
[discord]: https://discord.gg/Qa5fW2R
@ -48,9 +48,9 @@ Platform | Description
[exampleimg]: example.png
[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg?style=for-the-badge
[forum]: https://community.home-assistant.io/
[license]: https://github.com/custom-components/integration_blueprint/blob/main/LICENSE
[license-shield]: https://img.shields.io/github/license/custom-components/integration_blueprint.svg?style=for-the-badge
[license]: https://github.com/custom-components/octopusenergy/blob/main/LICENSE
[license-shield]: https://img.shields.io/github/license/custom-components/octopusenergy.svg?style=for-the-badge
[maintenance-shield]: https://img.shields.io/badge/maintainer-Joakim%20Sørensen%20%40ludeeus-blue.svg?style=for-the-badge
[releases-shield]: https://img.shields.io/github/release/custom-components/integration_blueprint.svg?style=for-the-badge
[releases]: https://github.com/custom-components/integration_blueprint/releases
[releases-shield]: https://img.shields.io/github/release/custom-components/octopusenergy.svg?style=for-the-badge
[releases]: https://github.com/custom-components/octopusenergy/releases
[user_profile]: https://github.com/ludeeus

View File

@ -31,5 +31,5 @@ not_skip = __init__.py
force_sort_within_sections = true
sections = FUTURE,STDLIB,INBETWEENS,THIRDPARTY,FIRSTPARTY,LOCALFOLDER
default_section = THIRDPARTY
known_first_party = custom_components.integration_blueprint, tests
known_first_party = custom_components.octopusenergy, tests
combine_as_imports = true

View File

@ -20,5 +20,5 @@ This will install `homeassistant`, `pytest`, and `pytest-homeassistant-custom-co
Command | Description
------- | -----------
`pytest tests/` | This will run all tests in `tests/` and tell you how many passed/failed
`pytest --durations=10 --cov-report term-missing --cov=custom_components.integration_blueprint tests` | This tells `pytest` that your target module to test is `custom_components.integration_blueprint` so that it can give you a [code coverage](https://en.wikipedia.org/wiki/Code_coverage) summary, including % of code that was executed and the line numbers of missed executions.
`pytest --durations=10 --cov-report term-missing --cov=custom_components.octopusenergy tests` | This tells `pytest` that your target module to test is `custom_components.octopusenergy` so that it can give you a [code coverage](https://en.wikipedia.org/wiki/Code_coverage) summary, including % of code that was executed and the line numbers of missed executions.
`pytest tests/test_init.py -k test_setup_unload_and_reload_entry` | Runs the `test_setup_unload_and_reload_entry` test function located in `tests/test_init.py`

View File

@ -46,7 +46,7 @@ def skip_notifications_fixture():
def bypass_get_data_fixture():
"""Skip calls to get data from API."""
with patch(
"custom_components.octopusenergy.IntegrationBlueprintApiClient.async_get_data"
"custom_components.octopusenergy.OctopusEnergyApiClient.async_get_data"
):
yield
@ -57,7 +57,7 @@ def bypass_get_data_fixture():
def error_get_data_fixture():
"""Simulate error when retrieving data from API."""
with patch(
"custom_components.octopusenergy.IntegrationBlueprintApiClient.async_get_data",
"custom_components.octopusenergy.OctopusEnergyApiClient.async_get_data",
side_effect=Exception,
):
yield

View File

@ -4,14 +4,14 @@ import asyncio
import aiohttp
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from custom_components.octopusenergy.api import IntegrationBlueprintApiClient
from custom_components.octopusenergy.api import OctopusEnergyApiClient
async def test_api(hass, aioclient_mock, caplog):
"""Test API calls."""
# To test the api submodule, we first create an instance of our API client
api = IntegrationBlueprintApiClient("test", "test", async_get_clientsession(hass))
api = OctopusEnergyApiClient("test", "test", async_get_clientsession(hass))
# Use aioclient_mock which is provided by `pytest_homeassistant_custom_components`
# to mock responses to aiohttp requests. In this case we are telling the mock to

View File

@ -21,7 +21,7 @@ async def test_switch_services(hass):
# Functions/objects can be patched directly in test code as well and can be used to test
# additional things, like whether a function was called or what arguments it was called with
with patch(
"custom_components.octopusenergy.IntegrationBlueprintApiClient.async_set_title"
"custom_components.octopusenergy.OctopusEnergyApiClient.async_set_title"
) as title_func:
await hass.services.async_call(
SWITCH,