diff --git a/homeassistant/generated/application_credentials.py b/homeassistant/generated/application_credentials.py index fb2b04989f7..d2e16f2b914 100644 --- a/homeassistant/generated/application_credentials.py +++ b/homeassistant/generated/application_credentials.py @@ -3,8 +3,6 @@ To update, run python3 -m script.hassfest """ -# fmt: off - APPLICATION_CREDENTIALS = [ "geocaching", "google", @@ -19,5 +17,5 @@ APPLICATION_CREDENTIALS = [ "spotify", "withings", "xbox", - "yolink" + "yolink", ] diff --git a/homeassistant/generated/bluetooth.py b/homeassistant/generated/bluetooth.py index f883e507163..f3f789f9829 100644 --- a/homeassistant/generated/bluetooth.py +++ b/homeassistant/generated/bluetooth.py @@ -4,23 +4,21 @@ To update, run python3 -m script.hassfest """ from __future__ import annotations -# fmt: off - BLUETOOTH: list[dict[str, bool | str | int | list[int]]] = [ { "domain": "bluemaestro", "manufacturer_id": 307, - "connectable": False + "connectable": False, }, { "domain": "bthome", "connectable": False, - "service_data_uuid": "0000181c-0000-1000-8000-00805f9b34fb" + "service_data_uuid": "0000181c-0000-1000-8000-00805f9b34fb", }, { "domain": "bthome", "connectable": False, - "service_data_uuid": "0000181e-0000-1000-8000-00805f9b34fb" + "service_data_uuid": "0000181e-0000-1000-8000-00805f9b34fb", }, { "domain": "fjaraskupan", @@ -32,174 +30,174 @@ BLUETOOTH: list[dict[str, bool | str | int | list[int]]] = [ 70, 74, 65, - 82 - ] + 82, + ], }, { "domain": "govee_ble", "local_name": "Govee*", - "connectable": False + "connectable": False, }, { "domain": "govee_ble", "local_name": "GVH5*", - "connectable": False + "connectable": False, }, { "domain": "govee_ble", "local_name": "B5178*", - "connectable": False + "connectable": False, }, { "domain": "govee_ble", "manufacturer_id": 6966, "service_uuid": "00008451-0000-1000-8000-00805f9b34fb", - "connectable": False + "connectable": False, }, { "domain": "govee_ble", "manufacturer_id": 26589, "service_uuid": "00008351-0000-1000-8000-00805f9b34fb", - "connectable": False + "connectable": False, }, { "domain": "govee_ble", "manufacturer_id": 57391, "service_uuid": "00008351-0000-1000-8000-00805f9b34fb", - "connectable": False + "connectable": False, }, { "domain": "govee_ble", "manufacturer_id": 18994, "service_uuid": "00008551-0000-1000-8000-00805f9b34fb", - "connectable": False + "connectable": False, }, { "domain": "govee_ble", "manufacturer_id": 818, "service_uuid": "00008551-0000-1000-8000-00805f9b34fb", - "connectable": False + "connectable": False, }, { "domain": "govee_ble", "manufacturer_id": 59970, "service_uuid": "00008151-0000-1000-8000-00805f9b34fb", - "connectable": False + "connectable": False, }, { "domain": "govee_ble", "manufacturer_id": 63585, "service_uuid": "00008151-0000-1000-8000-00805f9b34fb", - "connectable": False + "connectable": False, }, { "domain": "govee_ble", "manufacturer_id": 14474, "service_uuid": "00008151-0000-1000-8000-00805f9b34fb", - "connectable": False + "connectable": False, }, { "domain": "govee_ble", "manufacturer_id": 10032, "service_uuid": "00008251-0000-1000-8000-00805f9b34fb", - "connectable": False + "connectable": False, }, { "domain": "govee_ble", "manufacturer_id": 19506, "service_uuid": "00001801-0000-1000-8000-00805f9b34fb", - "connectable": False + "connectable": False, }, { "domain": "homekit_controller", "manufacturer_id": 76, "manufacturer_data_start": [ - 6 - ] + 6, + ], }, { "domain": "inkbird", "local_name": "sps", - "connectable": False + "connectable": False, }, { "domain": "inkbird", "local_name": "Inkbird*", - "connectable": False + "connectable": False, }, { "domain": "inkbird", "local_name": "iBBQ*", - "connectable": False + "connectable": False, }, { "domain": "inkbird", "local_name": "xBBQ*", - "connectable": False + "connectable": False, }, { "domain": "inkbird", "local_name": "tps", - "connectable": False + "connectable": False, }, { "domain": "led_ble", - "local_name": "LEDnet*" + "local_name": "LEDnet*", }, { "domain": "led_ble", - "local_name": "BLE-LED*" + "local_name": "BLE-LED*", }, { "domain": "led_ble", - "local_name": "LEDBLE*" + "local_name": "LEDBLE*", }, { "domain": "led_ble", - "local_name": "Triones*" + "local_name": "Triones*", }, { "domain": "led_ble", - "local_name": "LEDBlue*" + "local_name": "LEDBlue*", }, { "domain": "led_ble", - "local_name": "Dream~*" + "local_name": "Dream~*", }, { "domain": "led_ble", - "local_name": "QHM-*" + "local_name": "QHM-*", }, { "domain": "led_ble", - "local_name": "AP-*" + "local_name": "AP-*", }, { "domain": "melnor", "manufacturer_data_start": [ - 89 + 89, ], - "manufacturer_id": 13 + "manufacturer_id": 13, }, { "domain": "moat", "local_name": "Moat_S*", - "connectable": False + "connectable": False, }, { "domain": "qingping", "local_name": "Qingping*", - "connectable": False + "connectable": False, }, { "domain": "qingping", "local_name": "Lee Guitars*", - "connectable": False + "connectable": False, }, { "domain": "qingping", "service_data_uuid": "0000fdcd-0000-1000-8000-00805f9b34fb", - "connectable": False + "connectable": False, }, { "domain": "sensorpro", @@ -208,9 +206,9 @@ BLUETOOTH: list[dict[str, bool | str | int | list[int]]] = [ 1, 1, 164, - 193 + 193, ], - "connectable": False + "connectable": False, }, { "domain": "sensorpro", @@ -219,79 +217,79 @@ BLUETOOTH: list[dict[str, bool | str | int | list[int]]] = [ 1, 5, 164, - 193 + 193, ], - "connectable": False + "connectable": False, }, { "domain": "sensorpush", "local_name": "SensorPush*", - "connectable": False + "connectable": False, }, { "domain": "switchbot", "service_data_uuid": "0000fd3d-0000-1000-8000-00805f9b34fb", - "connectable": False + "connectable": False, }, { "domain": "switchbot", "service_uuid": "cba20d00-224d-11e6-9fb8-0002a5d5c51b", - "connectable": False + "connectable": False, }, { "domain": "thermobeacon", "service_uuid": "0000fff0-0000-1000-8000-00805f9b34fb", "manufacturer_id": 16, "manufacturer_data_start": [ - 0 + 0, ], - "connectable": False + "connectable": False, }, { "domain": "thermobeacon", "service_uuid": "0000fff0-0000-1000-8000-00805f9b34fb", "manufacturer_id": 17, "manufacturer_data_start": [ - 0 + 0, ], - "connectable": False + "connectable": False, }, { "domain": "thermobeacon", "service_uuid": "0000fff0-0000-1000-8000-00805f9b34fb", "manufacturer_id": 21, "manufacturer_data_start": [ - 0 + 0, ], - "connectable": False + "connectable": False, }, { "domain": "thermobeacon", "local_name": "ThermoBeacon", - "connectable": False + "connectable": False, }, { "domain": "thermopro", "local_name": "TP35*", - "connectable": False + "connectable": False, }, { "domain": "thermopro", "local_name": "TP39*", - "connectable": False + "connectable": False, }, { "domain": "tilt_ble", - "manufacturer_id": 76 + "manufacturer_id": 76, }, { "domain": "xiaomi_ble", "connectable": False, - "service_data_uuid": "0000fe95-0000-1000-8000-00805f9b34fb" + "service_data_uuid": "0000fe95-0000-1000-8000-00805f9b34fb", }, { "domain": "yalexs_ble", "manufacturer_id": 465, - "service_uuid": "0000fe24-0000-1000-8000-00805f9b34fb" - } + "service_uuid": "0000fe24-0000-1000-8000-00805f9b34fb", + }, ] diff --git a/homeassistant/generated/config_flows.py b/homeassistant/generated/config_flows.py index 1aa49e279db..81f7f91afb6 100644 --- a/homeassistant/generated/config_flows.py +++ b/homeassistant/generated/config_flows.py @@ -3,8 +3,6 @@ To update, run python3 -m script.hassfest """ -# fmt: off - FLOWS = { "integration": [ "abode", @@ -456,7 +454,7 @@ FLOWS = { "zerproc", "zha", "zwave_js", - "zwave_me" + "zwave_me", ], "helper": [ "derivative", @@ -466,6 +464,6 @@ FLOWS = { "switch_as_x", "threshold", "tod", - "utility_meter" - ] + "utility_meter", + ], } diff --git a/homeassistant/generated/dhcp.py b/homeassistant/generated/dhcp.py index 11e0bbb0405..ae1b7a76a88 100644 --- a/homeassistant/generated/dhcp.py +++ b/homeassistant/generated/dhcp.py @@ -4,194 +4,201 @@ To update, run python3 -m script.hassfest """ from __future__ import annotations -# fmt: off - DHCP: list[dict[str, str | bool]] = [ - {'domain': 'august', 'hostname': 'connect', 'macaddress': 'D86162*'}, - {'domain': 'august', 'hostname': 'connect', 'macaddress': 'B8B7F1*'}, - {'domain': 'august', 'hostname': 'connect', 'macaddress': '2C9FFB*'}, - {'domain': 'august', 'hostname': 'august*', 'macaddress': 'E076D0*'}, - {'domain': 'awair', 'macaddress': '70886B1*'}, - {'domain': 'axis', 'registered_devices': True}, - {'domain': 'axis', 'hostname': 'axis-00408c*', 'macaddress': '00408C*'}, - {'domain': 'axis', 'hostname': 'axis-accc8e*', 'macaddress': 'ACCC8E*'}, - {'domain': 'axis', 'hostname': 'axis-b8a44f*', 'macaddress': 'B8A44F*'}, - {'domain': 'blink', 'hostname': 'blink*', 'macaddress': 'B85F98*'}, - {'domain': 'blink', 'hostname': 'blink*', 'macaddress': '00037F*'}, - {'domain': 'blink', 'hostname': 'blink*', 'macaddress': '20A171*'}, - {'domain': 'broadlink', 'registered_devices': True}, - {'domain': 'broadlink', 'macaddress': '34EA34*'}, - {'domain': 'broadlink', 'macaddress': '24DFA7*'}, - {'domain': 'broadlink', 'macaddress': 'A043B0*'}, - {'domain': 'broadlink', 'macaddress': 'B4430D*'}, - {'domain': 'broadlink', 'macaddress': 'C8F742*'}, - {'domain': 'elkm1', 'registered_devices': True}, - {'domain': 'elkm1', 'macaddress': '00409D*'}, - {'domain': 'emonitor', 'hostname': 'emonitor*', 'macaddress': '0090C2*'}, - {'domain': 'emonitor', 'registered_devices': True}, - {'domain': 'esphome', 'registered_devices': True}, - {'domain': 'flume', 'hostname': 'flume-gw-*'}, - {'domain': 'flux_led', 'registered_devices': True}, - {'domain': 'flux_led', 'hostname': '[ba][lk]*', 'macaddress': '18B905*'}, - {'domain': 'flux_led', 'hostname': '[ba][lk]*', 'macaddress': '249494*'}, - {'domain': 'flux_led', 'hostname': '[ba][lk]*', 'macaddress': '7CB94C*'}, - {'domain': 'flux_led', 'hostname': '[hba][flk]*', 'macaddress': 'ACCF23*'}, - {'domain': 'flux_led', 'hostname': '[ba][lk]*', 'macaddress': 'B4E842*'}, - {'domain': 'flux_led', 'hostname': '[hba][flk]*', 'macaddress': 'F0FE6B*'}, - {'domain': 'flux_led', 'hostname': 'lwip*', 'macaddress': '8CCE4E*'}, - {'domain': 'flux_led', 'hostname': 'hf-lpb100-zj*'}, - {'domain': 'flux_led', 'hostname': 'zengge_[0-9a-f][0-9a-f]_*'}, - {'domain': 'flux_led', 'hostname': 'sta*', 'macaddress': 'C82E47*'}, - {'domain': 'fronius', 'macaddress': '0003AC*'}, - {'domain': 'fully_kiosk', 'registered_devices': True}, - {'domain': 'goalzero', 'registered_devices': True}, - {'domain': 'goalzero', 'hostname': 'yeti*'}, - {'domain': 'gogogate2', 'hostname': 'ismartgate*'}, - {'domain': 'guardian', 'hostname': 'gvc*', 'macaddress': '30AEA4*'}, - {'domain': 'guardian', 'hostname': 'gvc*', 'macaddress': 'B4E62D*'}, - {'domain': 'guardian', 'hostname': 'guardian*', 'macaddress': '30AEA4*'}, - {'domain': 'hunterdouglas_powerview', 'registered_devices': True}, - {'domain': 'hunterdouglas_powerview', - 'hostname': 'hunter*', - 'macaddress': '002674*'}, - {'domain': 'insteon', 'macaddress': '000EF3*'}, - {'domain': 'insteon', 'registered_devices': True}, - {'domain': 'intellifire', 'hostname': 'zentrios-*'}, - {'domain': 'isy994', 'registered_devices': True}, - {'domain': 'isy994', 'hostname': 'isy*', 'macaddress': '0021B9*'}, - {'domain': 'isy994', 'hostname': 'polisy*', 'macaddress': '000DB9*'}, - {'domain': 'lametric', 'registered_devices': True}, - {'domain': 'lifx', 'macaddress': 'D073D5*'}, - {'domain': 'lifx', 'registered_devices': True}, - {'domain': 'litterrobot', 'hostname': 'litter-robot4'}, - {'domain': 'lyric', 'hostname': 'lyric-*', 'macaddress': '48A2E6*'}, - {'domain': 'lyric', 'hostname': 'lyric-*', 'macaddress': 'B82CA0*'}, - {'domain': 'lyric', 'hostname': 'lyric-*', 'macaddress': '00D02D*'}, - {'domain': 'motion_blinds', 'registered_devices': True}, - {'domain': 'motion_blinds', 'hostname': 'motion_*'}, - {'domain': 'motion_blinds', 'hostname': 'brel_*'}, - {'domain': 'motion_blinds', 'hostname': 'connector_*'}, - {'domain': 'myq', 'macaddress': '645299*'}, - {'domain': 'nest', 'macaddress': '18B430*'}, - {'domain': 'nest', 'macaddress': '641666*'}, - {'domain': 'nest', 'macaddress': 'D8EB46*'}, - {'domain': 'nexia', 'hostname': 'xl857-*', 'macaddress': '000231*'}, - {'domain': 'nuheat', 'hostname': 'nuheat', 'macaddress': '002338*'}, - {'domain': 'nuki', 'hostname': 'nuki_bridge_*'}, - {'domain': 'oncue', 'hostname': 'kohlergen*', 'macaddress': '00146F*'}, - {'domain': 'overkiz', 'hostname': 'gateway*', 'macaddress': 'F8811A*'}, - {'domain': 'powerwall', 'hostname': '1118431-*'}, - {'domain': 'prusalink', 'macaddress': '109C70*'}, - {'domain': 'qnap_qsw', 'macaddress': '245EBE*'}, - {'domain': 'rachio', 'hostname': 'rachio-*', 'macaddress': '009D6B*'}, - {'domain': 'rachio', 'hostname': 'rachio-*', 'macaddress': 'F0038C*'}, - {'domain': 'rachio', 'hostname': 'rachio-*', 'macaddress': '74C63B*'}, - {'domain': 'radiotherm', 'hostname': 'thermostat*', 'macaddress': '5CDAD4*'}, - {'domain': 'radiotherm', 'registered_devices': True}, - {'domain': 'rainforest_eagle', 'macaddress': 'D8D5B9*'}, - {'domain': 'ring', 'hostname': 'ring*', 'macaddress': '0CAE7D*'}, - {'domain': 'roomba', 'hostname': 'irobot-*', 'macaddress': '501479*'}, - {'domain': 'roomba', 'hostname': 'roomba-*', 'macaddress': '80A589*'}, - {'domain': 'roomba', 'hostname': 'roomba-*', 'macaddress': 'DCF505*'}, - {'domain': 'samsungtv', 'registered_devices': True}, - {'domain': 'samsungtv', 'hostname': 'tizen*'}, - {'domain': 'samsungtv', 'macaddress': '4844F7*'}, - {'domain': 'samsungtv', 'macaddress': '606BBD*'}, - {'domain': 'samsungtv', 'macaddress': '641CB0*'}, - {'domain': 'samsungtv', 'macaddress': '8CC8CD*'}, - {'domain': 'samsungtv', 'macaddress': '8CEA48*'}, - {'domain': 'samsungtv', 'macaddress': 'F47B5E*'}, - {'domain': 'screenlogic', 'registered_devices': True}, - {'domain': 'screenlogic', 'hostname': 'pentair*', 'macaddress': '00C033*'}, - {'domain': 'sense', 'hostname': 'sense-*', 'macaddress': '009D6B*'}, - {'domain': 'sense', 'hostname': 'sense-*', 'macaddress': 'DCEFCA*'}, - {'domain': 'sense', 'hostname': 'sense-*', 'macaddress': 'A4D578*'}, - {'domain': 'senseme', 'registered_devices': True}, - {'domain': 'senseme', 'macaddress': '20F85E*'}, - {'domain': 'sensibo', 'hostname': 'sensibo*'}, - {'domain': 'simplisafe', 'hostname': 'simplisafe*', 'macaddress': '30AEA4*'}, - {'domain': 'sleepiq', 'macaddress': '64DBA0*'}, - {'domain': 'smartthings', 'hostname': 'st*', 'macaddress': '24FD5B*'}, - {'domain': 'smartthings', 'hostname': 'smartthings*', 'macaddress': '24FD5B*'}, - {'domain': 'smartthings', 'hostname': 'hub*', 'macaddress': '24FD5B*'}, - {'domain': 'smartthings', 'hostname': 'hub*', 'macaddress': 'D052A8*'}, - {'domain': 'smartthings', 'hostname': 'hub*', 'macaddress': '286D97*'}, - {'domain': 'solaredge', 'hostname': 'target', 'macaddress': '002702*'}, - {'domain': 'somfy_mylink', 'hostname': 'somfy_*', 'macaddress': 'B8B7F1*'}, - {'domain': 'squeezebox', 'hostname': 'squeezebox*', 'macaddress': '000420*'}, - {'domain': 'steamist', 'registered_devices': True}, - {'domain': 'steamist', 'hostname': 'my[45]50*', 'macaddress': '001E0C*'}, - {'domain': 'tado', 'hostname': 'tado*'}, - {'domain': 'tesla_wall_connector', - 'hostname': 'teslawallconnector_*', - 'macaddress': 'DC44271*'}, - {'domain': 'tesla_wall_connector', - 'hostname': 'teslawallconnector_*', - 'macaddress': '98ED5C*'}, - {'domain': 'tesla_wall_connector', - 'hostname': 'teslawallconnector_*', - 'macaddress': '4CFCAA*'}, - {'domain': 'tolo', 'hostname': 'usr-tcp232-ed2'}, - {'domain': 'toon', 'hostname': 'eneco-*', 'macaddress': '74C63B*'}, - {'domain': 'tplink', 'registered_devices': True}, - {'domain': 'tplink', 'hostname': 'es*', 'macaddress': '54AF97*'}, - {'domain': 'tplink', 'hostname': 'ep*', 'macaddress': 'E848B8*'}, - {'domain': 'tplink', 'hostname': 'ep*', 'macaddress': '003192*'}, - {'domain': 'tplink', 'hostname': 'hs*', 'macaddress': '1C3BF3*'}, - {'domain': 'tplink', 'hostname': 'hs*', 'macaddress': '50C7BF*'}, - {'domain': 'tplink', 'hostname': 'hs*', 'macaddress': '68FF7B*'}, - {'domain': 'tplink', 'hostname': 'hs*', 'macaddress': '98DAC4*'}, - {'domain': 'tplink', 'hostname': 'hs*', 'macaddress': 'B09575*'}, - {'domain': 'tplink', 'hostname': 'hs*', 'macaddress': 'C006C3*'}, - {'domain': 'tplink', 'hostname': 'lb*', 'macaddress': '1C3BF3*'}, - {'domain': 'tplink', 'hostname': 'lb*', 'macaddress': '50C7BF*'}, - {'domain': 'tplink', 'hostname': 'lb*', 'macaddress': '68FF7B*'}, - {'domain': 'tplink', 'hostname': 'lb*', 'macaddress': '98DAC4*'}, - {'domain': 'tplink', 'hostname': 'lb*', 'macaddress': 'B09575*'}, - {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '60A4B7*'}, - {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '005F67*'}, - {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '1027F5*'}, - {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': 'B0A7B9*'}, - {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '403F8C*'}, - {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': 'C0C9E3*'}, - {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '909A4A*'}, - {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': 'E848B8*'}, - {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '003192*'}, - {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '1C3BF3*'}, - {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '50C7BF*'}, - {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '68FF7B*'}, - {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '98DAC4*'}, - {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': 'B09575*'}, - {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': 'C006C3*'}, - {'domain': 'tplink', 'hostname': 'k[lp]*', 'macaddress': '6C5AB0*'}, - {'domain': 'tuya', 'macaddress': '105A17*'}, - {'domain': 'tuya', 'macaddress': '10D561*'}, - {'domain': 'tuya', 'macaddress': '1869D8*'}, - {'domain': 'tuya', 'macaddress': '381F8D*'}, - {'domain': 'tuya', 'macaddress': '508A06*'}, - {'domain': 'tuya', 'macaddress': '68572D*'}, - {'domain': 'tuya', 'macaddress': '708976*'}, - {'domain': 'tuya', 'macaddress': '7CF666*'}, - {'domain': 'tuya', 'macaddress': '84E342*'}, - {'domain': 'tuya', 'macaddress': 'D4A651*'}, - {'domain': 'tuya', 'macaddress': 'D81F12*'}, - {'domain': 'twinkly', 'hostname': 'twinkly_*'}, - {'domain': 'unifiprotect', 'macaddress': 'B4FBE4*'}, - {'domain': 'unifiprotect', 'macaddress': '802AA8*'}, - {'domain': 'unifiprotect', 'macaddress': 'F09FC2*'}, - {'domain': 'unifiprotect', 'macaddress': '68D79A*'}, - {'domain': 'unifiprotect', 'macaddress': '18E829*'}, - {'domain': 'unifiprotect', 'macaddress': '245A4C*'}, - {'domain': 'unifiprotect', 'macaddress': '784558*'}, - {'domain': 'unifiprotect', 'macaddress': 'E063DA*'}, - {'domain': 'unifiprotect', 'macaddress': '265A4C*'}, - {'domain': 'unifiprotect', 'macaddress': '74ACB9*'}, - {'domain': 'verisure', 'macaddress': '0023C1*'}, - {'domain': 'vicare', 'macaddress': 'B87424*'}, - {'domain': 'wiz', 'registered_devices': True}, - {'domain': 'wiz', 'macaddress': 'A8BB50*'}, - {'domain': 'wiz', 'macaddress': 'D8A011*'}, - {'domain': 'wiz', 'macaddress': '444F8E*'}, - {'domain': 'wiz', 'macaddress': '6C2990*'}, - {'domain': 'wiz', 'hostname': 'wiz_*'}, - {'domain': 'yeelight', 'hostname': 'yeelink-*'}] + {"domain": "august", "hostname": "connect", "macaddress": "D86162*"}, + {"domain": "august", "hostname": "connect", "macaddress": "B8B7F1*"}, + {"domain": "august", "hostname": "connect", "macaddress": "2C9FFB*"}, + {"domain": "august", "hostname": "august*", "macaddress": "E076D0*"}, + {"domain": "awair", "macaddress": "70886B1*"}, + {"domain": "axis", "registered_devices": True}, + {"domain": "axis", "hostname": "axis-00408c*", "macaddress": "00408C*"}, + {"domain": "axis", "hostname": "axis-accc8e*", "macaddress": "ACCC8E*"}, + {"domain": "axis", "hostname": "axis-b8a44f*", "macaddress": "B8A44F*"}, + {"domain": "blink", "hostname": "blink*", "macaddress": "B85F98*"}, + {"domain": "blink", "hostname": "blink*", "macaddress": "00037F*"}, + {"domain": "blink", "hostname": "blink*", "macaddress": "20A171*"}, + {"domain": "broadlink", "registered_devices": True}, + {"domain": "broadlink", "macaddress": "34EA34*"}, + {"domain": "broadlink", "macaddress": "24DFA7*"}, + {"domain": "broadlink", "macaddress": "A043B0*"}, + {"domain": "broadlink", "macaddress": "B4430D*"}, + {"domain": "broadlink", "macaddress": "C8F742*"}, + {"domain": "elkm1", "registered_devices": True}, + {"domain": "elkm1", "macaddress": "00409D*"}, + {"domain": "emonitor", "hostname": "emonitor*", "macaddress": "0090C2*"}, + {"domain": "emonitor", "registered_devices": True}, + {"domain": "esphome", "registered_devices": True}, + {"domain": "flume", "hostname": "flume-gw-*"}, + {"domain": "flux_led", "registered_devices": True}, + {"domain": "flux_led", "macaddress": "18B905*", "hostname": "[ba][lk]*"}, + {"domain": "flux_led", "macaddress": "249494*", "hostname": "[ba][lk]*"}, + {"domain": "flux_led", "macaddress": "7CB94C*", "hostname": "[ba][lk]*"}, + {"domain": "flux_led", "macaddress": "ACCF23*", "hostname": "[hba][flk]*"}, + {"domain": "flux_led", "macaddress": "B4E842*", "hostname": "[ba][lk]*"}, + {"domain": "flux_led", "macaddress": "F0FE6B*", "hostname": "[hba][flk]*"}, + {"domain": "flux_led", "macaddress": "8CCE4E*", "hostname": "lwip*"}, + {"domain": "flux_led", "hostname": "hf-lpb100-zj*"}, + {"domain": "flux_led", "hostname": "zengge_[0-9a-f][0-9a-f]_*"}, + {"domain": "flux_led", "macaddress": "C82E47*", "hostname": "sta*"}, + {"domain": "fronius", "macaddress": "0003AC*"}, + {"domain": "fully_kiosk", "registered_devices": True}, + {"domain": "goalzero", "registered_devices": True}, + {"domain": "goalzero", "hostname": "yeti*"}, + {"domain": "gogogate2", "hostname": "ismartgate*"}, + {"domain": "guardian", "hostname": "gvc*", "macaddress": "30AEA4*"}, + {"domain": "guardian", "hostname": "gvc*", "macaddress": "B4E62D*"}, + {"domain": "guardian", "hostname": "guardian*", "macaddress": "30AEA4*"}, + {"domain": "hunterdouglas_powerview", "registered_devices": True}, + { + "domain": "hunterdouglas_powerview", + "hostname": "hunter*", + "macaddress": "002674*", + }, + {"domain": "insteon", "macaddress": "000EF3*"}, + {"domain": "insteon", "registered_devices": True}, + {"domain": "intellifire", "hostname": "zentrios-*"}, + {"domain": "isy994", "registered_devices": True}, + {"domain": "isy994", "hostname": "isy*", "macaddress": "0021B9*"}, + {"domain": "isy994", "hostname": "polisy*", "macaddress": "000DB9*"}, + {"domain": "lametric", "registered_devices": True}, + {"domain": "lifx", "macaddress": "D073D5*"}, + {"domain": "lifx", "registered_devices": True}, + {"domain": "litterrobot", "hostname": "litter-robot4"}, + {"domain": "lyric", "hostname": "lyric-*", "macaddress": "48A2E6*"}, + {"domain": "lyric", "hostname": "lyric-*", "macaddress": "B82CA0*"}, + {"domain": "lyric", "hostname": "lyric-*", "macaddress": "00D02D*"}, + {"domain": "motion_blinds", "registered_devices": True}, + {"domain": "motion_blinds", "hostname": "motion_*"}, + {"domain": "motion_blinds", "hostname": "brel_*"}, + {"domain": "motion_blinds", "hostname": "connector_*"}, + {"domain": "myq", "macaddress": "645299*"}, + {"domain": "nest", "macaddress": "18B430*"}, + {"domain": "nest", "macaddress": "641666*"}, + {"domain": "nest", "macaddress": "D8EB46*"}, + {"domain": "nexia", "hostname": "xl857-*", "macaddress": "000231*"}, + {"domain": "nuheat", "hostname": "nuheat", "macaddress": "002338*"}, + {"domain": "nuki", "hostname": "nuki_bridge_*"}, + {"domain": "oncue", "hostname": "kohlergen*", "macaddress": "00146F*"}, + {"domain": "overkiz", "hostname": "gateway*", "macaddress": "F8811A*"}, + {"domain": "powerwall", "hostname": "1118431-*"}, + {"domain": "prusalink", "macaddress": "109C70*"}, + {"domain": "qnap_qsw", "macaddress": "245EBE*"}, + {"domain": "rachio", "hostname": "rachio-*", "macaddress": "009D6B*"}, + {"domain": "rachio", "hostname": "rachio-*", "macaddress": "F0038C*"}, + {"domain": "rachio", "hostname": "rachio-*", "macaddress": "74C63B*"}, + {"domain": "radiotherm", "hostname": "thermostat*", "macaddress": "5CDAD4*"}, + {"domain": "radiotherm", "registered_devices": True}, + {"domain": "rainforest_eagle", "macaddress": "D8D5B9*"}, + {"domain": "ring", "hostname": "ring*", "macaddress": "0CAE7D*"}, + {"domain": "roomba", "hostname": "irobot-*", "macaddress": "501479*"}, + {"domain": "roomba", "hostname": "roomba-*", "macaddress": "80A589*"}, + {"domain": "roomba", "hostname": "roomba-*", "macaddress": "DCF505*"}, + {"domain": "samsungtv", "registered_devices": True}, + {"domain": "samsungtv", "hostname": "tizen*"}, + {"domain": "samsungtv", "macaddress": "4844F7*"}, + {"domain": "samsungtv", "macaddress": "606BBD*"}, + {"domain": "samsungtv", "macaddress": "641CB0*"}, + {"domain": "samsungtv", "macaddress": "8CC8CD*"}, + {"domain": "samsungtv", "macaddress": "8CEA48*"}, + {"domain": "samsungtv", "macaddress": "F47B5E*"}, + {"domain": "screenlogic", "registered_devices": True}, + {"domain": "screenlogic", "hostname": "pentair*", "macaddress": "00C033*"}, + {"domain": "sense", "hostname": "sense-*", "macaddress": "009D6B*"}, + {"domain": "sense", "hostname": "sense-*", "macaddress": "DCEFCA*"}, + {"domain": "sense", "hostname": "sense-*", "macaddress": "A4D578*"}, + {"domain": "senseme", "registered_devices": True}, + {"domain": "senseme", "macaddress": "20F85E*"}, + {"domain": "sensibo", "hostname": "sensibo*"}, + {"domain": "simplisafe", "hostname": "simplisafe*", "macaddress": "30AEA4*"}, + {"domain": "sleepiq", "macaddress": "64DBA0*"}, + {"domain": "smartthings", "hostname": "st*", "macaddress": "24FD5B*"}, + {"domain": "smartthings", "hostname": "smartthings*", "macaddress": "24FD5B*"}, + {"domain": "smartthings", "hostname": "hub*", "macaddress": "24FD5B*"}, + {"domain": "smartthings", "hostname": "hub*", "macaddress": "D052A8*"}, + {"domain": "smartthings", "hostname": "hub*", "macaddress": "286D97*"}, + {"domain": "solaredge", "hostname": "target", "macaddress": "002702*"}, + {"domain": "somfy_mylink", "hostname": "somfy_*", "macaddress": "B8B7F1*"}, + {"domain": "squeezebox", "hostname": "squeezebox*", "macaddress": "000420*"}, + {"domain": "steamist", "registered_devices": True}, + {"domain": "steamist", "macaddress": "001E0C*", "hostname": "my[45]50*"}, + {"domain": "tado", "hostname": "tado*"}, + { + "domain": "tesla_wall_connector", + "hostname": "teslawallconnector_*", + "macaddress": "DC44271*", + }, + { + "domain": "tesla_wall_connector", + "hostname": "teslawallconnector_*", + "macaddress": "98ED5C*", + }, + { + "domain": "tesla_wall_connector", + "hostname": "teslawallconnector_*", + "macaddress": "4CFCAA*", + }, + {"domain": "tolo", "hostname": "usr-tcp232-ed2"}, + {"domain": "toon", "hostname": "eneco-*", "macaddress": "74C63B*"}, + {"domain": "tplink", "registered_devices": True}, + {"domain": "tplink", "hostname": "es*", "macaddress": "54AF97*"}, + {"domain": "tplink", "hostname": "ep*", "macaddress": "E848B8*"}, + {"domain": "tplink", "hostname": "ep*", "macaddress": "003192*"}, + {"domain": "tplink", "hostname": "hs*", "macaddress": "1C3BF3*"}, + {"domain": "tplink", "hostname": "hs*", "macaddress": "50C7BF*"}, + {"domain": "tplink", "hostname": "hs*", "macaddress": "68FF7B*"}, + {"domain": "tplink", "hostname": "hs*", "macaddress": "98DAC4*"}, + {"domain": "tplink", "hostname": "hs*", "macaddress": "B09575*"}, + {"domain": "tplink", "hostname": "hs*", "macaddress": "C006C3*"}, + {"domain": "tplink", "hostname": "lb*", "macaddress": "1C3BF3*"}, + {"domain": "tplink", "hostname": "lb*", "macaddress": "50C7BF*"}, + {"domain": "tplink", "hostname": "lb*", "macaddress": "68FF7B*"}, + {"domain": "tplink", "hostname": "lb*", "macaddress": "98DAC4*"}, + {"domain": "tplink", "hostname": "lb*", "macaddress": "B09575*"}, + {"domain": "tplink", "hostname": "k[lp]*", "macaddress": "60A4B7*"}, + {"domain": "tplink", "hostname": "k[lp]*", "macaddress": "005F67*"}, + {"domain": "tplink", "hostname": "k[lp]*", "macaddress": "1027F5*"}, + {"domain": "tplink", "hostname": "k[lp]*", "macaddress": "B0A7B9*"}, + {"domain": "tplink", "hostname": "k[lp]*", "macaddress": "403F8C*"}, + {"domain": "tplink", "hostname": "k[lp]*", "macaddress": "C0C9E3*"}, + {"domain": "tplink", "hostname": "k[lp]*", "macaddress": "909A4A*"}, + {"domain": "tplink", "hostname": "k[lp]*", "macaddress": "E848B8*"}, + {"domain": "tplink", "hostname": "k[lp]*", "macaddress": "003192*"}, + {"domain": "tplink", "hostname": "k[lp]*", "macaddress": "1C3BF3*"}, + {"domain": "tplink", "hostname": "k[lp]*", "macaddress": "50C7BF*"}, + {"domain": "tplink", "hostname": "k[lp]*", "macaddress": "68FF7B*"}, + {"domain": "tplink", "hostname": "k[lp]*", "macaddress": "98DAC4*"}, + {"domain": "tplink", "hostname": "k[lp]*", "macaddress": "B09575*"}, + {"domain": "tplink", "hostname": "k[lp]*", "macaddress": "C006C3*"}, + {"domain": "tplink", "hostname": "k[lp]*", "macaddress": "6C5AB0*"}, + {"domain": "tuya", "macaddress": "105A17*"}, + {"domain": "tuya", "macaddress": "10D561*"}, + {"domain": "tuya", "macaddress": "1869D8*"}, + {"domain": "tuya", "macaddress": "381F8D*"}, + {"domain": "tuya", "macaddress": "508A06*"}, + {"domain": "tuya", "macaddress": "68572D*"}, + {"domain": "tuya", "macaddress": "708976*"}, + {"domain": "tuya", "macaddress": "7CF666*"}, + {"domain": "tuya", "macaddress": "84E342*"}, + {"domain": "tuya", "macaddress": "D4A651*"}, + {"domain": "tuya", "macaddress": "D81F12*"}, + {"domain": "twinkly", "hostname": "twinkly_*"}, + {"domain": "unifiprotect", "macaddress": "B4FBE4*"}, + {"domain": "unifiprotect", "macaddress": "802AA8*"}, + {"domain": "unifiprotect", "macaddress": "F09FC2*"}, + {"domain": "unifiprotect", "macaddress": "68D79A*"}, + {"domain": "unifiprotect", "macaddress": "18E829*"}, + {"domain": "unifiprotect", "macaddress": "245A4C*"}, + {"domain": "unifiprotect", "macaddress": "784558*"}, + {"domain": "unifiprotect", "macaddress": "E063DA*"}, + {"domain": "unifiprotect", "macaddress": "265A4C*"}, + {"domain": "unifiprotect", "macaddress": "74ACB9*"}, + {"domain": "verisure", "macaddress": "0023C1*"}, + {"domain": "vicare", "macaddress": "B87424*"}, + {"domain": "wiz", "registered_devices": True}, + {"domain": "wiz", "macaddress": "A8BB50*"}, + {"domain": "wiz", "macaddress": "D8A011*"}, + {"domain": "wiz", "macaddress": "444F8E*"}, + {"domain": "wiz", "macaddress": "6C2990*"}, + {"domain": "wiz", "hostname": "wiz_*"}, + {"domain": "yeelight", "hostname": "yeelink-*"}, +] diff --git a/homeassistant/generated/mqtt.py b/homeassistant/generated/mqtt.py index 41aac3e3a08..6b22ca26221 100644 --- a/homeassistant/generated/mqtt.py +++ b/homeassistant/generated/mqtt.py @@ -3,10 +3,8 @@ To update, run python3 -m script.hassfest """ -# fmt: off - MQTT = { "tasmota": [ - "tasmota/discovery/#" - ] + "tasmota/discovery/#", + ], } diff --git a/homeassistant/generated/ssdp.py b/homeassistant/generated/ssdp.py index b55240d1dc6..029afcd64fe 100644 --- a/homeassistant/generated/ssdp.py +++ b/homeassistant/generated/ssdp.py @@ -3,324 +3,322 @@ To update, run python3 -m script.hassfest """ -# fmt: off - SSDP = { "arcam_fmj": [ { "deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1", - "manufacturer": "ARCAM" - } + "manufacturer": "ARCAM", + }, ], "axis": [ { - "manufacturer": "AXIS" - } + "manufacturer": "AXIS", + }, ], "control4": [ { - "st": "c4:director" - } + "st": "c4:director", + }, ], "deconz": [ { "manufacturer": "Royal Philips Electronics", - "manufacturerURL": "http://www.dresden-elektronik.de" - } + "manufacturerURL": "http://www.dresden-elektronik.de", + }, ], "denonavr": [ { "deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1", - "manufacturer": "Denon" + "manufacturer": "Denon", }, { "deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1", - "manufacturer": "DENON" + "manufacturer": "DENON", }, { "deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1", - "manufacturer": "DENON PROFESSIONAL" + "manufacturer": "DENON PROFESSIONAL", }, { "deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1", - "manufacturer": "Marantz" + "manufacturer": "Marantz", }, { "deviceType": "urn:schemas-upnp-org:device:MediaServer:1", - "manufacturer": "Denon" + "manufacturer": "Denon", }, { "deviceType": "urn:schemas-upnp-org:device:MediaServer:1", - "manufacturer": "DENON" + "manufacturer": "DENON", }, { "deviceType": "urn:schemas-upnp-org:device:MediaServer:1", - "manufacturer": "DENON PROFESSIONAL" + "manufacturer": "DENON PROFESSIONAL", }, { "deviceType": "urn:schemas-upnp-org:device:MediaServer:1", - "manufacturer": "Marantz" + "manufacturer": "Marantz", }, { "deviceType": "urn:schemas-denon-com:device:AiosDevice:1", - "manufacturer": "Denon" + "manufacturer": "Denon", }, { "deviceType": "urn:schemas-denon-com:device:AiosDevice:1", - "manufacturer": "DENON" + "manufacturer": "DENON", }, { "deviceType": "urn:schemas-denon-com:device:AiosDevice:1", - "manufacturer": "DENON PROFESSIONAL" + "manufacturer": "DENON PROFESSIONAL", }, { "deviceType": "urn:schemas-denon-com:device:AiosDevice:1", - "manufacturer": "Marantz" - } + "manufacturer": "Marantz", + }, ], "directv": [ { "deviceType": "urn:schemas-upnp-org:device:MediaServer:1", - "manufacturer": "DIRECTV" - } + "manufacturer": "DIRECTV", + }, ], "dlna_dmr": [ { "deviceType": "urn:schemas-upnp-org:device:MediaRenderer:1", - "st": "urn:schemas-upnp-org:device:MediaRenderer:1" + "st": "urn:schemas-upnp-org:device:MediaRenderer:1", }, { "deviceType": "urn:schemas-upnp-org:device:MediaRenderer:2", - "st": "urn:schemas-upnp-org:device:MediaRenderer:2" + "st": "urn:schemas-upnp-org:device:MediaRenderer:2", }, { "deviceType": "urn:schemas-upnp-org:device:MediaRenderer:3", - "st": "urn:schemas-upnp-org:device:MediaRenderer:3" - } + "st": "urn:schemas-upnp-org:device:MediaRenderer:3", + }, ], "dlna_dms": [ { "deviceType": "urn:schemas-upnp-org:device:MediaServer:1", - "st": "urn:schemas-upnp-org:device:MediaServer:1" + "st": "urn:schemas-upnp-org:device:MediaServer:1", }, { "deviceType": "urn:schemas-upnp-org:device:MediaServer:2", - "st": "urn:schemas-upnp-org:device:MediaServer:2" + "st": "urn:schemas-upnp-org:device:MediaServer:2", }, { "deviceType": "urn:schemas-upnp-org:device:MediaServer:3", - "st": "urn:schemas-upnp-org:device:MediaServer:3" + "st": "urn:schemas-upnp-org:device:MediaServer:3", }, { "deviceType": "urn:schemas-upnp-org:device:MediaServer:4", - "st": "urn:schemas-upnp-org:device:MediaServer:4" - } + "st": "urn:schemas-upnp-org:device:MediaServer:4", + }, ], "fritz": [ { - "st": "urn:schemas-upnp-org:device:fritzbox:1" - } + "st": "urn:schemas-upnp-org:device:fritzbox:1", + }, ], "fritzbox": [ { - "st": "urn:schemas-upnp-org:device:fritzbox:1" - } + "st": "urn:schemas-upnp-org:device:fritzbox:1", + }, ], "harmony": [ { "deviceType": "urn:myharmony-com:device:harmony:1", - "manufacturer": "Logitech" - } + "manufacturer": "Logitech", + }, ], "heos": [ { - "st": "urn:schemas-denon-com:device:ACT-Denon:1" - } + "st": "urn:schemas-denon-com:device:ACT-Denon:1", + }, ], "huawei_lte": [ { "deviceType": "urn:schemas-upnp-org:device:InternetGatewayDevice:1", - "manufacturer": "Huawei" - } + "manufacturer": "Huawei", + }, ], "hue": [ { "manufacturer": "Royal Philips Electronics", - "modelName": "Philips hue bridge 2012" + "modelName": "Philips hue bridge 2012", }, { "manufacturer": "Royal Philips Electronics", - "modelName": "Philips hue bridge 2015" + "modelName": "Philips hue bridge 2015", }, { "manufacturer": "Signify", - "modelName": "Philips hue bridge 2015" - } + "modelName": "Philips hue bridge 2015", + }, ], "hyperion": [ { "manufacturer": "Hyperion Open Source Ambient Lighting", - "st": "urn:hyperion-project.org:device:basic:1" - } + "st": "urn:hyperion-project.org:device:basic:1", + }, ], "isy994": [ { "deviceType": "urn:udi-com:device:X_Insteon_Lighting_Device:1", - "manufacturer": "Universal Devices Inc." - } + "manufacturer": "Universal Devices Inc.", + }, ], "kaleidescape": [ { "deviceType": "schemas-upnp-org:device:Basic:1", - "manufacturer": "Kaleidescape, Inc." - } + "manufacturer": "Kaleidescape, Inc.", + }, ], "keenetic_ndms2": [ { "deviceType": "urn:schemas-upnp-org:device:InternetGatewayDevice:1", - "manufacturer": "Keenetic Ltd." + "manufacturer": "Keenetic Ltd.", }, { "deviceType": "urn:schemas-upnp-org:device:InternetGatewayDevice:1", - "manufacturer": "ZyXEL Communications Corp." - } + "manufacturer": "ZyXEL Communications Corp.", + }, ], "konnected": [ { - "manufacturer": "konnected.io" - } + "manufacturer": "konnected.io", + }, ], "lametric": [ { - "deviceType": "urn:schemas-upnp-org:device:LaMetric:1" - } + "deviceType": "urn:schemas-upnp-org:device:LaMetric:1", + }, ], "nanoleaf": [ { - "st": "Nanoleaf_aurora:light" + "st": "Nanoleaf_aurora:light", }, { - "st": "nanoleaf:nl29" + "st": "nanoleaf:nl29", }, { - "st": "nanoleaf:nl42" + "st": "nanoleaf:nl42", }, { - "st": "nanoleaf:nl52" - } + "st": "nanoleaf:nl52", + }, ], "netgear": [ { "deviceType": "urn:schemas-upnp-org:device:InternetGatewayDevice:1", - "manufacturer": "NETGEAR, Inc." - } + "manufacturer": "NETGEAR, Inc.", + }, ], "octoprint": [ { "deviceType": "urn:schemas-upnp-org:device:Basic:1", - "manufacturer": "The OctoPrint Project" - } + "manufacturer": "The OctoPrint Project", + }, ], "roku": [ { "deviceType": "urn:roku-com:device:player:1-0", "manufacturer": "Roku", - "st": "roku:ecp" - } + "st": "roku:ecp", + }, ], "samsungtv": [ { - "st": "urn:samsung.com:device:RemoteControlReceiver:1" + "st": "urn:samsung.com:device:RemoteControlReceiver:1", }, { - "st": "urn:samsung.com:service:MainTVAgent2:1" + "st": "urn:samsung.com:service:MainTVAgent2:1", }, { "manufacturer": "Samsung", - "st": "urn:schemas-upnp-org:service:RenderingControl:1" + "st": "urn:schemas-upnp-org:service:RenderingControl:1", }, { "manufacturer": "Samsung Electronics", - "st": "urn:schemas-upnp-org:service:RenderingControl:1" - } + "st": "urn:schemas-upnp-org:service:RenderingControl:1", + }, ], "songpal": [ { "manufacturer": "Sony Corporation", - "st": "urn:schemas-sony-com:service:ScalarWebAPI:1" - } + "st": "urn:schemas-sony-com:service:ScalarWebAPI:1", + }, ], "sonos": [ { - "st": "urn:schemas-upnp-org:device:ZonePlayer:1" - } + "st": "urn:schemas-upnp-org:device:ZonePlayer:1", + }, ], "syncthru": [ { "deviceType": "urn:schemas-upnp-org:device:Printer:1", - "manufacturer": "Samsung Electronics" - } + "manufacturer": "Samsung Electronics", + }, ], "synology_dsm": [ { "deviceType": "urn:schemas-upnp-org:device:Basic:1", - "manufacturer": "Synology" - } + "manufacturer": "Synology", + }, ], "unifi": [ { "manufacturer": "Ubiquiti Networks", - "modelDescription": "UniFi Dream Machine" + "modelDescription": "UniFi Dream Machine", }, { "manufacturer": "Ubiquiti Networks", - "modelDescription": "UniFi Dream Machine Pro" + "modelDescription": "UniFi Dream Machine Pro", }, { "manufacturer": "Ubiquiti Networks", - "modelDescription": "UniFi Dream Machine SE" - } + "modelDescription": "UniFi Dream Machine SE", + }, ], "unifiprotect": [ { "manufacturer": "Ubiquiti Networks", - "modelDescription": "UniFi Dream Machine" + "modelDescription": "UniFi Dream Machine", }, { "manufacturer": "Ubiquiti Networks", - "modelDescription": "UniFi Dream Machine Pro" + "modelDescription": "UniFi Dream Machine Pro", }, { "manufacturer": "Ubiquiti Networks", - "modelDescription": "UniFi Dream Machine SE" - } + "modelDescription": "UniFi Dream Machine SE", + }, ], "upnp": [ { - "st": "urn:schemas-upnp-org:device:InternetGatewayDevice:1" + "st": "urn:schemas-upnp-org:device:InternetGatewayDevice:1", }, { - "st": "urn:schemas-upnp-org:device:InternetGatewayDevice:2" - } + "st": "urn:schemas-upnp-org:device:InternetGatewayDevice:2", + }, ], "webostv": [ { - "st": "urn:lge-com:service:webos-second-screen:1" - } + "st": "urn:lge-com:service:webos-second-screen:1", + }, ], "wemo": [ { - "manufacturer": "Belkin International Inc." - } + "manufacturer": "Belkin International Inc.", + }, ], "wilight": [ { - "manufacturer": "All Automacao Ltda" - } + "manufacturer": "All Automacao Ltda", + }, ], "yamaha_musiccast": [ { - "manufacturer": "Yamaha Corporation" - } - ] + "manufacturer": "Yamaha Corporation", + }, + ], } diff --git a/homeassistant/generated/supported_brands.py b/homeassistant/generated/supported_brands.py index 92c7b827855..39f7c6bea05 100644 --- a/homeassistant/generated/supported_brands.py +++ b/homeassistant/generated/supported_brands.py @@ -3,9 +3,7 @@ To update, run python3 -m script.hassfest """ -# fmt: off - -HAS_SUPPORTED_BRANDS = ( +HAS_SUPPORTED_BRANDS = [ "denonavr", "hunterdouglas_powerview", "inkbird", @@ -15,5 +13,5 @@ HAS_SUPPORTED_BRANDS = ( "thermobeacon", "wemo", "yalexs_ble", - "zwave_js" -) + "zwave_js", +] diff --git a/homeassistant/generated/usb.py b/homeassistant/generated/usb.py index 2a87f33cf4f..901f9f72da5 100644 --- a/homeassistant/generated/usb.py +++ b/homeassistant/generated/usb.py @@ -3,113 +3,111 @@ To update, run python3 -m script.hassfest """ -# fmt: off - USB = [ { "domain": "insteon", - "vid": "10BF" + "vid": "10BF", }, { "domain": "modem_callerid", "vid": "0572", - "pid": "1340" + "pid": "1340", }, { "domain": "velbus", "vid": "10CF", - "pid": "0B1B" + "pid": "0B1B", }, { "domain": "velbus", "vid": "10CF", - "pid": "0516" + "pid": "0516", }, { "domain": "velbus", "vid": "10CF", - "pid": "0517" + "pid": "0517", }, { "domain": "velbus", "vid": "10CF", - "pid": "0518" + "pid": "0518", }, { "domain": "zha", "vid": "10C4", "pid": "EA60", - "description": "*2652*" + "description": "*2652*", }, { "domain": "zha", "vid": "1A86", "pid": "55D4", - "description": "*sonoff*plus*" + "description": "*sonoff*plus*", }, { "domain": "zha", "vid": "10C4", "pid": "EA60", - "description": "*sonoff*plus*" + "description": "*sonoff*plus*", }, { "domain": "zha", "vid": "10C4", "pid": "EA60", - "description": "*tubeszb*" + "description": "*tubeszb*", }, { "domain": "zha", "vid": "1A86", "pid": "7523", - "description": "*tubeszb*" + "description": "*tubeszb*", }, { "domain": "zha", "vid": "1A86", "pid": "7523", - "description": "*zigstar*" + "description": "*zigstar*", }, { "domain": "zha", "vid": "1CF1", "pid": "0030", - "description": "*conbee*" + "description": "*conbee*", }, { "domain": "zha", "vid": "10C4", "pid": "8A2A", - "description": "*zigbee*" + "description": "*zigbee*", }, { "domain": "zha", "vid": "0403", "pid": "6015", - "description": "*zigate*" + "description": "*zigate*", }, { "domain": "zha", "vid": "10C4", "pid": "EA60", - "description": "*zigate*" + "description": "*zigate*", }, { "domain": "zha", "vid": "10C4", "pid": "8B34", - "description": "*bv 2010/10*" + "description": "*bv 2010/10*", }, { "domain": "zwave_js", "vid": "0658", - "pid": "0200" + "pid": "0200", }, { "domain": "zwave_js", "vid": "10C4", "pid": "8A2A", - "description": "*z-wave*" - } + "description": "*z-wave*", + }, ] diff --git a/homeassistant/generated/zeroconf.py b/homeassistant/generated/zeroconf.py index 61d6fdae63c..18ac7112beb 100644 --- a/homeassistant/generated/zeroconf.py +++ b/homeassistant/generated/zeroconf.py @@ -3,425 +3,423 @@ To update, run python3 -m script.hassfest """ -# fmt: off - ZEROCONF = { "_Volumio._tcp.local.": [ { - "domain": "volumio" - } + "domain": "volumio", + }, ], "_airplay._tcp.local.": [ { "domain": "apple_tv", "properties": { - "model": "appletv*" - } + "model": "appletv*", + }, }, { "domain": "apple_tv", "properties": { - "model": "audioaccessory*" - } + "model": "audioaccessory*", + }, }, { "domain": "apple_tv", "properties": { - "am": "airport*" - } + "am": "airport*", + }, }, { "domain": "samsungtv", "properties": { - "manufacturer": "samsung*" - } - } + "manufacturer": "samsung*", + }, + }, ], "_airport._tcp.local.": [ { - "domain": "apple_tv" - } + "domain": "apple_tv", + }, ], "_api._tcp.local.": [ { "domain": "baf", "properties": { - "model": "haiku*" - } + "model": "haiku*", + }, }, { "domain": "baf", "properties": { - "model": "i6*" - } - } + "model": "i6*", + }, + }, ], "_api._udp.local.": [ { - "domain": "guardian" - } + "domain": "guardian", + }, ], "_appletv-v2._tcp.local.": [ { - "domain": "apple_tv" - } + "domain": "apple_tv", + }, ], "_axis-video._tcp.local.": [ { "domain": "axis", "properties": { - "macaddress": "00408c*" - } + "macaddress": "00408c*", + }, }, { "domain": "axis", "properties": { - "macaddress": "accc8e*" - } + "macaddress": "accc8e*", + }, }, { "domain": "axis", "properties": { - "macaddress": "b8a44f*" - } + "macaddress": "b8a44f*", + }, }, { "domain": "doorbird", "properties": { - "macaddress": "1ccae3*" - } - } + "macaddress": "1ccae3*", + }, + }, ], "_bond._tcp.local.": [ { - "domain": "bond" - } + "domain": "bond", + }, ], "_companion-link._tcp.local.": [ { - "domain": "apple_tv" - } + "domain": "apple_tv", + }, ], "_daap._tcp.local.": [ { - "domain": "forked_daapd" - } + "domain": "forked_daapd", + }, ], "_dkapi._tcp.local.": [ { - "domain": "daikin" - } + "domain": "daikin", + }, ], "_dvl-deviceapi._tcp.local.": [ { - "domain": "devolo_home_control" + "domain": "devolo_home_control", }, { "domain": "devolo_home_network", "properties": { - "MT": "*" - } - } + "MT": "*", + }, + }, ], "_easylink._tcp.local.": [ { "domain": "modern_forms", - "name": "wac*" - } + "name": "wac*", + }, ], "_elg._tcp.local.": [ { - "domain": "elgato" - } + "domain": "elgato", + }, ], "_enphase-envoy._tcp.local.": [ { - "domain": "enphase_envoy" - } + "domain": "enphase_envoy", + }, ], "_esphomelib._tcp.local.": [ { - "domain": "esphome" + "domain": "esphome", }, { "domain": "zha", - "name": "tube*" - } + "name": "tube*", + }, ], "_fbx-api._tcp.local.": [ { - "domain": "freebox" - } + "domain": "freebox", + }, ], "_googlecast._tcp.local.": [ { - "domain": "cast" - } + "domain": "cast", + }, ], "_hap._tcp.local.": [ { - "domain": "homekit_controller" + "domain": "homekit_controller", }, { "domain": "zwave_me", - "name": "*z.wave-me*" - } + "name": "*z.wave-me*", + }, ], "_hap._udp.local.": [ { - "domain": "homekit_controller" - } + "domain": "homekit_controller", + }, ], "_homekit._tcp.local.": [ { - "domain": "homekit" - } + "domain": "homekit", + }, ], "_hscp._tcp.local.": [ { - "domain": "apple_tv" - } + "domain": "apple_tv", + }, ], "_http._tcp.local.": [ { "domain": "awair", - "name": "awair*" + "name": "awair*", }, { "domain": "bosch_shc", - "name": "bosch shc*" + "name": "bosch shc*", }, { "domain": "nam", - "name": "nam-*" + "name": "nam-*", }, { "domain": "nam", "properties": { - "manufacturer": "nettigo" - } + "manufacturer": "nettigo", + }, }, { "domain": "pure_energie", - "name": "smartbridge*" + "name": "smartbridge*", }, { "domain": "rachio", - "name": "rachio*" + "name": "rachio*", }, { "domain": "rainmachine", - "name": "rainmachine*" + "name": "rainmachine*", }, { "domain": "shelly", - "name": "shelly*" - } + "name": "shelly*", + }, ], "_hue._tcp.local.": [ { - "domain": "hue" - } + "domain": "hue", + }, ], "_hwenergy._tcp.local.": [ { - "domain": "homewizard" - } + "domain": "homewizard", + }, ], "_ipp._tcp.local.": [ { - "domain": "ipp" - } + "domain": "ipp", + }, ], "_ipps._tcp.local.": [ { - "domain": "ipp" - } + "domain": "ipp", + }, ], "_kizbox._tcp.local.": [ { "domain": "overkiz", - "name": "gateway*" - } + "name": "gateway*", + }, ], "_leap._tcp.local.": [ { - "domain": "lutron_caseta" - } + "domain": "lutron_caseta", + }, ], "_lookin._tcp.local.": [ { - "domain": "lookin" - } + "domain": "lookin", + }, ], "_mediaremotetv._tcp.local.": [ { - "domain": "apple_tv" - } + "domain": "apple_tv", + }, ], "_miio._udp.local.": [ { - "domain": "xiaomi_aqara" + "domain": "xiaomi_aqara", }, { - "domain": "xiaomi_miio" + "domain": "xiaomi_miio", }, { "domain": "yeelight", - "name": "yeelink-*" - } + "name": "yeelink-*", + }, ], "_nanoleafapi._tcp.local.": [ { - "domain": "nanoleaf" - } + "domain": "nanoleaf", + }, ], "_nanoleafms._tcp.local.": [ { - "domain": "nanoleaf" - } + "domain": "nanoleaf", + }, ], "_nut._tcp.local.": [ { - "domain": "nut" - } + "domain": "nut", + }, ], "_octoprint._tcp.local.": [ { - "domain": "octoprint" - } + "domain": "octoprint", + }, ], "_plexmediasvr._tcp.local.": [ { - "domain": "plex" - } + "domain": "plex", + }, ], "_plugwise._tcp.local.": [ { - "domain": "plugwise" - } + "domain": "plugwise", + }, ], "_powerview._tcp.local.": [ { - "domain": "hunterdouglas_powerview" - } + "domain": "hunterdouglas_powerview", + }, ], "_printer._tcp.local.": [ { "domain": "brother", - "name": "brother*" - } + "name": "brother*", + }, ], "_raop._tcp.local.": [ { "domain": "apple_tv", "properties": { - "am": "appletv*" - } + "am": "appletv*", + }, }, { "domain": "apple_tv", "properties": { - "am": "audioaccessory*" - } + "am": "audioaccessory*", + }, }, { "domain": "apple_tv", "properties": { - "am": "airport*" - } - } + "am": "airport*", + }, + }, ], "_sideplay._tcp.local.": [ { "domain": "ecobee", "properties": { - "mdl": "eb-*" - } + "mdl": "eb-*", + }, }, { "domain": "ecobee", "properties": { - "mdl": "ecobee*" - } - } + "mdl": "ecobee*", + }, + }, ], "_sleep-proxy._udp.local.": [ { - "domain": "apple_tv" - } + "domain": "apple_tv", + }, ], "_sonos._tcp.local.": [ { - "domain": "sonos" - } + "domain": "sonos", + }, ], "_soundtouch._tcp.local.": [ { - "domain": "soundtouch" - } + "domain": "soundtouch", + }, ], "_spotify-connect._tcp.local.": [ { - "domain": "spotify" - } + "domain": "spotify", + }, ], "_ssh._tcp.local.": [ { "domain": "smappee", - "name": "smappee1*" + "name": "smappee1*", }, { "domain": "smappee", - "name": "smappee2*" + "name": "smappee2*", }, { "domain": "smappee", - "name": "smappee50*" - } + "name": "smappee50*", + }, ], "_system-bridge._tcp.local.": [ { - "domain": "system_bridge" - } + "domain": "system_bridge", + }, ], "_touch-able._tcp.local.": [ { - "domain": "apple_tv" - } + "domain": "apple_tv", + }, ], "_viziocast._tcp.local.": [ { - "domain": "vizio" - } + "domain": "vizio", + }, ], "_wled._tcp.local.": [ { - "domain": "wled" - } + "domain": "wled", + }, ], "_xbmc-jsonrpc-h._tcp.local.": [ { - "domain": "kodi" - } + "domain": "kodi", + }, ], "_zigate-zigbee-gateway._tcp.local.": [ { "domain": "zha", - "name": "*zigate*" - } + "name": "*zigate*", + }, ], "_zigstar_gw._tcp.local.": [ { "domain": "zha", - "name": "*zigstar*" - } + "name": "*zigstar*", + }, ], "_zwave-js-server._tcp.local.": [ { - "domain": "zwave_js" - } - ] + "domain": "zwave_js", + }, + ], } HOMEKIT = { @@ -483,5 +481,5 @@ HOMEKIT = { "ecobee*": "ecobee", "iSmartGate": "gogogate2", "iZone": "izone", - "tado": "tado" + "tado": "tado", } diff --git a/script/hassfest/application_credentials.py b/script/hassfest/application_credentials.py index 48d812dba02..2fb693bf429 100644 --- a/script/hassfest/application_credentials.py +++ b/script/hassfest/application_credentials.py @@ -1,9 +1,10 @@ """Generate application_credentials data.""" from __future__ import annotations -import json +import black from .model import Config, Integration +from .serializer import to_string BASE = """ \"\"\"Automatically generated by hassfest. @@ -11,8 +12,6 @@ BASE = """ To update, run python3 -m script.hassfest \"\"\" -# fmt: off - APPLICATION_CREDENTIALS = {} """.strip() @@ -30,7 +29,7 @@ def generate_and_validate(integrations: dict[str, Integration], config: Config) match_list.append(domain) - return BASE.format(json.dumps(match_list, indent=4)) + return black.format_str(BASE.format(to_string(match_list)), mode=black.Mode()) def validate(integrations: dict[str, Integration], config: Config) -> None: @@ -45,7 +44,7 @@ def validate(integrations: dict[str, Integration], config: Config) -> None: if config.specific_integrations: return - if application_credentials_path.read_text(encoding="utf-8").strip() != content: + if application_credentials_path.read_text(encoding="utf-8") != content: config.add_error( "application_credentials", "File application_credentials.py is not up to date. Run python3 -m script.hassfest", @@ -59,5 +58,5 @@ def generate(integrations: dict[str, Integration], config: Config): config.root / "homeassistant/generated/application_credentials.py" ) application_credentials_path.write_text( - f"{config.cache['application_credentials']}\n", encoding="utf-8" + f"{config.cache['application_credentials']}", encoding="utf-8" ) diff --git a/script/hassfest/bluetooth.py b/script/hassfest/bluetooth.py index 22241653e1d..0b57b1084e8 100644 --- a/script/hassfest/bluetooth.py +++ b/script/hassfest/bluetooth.py @@ -1,9 +1,10 @@ """Generate bluetooth file.""" from __future__ import annotations -import json +import black from .model import Config, Integration +from .serializer import to_string BASE = """ \"\"\"Automatically generated by hassfest. @@ -12,8 +13,6 @@ To update, run python3 -m script.hassfest \"\"\" from __future__ import annotations -# fmt: off - BLUETOOTH: list[dict[str, bool | str | int | list[int]]] = {} """.strip() @@ -36,11 +35,7 @@ def generate_and_validate(integrations: list[dict[str, str]]): for entry in match_types: match_list.append({"domain": domain, **entry}) - return BASE.format( - json.dumps(match_list, indent=4) - .replace('": true', '": True') - .replace('": false', '": False') - ) + return black.format_str(BASE.format(to_string(match_list)), mode=black.Mode()) def validate(integrations: dict[str, Integration], config: Config): @@ -52,7 +47,7 @@ def validate(integrations: dict[str, Integration], config: Config): return with open(str(bluetooth_path)) as fp: - current = fp.read().strip() + current = fp.read() if current != content: config.add_error( "bluetooth", @@ -66,4 +61,4 @@ def generate(integrations: dict[str, Integration], config: Config): """Generate bluetooth file.""" bluetooth_path = config.root / "homeassistant/generated/bluetooth.py" with open(str(bluetooth_path), "w") as fp: - fp.write(f"{config.cache['bluetooth']}\n") + fp.write(f"{config.cache['bluetooth']}") diff --git a/script/hassfest/config_flow.py b/script/hassfest/config_flow.py index ad4a1d79229..c3c5610a48f 100644 --- a/script/hassfest/config_flow.py +++ b/script/hassfest/config_flow.py @@ -1,9 +1,10 @@ """Generate config flow file.""" from __future__ import annotations -import json +import black from .model import Config, Integration +from .serializer import to_string BASE = """ \"\"\"Automatically generated by hassfest. @@ -11,8 +12,6 @@ BASE = """ To update, run python3 -m script.hassfest \"\"\" -# fmt: off - FLOWS = {} """.strip() @@ -85,7 +84,7 @@ def generate_and_validate(integrations: dict[str, Integration], config: Config): domains[integration.integration_type].append(domain) - return BASE.format(json.dumps(domains, indent=4)) + return black.format_str(BASE.format(to_string(domains)), mode=black.Mode()) def validate(integrations: dict[str, Integration], config: Config): @@ -97,7 +96,7 @@ def validate(integrations: dict[str, Integration], config: Config): return with open(str(config_flow_path)) as fp: - if fp.read().strip() != content: + if fp.read() != content: config.add_error( "config_flow", "File config_flows.py is not up to date. " @@ -111,4 +110,4 @@ def generate(integrations: dict[str, Integration], config: Config): """Generate config flow file.""" config_flow_path = config.root / "homeassistant/generated/config_flows.py" with open(str(config_flow_path), "w") as fp: - fp.write(f"{config.cache['config_flow']}\n") + fp.write(f"{config.cache['config_flow']}") diff --git a/script/hassfest/dhcp.py b/script/hassfest/dhcp.py index 1aca6a1f68d..c246acec5f0 100644 --- a/script/hassfest/dhcp.py +++ b/script/hassfest/dhcp.py @@ -1,8 +1,7 @@ """Generate dhcp file.""" from __future__ import annotations -import pprint -import re +import black from .model import Config, Integration @@ -13,8 +12,6 @@ To update, run python3 -m script.hassfest \"\"\" from __future__ import annotations -# fmt: off - DHCP: list[dict[str, str | bool]] = {} """.strip() @@ -37,14 +34,7 @@ def generate_and_validate(integrations: list[dict[str, str]]): for entry in match_types: match_list.append({"domain": domain, **entry}) - # JSON will format `True` as `true` - # re.sub for flake8 E128 - formatted = pprint.pformat(match_list) - formatted_aligned_continuation = re.sub(r"^\[\{", "[\n {", formatted) - formatted_align_indent = re.sub( - r"(?m)^ ", " ", formatted_aligned_continuation, flags=re.MULTILINE, count=0 - ) - return BASE.format(formatted_align_indent) + return black.format_str(BASE.format(str(match_list)), mode=black.Mode()) def validate(integrations: dict[str, Integration], config: Config): @@ -56,7 +46,7 @@ def validate(integrations: dict[str, Integration], config: Config): return with open(str(dhcp_path)) as fp: - current = fp.read().strip() + current = fp.read() if current != content: config.add_error( "dhcp", @@ -70,4 +60,4 @@ def generate(integrations: dict[str, Integration], config: Config): """Generate dhcp file.""" dhcp_path = config.root / "homeassistant/generated/dhcp.py" with open(str(dhcp_path), "w") as fp: - fp.write(f"{config.cache['dhcp']}\n") + fp.write(f"{config.cache['dhcp']}") diff --git a/script/hassfest/mqtt.py b/script/hassfest/mqtt.py index f325518d7b9..ab5f159026e 100644 --- a/script/hassfest/mqtt.py +++ b/script/hassfest/mqtt.py @@ -2,9 +2,11 @@ from __future__ import annotations from collections import defaultdict -import json + +import black from .model import Config, Integration +from .serializer import to_string BASE = """ \"\"\"Automatically generated by hassfest. @@ -12,8 +14,6 @@ BASE = """ To update, run python3 -m script.hassfest \"\"\" -# fmt: off - MQTT = {} """.strip() @@ -37,7 +37,7 @@ def generate_and_validate(integrations: dict[str, Integration]): for topic in mqtt: data[domain].append(topic) - return BASE.format(json.dumps(data, indent=4)) + return black.format_str(BASE.format(to_string(data)), mode=black.Mode()) def validate(integrations: dict[str, Integration], config: Config): @@ -49,7 +49,7 @@ def validate(integrations: dict[str, Integration], config: Config): return with open(str(mqtt_path)) as fp: - if fp.read().strip() != content: + if fp.read() != content: config.add_error( "mqtt", "File mqtt.py is not up to date. Run python3 -m script.hassfest", @@ -62,4 +62,4 @@ def generate(integrations: dict[str, Integration], config: Config): """Generate MQTT file.""" mqtt_path = config.root / "homeassistant/generated/mqtt.py" with open(str(mqtt_path), "w") as fp: - fp.write(f"{config.cache['mqtt']}\n") + fp.write(f"{config.cache['mqtt']}") diff --git a/script/hassfest/serializer.py b/script/hassfest/serializer.py new file mode 100644 index 00000000000..8a6f410c345 --- /dev/null +++ b/script/hassfest/serializer.py @@ -0,0 +1,37 @@ +"""Hassfest utils.""" +from __future__ import annotations + +from typing import Any + + +def _dict_to_str(data: dict) -> str: + """Return a string representation of a dict.""" + items = [f"'{key}':{to_string(value)}" for key, value in data.items()] + result = "{" + for item in items: + result += str(item) + result += "," + result += "}" + return result + + +def _list_to_str(data: dict) -> str: + """Return a string representation of a list.""" + items = [to_string(value) for value in data] + result = "[" + for item in items: + result += str(item) + result += "," + result += "]" + return result + + +def to_string(data: Any) -> str: + """Return a string representation of the input.""" + if isinstance(data, dict): + return _dict_to_str(data) + if isinstance(data, list): + return _list_to_str(data) + if isinstance(data, str): + return "'" + data + "'" + return data diff --git a/script/hassfest/ssdp.py b/script/hassfest/ssdp.py index 0611f9a2225..599746e9874 100644 --- a/script/hassfest/ssdp.py +++ b/script/hassfest/ssdp.py @@ -1,10 +1,12 @@ """Generate ssdp file.""" from __future__ import annotations -from collections import OrderedDict, defaultdict -import json +from collections import defaultdict + +import black from .model import Config, Integration +from .serializer import to_string BASE = """ \"\"\"Automatically generated by hassfest. @@ -12,15 +14,13 @@ BASE = """ To update, run python3 -m script.hassfest \"\"\" -# fmt: off - SSDP = {} """.strip() def sort_dict(value): """Sort a dictionary.""" - return OrderedDict((key, value[key]) for key in sorted(value)) + return {key: value[key] for key in sorted(value)} def generate_and_validate(integrations: dict[str, Integration]): @@ -42,7 +42,7 @@ def generate_and_validate(integrations: dict[str, Integration]): for matcher in ssdp: data[domain].append(sort_dict(matcher)) - return BASE.format(json.dumps(data, indent=4)) + return black.format_str(BASE.format(to_string(data)), mode=black.Mode()) def validate(integrations: dict[str, Integration], config: Config): @@ -54,7 +54,7 @@ def validate(integrations: dict[str, Integration], config: Config): return with open(str(ssdp_path)) as fp: - if fp.read().strip() != content: + if fp.read() != content: config.add_error( "ssdp", "File ssdp.py is not up to date. Run python3 -m script.hassfest", @@ -67,4 +67,4 @@ def generate(integrations: dict[str, Integration], config: Config): """Generate ssdp file.""" ssdp_path = config.root / "homeassistant/generated/ssdp.py" with open(str(ssdp_path), "w") as fp: - fp.write(f"{config.cache['ssdp']}\n") + fp.write(f"{config.cache['ssdp']}") diff --git a/script/hassfest/supported_brands.py b/script/hassfest/supported_brands.py index 6740260a04c..4ac2feb4032 100644 --- a/script/hassfest/supported_brands.py +++ b/script/hassfest/supported_brands.py @@ -1,9 +1,10 @@ """Generate supported_brands data.""" from __future__ import annotations -import json +import black from .model import Config, Integration +from .serializer import to_string BASE = """ \"\"\"Automatically generated by hassfest. @@ -11,9 +12,7 @@ BASE = """ To update, run python3 -m script.hassfest \"\"\" -# fmt: off - -HAS_SUPPORTED_BRANDS = ({}) +HAS_SUPPORTED_BRANDS = {} """.strip() @@ -26,7 +25,7 @@ def generate_and_validate(integrations: dict[str, Integration], config: Config) if integration.supported_brands ] - return BASE.format(json.dumps(brands, indent=4)[1:-1]) + return black.format_str(BASE.format(to_string(brands)), mode=black.Mode()) def validate(integrations: dict[str, Integration], config: Config) -> None: @@ -39,7 +38,7 @@ def validate(integrations: dict[str, Integration], config: Config) -> None: if config.specific_integrations: return - if supported_brands_path.read_text(encoding="utf-8").strip() != content: + if supported_brands_path.read_text(encoding="utf-8") != content: config.add_error( "supported_brands", "File supported_brands.py is not up to date. Run python3 -m script.hassfest", @@ -51,5 +50,5 @@ def generate(integrations: dict[str, Integration], config: Config): """Generate supported_brands data.""" supported_brands_path = config.root / "homeassistant/generated/supported_brands.py" supported_brands_path.write_text( - f"{config.cache['supported_brands']}\n", encoding="utf-8" + f"{config.cache['supported_brands']}", encoding="utf-8" ) diff --git a/script/hassfest/usb.py b/script/hassfest/usb.py index 6377fdcb8af..e71966d548a 100644 --- a/script/hassfest/usb.py +++ b/script/hassfest/usb.py @@ -1,9 +1,10 @@ """Generate usb file.""" from __future__ import annotations -import json +import black from .model import Config, Integration +from .serializer import to_string BASE = """ \"\"\"Automatically generated by hassfest. @@ -11,8 +12,6 @@ BASE = """ To update, run python3 -m script.hassfest \"\"\" -# fmt: off - USB = {} """.strip() @@ -40,7 +39,7 @@ def generate_and_validate(integrations: list[dict[str, str]]) -> str: } ) - return BASE.format(json.dumps(match_list, indent=4)) + return black.format_str(BASE.format(to_string(match_list)), mode=black.Mode()) def validate(integrations: dict[str, Integration], config: Config) -> None: @@ -52,7 +51,7 @@ def validate(integrations: dict[str, Integration], config: Config) -> None: return with open(str(usb_path)) as fp: - current = fp.read().strip() + current = fp.read() if current != content: config.add_error( "usb", @@ -66,4 +65,4 @@ def generate(integrations: dict[str, Integration], config: Config) -> None: """Generate usb file.""" usb_path = config.root / "homeassistant/generated/usb.py" with open(str(usb_path), "w") as fp: - fp.write(f"{config.cache['usb']}\n") + fp.write(f"{config.cache['usb']}") diff --git a/script/hassfest/zeroconf.py b/script/hassfest/zeroconf.py index 446a6f32aeb..939da08319a 100644 --- a/script/hassfest/zeroconf.py +++ b/script/hassfest/zeroconf.py @@ -1,12 +1,14 @@ """Generate zeroconf file.""" from __future__ import annotations -from collections import OrderedDict, defaultdict -import json +from collections import defaultdict + +import black from homeassistant.loader import async_process_zeroconf_match_dict from .model import Config, Integration +from .serializer import to_string BASE = """ \"\"\"Automatically generated by hassfest. @@ -14,8 +16,6 @@ BASE = """ To update, run python3 -m script.hassfest \"\"\" -# fmt: off - ZEROCONF = {} HOMEKIT = {} @@ -82,12 +82,12 @@ def generate_and_validate(integrations: dict[str, Integration]): warned.add(key_2) break - zeroconf = OrderedDict( - (key, service_type_dict[key]) for key in sorted(service_type_dict) - ) - homekit = OrderedDict((key, homekit_dict[key]) for key in sorted(homekit_dict)) + zeroconf = {key: service_type_dict[key] for key in sorted(service_type_dict)} + homekit = {key: homekit_dict[key] for key in sorted(homekit_dict)} - return BASE.format(json.dumps(zeroconf, indent=4), json.dumps(homekit, indent=4)) + return black.format_str( + BASE.format(to_string(zeroconf), to_string(homekit)), mode=black.Mode() + ) def validate(integrations: dict[str, Integration], config: Config): @@ -99,7 +99,7 @@ def validate(integrations: dict[str, Integration], config: Config): return with open(str(zeroconf_path)) as fp: - current = fp.read().strip() + current = fp.read() if current != content: config.add_error( "zeroconf", @@ -113,4 +113,4 @@ def generate(integrations: dict[str, Integration], config: Config): """Generate zeroconf file.""" zeroconf_path = config.root / "homeassistant/generated/zeroconf.py" with open(str(zeroconf_path), "w") as fp: - fp.write(f"{config.cache['zeroconf']}\n") + fp.write(f"{config.cache['zeroconf']}")