Remove deprecated Flu Near You integration (#78700)

This commit is contained in:
Aaron Bach 2022-09-21 03:24:21 -06:00 committed by GitHub
parent d7b58f6949
commit e265848b63
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
52 changed files with 0 additions and 1567 deletions

View File

@ -402,9 +402,6 @@ omit =
homeassistant/components/flume/coordinator.py
homeassistant/components/flume/entity.py
homeassistant/components/flume/sensor.py
homeassistant/components/flunearyou/__init__.py
homeassistant/components/flunearyou/repairs.py
homeassistant/components/flunearyou/sensor.py
homeassistant/components/folder/sensor.py
homeassistant/components/folder_watcher/*
homeassistant/components/foobot/sensor.py

View File

@ -103,7 +103,6 @@ homeassistant.components.feedreader.*
homeassistant.components.file_upload.*
homeassistant.components.filesize.*
homeassistant.components.fitbit.*
homeassistant.components.flunearyou.*
homeassistant.components.flux_led.*
homeassistant.components.forecast_solar.*
homeassistant.components.fritz.*

View File

@ -355,8 +355,6 @@ build.json @home-assistant/supervisor
/tests/components/flo/ @dmulcahey
/homeassistant/components/flume/ @ChrisMandich @bdraco @jeeftor
/tests/components/flume/ @ChrisMandich @bdraco @jeeftor
/homeassistant/components/flunearyou/ @bachya
/tests/components/flunearyou/ @bachya
/homeassistant/components/flux_led/ @icemanch @bdraco
/tests/components/flux_led/ @icemanch @bdraco
/homeassistant/components/forecast_solar/ @klaasnicolaas @frenck

View File

@ -1,89 +0,0 @@
"""The flunearyou component."""
from __future__ import annotations
import asyncio
from datetime import timedelta
from functools import partial
from typing import Any
from pyflunearyou import Client
from pyflunearyou.errors import FluNearYouError
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_LATITUDE, CONF_LONGITUDE, Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers import aiohttp_client, config_validation as cv
from homeassistant.helpers.issue_registry import IssueSeverity, async_create_issue
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import CATEGORY_CDC_REPORT, CATEGORY_USER_REPORT, DOMAIN, LOGGER
DEFAULT_UPDATE_INTERVAL = timedelta(minutes=30)
CONFIG_SCHEMA = cv.removed(DOMAIN, raise_if_present=False)
PLATFORMS = [Platform.SENSOR]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up Flu Near You as config entry."""
async_create_issue(
hass,
DOMAIN,
"integration_removal",
is_fixable=True,
severity=IssueSeverity.ERROR,
translation_key="integration_removal",
)
websession = aiohttp_client.async_get_clientsession(hass)
client = Client(session=websession)
latitude = entry.data.get(CONF_LATITUDE, hass.config.latitude)
longitude = entry.data.get(CONF_LONGITUDE, hass.config.longitude)
async def async_update(api_category: str) -> dict[str, Any]:
"""Get updated date from the API based on category."""
try:
if api_category == CATEGORY_CDC_REPORT:
data = await client.cdc_reports.status_by_coordinates(
latitude, longitude
)
else:
data = await client.user_reports.status_by_coordinates(
latitude, longitude
)
except FluNearYouError as err:
raise UpdateFailed(err) from err
return data
coordinators = {}
data_init_tasks = []
for api_category in (CATEGORY_CDC_REPORT, CATEGORY_USER_REPORT):
coordinator = coordinators[api_category] = DataUpdateCoordinator(
hass,
LOGGER,
name=f"{api_category} ({latitude}, {longitude})",
update_interval=DEFAULT_UPDATE_INTERVAL,
update_method=partial(async_update, api_category),
)
data_init_tasks.append(coordinator.async_config_entry_first_refresh())
await asyncio.gather(*data_init_tasks)
hass.data.setdefault(DOMAIN, {})
hass.data[DOMAIN][entry.entry_id] = coordinators
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Unload an Flu Near You config entry."""
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
if unload_ok:
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok

View File

@ -1,60 +0,0 @@
"""Define a config flow manager for flunearyou."""
from __future__ import annotations
from typing import Any
from pyflunearyou import Client
from pyflunearyou.errors import FluNearYouError
import voluptuous as vol
from homeassistant import config_entries
from homeassistant.const import CONF_LATITUDE, CONF_LONGITUDE
from homeassistant.data_entry_flow import FlowResult
from homeassistant.helpers import aiohttp_client, config_validation as cv
from .const import DOMAIN, LOGGER
class FluNearYouFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
"""Handle an FluNearYou config flow."""
VERSION = 1
@property
def data_schema(self) -> vol.Schema:
"""Return the data schema for integration."""
return vol.Schema(
{
vol.Required(
CONF_LATITUDE, default=self.hass.config.latitude
): cv.latitude,
vol.Required(
CONF_LONGITUDE, default=self.hass.config.longitude
): cv.longitude,
}
)
async def async_step_user(
self, user_input: dict[str, Any] | None = None
) -> FlowResult:
"""Handle the start of the config flow."""
if not user_input:
return self.async_show_form(step_id="user", data_schema=self.data_schema)
unique_id = f"{user_input[CONF_LATITUDE]}, {user_input[CONF_LONGITUDE]}"
await self.async_set_unique_id(unique_id)
self._abort_if_unique_id_configured()
websession = aiohttp_client.async_get_clientsession(self.hass)
client = Client(session=websession)
try:
await client.cdc_reports.status_by_coordinates(
user_input[CONF_LATITUDE], user_input[CONF_LONGITUDE]
)
except FluNearYouError as err:
LOGGER.error("Error while configuring integration: %s", err)
return self.async_show_form(step_id="user", errors={"base": "unknown"})
return self.async_create_entry(title=unique_id, data=user_input)

View File

@ -1,8 +0,0 @@
"""Define flunearyou constants."""
import logging
DOMAIN = "flunearyou"
LOGGER = logging.getLogger(__package__)
CATEGORY_CDC_REPORT = "cdc_report"
CATEGORY_USER_REPORT = "user_report"

View File

@ -1,32 +0,0 @@
"""Diagnostics support for Flu Near You."""
from __future__ import annotations
from typing import Any
from homeassistant.components.diagnostics import async_redact_data
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_LATITUDE, CONF_LONGITUDE
from homeassistant.core import HomeAssistant
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
from .const import CATEGORY_CDC_REPORT, CATEGORY_USER_REPORT, DOMAIN
TO_REDACT = {
CONF_LATITUDE,
CONF_LONGITUDE,
}
async def async_get_config_entry_diagnostics(
hass: HomeAssistant, entry: ConfigEntry
) -> dict[str, Any]:
"""Return diagnostics for a config entry."""
coordinators: dict[str, DataUpdateCoordinator] = hass.data[DOMAIN][entry.entry_id]
return async_redact_data(
{
CATEGORY_CDC_REPORT: coordinators[CATEGORY_CDC_REPORT].data,
CATEGORY_USER_REPORT: coordinators[CATEGORY_USER_REPORT].data,
},
TO_REDACT,
)

View File

@ -1,10 +0,0 @@
{
"domain": "flunearyou",
"name": "Flu Near You",
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/flunearyou",
"requirements": ["pyflunearyou==2.0.2"],
"codeowners": ["@bachya"],
"iot_class": "cloud_polling",
"loggers": ["pyflunearyou"]
}

View File

@ -1,44 +0,0 @@
"""Repairs platform for the Flu Near You integration."""
from __future__ import annotations
import asyncio
import voluptuous as vol
from homeassistant import data_entry_flow
from homeassistant.components.repairs import RepairsFlow
from homeassistant.core import HomeAssistant
from .const import DOMAIN
class FluNearYouFixFlow(RepairsFlow):
"""Handler for an issue fixing flow."""
async def async_step_init(
self, user_input: dict[str, str] | None = None
) -> data_entry_flow.FlowResult:
"""Handle the first step of a fix flow."""
return await self.async_step_confirm()
async def async_step_confirm(
self, user_input: dict[str, str] | None = None
) -> data_entry_flow.FlowResult:
"""Handle the confirm step of a fix flow."""
if user_input is not None:
removal_tasks = [
self.hass.config_entries.async_remove(entry.entry_id)
for entry in self.hass.config_entries.async_entries(DOMAIN)
]
await asyncio.gather(*removal_tasks)
return self.async_create_entry(title="Fixed issue", data={})
return self.async_show_form(step_id="confirm", data_schema=vol.Schema({}))
async def async_create_fix_flow(
hass: HomeAssistant,
issue_id: str,
data: dict[str, str | int | float | None] | None,
) -> RepairsFlow:
"""Create flow."""
return FluNearYouFixFlow()

View File

@ -1,221 +0,0 @@
"""Support for user- and CDC-based flu info sensors from Flu Near You."""
from __future__ import annotations
from collections.abc import Mapping
from typing import Any, Union, cast
from homeassistant.components.sensor import (
SensorEntity,
SensorEntityDescription,
SensorStateClass,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_STATE, CONF_LATITUDE, CONF_LONGITUDE
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import StateType
from homeassistant.helpers.update_coordinator import (
CoordinatorEntity,
DataUpdateCoordinator,
)
from .const import CATEGORY_CDC_REPORT, CATEGORY_USER_REPORT, DOMAIN
ATTR_CITY = "city"
ATTR_REPORTED_DATE = "reported_date"
ATTR_REPORTED_LATITUDE = "reported_latitude"
ATTR_REPORTED_LONGITUDE = "reported_longitude"
ATTR_STATE_REPORTS_LAST_WEEK = "state_reports_last_week"
ATTR_STATE_REPORTS_THIS_WEEK = "state_reports_this_week"
ATTR_ZIP_CODE = "zip_code"
SENSOR_TYPE_CDC_LEVEL = "level"
SENSOR_TYPE_CDC_LEVEL2 = "level2"
SENSOR_TYPE_USER_CHICK = "chick"
SENSOR_TYPE_USER_DENGUE = "dengue"
SENSOR_TYPE_USER_FLU = "flu"
SENSOR_TYPE_USER_LEPTO = "lepto"
SENSOR_TYPE_USER_NO_SYMPTOMS = "none"
SENSOR_TYPE_USER_SYMPTOMS = "symptoms"
SENSOR_TYPE_USER_TOTAL = "total"
CDC_SENSOR_DESCRIPTIONS = (
SensorEntityDescription(
key=SENSOR_TYPE_CDC_LEVEL,
name="CDC level",
icon="mdi:biohazard",
),
SensorEntityDescription(
key=SENSOR_TYPE_CDC_LEVEL2,
name="CDC level 2",
icon="mdi:biohazard",
),
)
USER_SENSOR_DESCRIPTIONS = (
SensorEntityDescription(
key=SENSOR_TYPE_USER_CHICK,
name="Avian flu symptoms",
icon="mdi:alert",
native_unit_of_measurement="reports",
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=SENSOR_TYPE_USER_DENGUE,
name="Dengue fever symptoms",
icon="mdi:alert",
native_unit_of_measurement="reports",
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=SENSOR_TYPE_USER_FLU,
name="Flu symptoms",
icon="mdi:alert",
native_unit_of_measurement="reports",
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=SENSOR_TYPE_USER_LEPTO,
name="Leptospirosis symptoms",
icon="mdi:alert",
native_unit_of_measurement="reports",
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=SENSOR_TYPE_USER_NO_SYMPTOMS,
name="No symptoms",
icon="mdi:alert",
native_unit_of_measurement="reports",
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=SENSOR_TYPE_USER_SYMPTOMS,
name="Flu-like symptoms",
icon="mdi:alert",
native_unit_of_measurement="reports",
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=SENSOR_TYPE_USER_TOTAL,
name="Total symptoms",
icon="mdi:alert",
native_unit_of_measurement="reports",
state_class=SensorStateClass.MEASUREMENT,
),
)
EXTENDED_SENSOR_TYPE_MAPPING = {
SENSOR_TYPE_USER_FLU: "ili",
SENSOR_TYPE_USER_NO_SYMPTOMS: "no_symptoms",
SENSOR_TYPE_USER_TOTAL: "total_surveys",
}
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
) -> None:
"""Set up Flu Near You sensors based on a config entry."""
coordinators = hass.data[DOMAIN][entry.entry_id]
sensors: list[CdcSensor | UserSensor] = [
CdcSensor(coordinators[CATEGORY_CDC_REPORT], entry, description)
for description in CDC_SENSOR_DESCRIPTIONS
]
sensors.extend(
[
UserSensor(coordinators[CATEGORY_USER_REPORT], entry, description)
for description in USER_SENSOR_DESCRIPTIONS
]
)
async_add_entities(sensors)
class FluNearYouSensor(CoordinatorEntity, SensorEntity):
"""Define a base Flu Near You sensor."""
_attr_has_entity_name = True
def __init__(
self,
coordinator: DataUpdateCoordinator,
entry: ConfigEntry,
description: SensorEntityDescription,
) -> None:
"""Initialize the sensor."""
super().__init__(coordinator)
self._attr_unique_id = (
f"{entry.data[CONF_LATITUDE]},"
f"{entry.data[CONF_LONGITUDE]}_{description.key}"
)
self._entry = entry
self.entity_description = description
class CdcSensor(FluNearYouSensor):
"""Define a sensor for CDC reports."""
@property
def extra_state_attributes(self) -> Mapping[str, Any] | None:
"""Return entity specific state attributes."""
return {
ATTR_REPORTED_DATE: self.coordinator.data["week_date"],
ATTR_STATE: self.coordinator.data["name"],
}
@property
def native_value(self) -> StateType:
"""Return the value reported by the sensor."""
return cast(
Union[str, None], self.coordinator.data[self.entity_description.key]
)
class UserSensor(FluNearYouSensor):
"""Define a sensor for user reports."""
@property
def extra_state_attributes(self) -> Mapping[str, Any] | None:
"""Return entity specific state attributes."""
attrs = {
ATTR_CITY: self.coordinator.data["local"]["city"].split("(")[0],
ATTR_REPORTED_LATITUDE: self.coordinator.data["local"]["latitude"],
ATTR_REPORTED_LONGITUDE: self.coordinator.data["local"]["longitude"],
ATTR_STATE: self.coordinator.data["state"]["name"],
ATTR_ZIP_CODE: self.coordinator.data["local"]["zip"],
}
if self.entity_description.key in self.coordinator.data["state"]["data"]:
states_key = self.entity_description.key
elif self.entity_description.key in EXTENDED_SENSOR_TYPE_MAPPING:
states_key = EXTENDED_SENSOR_TYPE_MAPPING[self.entity_description.key]
attrs[ATTR_STATE_REPORTS_THIS_WEEK] = self.coordinator.data["state"]["data"][
states_key
]
attrs[ATTR_STATE_REPORTS_LAST_WEEK] = self.coordinator.data["state"][
"last_week_data"
][states_key]
return attrs
@property
def native_value(self) -> StateType:
"""Return the value reported by the sensor."""
if self.entity_description.key == SENSOR_TYPE_USER_TOTAL:
value = sum(
v
for k, v in self.coordinator.data["local"].items()
if k
in (
SENSOR_TYPE_USER_CHICK,
SENSOR_TYPE_USER_DENGUE,
SENSOR_TYPE_USER_FLU,
SENSOR_TYPE_USER_LEPTO,
SENSOR_TYPE_USER_SYMPTOMS,
)
)
else:
value = self.coordinator.data["local"][self.entity_description.key]
return cast(int, value)

View File

@ -1,33 +0,0 @@
{
"config": {
"step": {
"user": {
"title": "Configure Flu Near You",
"description": "Monitor user-based and CDC reports for a pair of coordinates.",
"data": {
"latitude": "[%key:common::config_flow::data::latitude%]",
"longitude": "[%key:common::config_flow::data::longitude%]"
}
}
},
"error": {
"unknown": "[%key:common::config_flow::error::unknown%]"
},
"abort": {
"already_configured": "[%key:common::config_flow::abort::already_configured_location%]"
}
},
"issues": {
"integration_removal": {
"title": "Flu Near You is no longer available",
"fix_flow": {
"step": {
"confirm": {
"title": "Remove Flu Near You",
"description": "The external data source powering the Flu Near You integration is no longer available; thus, the integration no longer works.\n\nPress SUBMIT to remove Flu Near You from your Home Assistant instance."
}
}
}
}
}
}

View File

@ -1,14 +0,0 @@
{
"config": {
"abort": {
"already_configured": "\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0442\u043e \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e"
},
"step": {
"user": {
"data": {
"latitude": "\u0413\u0435\u043e\u0433\u0440\u0430\u0444\u0441\u043a\u0430 \u0448\u0438\u0440\u0438\u043d\u0430"
}
}
}
}
}

View File

@ -1,33 +0,0 @@
{
"config": {
"abort": {
"already_configured": "La ubicaci\u00f3 ja est\u00e0 configurada"
},
"error": {
"unknown": "Error inesperat"
},
"step": {
"user": {
"data": {
"latitude": "Latitud",
"longitude": "Longitud"
},
"description": "Monitoritza informes basats en usuari i CDC per a parells de coordenades.",
"title": "Configuraci\u00f3 Flu Near You"
}
}
},
"issues": {
"integration_removal": {
"fix_flow": {
"step": {
"confirm": {
"description": "La font de dades externa que alimenta la integraci\u00f3 Flu Near You ja no est\u00e0 disponible; per tant, la integraci\u00f3 ja no funciona. \n\nPrem ENVIAR per eliminar Flu Near You de Home Assistant.",
"title": "Elimina Flu Near You"
}
}
},
"title": "Flu Near You ja no est\u00e0 disponible"
}
}
}

View File

@ -1,19 +0,0 @@
{
"config": {
"abort": {
"already_configured": "Um\u00edst\u011bn\u00ed je ji\u017e nastaveno"
},
"error": {
"unknown": "Neo\u010dek\u00e1van\u00e1 chyba"
},
"step": {
"user": {
"data": {
"latitude": "Zem\u011bpisn\u00e1 \u0161\u00ed\u0159ka",
"longitude": "Zem\u011bpisn\u00e1 d\u00e9lka"
},
"title": "Nastaven\u00ed Flu Near You"
}
}
}
}

View File

@ -1,33 +0,0 @@
{
"config": {
"abort": {
"already_configured": "Standort ist bereits konfiguriert"
},
"error": {
"unknown": "Unerwarteter Fehler"
},
"step": {
"user": {
"data": {
"latitude": "Breitengrad",
"longitude": "L\u00e4ngengrad"
},
"description": "\u00dcberwache benutzerbasierte und CDC-Berichte f\u00fcr ein Koordinatenpaar.",
"title": "Konfiguriere Grippe in deiner N\u00e4he"
}
}
},
"issues": {
"integration_removal": {
"fix_flow": {
"step": {
"confirm": {
"description": "Die externe Datenquelle, aus der die Integration von Flu Near You gespeist wird, ist nicht mehr verf\u00fcgbar; daher funktioniert die Integration nicht mehr.\n\nDr\u00fccke SENDEN, um Flu Near You aus deiner Home Assistant-Instanz zu entfernen.",
"title": "Flu Near You entfernen"
}
}
},
"title": "Flu Near You ist nicht mehr verf\u00fcgbar"
}
}
}

View File

@ -1,33 +0,0 @@
{
"config": {
"abort": {
"already_configured": "\u0397 \u03c4\u03bf\u03c0\u03bf\u03b8\u03b5\u03c3\u03af\u03b1 \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03b8\u03b5\u03af"
},
"error": {
"unknown": "\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1"
},
"step": {
"user": {
"data": {
"latitude": "\u0393\u03b5\u03c9\u03b3\u03c1\u03b1\u03c6\u03b9\u03ba\u03cc \u03c0\u03bb\u03ac\u03c4\u03bf\u03c2",
"longitude": "\u0393\u03b5\u03c9\u03b3\u03c1\u03b1\u03c6\u03b9\u03ba\u03cc \u03bc\u03ae\u03ba\u03bf\u03c2"
},
"description": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03bf\u03bb\u03bf\u03cd\u03b8\u03b7\u03c3\u03b7 \u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ce\u03bd \u03b2\u03ac\u03c3\u03b5\u03b9 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ba\u03b1\u03b9 CDC \u03b3\u03b9\u03b1 \u03ad\u03bd\u03b1 \u03b6\u03b5\u03cd\u03b3\u03bf\u03c2 \u03c3\u03c5\u03bd\u03c4\u03b5\u03c4\u03b1\u03b3\u03bc\u03ad\u03bd\u03c9\u03bd.",
"title": "\u0394\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5 Flu Near You"
}
}
},
"issues": {
"integration_removal": {
"fix_flow": {
"step": {
"confirm": {
"description": "\u0397 \u03b5\u03be\u03c9\u03c4\u03b5\u03c1\u03b9\u03ba\u03ae \u03c0\u03b7\u03b3\u03ae \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd \u03c0\u03bf\u03c5 \u03c4\u03c1\u03bf\u03c6\u03bf\u03b4\u03bf\u03c4\u03b5\u03af \u03c4\u03b7\u03bd \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7 Flu Near You \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03c0\u03bb\u03ad\u03bf\u03bd \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b7. \u0395\u03c0\u03bf\u03bc\u03ad\u03bd\u03c9\u03c2, \u03b7 \u03b5\u03bd\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03b4\u03b5\u03bd \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b5\u03af \u03c0\u03bb\u03ad\u03bf\u03bd. \n\n \u03a0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 SUBMIT \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b1\u03c6\u03b1\u03b9\u03c1\u03ad\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7 \u03b3\u03c1\u03af\u03c0\u03b7 \u03ba\u03bf\u03bd\u03c4\u03ac \u03c3\u03b1\u03c2 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03c0\u03b1\u03c1\u03bf\u03c5\u03c3\u03af\u03b1 \u03c4\u03bf\u03c5 Home Assistant.",
"title": "\u0391\u03c6\u03b1\u03b9\u03c1\u03ad\u03c3\u03c4\u03b5 \u03c4\u03bf Flu Near You"
}
}
},
"title": "\u03a4\u03bf Flu Near You \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03c0\u03bb\u03ad\u03bf\u03bd \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03bf"
}
}
}

View File

@ -1,33 +0,0 @@
{
"config": {
"abort": {
"already_configured": "Location is already configured"
},
"error": {
"unknown": "Unexpected error"
},
"step": {
"user": {
"data": {
"latitude": "Latitude",
"longitude": "Longitude"
},
"description": "Monitor user-based and CDC reports for a pair of coordinates.",
"title": "Configure Flu Near You"
}
}
},
"issues": {
"integration_removal": {
"fix_flow": {
"step": {
"confirm": {
"description": "The external data source powering the Flu Near You integration is no longer available; thus, the integration no longer works.\n\nPress SUBMIT to remove Flu Near You from your Home Assistant instance.",
"title": "Remove Flu Near You"
}
}
},
"title": "Flu Near You is no longer available"
}
}
}

View File

@ -1,17 +0,0 @@
{
"config": {
"abort": {
"already_configured": "Estas coordenadas ya est\u00e1n registradas."
},
"step": {
"user": {
"data": {
"latitude": "Latitud",
"longitude": "Longitud"
},
"description": "Monitoree los repotes basados en el usuario y los CDC para un par de coordenadas.",
"title": "Configurar Flu Near You (Gripe cerca de usted)"
}
}
}
}

View File

@ -1,33 +0,0 @@
{
"config": {
"abort": {
"already_configured": "La ubicaci\u00f3n ya est\u00e1 configurada"
},
"error": {
"unknown": "Error inesperado"
},
"step": {
"user": {
"data": {
"latitude": "Latitud",
"longitude": "Longitud"
},
"description": "Supervisa los informes del CDC y los basados en los usuarios para un par de coordenadas.",
"title": "Configurar Flu Near You"
}
}
},
"issues": {
"integration_removal": {
"fix_flow": {
"step": {
"confirm": {
"description": "La fuente de datos externa que alimenta la integraci\u00f3n Flu Near You ya no est\u00e1 disponible; por lo tanto, la integraci\u00f3n ya no funciona. \n\nPulsa ENVIAR para eliminar Flu Near You de tu instancia Home Assistant.",
"title": "Eliminar Flu Near You"
}
}
},
"title": "Flu Near You ya no est\u00e1 disponible"
}
}
}

View File

@ -1,33 +0,0 @@
{
"config": {
"abort": {
"already_configured": "Asukoht on juba h\u00e4\u00e4lestatud"
},
"error": {
"unknown": "Tundmatu viga"
},
"step": {
"user": {
"data": {
"latitude": "Laiuskraad",
"longitude": "Pikkuskraad"
},
"description": "Kasutajap\u00f5histe ja CDC-aruannete j\u00e4lgimine antud asukohas.",
"title": "Seadista Flu Near You"
}
}
},
"issues": {
"integration_removal": {
"fix_flow": {
"step": {
"confirm": {
"description": "Flu Near You integratsiooni k\u00e4ivitav v\u00e4line andmeallikas ei ole enam saadaval; seega ei t\u00f6\u00f6ta integratsioon enam.\n\nVajutage SUBMIT, et eemaldada Flu Near You oma Home Assistant'i instantsist.",
"title": "Eemalda Flu Near You"
}
}
},
"title": "Flu Near You pole enam saadaval"
}
}
}

View File

@ -1,7 +0,0 @@
{
"config": {
"error": {
"unknown": "Odottamaton virhe"
}
}
}

View File

@ -1,25 +0,0 @@
{
"config": {
"abort": {
"already_configured": "L'emplacement est d\u00e9j\u00e0 configur\u00e9"
},
"error": {
"unknown": "Erreur inattendue"
},
"step": {
"user": {
"data": {
"latitude": "Latitude",
"longitude": "Longitude"
},
"description": "Surveillez les rapports des utilisateurs et du CDC pour des coordonn\u00e9es.",
"title": "Configurer Flu Near You"
}
}
},
"issues": {
"integration_removal": {
"title": "Flu Near You n'est plus disponible"
}
}
}

View File

@ -1,18 +0,0 @@
{
"config": {
"abort": {
"already_configured": "\u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05de\u05d9\u05e7\u05d5\u05dd \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4"
},
"error": {
"unknown": "\u05e9\u05d2\u05d9\u05d0\u05d4 \u05d1\u05dc\u05ea\u05d9 \u05e6\u05e4\u05d5\u05d9\u05d4"
},
"step": {
"user": {
"data": {
"latitude": "\u05e7\u05d5 \u05e8\u05d5\u05d7\u05d1",
"longitude": "\u05e7\u05d5 \u05d0\u05d5\u05e8\u05da"
}
}
}
}
}

View File

@ -1,33 +0,0 @@
{
"config": {
"abort": {
"already_configured": "A hely m\u00e1r konfigur\u00e1lva van"
},
"error": {
"unknown": "V\u00e1ratlan hiba t\u00f6rt\u00e9nt"
},
"step": {
"user": {
"data": {
"latitude": "Sz\u00e9less\u00e9g",
"longitude": "Hossz\u00fas\u00e1g"
},
"description": "Figyelje a felhaszn\u00e1l\u00f3alap\u00fa \u00e9s a CDC jelent\u00e9seket egy p\u00e1r koordin\u00e1t\u00e1ra.",
"title": "Flu Near You weboldal konfigur\u00e1l\u00e1sa"
}
}
},
"issues": {
"integration_removal": {
"fix_flow": {
"step": {
"confirm": {
"description": "A Flu Near You integr\u00e1ci\u00f3t m\u0171k\u00f6dtet\u0151 k\u00fcls\u0151 adatforr\u00e1s m\u00e1r nem el\u00e9rhet\u0151, \u00edgy az integr\u00e1ci\u00f3 m\u00e1r nem m\u0171k\u00f6dik.\n\nNyomja meg a MEHET gombot a Flu Near You elt\u00e1vol\u00edt\u00e1s\u00e1hoz a Home Assistantb\u00f3l.",
"title": "Flu Near You elt\u00e1vol\u00edt\u00e1sa"
}
}
},
"title": "Flu Near You m\u00e1r nem el\u00e9rhet\u0151"
}
}
}

View File

@ -1,33 +0,0 @@
{
"config": {
"abort": {
"already_configured": "Lokasi sudah dikonfigurasi"
},
"error": {
"unknown": "Kesalahan yang tidak diharapkan"
},
"step": {
"user": {
"data": {
"latitude": "Lintang",
"longitude": "Bujur"
},
"description": "Pantau laporan berbasis pengguna dan CDC berdasarkan data koordinat.",
"title": "Konfigurasikan Flu Near You"
}
}
},
"issues": {
"integration_removal": {
"fix_flow": {
"step": {
"confirm": {
"description": "Sumber data eksternal yang mendukung integrasi Flu Near You tidak lagi tersedia, sehingga integrasi tidak lagi berfungsi. \n\nTekan KIRIM untuk menghapus integrasi Flu Near You dari instans Home Assistant Anda.",
"title": "Hapus Integrasi Flu Near You"
}
}
},
"title": "Integrasi Flu Year You tidak lagi tersedia"
}
}
}

View File

@ -1,33 +0,0 @@
{
"config": {
"abort": {
"already_configured": "La posizione \u00e8 gi\u00e0 configurata"
},
"error": {
"unknown": "Errore imprevisto"
},
"step": {
"user": {
"data": {
"latitude": "Latitudine",
"longitude": "Logitudine"
},
"description": "Monitorare i rapporti basati su utenti e quelli della CDC per una coppia di coordinate.",
"title": "Configurare Flu Near You"
}
}
},
"issues": {
"integration_removal": {
"fix_flow": {
"step": {
"confirm": {
"description": "L'origine dati esterna che alimenta l'integrazione Flu Near You non \u00e8 pi\u00f9 disponibile; quindi, l'integrazione non funziona pi\u00f9. \n\nPremi INVIA per rimuovere Flu Near You dall'istanza di Home Assistant.",
"title": "Rimuovi Flu Near You"
}
}
},
"title": "Flu Near You non \u00e8 pi\u00f9 disponibile"
}
}
}

View File

@ -1,33 +0,0 @@
{
"config": {
"abort": {
"already_configured": "\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059"
},
"error": {
"unknown": "\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc"
},
"step": {
"user": {
"data": {
"latitude": "\u7def\u5ea6",
"longitude": "\u7d4c\u5ea6"
},
"description": "\u30e6\u30fc\u30b6\u30fc\u30d9\u30fc\u30b9\u306e\u30ec\u30dd\u30fc\u30c8\u3068CDC\u306e\u30ec\u30dd\u30fc\u30c8\u3092\u30da\u30a2\u306b\u3057\u3066\u5ea7\u6a19\u3067\u30e2\u30cb\u30bf\u30fc\u3057\u307e\u3059\u3002",
"title": "\u8fd1\u304f\u306eFlu\u3092\u8a2d\u5b9a"
}
}
},
"issues": {
"integration_removal": {
"fix_flow": {
"step": {
"confirm": {
"description": "Flu Near You\u3068\u306e\u7d71\u5408\u306b\u5fc5\u8981\u306a\u5916\u90e8\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u4f7f\u7528\u3067\u304d\u306a\u304f\u306a\u3063\u305f\u305f\u3081\u3001\u7d71\u5408\u306f\u6a5f\u80fd\u3057\u306a\u304f\u306a\u308a\u307e\u3057\u305f\u3002\n\nSUBMIT\u3092\u62bc\u3057\u3066\u3001Flu Near You\u3092Home Assistant\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304b\u3089\u524a\u9664\u3057\u307e\u3059\u3002",
"title": "\u8fd1\u304f\u306eFlu Near You\u3092\u524a\u9664"
}
}
},
"title": "Flu Near You\u306f\u3001\u5229\u7528\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3057\u305f"
}
}
}

View File

@ -1,20 +0,0 @@
{
"config": {
"abort": {
"already_configured": "\uc704\uce58\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4"
},
"error": {
"unknown": "\uc608\uc0c1\uce58 \ubabb\ud55c \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4"
},
"step": {
"user": {
"data": {
"latitude": "\uc704\ub3c4",
"longitude": "\uacbd\ub3c4"
},
"description": "\uc0ac\uc6a9\uc790 \uae30\ubc18 \ub370\uc774\ud130 \ubc0f CDC \ubcf4\uace0\uc11c\uc5d0\uc11c \uc88c\ud45c\ub97c \ubaa8\ub2c8\ud130\ub9c1\ud569\ub2c8\ub2e4.",
"title": "Flu Near You \uad6c\uc131\ud558\uae30"
}
}
}
}

View File

@ -1,20 +0,0 @@
{
"config": {
"abort": {
"already_configured": "Standuert ass scho konfigur\u00e9iert"
},
"error": {
"unknown": "Onerwaarte Feeler"
},
"step": {
"user": {
"data": {
"latitude": "Breedegrad",
"longitude": "L\u00e4ngegrad"
},
"description": "Iwwerwach Benotzer-bas\u00e9iert an CDC Berichter fir Koordinaten.",
"title": "Flu Near You konfigur\u00e9ieren"
}
}
}
}

View File

@ -1,31 +0,0 @@
{
"config": {
"abort": {
"already_configured": "Locatie is al geconfigureerd"
},
"error": {
"unknown": "Onverwachte fout"
},
"step": {
"user": {
"data": {
"latitude": "Breedtegraad",
"longitude": "Lengtegraad"
},
"description": "Bewaak gebruikersgebaseerde en CDC-rapporten voor een paar co\u00f6rdinaten.",
"title": "Configureer \nFlu Near You"
}
}
},
"issues": {
"integration_removal": {
"fix_flow": {
"step": {
"confirm": {
"title": "Flu Near You verwijderen"
}
}
}
}
}
}

View File

@ -1,33 +0,0 @@
{
"config": {
"abort": {
"already_configured": "Plasseringen er allerede konfigurert"
},
"error": {
"unknown": "Uventet feil"
},
"step": {
"user": {
"data": {
"latitude": "Breddegrad",
"longitude": "Lengdegrad"
},
"description": "Overv\u00e5k brukerbaserte rapporter og CDC-rapporter for et par koordinater.",
"title": "Konfigurere influensa i n\u00e6rheten av deg"
}
}
},
"issues": {
"integration_removal": {
"fix_flow": {
"step": {
"confirm": {
"description": "Den eksterne datakilden som driver Flu Near You-integrasjonen er ikke lenger tilgjengelig; dermed fungerer ikke integreringen lenger. \n\n Trykk SUBMIT for \u00e5 fjerne Flu Near You fra Home Assistant-forekomsten.",
"title": "Fjern influensa n\u00e6r deg"
}
}
},
"title": "Flu Near You er ikke lenger tilgjengelig"
}
}
}

View File

@ -1,33 +0,0 @@
{
"config": {
"abort": {
"already_configured": "Lokalizacja jest ju\u017c skonfigurowana"
},
"error": {
"unknown": "Nieoczekiwany b\u0142\u0105d"
},
"step": {
"user": {
"data": {
"latitude": "Szeroko\u015b\u0107 geograficzna",
"longitude": "D\u0142ugo\u015b\u0107 geograficzna"
},
"description": "Monitoruj raporty oparte na u\u017cytkownikach i CDC dla pary wsp\u00f3\u0142rz\u0119dnych.",
"title": "Konfiguracja Flu Near You"
}
}
},
"issues": {
"integration_removal": {
"fix_flow": {
"step": {
"confirm": {
"description": "Zewn\u0119trzne \u017ar\u00f3d\u0142o danych dla integracji Flu Near You nie jest ju\u017c dost\u0119pne; tym sposobem integracja ju\u017c nie dzia\u0142a. \n\nNaci\u015bnij ZATWIERD\u0179, aby usun\u0105\u0107 Flu Near You z Home Assistanta.",
"title": "Usu\u0144 Flu Near You"
}
}
},
"title": "Flu Near You nie jest ju\u017c dost\u0119pna"
}
}
}

View File

@ -1,33 +0,0 @@
{
"config": {
"abort": {
"already_configured": "Localiza\u00e7\u00e3o j\u00e1 est\u00e1 configurada"
},
"error": {
"unknown": "Erro inesperado"
},
"step": {
"user": {
"data": {
"latitude": "Latitude",
"longitude": "Longitude"
},
"description": "Monitore relat\u00f3rios baseados em usu\u00e1rio e CDC para um par de coordenadas.",
"title": "Configurar Flue Near You"
}
}
},
"issues": {
"integration_removal": {
"fix_flow": {
"step": {
"confirm": {
"description": "A fonte de dados externa que alimenta a integra\u00e7\u00e3o do Flu Near You n\u00e3o est\u00e1 mais dispon\u00edvel; assim, a integra\u00e7\u00e3o n\u00e3o funciona mais. \n\n Pressione ENVIAR para remover Flu Near You da sua inst\u00e2ncia do Home Assistant.",
"title": "Remova Flu Near You"
}
}
},
"title": "Flu Near You n\u00e3o est\u00e1 mais dispon\u00edvel"
}
}
}

View File

@ -1,18 +0,0 @@
{
"config": {
"abort": {
"already_configured": "A localiza\u00e7\u00e3o j\u00e1 est\u00e1 configurada"
},
"error": {
"unknown": "Erro inesperado"
},
"step": {
"user": {
"data": {
"latitude": "Latitude",
"longitude": "Longitude"
}
}
}
}
}

View File

@ -1,33 +0,0 @@
{
"config": {
"abort": {
"already_configured": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430."
},
"error": {
"unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430."
},
"step": {
"user": {
"data": {
"latitude": "\u0428\u0438\u0440\u043e\u0442\u0430",
"longitude": "\u0414\u043e\u043b\u0433\u043e\u0442\u0430"
},
"description": "\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0438 CDC \u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c.",
"title": "Flu Near You"
}
}
},
"issues": {
"integration_removal": {
"fix_flow": {
"step": {
"confirm": {
"description": "\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0440\u0430\u0431\u043e\u0442\u0443 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 Flu Near You, \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d.\n\n\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0443\u0434\u0430\u043b\u0438\u0442\u044c Flu Near You \u0438\u0437 \u0412\u0430\u0448\u0435\u0433\u043e Home Assistant.",
"title": "\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 Flu Near You"
}
}
},
"title": "\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f Flu Near You \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430"
}
}
}

View File

@ -1,12 +0,0 @@
{
"config": {
"step": {
"user": {
"data": {
"latitude": "Zemepisn\u00e1 \u0161\u00edrka",
"longitude": "Zemepisn\u00e1 d\u013a\u017eka"
}
}
}
}
}

View File

@ -1,17 +0,0 @@
{
"config": {
"abort": {
"already_configured": "Te koordinate so \u017ee registrirane."
},
"step": {
"user": {
"data": {
"latitude": "Zemljepisna \u0161irina",
"longitude": "Zemljepisna dol\u017eina"
},
"description": "Spremljajte uporabni\u0161ke in CDC obvestila za dolo\u010dene koordinate.",
"title": "Konfigurirajte Flu Near You"
}
}
}
}

View File

@ -1,33 +0,0 @@
{
"config": {
"abort": {
"already_configured": "Dessa koordinater \u00e4r redan registrerade."
},
"error": {
"unknown": "Ov\u00e4ntat fel"
},
"step": {
"user": {
"data": {
"latitude": "Latitud",
"longitude": "Longitud"
},
"description": "\u00d6vervaka anv\u00e4ndarbaserade och CDC-rapporter f\u00f6r ett par koordinater.",
"title": "Konfigurera influensa i n\u00e4rheten av dig"
}
}
},
"issues": {
"integration_removal": {
"fix_flow": {
"step": {
"confirm": {
"description": "Den externa datak\u00e4llan som driver Flu Near You-integrationen \u00e4r inte l\u00e4ngre tillg\u00e4nglig; allts\u00e5 fungerar inte integrationen l\u00e4ngre. \n\n Tryck p\u00e5 SUBMIT f\u00f6r att ta bort Flu Near You fr\u00e5n din Home Assistant-instans.",
"title": "Ta bort influensa n\u00e4ra dig"
}
}
},
"title": "Influensa n\u00e4ra dig \u00e4r inte l\u00e4ngre tillg\u00e4nglig"
}
}
}

View File

@ -1,33 +0,0 @@
{
"config": {
"abort": {
"already_configured": "Konum zaten yap\u0131land\u0131r\u0131lm\u0131\u015f"
},
"error": {
"unknown": "Beklenmeyen hata"
},
"step": {
"user": {
"data": {
"latitude": "Enlem",
"longitude": "Boylam"
},
"description": "Bir \u00e7ift koordinat i\u00e7in kullan\u0131c\u0131 tabanl\u0131 raporlar\u0131 ve CDC raporlar\u0131n\u0131 izleyin.",
"title": "Flu Near You'yu Yap\u0131land\u0131r\u0131n"
}
}
},
"issues": {
"integration_removal": {
"fix_flow": {
"step": {
"confirm": {
"description": "Flu Near You entegrasyonuna g\u00fc\u00e7 sa\u011flayan harici veri kayna\u011f\u0131 art\u0131k mevcut de\u011fil; bu nedenle, entegrasyon art\u0131k \u00e7al\u0131\u015fm\u0131yor. \n\n Home Assistant \u00f6rne\u011finden Flu Near You'yu kald\u0131rmak i\u00e7in G\u00d6NDER'e bas\u0131n.",
"title": "Yak\u0131n\u0131n\u0131zdaki Flu Near You'yu Kald\u0131r\u0131n"
}
}
},
"title": "Flu Near You art\u0131k mevcut de\u011fil"
}
}
}

View File

@ -1,20 +0,0 @@
{
"config": {
"abort": {
"already_configured": "\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u0434\u043b\u044f \u0446\u044c\u043e\u0433\u043e \u043c\u0456\u0441\u0446\u0435\u0437\u043d\u0430\u0445\u043e\u0434\u0436\u0435\u043d\u043d\u044f \u0432\u0436\u0435 \u0432\u0438\u043a\u043e\u043d\u0430\u043d\u0435."
},
"error": {
"unknown": "\u041d\u0435\u043e\u0447\u0456\u043a\u0443\u0432\u0430\u043d\u0430 \u043f\u043e\u043c\u0438\u043b\u043a\u0430"
},
"step": {
"user": {
"data": {
"latitude": "\u0428\u0438\u0440\u043e\u0442\u0430",
"longitude": "\u0414\u043e\u0432\u0433\u043e\u0442\u0430"
},
"description": "\u041c\u043e\u043d\u0456\u0442\u043e\u0440\u0438\u043d\u0433 \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044c\u043a\u0438\u0445 \u0456 CDC \u0437\u0432\u0456\u0442\u0456\u0432 \u0437\u0430 \u0432\u043a\u0430\u0437\u0430\u043d\u0438\u043c\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438.",
"title": "Flu Near You"
}
}
}
}

View File

@ -1,7 +0,0 @@
{
"config": {
"abort": {
"already_configured": "\u4f4d\u7f6e\u5b8c\u6210\u914d\u7f6e"
}
}
}

View File

@ -1,33 +0,0 @@
{
"config": {
"abort": {
"already_configured": "\u5ea7\u6a19\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210"
},
"error": {
"unknown": "\u672a\u9810\u671f\u932f\u8aa4"
},
"step": {
"user": {
"data": {
"latitude": "\u7def\u5ea6",
"longitude": "\u7d93\u5ea6"
},
"description": "\u76e3\u6e2c\u4f7f\u7528\u8005\u8207 CDC \u56de\u5831\u76f8\u5c0d\u61c9\u5ea7\u6a19\u3002",
"title": "\u8a2d\u5b9a Flu Near You"
}
}
},
"issues": {
"integration_removal": {
"fix_flow": {
"step": {
"confirm": {
"description": "The external data source powering the Flu Near You \u6574\u5408\u6240\u4f7f\u7528\u7684\u5916\u90e8\u8cc7\u6599\u4f86\u6e90\u5df2\u7d93\u7121\u6cd5\u4f7f\u7528\uff0c\u6574\u5408\u7121\u6cd5\u4f7f\u7528\u3002\n\n\u6309\u4e0b\u300c\u50b3\u9001\u300d\u4ee5\u79fb\u9664\u7531 Home Assistant \u79fb\u9664 Flu Near You\u3002",
"title": "\u79fb\u9664 Flu Near You"
}
}
},
"title": "Flu Near You \u5df2\u7d93\u7121\u6cd5\u4f7f\u7528"
}
}
}

View File

@ -114,7 +114,6 @@ FLOWS = {
"flipr",
"flo",
"flume",
"flunearyou",
"flux_led",
"forecast_solar",
"forked_daapd",

View File

@ -782,16 +782,6 @@ disallow_untyped_defs = true
warn_return_any = true
warn_unreachable = true
[mypy-homeassistant.components.flunearyou.*]
check_untyped_defs = true
disallow_incomplete_defs = true
disallow_subclassing_any = true
disallow_untyped_calls = true
disallow_untyped_decorators = true
disallow_untyped_defs = true
warn_return_any = true
warn_unreachable = true
[mypy-homeassistant.components.flux_led.*]
check_untyped_defs = true
disallow_incomplete_defs = true

View File

@ -1557,9 +1557,6 @@ pyflic==2.0.3
# homeassistant.components.flume
pyflume==0.6.5
# homeassistant.components.flunearyou
pyflunearyou==2.0.2
# homeassistant.components.futurenow
pyfnip==0.2

View File

@ -1085,9 +1085,6 @@ pyflic==2.0.3
# homeassistant.components.flume
pyflume==0.6.5
# homeassistant.components.flunearyou
pyflunearyou==2.0.2
# homeassistant.components.forked_daapd
pyforked-daapd==0.1.11

View File

@ -1 +0,0 @@
"""Define tests for the flunearyou component."""

View File

@ -1,61 +0,0 @@
"""Define fixtures for Flu Near You tests."""
import json
from unittest.mock import patch
import pytest
from homeassistant.components.flunearyou.const import DOMAIN
from homeassistant.const import CONF_LATITUDE, CONF_LONGITUDE
from homeassistant.setup import async_setup_component
from tests.common import MockConfigEntry, load_fixture
@pytest.fixture(name="config_entry")
def config_entry_fixture(hass, config, unique_id):
"""Define a config entry fixture."""
entry = MockConfigEntry(domain=DOMAIN, unique_id=unique_id, data=config)
entry.add_to_hass(hass)
return entry
@pytest.fixture(name="config")
def config_fixture(hass):
"""Define a config entry data fixture."""
return {
CONF_LATITUDE: 51.528308,
CONF_LONGITUDE: -0.3817765,
}
@pytest.fixture(name="data_cdc", scope="session")
def data_cdc_fixture():
"""Define CDC data."""
return json.loads(load_fixture("cdc_data.json", "flunearyou"))
@pytest.fixture(name="data_user", scope="session")
def data_user_fixture():
"""Define user data."""
return json.loads(load_fixture("user_data.json", "flunearyou"))
@pytest.fixture(name="setup_flunearyou")
async def setup_flunearyou_fixture(hass, data_cdc, data_user, config):
"""Define a fixture to set up Flu Near You."""
with patch(
"pyflunearyou.cdc.CdcReport.status_by_coordinates", return_value=data_cdc
), patch(
"pyflunearyou.user.UserReport.status_by_coordinates", return_value=data_user
), patch(
"homeassistant.components.flunearyou.PLATFORMS", []
):
assert await async_setup_component(hass, DOMAIN, config)
await hass.async_block_till_done()
yield
@pytest.fixture(name="unique_id")
def unique_id_fixture(hass):
"""Define a config entry unique ID fixture."""
return "51.528308, -0.3817765"

View File

@ -1,10 +0,0 @@
{
"level": "Low",
"level2": "None",
"week_date": "2020-05-16",
"name": "Washington State",
"fill": {
"color": "#00B7B6",
"opacity": 0.7
}
}

View File

@ -1,50 +0,0 @@
[
{
"id": 1,
"city": "Chester(72934)",
"place_id": "49377",
"zip": "72934",
"contained_by": "610",
"latitude": "35.687603",
"longitude": "-94.253845",
"none": 1,
"symptoms": 0,
"flu": 0,
"lepto": 0,
"dengue": 0,
"chick": 0,
"icon": "1"
},
{
"id": 2,
"city": "Los Angeles(90046)",
"place_id": "23818",
"zip": "90046",
"contained_by": "204",
"latitude": "34.114731",
"longitude": "-118.363724",
"none": 2,
"symptoms": 0,
"flu": 0,
"lepto": 0,
"dengue": 0,
"chick": 0,
"icon": "1"
},
{
"id": 3,
"city": "Corvallis(97330)",
"place_id": "21462",
"zip": "97330",
"contained_by": "239",
"latitude": "44.638504",
"longitude": "-123.292938",
"none": 3,
"symptoms": 0,
"flu": 0,
"lepto": 0,
"dengue": 0,
"chick": 0,
"icon": "1"
}
]

View File

@ -1,52 +0,0 @@
"""Define tests for the flunearyou config flow."""
from unittest.mock import patch
from pyflunearyou.errors import FluNearYouError
from homeassistant import data_entry_flow
from homeassistant.components.flunearyou import DOMAIN
from homeassistant.config_entries import SOURCE_USER
from homeassistant.const import CONF_LATITUDE, CONF_LONGITUDE
async def test_duplicate_error(hass, config, config_entry, setup_flunearyou):
"""Test that an error is shown when duplicates are added."""
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER}, data=config
)
assert result["type"] == data_entry_flow.FlowResultType.ABORT
assert result["reason"] == "already_configured"
async def test_errors(hass, config):
"""Test that exceptions show the appropriate error."""
with patch(
"pyflunearyou.cdc.CdcReport.status_by_coordinates", side_effect=FluNearYouError
):
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER}, data=config
)
assert result["errors"] == {"base": "unknown"}
async def test_show_form(hass):
"""Test that the form is served with no input."""
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER}
)
assert result["type"] == data_entry_flow.FlowResultType.FORM
assert result["step_id"] == "user"
async def test_step_user(hass, config, setup_flunearyou):
"""Test that the user step works."""
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": SOURCE_USER}, data=config
)
assert result["type"] == data_entry_flow.FlowResultType.CREATE_ENTRY
assert result["title"] == "51.528308, -0.3817765"
assert result["data"] == {
CONF_LATITUDE: 51.528308,
CONF_LONGITUDE: -0.3817765,
}

View File

@ -1,67 +0,0 @@
"""Test Flu Near You diagnostics."""
from homeassistant.components.diagnostics import REDACTED
from tests.components.diagnostics import get_diagnostics_for_config_entry
async def test_entry_diagnostics(hass, config_entry, hass_client, setup_flunearyou):
"""Test config entry diagnostics."""
assert await get_diagnostics_for_config_entry(hass, hass_client, config_entry) == {
"cdc_report": {
"level": "Low",
"level2": "None",
"week_date": "2020-05-16",
"name": "Washington State",
"fill": {"color": "#00B7B6", "opacity": 0.7},
},
"user_report": [
{
"id": 1,
"city": "Chester(72934)",
"place_id": "49377",
"zip": "72934",
"contained_by": "610",
"latitude": REDACTED,
"longitude": REDACTED,
"none": 1,
"symptoms": 0,
"flu": 0,
"lepto": 0,
"dengue": 0,
"chick": 0,
"icon": "1",
},
{
"id": 2,
"city": "Los Angeles(90046)",
"place_id": "23818",
"zip": "90046",
"contained_by": "204",
"latitude": REDACTED,
"longitude": REDACTED,
"none": 2,
"symptoms": 0,
"flu": 0,
"lepto": 0,
"dengue": 0,
"chick": 0,
"icon": "1",
},
{
"id": 3,
"city": "Corvallis(97330)",
"place_id": "21462",
"zip": "97330",
"contained_by": "239",
"latitude": REDACTED,
"longitude": REDACTED,
"none": 3,
"symptoms": 0,
"flu": 0,
"lepto": 0,
"dengue": 0,
"chick": 0,
"icon": "1",
},
],
}