# Generated by parse-requirements.py
# Do not edit!

{
  version = "2021.4.6";
  components = {
    "abode" = ps: with ps; [ abodepy ];
    "accuweather" = ps: with ps; [ accuweather ];
    "acer_projector" = ps: with ps; [ pyserial ];
    "acmeda" = ps: with ps; [ aiopulse ];
    "actiontec" = ps: with ps; [ ];
    "adguard" = ps: with ps; [ adguardhome ];
    "ads" = ps: with ps; [ pyads ];
    "advantage_air" = ps: with ps; [ advantage-air ];
    "aemet" = ps: with ps; [ ]; # missing inputs: AEMET-OpenData
    "aftership" = ps: with ps; [ pyaftership ];
    "agent_dvr" = ps: with ps; [ agent-py ];
    "air_quality" = ps: with ps; [ ];
    "airly" = ps: with ps; [ airly ];
    "airnow" = ps: with ps; [ pyairnow ];
    "airvisual" = ps: with ps; [ pyairvisual ];
    "aladdin_connect" = ps: with ps; [ ]; # missing inputs: aladdin_connect
    "alarm_control_panel" = ps: with ps; [ ];
    "alarmdecoder" = ps: with ps; [ adext ];
    "alert" = ps: with ps; [ ];
    "alexa" = ps: with ps; [ aiohttp-cors ];
    "almond" = ps: with ps; [ aiohttp-cors pyalmond ];
    "alpha_vantage" = ps: with ps; [ ]; # missing inputs: alpha_vantage
    "amazon_polly" = ps: with ps; [ boto3 ];
    "ambiclimate" = ps: with ps; [ aiohttp-cors ambiclimate ];
    "ambient_station" = ps: with ps; [ aioambient ];
    "amcrest" = ps: with ps; [ amcrest ha-ffmpeg ];
    "ampio" = ps: with ps; [ ]; # missing inputs: asmog
    "analytics" = ps: with ps; [ aiohttp-cors ];
    "android_ip_webcam" = ps: with ps; [ ]; # missing inputs: pydroid-ipcam
    "androidtv" = ps: with ps; [ adb-shell androidtv pure-python-adb ];
    "anel_pwrctrl" = ps: with ps; [ ]; # missing inputs: anel_pwrctrl-homeassistant
    "anthemav" = ps: with ps; [ ]; # missing inputs: anthemav
    "apache_kafka" = ps: with ps; [ aiokafka ];
    "apcupsd" = ps: with ps; [ ]; # missing inputs: apcaccess
    "api" = ps: with ps; [ aiohttp-cors ];
    "apns" = ps: with ps; [ ]; # missing inputs: apns2
    "apple_tv" = ps: with ps; [ aiohttp-cors netdisco pyatv zeroconf ];
    "apprise" = ps: with ps; [ apprise ];
    "aprs" = ps: with ps; [ geopy ]; # missing inputs: aprslib
    "aqualogic" = ps: with ps; [ aqualogic ];
    "aquostv" = ps: with ps; [ ]; # missing inputs: sharp_aquos_rc
    "arcam_fmj" = ps: with ps; [ ]; # missing inputs: arcam-fmj
    "arduino" = ps: with ps; [ ]; # missing inputs: PyMata
    "arest" = ps: with ps; [ ];
    "arlo" = ps: with ps; [ ha-ffmpeg pyarlo ];
    "arris_tg2492lg" = ps: with ps; [ ]; # missing inputs: arris-tg2492lg
    "aruba" = ps: with ps; [ pexpect ];
    "arwn" = ps: with ps; [ aiohttp-cors paho-mqtt ];
    "asterisk_cdr" = ps: with ps; [ ]; # missing inputs: asterisk_mbox
    "asterisk_mbox" = ps: with ps; [ ]; # missing inputs: asterisk_mbox
    "asuswrt" = ps: with ps; [ aioasuswrt ];
    "atag" = ps: with ps; [ ]; # missing inputs: pyatag
    "aten_pe" = ps: with ps; [ atenpdu ];
    "atome" = ps: with ps; [ ]; # missing inputs: pyatome
    "august" = ps: with ps; [ yalexs ];
    "aurora" = ps: with ps; [ auroranoaa ];
    "aurora_abb_powerone" = ps: with ps; [ ]; # missing inputs: aurorapy
    "auth" = ps: with ps; [ aiohttp-cors ];
    "automation" = ps: with ps; [ aiohttp-cors ];
    "avea" = ps: with ps; [ avea ];
    "avion" = ps: with ps; [ avion ];
    "awair" = ps: with ps; [ python-awair ];
    "aws" = ps: with ps; [ aiobotocore ];
    "axis" = ps: with ps; [ aiohttp-cors axis paho-mqtt ];
    "azure_devops" = ps: with ps; [ ]; # missing inputs: aioazuredevops
    "azure_event_hub" = ps: with ps; [ ]; # missing inputs: azure-eventhub
    "azure_service_bus" = ps: with ps; [ azure-servicebus ];
    "baidu" = ps: with ps; [ ]; # missing inputs: baidu-aip
    "bayesian" = ps: with ps; [ ];
    "bbb_gpio" = ps: with ps; [ ]; # missing inputs: Adafruit_BBIO
    "bbox" = ps: with ps; [ ]; # missing inputs: pybbox
    "beewi_smartclim" = ps: with ps; [ ]; # missing inputs: beewi_smartclim
    "bh1750" = ps: with ps; [ smbus-cffi ]; # missing inputs: i2csense
    "binary_sensor" = ps: with ps; [ ];
    "bitcoin" = ps: with ps; [ blockchain ];
    "bizkaibus" = ps: with ps; [ ]; # missing inputs: bizkaibus
    "blackbird" = ps: with ps; [ pyblackbird ];
    "blebox" = ps: with ps; [ ]; # missing inputs: blebox_uniapi
    "blink" = ps: with ps; [ ]; # missing inputs: blinkpy
    "blinksticklight" = ps: with ps; [ BlinkStick ];
    "blinkt" = ps: with ps; [ ]; # missing inputs: blinkt
    "blockchain" = ps: with ps; [ ]; # missing inputs: python-blockchain-api
    "bloomsky" = ps: with ps; [ ];
    "blueprint" = ps: with ps; [ ];
    "bluesound" = ps: with ps; [ xmltodict ];
    "bluetooth_le_tracker" = ps: with ps; [ ]; # missing inputs: pygatt[GATTTOOL]
    "bluetooth_tracker" = ps: with ps; [ bt_proximity pybluez ];
    "bme280" = ps: with ps; [ smbus-cffi ]; # missing inputs: i2csense
    "bme680" = ps: with ps; [ bme680 smbus-cffi ];
    "bmp280" = ps: with ps; [ ]; # missing inputs: RPi.GPIO adafruit-circuitpython-bmp280
    "bmw_connected_drive" = ps: with ps; [ ]; # missing inputs: bimmer_connected
    "bond" = ps: with ps; [ ]; # missing inputs: bond-api
    "braviatv" = ps: with ps; [ bravia-tv ];
    "broadlink" = ps: with ps; [ broadlink ];
    "brother" = ps: with ps; [ brother ];
    "brottsplatskartan" = ps: with ps; [ brottsplatskartan ];
    "browser" = ps: with ps; [ ];
    "brunt" = ps: with ps; [ ]; # missing inputs: brunt
    "bsblan" = ps: with ps; [ bsblan ];
    "bt_home_hub_5" = ps: with ps; [ ]; # missing inputs: bthomehub5-devicelist
    "bt_smarthub" = ps: with ps; [ ]; # missing inputs: btsmarthub_devicelist
    "buienradar" = ps: with ps; [ ]; # missing inputs: buienradar
    "caldav" = ps: with ps; [ caldav ];
    "calendar" = ps: with ps; [ aiohttp-cors ];
    "camera" = ps: with ps; [ aiohttp-cors ];
    "canary" = ps: with ps; [ ha-ffmpeg ]; # missing inputs: py-canary
    "cast" = ps: with ps; [ aiohttp-cors hass-nabucasa mutagen plexapi plexauth plexwebsocket PyChromecast zeroconf ];
    "cert_expiry" = ps: with ps; [ ];
    "channels" = ps: with ps; [ pychannels ];
    "circuit" = ps: with ps; [ ]; # missing inputs: circuit-webhook
    "cisco_ios" = ps: with ps; [ pexpect ];
    "cisco_mobility_express" = ps: with ps; [ ciscomobilityexpress ];
    "cisco_webex_teams" = ps: with ps; [ webexteamssdk ];
    "citybikes" = ps: with ps; [ ];
    "clementine" = ps: with ps; [ ]; # missing inputs: python-clementine-remote
    "clickatell" = ps: with ps; [ ];
    "clicksend" = ps: with ps; [ ];
    "clicksend_tts" = ps: with ps; [ ];
    "climacell" = ps: with ps; [ pyclimacell ];
    "climate" = ps: with ps; [ ];
    "cloud" = ps: with ps; [ aiohttp-cors hass-nabucasa ];
    "cloudflare" = ps: with ps; [ pycfdns ];
    "cmus" = ps: with ps; [ ]; # missing inputs: pycmus
    "co2signal" = ps: with ps; [ ]; # missing inputs: co2signal
    "coinbase" = ps: with ps; [ ]; # missing inputs: coinbase
    "color_extractor" = ps: with ps; [ ]; # missing inputs: colorthief
    "comed_hourly_pricing" = ps: with ps; [ ];
    "comfoconnect" = ps: with ps; [ pycomfoconnect ];
    "command_line" = ps: with ps; [ ];
    "concord232" = ps: with ps; [ ]; # missing inputs: concord232
    "config" = ps: with ps; [ aiohttp-cors ];
    "configurator" = ps: with ps; [ ];
    "control4" = ps: with ps; [ ]; # missing inputs: pyControl4
    "conversation" = ps: with ps; [ aiohttp-cors ];
    "coolmaster" = ps: with ps; [ ]; # missing inputs: pycoolmasternet-async
    "coronavirus" = ps: with ps; [ coronavirus ];
    "counter" = ps: with ps; [ ];
    "cover" = ps: with ps; [ ];
    "cppm_tracker" = ps: with ps; [ ]; # missing inputs: clearpasspy
    "cpuspeed" = ps: with ps; [ py-cpuinfo ];
    "cups" = ps: with ps; [ pycups ];
    "currencylayer" = ps: with ps; [ ];
    "daikin" = ps: with ps; [ pydaikin ];
    "danfoss_air" = ps: with ps; [ pydanfossair ];
    "darksky" = ps: with ps; [ python-forecastio ];
    "datadog" = ps: with ps; [ datadog ];
    "ddwrt" = ps: with ps; [ ];
    "debugpy" = ps: with ps; [ debugpy ];
    "deconz" = ps: with ps; [ pydeconz ];
    "decora" = ps: with ps; [ bluepy ]; # missing inputs: decora
    "decora_wifi" = ps: with ps; [ ]; # missing inputs: decora_wifi
    "default_config" = ps: with ps; [ pynacl aiodiscover aiohttp-cors async-upnp-client defusedxml distro emoji hass-nabucasa netdisco pillow scapy sqlalchemy zeroconf ];
    "delijn" = ps: with ps; [ ]; # missing inputs: pydelijn
    "deluge" = ps: with ps; [ deluge-client ];
    "demo" = ps: with ps; [ aiohttp-cors ];
    "denon" = ps: with ps; [ ];
    "denonavr" = ps: with ps; [ denonavr getmac ];
    "derivative" = ps: with ps; [ ];
    "deutsche_bahn" = ps: with ps; [ schiene ];
    "device_automation" = ps: with ps; [ ];
    "device_sun_light_trigger" = ps: with ps; [ aiohttp-cors pillow ];
    "device_tracker" = ps: with ps; [ ];
    "devolo_home_control" = ps: with ps; [ aiohttp-cors devolo-home-control-api zeroconf ];
    "dexcom" = ps: with ps; [ pydexcom ];
    "dhcp" = ps: with ps; [ aiodiscover scapy ];
    "dht" = ps: with ps; [ ]; # missing inputs: Adafruit-DHT
    "dialogflow" = ps: with ps; [ aiohttp-cors ];
    "digital_ocean" = ps: with ps; [ digital-ocean ];
    "digitalloggers" = ps: with ps; [ ]; # missing inputs: dlipower
    "directv" = ps: with ps; [ ]; # missing inputs: directv
    "discogs" = ps: with ps; [ discogs_client ];
    "discord" = ps: with ps; [ discordpy ];
    "discovery" = ps: with ps; [ aiohttp-cors netdisco zeroconf ];
    "dlib_face_detect" = ps: with ps; [ face_recognition ];
    "dlib_face_identify" = ps: with ps; [ face_recognition ];
    "dlink" = ps: with ps; [ ]; # missing inputs: pyW215
    "dlna_dmr" = ps: with ps; [ async-upnp-client ];
    "dnsip" = ps: with ps; [ aiodns ];
    "dominos" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pizzapi
    "doods" = ps: with ps; [ pillow ]; # missing inputs: pydoods
    "doorbird" = ps: with ps; [ aiohttp-cors ]; # missing inputs: doorbirdpy
    "dovado" = ps: with ps; [ ]; # missing inputs: dovado
    "downloader" = ps: with ps; [ ];
    "dsmr" = ps: with ps; [ dsmr-parser ];
    "dsmr_reader" = ps: with ps; [ aiohttp-cors paho-mqtt ];
    "dte_energy_bridge" = ps: with ps; [ ];
    "dublin_bus_transport" = ps: with ps; [ ];
    "duckdns" = ps: with ps; [ ];
    "dunehd" = ps: with ps; [ ]; # missing inputs: pdunehd
    "dwd_weather_warnings" = ps: with ps; [ dwdwfsapi ];
    "dweet" = ps: with ps; [ ]; # missing inputs: dweepy
    "dynalite" = ps: with ps; [ ]; # missing inputs: dynalite_devices
    "dyson" = ps: with ps; [ aiohttp-cors libpurecool zeroconf ];
    "eafm" = ps: with ps; [ aioeafm ];
    "ebox" = ps: with ps; [ ]; # missing inputs: pyebox
    "ebusd" = ps: with ps; [ ]; # missing inputs: ebusdpy
    "ecoal_boiler" = ps: with ps; [ ]; # missing inputs: ecoaliface
    "ecobee" = ps: with ps; [ ]; # missing inputs: python-ecobee-api
    "econet" = ps: with ps; [ pyeconet ];
    "ecovacs" = ps: with ps; [ ]; # missing inputs: sucks
    "eddystone_temperature" = ps: with ps; [ construct ]; # missing inputs: beacontools[scan]
    "edimax" = ps: with ps; [ pyedimax ];
    "edl21" = ps: with ps; [ ]; # missing inputs: pysml
    "ee_brightbox" = ps: with ps; [ ]; # missing inputs: eebrightbox
    "efergy" = ps: with ps; [ ];
    "egardia" = ps: with ps; [ pythonegardia ];
    "eight_sleep" = ps: with ps; [ pyeight ];
    "elgato" = ps: with ps; [ ]; # missing inputs: elgato
    "eliqonline" = ps: with ps; [ ]; # missing inputs: eliqonline
    "elkm1" = ps: with ps; [ ]; # missing inputs: elkm1-lib
    "elv" = ps: with ps; [ ]; # missing inputs: pypca
    "emby" = ps: with ps; [ pyemby ];
    "emoncms" = ps: with ps; [ ];
    "emoncms_history" = ps: with ps; [ ];
    "emulated_hue" = ps: with ps; [ aiohttp-cors ];
    "emulated_kasa" = ps: with ps; [ ]; # missing inputs: sense_energy
    "emulated_roku" = ps: with ps; [ ]; # missing inputs: emulated_roku
    "enigma2" = ps: with ps; [ openwebifpy ];
    "enocean" = ps: with ps; [ ]; # missing inputs: enocean
    "enphase_envoy" = ps: with ps; [ ]; # missing inputs: envoy_reader
    "entur_public_transport" = ps: with ps; [ ]; # missing inputs: enturclient
    "environment_canada" = ps: with ps; [ ]; # missing inputs: env_canada
    "envirophat" = ps: with ps; [ smbus-cffi ]; # missing inputs: envirophat
    "envisalink" = ps: with ps; [ pyenvisalink ];
    "ephember" = ps: with ps; [ ]; # missing inputs: pyephember
    "epson" = ps: with ps; [ ]; # missing inputs: epson-projector
    "epsonworkforce" = ps: with ps; [ ]; # missing inputs: epsonprinter
    "eq3btsmart" = ps: with ps; [ construct ]; # missing inputs: python-eq3bt
    "esphome" = ps: with ps; [ aioesphomeapi aiohttp-cors zeroconf ];
    "essent" = ps: with ps; [ ]; # missing inputs: PyEssent
    "etherscan" = ps: with ps; [ ]; # missing inputs: python-etherscan-api
    "eufy" = ps: with ps; [ ]; # missing inputs: lakeside
    "everlights" = ps: with ps; [ pyeverlights ];
    "evohome" = ps: with ps; [ evohome-async ];
    "ezviz" = ps: with ps; [ pyezviz ];
    "faa_delays" = ps: with ps; [ faadelays ];
    "facebook" = ps: with ps; [ ];
    "facebox" = ps: with ps; [ ];
    "fail2ban" = ps: with ps; [ ];
    "familyhub" = ps: with ps; [ ]; # missing inputs: python-family-hub-local
    "fan" = ps: with ps; [ ];
    "fastdotcom" = ps: with ps; [ ]; # missing inputs: fastdotcom
    "feedreader" = ps: with ps; [ feedparser ];
    "ffmpeg" = ps: with ps; [ ha-ffmpeg ];
    "ffmpeg_motion" = ps: with ps; [ ha-ffmpeg ];
    "ffmpeg_noise" = ps: with ps; [ ha-ffmpeg ];
    "fibaro" = ps: with ps; [ ]; # missing inputs: fiblary3
    "fido" = ps: with ps; [ pyfido ];
    "file" = ps: with ps; [ ];
    "filesize" = ps: with ps; [ ];
    "filter" = ps: with ps; [ aiohttp-cors sqlalchemy ];
    "fints" = ps: with ps; [ fints ];
    "fireservicerota" = ps: with ps; [ ]; # missing inputs: pyfireservicerota
    "firmata" = ps: with ps; [ pymata-express ];
    "fitbit" = ps: with ps; [ aiohttp-cors fitbit ];
    "fixer" = ps: with ps; [ fixerio ];
    "fleetgo" = ps: with ps; [ ]; # missing inputs: ritassist
    "flexit" = ps: with ps; [ pymodbus ]; # missing inputs: pyflexit
    "flic" = ps: with ps; [ ]; # missing inputs: pyflic-homeassistant
    "flick_electric" = ps: with ps; [ ]; # missing inputs: PyFlick
    "flo" = ps: with ps; [ aioflo ];
    "flock" = ps: with ps; [ ];
    "flume" = ps: with ps; [ pyflume ];
    "flunearyou" = ps: with ps; [ pyflunearyou ];
    "flux" = ps: with ps; [ ];
    "flux_led" = ps: with ps; [ flux-led ];
    "folder" = ps: with ps; [ ];
    "folder_watcher" = ps: with ps; [ watchdog ];
    "foobot" = ps: with ps; [ ]; # missing inputs: foobot_async
    "forked_daapd" = ps: with ps; [ ]; # missing inputs: pyforked-daapd pylibrespot-java
    "fortios" = ps: with ps; [ fortiosapi ];
    "foscam" = ps: with ps; [ ]; # missing inputs: libpyfoscam
    "foursquare" = ps: with ps; [ aiohttp-cors ];
    "free_mobile" = ps: with ps; [ ]; # missing inputs: freesms
    "freebox" = ps: with ps; [ freebox-api ];
    "freedns" = ps: with ps; [ ];
    "fritz" = ps: with ps; [ fritzconnection ];
    "fritzbox" = ps: with ps; [ pyfritzhome ];
    "fritzbox_callmonitor" = ps: with ps; [ fritzconnection ];
    "fritzbox_netmonitor" = ps: with ps; [ fritzconnection ];
    "fronius" = ps: with ps; [ ]; # missing inputs: pyfronius
    "frontend" = ps: with ps; [ aiohttp-cors pillow ];
    "frontier_silicon" = ps: with ps; [ ]; # missing inputs: afsapi
    "futurenow" = ps: with ps; [ pyfnip ];
    "garadget" = ps: with ps; [ ];
    "garmin_connect" = ps: with ps; [ ]; # missing inputs: garminconnect
    "gc100" = ps: with ps; [ ]; # missing inputs: python-gc100
    "gdacs" = ps: with ps; [ ]; # missing inputs: aio_georss_gdacs
    "geizhals" = ps: with ps; [ ]; # missing inputs: geizhals
    "generic" = ps: with ps; [ ];
    "generic_thermostat" = ps: with ps; [ ];
    "geniushub" = ps: with ps; [ ]; # missing inputs: geniushub-client
    "geo_json_events" = ps: with ps; [ geojson-client ];
    "geo_location" = ps: with ps; [ ];
    "geo_rss_events" = ps: with ps; [ ]; # missing inputs: georss_generic_client
    "geofency" = ps: with ps; [ aiohttp-cors ];
    "geonetnz_quakes" = ps: with ps; [ ]; # missing inputs: aio_geojson_geonetnz_quakes
    "geonetnz_volcano" = ps: with ps; [ ]; # missing inputs: aio_geojson_geonetnz_volcano
    "gios" = ps: with ps; [ ]; # missing inputs: gios
    "github" = ps: with ps; [ PyGithub ];
    "gitlab_ci" = ps: with ps; [ python-gitlab ];
    "gitter" = ps: with ps; [ ]; # missing inputs: gitterpy
    "glances" = ps: with ps; [ glances-api ];
    "gntp" = ps: with ps; [ gntp ];
    "goalfeed" = ps: with ps; [ ]; # missing inputs: pysher
    "goalzero" = ps: with ps; [ ]; # missing inputs: goalzero
    "gogogate2" = ps: with ps; [ ]; # missing inputs: gogogate2-api
    "google" = ps: with ps; [ google-api-python-client httplib2 oauth2client ];
    "google_assistant" = ps: with ps; [ aiohttp-cors ];
    "google_cloud" = ps: with ps; [ google-cloud-texttospeech ];
    "google_domains" = ps: with ps; [ ];
    "google_maps" = ps: with ps; [ ]; # missing inputs: locationsharinglib
    "google_pubsub" = ps: with ps; [ google-cloud-pubsub ];
    "google_translate" = ps: with ps; [ gtts ];
    "google_travel_time" = ps: with ps; [ googlemaps ];
    "google_wifi" = ps: with ps; [ ];
    "gpmdp" = ps: with ps; [ websocket_client ];
    "gpsd" = ps: with ps; [ gps3 ];
    "gpslogger" = ps: with ps; [ aiohttp-cors ];
    "graphite" = ps: with ps; [ ];
    "gree" = ps: with ps; [ ]; # missing inputs: greeclimate
    "greeneye_monitor" = ps: with ps; [ ]; # missing inputs: greeneye_monitor
    "greenwave" = ps: with ps; [ ]; # missing inputs: greenwavereality
    "group" = ps: with ps; [ ];
    "growatt_server" = ps: with ps; [ ]; # missing inputs: growattServer
    "gstreamer" = ps: with ps; [ ]; # missing inputs: gstreamer-player
    "gtfs" = ps: with ps; [ ]; # missing inputs: pygtfs
    "guardian" = ps: with ps; [ aioguardian ];
    "habitica" = ps: with ps; [ ]; # missing inputs: habitipy
    "hangouts" = ps: with ps; [ ]; # missing inputs: hangups
    "harman_kardon_avr" = ps: with ps; [ ]; # missing inputs: hkavr
    "harmony" = ps: with ps; [ aioharmony ];
    "hassio" = ps: with ps; [ aiohttp-cors pillow ];
    "haveibeenpwned" = ps: with ps; [ ];
    "hddtemp" = ps: with ps; [ ];
    "hdmi_cec" = ps: with ps; [ pycec ];
    "heatmiser" = ps: with ps; [ ]; # missing inputs: heatmiserV3
    "heos" = ps: with ps; [ ]; # missing inputs: pyheos
    "here_travel_time" = ps: with ps; [ ]; # missing inputs: herepy
    "hikvision" = ps: with ps; [ ]; # missing inputs: pyhik
    "hikvisioncam" = ps: with ps; [ ]; # missing inputs: hikvision
    "hisense_aehw4a1" = ps: with ps; [ ]; # missing inputs: pyaehw4a1
    "history" = ps: with ps; [ aiohttp-cors sqlalchemy ];
    "history_stats" = ps: with ps; [ aiohttp-cors sqlalchemy ];
    "hitron_coda" = ps: with ps; [ ];
    "hive" = ps: with ps; [ ]; # missing inputs: pyhiveapi
    "hlk_sw16" = ps: with ps; [ ]; # missing inputs: hlk-sw16
    "home_connect" = ps: with ps; [ aiohttp-cors ]; # missing inputs: homeconnect
    "home_plus_control" = ps: with ps; [ aiohttp-cors homepluscontrol ];
    "homeassistant" = ps: with ps; [ ];
    "homekit" = ps: with ps; [ HAP-python pyqrcode pyturbojpeg aiohttp-cors base36 fnvhash ha-ffmpeg zeroconf ];
    "homekit_controller" = ps: with ps; [ aiohomekit aiohttp-cors zeroconf ];
    "homematic" = ps: with ps; [ pyhomematic ];
    "homematicip_cloud" = ps: with ps; [ homematicip ];
    "homeworks" = ps: with ps; [ ]; # missing inputs: pyhomeworks
    "honeywell" = ps: with ps; [ ]; # missing inputs: somecomfort
    "horizon" = ps: with ps; [ ]; # missing inputs: horimote
    "hp_ilo" = ps: with ps; [ python-hpilo ];
    "html5" = ps: with ps; [ aiohttp-cors pywebpush ];
    "http" = ps: with ps; [ aiohttp-cors ];
    "htu21d" = ps: with ps; [ smbus-cffi ]; # missing inputs: i2csense
    "huawei_lte" = ps: with ps; [ getmac stringcase url-normalize ]; # missing inputs: huawei-lte-api
    "huawei_router" = ps: with ps; [ ];
    "hue" = ps: with ps; [ aiohue ];
    "huisbaasje" = ps: with ps; [ ]; # missing inputs: huisbaasje-client
    "humidifier" = ps: with ps; [ ];
    "hunterdouglas_powerview" = ps: with ps; [ ]; # missing inputs: aiopvapi
    "hvv_departures" = ps: with ps; [ ]; # missing inputs: pygti
    "hydrawise" = ps: with ps; [ hydrawiser ];
    "hyperion" = ps: with ps; [ hyperion-py ];
    "iammeter" = ps: with ps; [ ]; # missing inputs: iammeter
    "iaqualink" = ps: with ps; [ iaqualink ];
    "icloud" = ps: with ps; [ pyicloud ];
    "idteck_prox" = ps: with ps; [ ]; # missing inputs: rfk101py
    "ifttt" = ps: with ps; [ aiohttp-cors pyfttt ];
    "iglo" = ps: with ps; [ ]; # missing inputs: iglo
    "ign_sismologia" = ps: with ps; [ ]; # missing inputs: georss_ign_sismologia_client
    "ihc" = ps: with ps; [ defusedxml ]; # missing inputs: ihcsdk
    "image" = ps: with ps; [ aiohttp-cors pillow ];
    "image_processing" = ps: with ps; [ aiohttp-cors ];
    "imap" = ps: with ps; [ aioimaplib ];
    "imap_email_content" = ps: with ps; [ ];
    "incomfort" = ps: with ps; [ incomfort-client ];
    "influxdb" = ps: with ps; [ influxdb-client influxdb ];
    "input_boolean" = ps: with ps; [ ];
    "input_datetime" = ps: with ps; [ ];
    "input_number" = ps: with ps; [ ];
    "input_select" = ps: with ps; [ ];
    "input_text" = ps: with ps; [ ];
    "insteon" = ps: with ps; [ pyinsteon ];
    "integration" = ps: with ps; [ ];
    "intent" = ps: with ps; [ aiohttp-cors ];
    "intent_script" = ps: with ps; [ ];
    "intesishome" = ps: with ps; [ pyintesishome ];
    "ios" = ps: with ps; [ aiohttp-cors zeroconf ];
    "iota" = ps: with ps; [ ]; # missing inputs: pyota
    "iperf3" = ps: with ps; [ ]; # missing inputs: iperf3
    "ipma" = ps: with ps; [ ]; # missing inputs: pyipma
    "ipp" = ps: with ps; [ pyipp ];
    "iqvia" = ps: with ps; [ numpy pyiqvia ];
    "irish_rail_transport" = ps: with ps; [ ]; # missing inputs: pyirishrail
    "islamic_prayer_times" = ps: with ps; [ ]; # missing inputs: prayer_times_calculator
    "iss" = ps: with ps; [ ]; # missing inputs: pyiss
    "isy994" = ps: with ps; [ ]; # missing inputs: pyisy
    "itach" = ps: with ps; [ ]; # missing inputs: pyitachip2ir
    "itunes" = ps: with ps; [ ];
    "izone" = ps: with ps; [ ]; # missing inputs: python-izone
    "jewish_calendar" = ps: with ps; [ ]; # missing inputs: hdate
    "joaoapps_join" = ps: with ps; [ ]; # missing inputs: python-join-api
    "juicenet" = ps: with ps; [ ]; # missing inputs: python-juicenet
    "kaiterra" = ps: with ps; [ ]; # missing inputs: kaiterra-async-client
    "kankun" = ps: with ps; [ ];
    "keba" = ps: with ps; [ ]; # missing inputs: keba-kecontact
    "keenetic_ndms2" = ps: with ps; [ ]; # missing inputs: ndms2_client
    "kef" = ps: with ps; [ aiokef getmac ];
    "keyboard" = ps: with ps; [ ]; # missing inputs: pyuserinput
    "keyboard_remote" = ps: with ps; [ aionotify evdev ];
    "kira" = ps: with ps; [ pykira ];
    "kiwi" = ps: with ps; [ ]; # missing inputs: kiwiki-client
    "kmtronic" = ps: with ps; [ pykmtronic ];
    "knx" = ps: with ps; [ xknx ];
    "kodi" = ps: with ps; [ pykodi ];
    "konnected" = ps: with ps; [ aiohttp-cors ]; # missing inputs: konnected
    "kulersky" = ps: with ps; [ ]; # missing inputs: pykulersky
    "kwb" = ps: with ps; [ ]; # missing inputs: pykwb
    "lacrosse" = ps: with ps; [ pylacrosse ];
    "lametric" = ps: with ps; [ ]; # missing inputs: lmnotify
    "lannouncer" = ps: with ps; [ ];
    "lastfm" = ps: with ps; [ pylast ];
    "launch_library" = ps: with ps; [ ]; # missing inputs: pylaunches
    "lcn" = ps: with ps; [ pypck ];
    "lg_netcast" = ps: with ps; [ ]; # missing inputs: pylgnetcast-homeassistant
    "lg_soundbar" = ps: with ps; [ ]; # missing inputs: temescal
    "life360" = ps: with ps; [ ]; # missing inputs: life360
    "lifx" = ps: with ps; [ aiolifx aiolifx-effects ];
    "lifx_cloud" = ps: with ps; [ ];
    "lifx_legacy" = ps: with ps; [ ]; # missing inputs: liffylights
    "light" = ps: with ps; [ ];
    "lightwave" = ps: with ps; [ ]; # missing inputs: lightwave
    "limitlessled" = ps: with ps; [ limitlessled ];
    "linksys_smart" = ps: with ps; [ ];
    "linode" = ps: with ps; [ linode-api ];
    "linux_battery" = ps: with ps; [ batinfo ];
    "lirc" = ps: with ps; [ ]; # missing inputs: python-lirc
    "litejet" = ps: with ps; [ ]; # missing inputs: pylitejet
    "litterrobot" = ps: with ps; [ pylitterbot ];
    "llamalab_automate" = ps: with ps; [ ];
    "local_file" = ps: with ps; [ ];
    "local_ip" = ps: with ps; [ ];
    "locative" = ps: with ps; [ aiohttp-cors ];
    "lock" = ps: with ps; [ ];
    "logbook" = ps: with ps; [ aiohttp-cors pillow sqlalchemy ];
    "logentries" = ps: with ps; [ ];
    "logger" = ps: with ps; [ ];
    "logi_circle" = ps: with ps; [ aiohttp-cors ha-ffmpeg ]; # missing inputs: logi_circle
    "london_air" = ps: with ps; [ ];
    "london_underground" = ps: with ps; [ ]; # missing inputs: london-tube-status
    "loopenergy" = ps: with ps; [ ]; # missing inputs: pyloopenergy
    "lovelace" = ps: with ps; [ ];
    "luci" = ps: with ps; [ openwrt-luci-rpc ];
    "luftdaten" = ps: with ps; [ luftdaten ];
    "lupusec" = ps: with ps; [ ]; # missing inputs: lupupy
    "lutron" = ps: with ps; [ pylutron ];
    "lutron_caseta" = ps: with ps; [ aiolip pylutron-caseta ];
    "lw12wifi" = ps: with ps; [ ]; # missing inputs: lw12
    "lyft" = ps: with ps; [ ]; # missing inputs: lyft_rides
    "lyric" = ps: with ps; [ aiohttp-cors aiolyric ];
    "magicseaweed" = ps: with ps; [ ]; # missing inputs: magicseaweed
    "mailbox" = ps: with ps; [ aiohttp-cors ];
    "mailgun" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pymailgunner
    "manual" = ps: with ps; [ ];
    "manual_mqtt" = ps: with ps; [ aiohttp-cors paho-mqtt ];
    "map" = ps: with ps; [ aiohttp-cors pillow ];
    "marytts" = ps: with ps; [ ]; # missing inputs: speak2mary
    "mastodon" = ps: with ps; [ ]; # missing inputs: Mastodon.py
    "matrix" = ps: with ps; [ matrix-client ];
    "maxcube" = ps: with ps; [ ]; # missing inputs: maxcube-api
    "mazda" = ps: with ps; [ pymazda ];
    "mcp23017" = ps: with ps; [ ]; # missing inputs: RPi.GPIO adafruit-circuitpython-mcp230xx
    "media_extractor" = ps: with ps; [ aiohttp-cors youtube-dl-light ];
    "media_player" = ps: with ps; [ aiohttp-cors ];
    "media_source" = ps: with ps; [ aiohttp-cors ];
    "mediaroom" = ps: with ps; [ pymediaroom ];
    "melcloud" = ps: with ps; [ ]; # missing inputs: pymelcloud
    "melissa" = ps: with ps; [ ]; # missing inputs: py-melissa-climate
    "meraki" = ps: with ps; [ aiohttp-cors ];
    "message_bird" = ps: with ps; [ ]; # missing inputs: messagebird
    "met" = ps: with ps; [ pymetno ];
    "meteo_france" = ps: with ps; [ ]; # missing inputs: meteofrance-api
    "meteoalarm" = ps: with ps; [ ]; # missing inputs: meteoalertapi
    "metoffice" = ps: with ps; [ ]; # missing inputs: datapoint
    "mfi" = ps: with ps; [ ]; # missing inputs: mficlient
    "mhz19" = ps: with ps; [ ]; # missing inputs: pmsensor
    "microsoft" = ps: with ps; [ ]; # missing inputs: pycsspeechtts
    "microsoft_face" = ps: with ps; [ aiohttp-cors ];
    "microsoft_face_detect" = ps: with ps; [ aiohttp-cors ];
    "microsoft_face_identify" = ps: with ps; [ aiohttp-cors ];
    "miflora" = ps: with ps; [ bluepy ]; # missing inputs: miflora
    "mikrotik" = ps: with ps; [ librouteros ];
    "mill" = ps: with ps; [ ]; # missing inputs: millheater
    "min_max" = ps: with ps; [ ];
    "minecraft_server" = ps: with ps; [ aiodns getmac mcstatus ];
    "minio" = ps: with ps; [ minio ];
    "mitemp_bt" = ps: with ps; [ ]; # missing inputs: mitemp_bt
    "mjpeg" = ps: with ps; [ ];
    "mobile_app" = ps: with ps; [ pynacl aiohttp-cors emoji hass-nabucasa pillow ];
    "mochad" = ps: with ps; [ ]; # missing inputs: pymochad
    "modbus" = ps: with ps; [ pymodbus ];
    "modem_callerid" = ps: with ps; [ ]; # missing inputs: basicmodem
    "mold_indicator" = ps: with ps; [ ];
    "monoprice" = ps: with ps; [ ]; # missing inputs: pymonoprice
    "moon" = ps: with ps; [ ];
    "motion_blinds" = ps: with ps; [ ]; # missing inputs: motionblinds
    "mpchc" = ps: with ps; [ ];
    "mpd" = ps: with ps; [ mpd2 ];
    "mqtt" = ps: with ps; [ aiohttp-cors paho-mqtt ];
    "mqtt_eventstream" = ps: with ps; [ aiohttp-cors paho-mqtt ];
    "mqtt_json" = ps: with ps; [ aiohttp-cors paho-mqtt ];
    "mqtt_room" = ps: with ps; [ aiohttp-cors paho-mqtt ];
    "mqtt_statestream" = ps: with ps; [ aiohttp-cors paho-mqtt ];
    "msteams" = ps: with ps; [ pymsteams ];
    "mullvad" = ps: with ps; [ mullvad-api ];
    "mvglive" = ps: with ps; [ PyMVGLive ];
    "my" = ps: with ps; [ aiohttp-cors pillow ];
    "mychevy" = ps: with ps; [ ]; # missing inputs: mychevy
    "mycroft" = ps: with ps; [ ]; # missing inputs: mycroftapi
    "myq" = ps: with ps; [ pymyq ];
    "mysensors" = ps: with ps; [ aiohttp-cors paho-mqtt pymysensors ];
    "mystrom" = ps: with ps; [ aiohttp-cors python-mystrom ];
    "mythicbeastsdns" = ps: with ps; [ ]; # missing inputs: mbddns
    "n26" = ps: with ps; [ ]; # missing inputs: n26
    "nad" = ps: with ps; [ nad-receiver ];
    "namecheapdns" = ps: with ps; [ defusedxml ];
    "nanoleaf" = ps: with ps; [ pynanoleaf ];
    "neato" = ps: with ps; [ aiohttp-cors pybotvac ];
    "nederlandse_spoorwegen" = ps: with ps; [ ]; # missing inputs: nsapi
    "nello" = ps: with ps; [ ]; # missing inputs: pynello
    "ness_alarm" = ps: with ps; [ ]; # missing inputs: nessclient
    "nest" = ps: with ps; [ aiohttp-cors ha-ffmpeg python-nest ]; # missing inputs: google-nest-sdm
    "netatmo" = ps: with ps; [ aiohttp-cors hass-nabucasa pyatmo ];
    "netdata" = ps: with ps; [ netdata ];
    "netgear" = ps: with ps; [ ]; # missing inputs: pynetgear
    "netgear_lte" = ps: with ps; [ ]; # missing inputs: eternalegypt
    "netio" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pynetio
    "neurio_energy" = ps: with ps; [ ]; # missing inputs: neurio
    "nexia" = ps: with ps; [ nexia ];
    "nextbus" = ps: with ps; [ ]; # missing inputs: py_nextbusnext
    "nextcloud" = ps: with ps; [ ]; # missing inputs: nextcloudmonitor
    "nfandroidtv" = ps: with ps; [ ];
    "nightscout" = ps: with ps; [ ]; # missing inputs: py-nightscout
    "niko_home_control" = ps: with ps; [ ]; # missing inputs: niko-home-control
    "nilu" = ps: with ps; [ ]; # missing inputs: niluclient
    "nissan_leaf" = ps: with ps; [ ]; # missing inputs: pycarwings2
    "nmap_tracker" = ps: with ps; [ getmac python-nmap ];
    "nmbs" = ps: with ps; [ ]; # missing inputs: pyrail
    "no_ip" = ps: with ps; [ ];
    "noaa_tides" = ps: with ps; [ ]; # missing inputs: noaa-coops
    "norway_air" = ps: with ps; [ pymetno ];
    "notify" = ps: with ps; [ ];
    "notify_events" = ps: with ps; [ ]; # missing inputs: notify-events
    "notion" = ps: with ps; [ aionotion ];
    "nsw_fuel_station" = ps: with ps; [ ]; # missing inputs: nsw-fuel-api-client
    "nsw_rural_fire_service_feed" = ps: with ps; [ ]; # missing inputs: aio_geojson_nsw_rfs_incidents
    "nuheat" = ps: with ps; [ ]; # missing inputs: nuheat
    "nuki" = ps: with ps; [ pynuki ];
    "numato" = ps: with ps; [ ]; # missing inputs: numato-gpio
    "number" = ps: with ps; [ ];
    "nut" = ps: with ps; [ ]; # missing inputs: pynut2
    "nws" = ps: with ps; [ pynws ];
    "nx584" = ps: with ps; [ ]; # missing inputs: pynx584
    "nzbget" = ps: with ps; [ ]; # missing inputs: pynzbgetapi
    "oasa_telematics" = ps: with ps; [ ]; # missing inputs: oasatelematics
    "obihai" = ps: with ps; [ ]; # missing inputs: pyobihai
    "octoprint" = ps: with ps; [ aiohttp-cors netdisco zeroconf ];
    "oem" = ps: with ps; [ ]; # missing inputs: oemthermostat
    "ohmconnect" = ps: with ps; [ defusedxml ];
    "ombi" = ps: with ps; [ ]; # missing inputs: pyombi
    "omnilogic" = ps: with ps; [ omnilogic ];
    "onboarding" = ps: with ps; [ aiohttp-cors pillow ];
    "ondilo_ico" = ps: with ps; [ aiohttp-cors ondilo ];
    "onewire" = ps: with ps; [ ]; # missing inputs: pi1wire pyownet
    "onkyo" = ps: with ps; [ onkyo-eiscp ];
    "onvif" = ps: with ps; [ ha-ffmpeg zeep ]; # missing inputs: WSDiscovery onvif-zeep-async
    "openalpr_cloud" = ps: with ps; [ ];
    "openalpr_local" = ps: with ps; [ ];
    "opencv" = ps: with ps; [ numpy ]; # missing inputs: opencv-python-headless
    "openerz" = ps: with ps; [ ]; # missing inputs: openerz-api
    "openevse" = ps: with ps; [ ]; # missing inputs: openevsewifi
    "openexchangerates" = ps: with ps; [ ];
    "opengarage" = ps: with ps; [ ]; # missing inputs: open-garage
    "openhardwaremonitor" = ps: with ps; [ ];
    "openhome" = ps: with ps; [ openhomedevice ];
    "opensensemap" = ps: with ps; [ opensensemap-api ];
    "opensky" = ps: with ps; [ ];
    "opentherm_gw" = ps: with ps; [ ]; # missing inputs: pyotgw
    "openuv" = ps: with ps; [ pyopenuv ];
    "openweathermap" = ps: with ps; [ pyowm ];
    "opnsense" = ps: with ps; [ pyopnsense ];
    "opple" = ps: with ps; [ ]; # missing inputs: pyoppleio
    "orangepi_gpio" = ps: with ps; [ ]; # missing inputs: OPi.GPIO
    "oru" = ps: with ps; [ ]; # missing inputs: oru
    "orvibo" = ps: with ps; [ orvibo ];
    "osramlightify" = ps: with ps; [ ]; # missing inputs: lightify
    "otp" = ps: with ps; [ pyotp ];
    "ovo_energy" = ps: with ps; [ ]; # missing inputs: ovoenergy
    "owntracks" = ps: with ps; [ pynacl aiohttp-cors hass-nabucasa paho-mqtt ];
    "ozw" = ps: with ps; [ aiohttp-cors paho-mqtt python-openzwave-mqtt ];
    "panasonic_bluray" = ps: with ps; [ ]; # missing inputs: panacotta
    "panasonic_viera" = ps: with ps; [ ]; # missing inputs: panasonic_viera
    "pandora" = ps: with ps; [ pexpect ];
    "panel_custom" = ps: with ps; [ aiohttp-cors pillow ];
    "panel_iframe" = ps: with ps; [ aiohttp-cors pillow ];
    "pcal9535a" = ps: with ps; [ ]; # missing inputs: pcal9535a
    "pencom" = ps: with ps; [ ]; # missing inputs: pencompy
    "persistent_notification" = ps: with ps; [ ];
    "person" = ps: with ps; [ aiohttp-cors pillow ];
    "philips_js" = ps: with ps; [ ]; # missing inputs: ha-philipsjs
    "pi4ioe5v9xxxx" = ps: with ps; [ ]; # missing inputs: pi4ioe5v9xxxx
    "pi_hole" = ps: with ps; [ hole ];
    "picotts" = ps: with ps; [ ];
    "piglow" = ps: with ps; [ ]; # missing inputs: piglow
    "pilight" = ps: with ps; [ ]; # missing inputs: pilight
    "ping" = ps: with ps; [ icmplib ];
    "pioneer" = ps: with ps; [ ];
    "pjlink" = ps: with ps; [ ]; # missing inputs: pypjlink2
    "plaato" = ps: with ps; [ aiohttp-cors hass-nabucasa pyplaato ];
    "plant" = ps: with ps; [ sqlalchemy ];
    "plex" = ps: with ps; [ aiohttp-cors plexapi plexauth plexwebsocket ];
    "plugwise" = ps: with ps; [ plugwise ];
    "plum_lightpad" = ps: with ps; [ ]; # missing inputs: plumlightpad
    "pocketcasts" = ps: with ps; [ ]; # missing inputs: pycketcasts
    "point" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pypoint
    "poolsense" = ps: with ps; [ poolsense ];
    "powerwall" = ps: with ps; [ ]; # missing inputs: tesla-powerwall
    "profiler" = ps: with ps; [ guppy3 objgraph pyprof2calltree ];
    "progettihwsw" = ps: with ps; [ ]; # missing inputs: progettihwsw
    "proliphix" = ps: with ps; [ ]; # missing inputs: proliphix
    "prometheus" = ps: with ps; [ aiohttp-cors prometheus_client ];
    "prowl" = ps: with ps; [ ];
    "proximity" = ps: with ps; [ ];
    "proxmoxve" = ps: with ps; [ proxmoxer ];
    "proxy" = ps: with ps; [ pillow ];
    "ps4" = ps: with ps; [ ]; # missing inputs: pyps4-2ndscreen
    "pulseaudio_loopback" = ps: with ps; [ pulsectl ];
    "push" = ps: with ps; [ aiohttp-cors ];
    "pushbullet" = ps: with ps; [ pushbullet ];
    "pushover" = ps: with ps; [ pushover-complete ];
    "pushsafer" = ps: with ps; [ ];
    "pvoutput" = ps: with ps; [ jsonpath xmltodict ];
    "pvpc_hourly_pricing" = ps: with ps; [ ]; # missing inputs: aiopvpc
    "pyload" = ps: with ps; [ ];
    "python_script" = ps: with ps; [ restrictedpython ];
    "qbittorrent" = ps: with ps; [ ]; # missing inputs: python-qbittorrent
    "qld_bushfire" = ps: with ps; [ ]; # missing inputs: georss_qld_bushfire_alert_client
    "qnap" = ps: with ps; [ ]; # missing inputs: qnapstats
    "qrcode" = ps: with ps; [ pillow ]; # missing inputs: pyzbar
    "quantum_gateway" = ps: with ps; [ ]; # missing inputs: quantum-gateway
    "qvr_pro" = ps: with ps; [ ]; # missing inputs: pyqvrpro
    "qwikswitch" = ps: with ps; [ ]; # missing inputs: pyqwikswitch
    "rachio" = ps: with ps; [ aiohttp-cors hass-nabucasa rachiopy ];
    "radarr" = ps: with ps; [ ];
    "radiotherm" = ps: with ps; [ radiotherm ];
    "rainbird" = ps: with ps; [ ]; # missing inputs: pyrainbird
    "raincloud" = ps: with ps; [ ]; # missing inputs: raincloudy
    "rainforest_eagle" = ps: with ps; [ ]; # missing inputs: eagle200_reader uEagle
    "rainmachine" = ps: with ps; [ regenmaschine ];
    "random" = ps: with ps; [ ];
    "raspihats" = ps: with ps; [ smbus-cffi ]; # missing inputs: raspihats
    "raspyrfm" = ps: with ps; [ ]; # missing inputs: raspyrfm-client
    "recollect_waste" = ps: with ps; [ aiorecollect ];
    "recorder" = ps: with ps; [ sqlalchemy ];
    "recswitch" = ps: with ps; [ ]; # missing inputs: pyrecswitch
    "reddit" = ps: with ps; [ praw ];
    "rejseplanen" = ps: with ps; [ ]; # missing inputs: rjpl
    "remember_the_milk" = ps: with ps; [ httplib2 ]; # missing inputs: RtmAPI
    "remote" = ps: with ps; [ ];
    "remote_rpi_gpio" = ps: with ps; [ ]; # missing inputs: gpiozero
    "repetier" = ps: with ps; [ ]; # missing inputs: pyrepetier
    "rest" = ps: with ps; [ jsonpath xmltodict ];
    "rest_command" = ps: with ps; [ ];
    "rflink" = ps: with ps; [ ]; # missing inputs: rflink
    "rfxtrx" = ps: with ps; [ ]; # missing inputs: pyRFXtrx
    "ring" = ps: with ps; [ ha-ffmpeg ring-doorbell ];
    "ripple" = ps: with ps; [ ]; # missing inputs: python-ripple-api
    "risco" = ps: with ps; [ pyrisco ];
    "rituals_perfume_genie" = ps: with ps; [ pyrituals ];
    "rmvtransport" = ps: with ps; [ PyRMVtransport ];
    "rocketchat" = ps: with ps; [ ]; # missing inputs: rocketchat-API
    "roku" = ps: with ps; [ ]; # missing inputs: rokuecp
    "roomba" = ps: with ps; [ roombapy ];
    "roon" = ps: with ps; [ ]; # missing inputs: roonapi
    "route53" = ps: with ps; [ boto3 ];
    "rova" = ps: with ps; [ ]; # missing inputs: rova
    "rpi_camera" = ps: with ps; [ ];
    "rpi_gpio" = ps: with ps; [ ]; # missing inputs: RPi.GPIO
    "rpi_gpio_pwm" = ps: with ps; [ ]; # missing inputs: pwmled
    "rpi_pfio" = ps: with ps; [ ]; # missing inputs: pifacecommon pifacedigitalio
    "rpi_power" = ps: with ps; [ ]; # missing inputs: rpi-bad-power
    "rpi_rf" = ps: with ps; [ ]; # missing inputs: rpi-rf
    "rss_feed_template" = ps: with ps; [ aiohttp-cors ];
    "rtorrent" = ps: with ps; [ ];
    "ruckus_unleashed" = ps: with ps; [ pyruckus ];
    "russound_rio" = ps: with ps; [ ]; # missing inputs: russound_rio
    "russound_rnet" = ps: with ps; [ ]; # missing inputs: russound
    "sabnzbd" = ps: with ps; [ aiohttp-cors netdisco zeroconf ]; # missing inputs: pysabnzbd
    "safe_mode" = ps: with ps; [ aiohttp-cors hass-nabucasa pillow ];
    "saj" = ps: with ps; [ ]; # missing inputs: pysaj
    "samsungtv" = ps: with ps; [ samsungctl samsungtvws ];
    "satel_integra" = ps: with ps; [ ]; # missing inputs: satel_integra
    "scene" = ps: with ps; [ ];
    "schluter" = ps: with ps; [ ]; # missing inputs: py-schluter
    "scrape" = ps: with ps; [ beautifulsoup4 jsonpath xmltodict ];
    "screenlogic" = ps: with ps; [ screenlogicpy ];
    "script" = ps: with ps; [ ];
    "scsgate" = ps: with ps; [ ]; # missing inputs: scsgate
    "search" = ps: with ps; [ aiohttp-cors ];
    "season" = ps: with ps; [ ephem ];
    "sendgrid" = ps: with ps; [ sendgrid ];
    "sense" = ps: with ps; [ ]; # missing inputs: sense_energy
    "sensehat" = ps: with ps; [ ]; # missing inputs: sense-hat
    "sensibo" = ps: with ps; [ ]; # missing inputs: pysensibo
    "sensor" = ps: with ps; [ ];
    "sentry" = ps: with ps; [ sentry-sdk ];
    "serial" = ps: with ps; [ pyserial-asyncio ];
    "serial_pm" = ps: with ps; [ ]; # missing inputs: pmsensor
    "sesame" = ps: with ps; [ ]; # missing inputs: pysesame2
    "seven_segments" = ps: with ps; [ pillow ];
    "seventeentrack" = ps: with ps; [ ]; # missing inputs: py17track
    "sharkiq" = ps: with ps; [ sharkiqpy ];
    "shell_command" = ps: with ps; [ ];
    "shelly" = ps: with ps; [ aioshelly ];
    "shiftr" = ps: with ps; [ paho-mqtt ];
    "shodan" = ps: with ps; [ shodan ];
    "shopping_list" = ps: with ps; [ aiohttp-cors ];
    "sht31" = ps: with ps; [ ]; # missing inputs: Adafruit-GPIO Adafruit-SHT31
    "sigfox" = ps: with ps; [ ];
    "sighthound" = ps: with ps; [ pillow simplehound ];
    "signal_messenger" = ps: with ps; [ ]; # missing inputs: pysignalclirestapi
    "simplepush" = ps: with ps; [ ]; # missing inputs: simplepush
    "simplisafe" = ps: with ps; [ simplisafe-python ];
    "simulated" = ps: with ps; [ ];
    "sinch" = ps: with ps; [ ]; # missing inputs: clx-sdk-xms
    "sisyphus" = ps: with ps; [ ]; # missing inputs: sisyphus-control
    "sky_hub" = ps: with ps; [ ]; # missing inputs: pyskyqhub
    "skybeacon" = ps: with ps; [ ]; # missing inputs: pygatt[GATTTOOL]
    "skybell" = ps: with ps; [ skybellpy ];
    "slack" = ps: with ps; [ ]; # missing inputs: slackclient
    "sleepiq" = ps: with ps; [ sleepyq ];
    "slide" = ps: with ps; [ ]; # missing inputs: goslide-api
    "sma" = ps: with ps; [ pysma ];
    "smappee" = ps: with ps; [ aiohttp-cors pysmappee ];
    "smart_meter_texas" = ps: with ps; [ ]; # missing inputs: smart-meter-texas
    "smarthab" = ps: with ps; [ ]; # missing inputs: smarthab
    "smartthings" = ps: with ps; [ aiohttp-cors hass-nabucasa ]; # missing inputs: pysmartapp pysmartthings
    "smarttub" = ps: with ps; [ python-smarttub ];
    "smarty" = ps: with ps; [ ]; # missing inputs: pysmarty
    "smhi" = ps: with ps; [ ]; # missing inputs: smhi-pkg
    "sms" = ps: with ps; [ python-gammu ];
    "smtp" = ps: with ps; [ ];
    "snapcast" = ps: with ps; [ snapcast ];
    "snips" = ps: with ps; [ aiohttp-cors paho-mqtt ];
    "snmp" = ps: with ps; [ pysnmp ];
    "sochain" = ps: with ps; [ ]; # missing inputs: python-sochain-api
    "socialblade" = ps: with ps; [ ]; # missing inputs: socialbladeclient
    "solaredge" = ps: with ps; [ solaredge stringcase ];
    "solaredge_local" = ps: with ps; [ ]; # missing inputs: solaredge-local
    "solarlog" = ps: with ps; [ ]; # missing inputs: sunwatcher
    "solax" = ps: with ps; [ solax ];
    "soma" = ps: with ps; [ pysoma ];
    "somfy" = ps: with ps; [ aiohttp-cors pymfy ];
    "somfy_mylink" = ps: with ps; [ ]; # missing inputs: somfy-mylink-synergy
    "sonarr" = ps: with ps; [ ]; # missing inputs: sonarr
    "songpal" = ps: with ps; [ ]; # missing inputs: python-songpal
    "sonos" = ps: with ps; [ aiohttp-cors plexapi plexauth plexwebsocket pysonos ];
    "sony_projector" = ps: with ps; [ ]; # missing inputs: pysdcp
    "soundtouch" = ps: with ps; [ aiohttp-cors libsoundtouch zeroconf ];
    "spaceapi" = ps: with ps; [ aiohttp-cors ];
    "spc" = ps: with ps; [ ]; # missing inputs: pyspcwebgw
    "speedtestdotnet" = ps: with ps; [ speedtest-cli ];
    "spider" = ps: with ps; [ ]; # missing inputs: spiderpy
    "splunk" = ps: with ps; [ ]; # missing inputs: hass_splunk
    "spotcrime" = ps: with ps; [ ]; # missing inputs: spotcrime
    "spotify" = ps: with ps; [ aiohttp-cors spotipy ];
    "sql" = ps: with ps; [ sqlalchemy ];
    "squeezebox" = ps: with ps; [ pysqueezebox ];
    "srp_energy" = ps: with ps; [ ]; # missing inputs: srpenergy
    "ssdp" = ps: with ps; [ aiohttp-cors async-upnp-client defusedxml netdisco zeroconf ];
    "starline" = ps: with ps; [ ]; # missing inputs: starline
    "starlingbank" = ps: with ps; [ ]; # missing inputs: starlingbank
    "startca" = ps: with ps; [ xmltodict ];
    "statistics" = ps: with ps; [ sqlalchemy ];
    "statsd" = ps: with ps; [ statsd ];
    "steam_online" = ps: with ps; [ ]; # missing inputs: steamodd
    "stiebel_eltron" = ps: with ps; [ pymodbus ]; # missing inputs: pystiebeleltron
    "stookalert" = ps: with ps; [ ]; # missing inputs: stookalert
    "stream" = ps: with ps; [ aiohttp-cors av ];
    "streamlabswater" = ps: with ps; [ ]; # missing inputs: streamlabswater
    "stt" = ps: with ps; [ aiohttp-cors ];
    "subaru" = ps: with ps; [ subarulink ];
    "suez_water" = ps: with ps; [ ]; # missing inputs: pysuez
    "sun" = ps: with ps; [ ];
    "supervisord" = ps: with ps; [ ];
    "supla" = ps: with ps; [ ]; # missing inputs: asyncpysupla
    "surepetcare" = ps: with ps; [ surepy ];
    "swiss_hydrological_data" = ps: with ps; [ swisshydrodata ];
    "swiss_public_transport" = ps: with ps; [ python-opendata-transport ];
    "swisscom" = ps: with ps; [ ];
    "switch" = ps: with ps; [ ];
    "switchbot" = ps: with ps; [ pyswitchbot ];
    "switcher_kis" = ps: with ps; [ aioswitcher ];
    "switchmate" = ps: with ps; [ ]; # missing inputs: pySwitchmate
    "syncthru" = ps: with ps; [ url-normalize ]; # missing inputs: pysyncthru
    "synology_chat" = ps: with ps; [ ];
    "synology_dsm" = ps: with ps; [ ]; # missing inputs: synologydsm-api
    "synology_srm" = ps: with ps; [ ]; # missing inputs: synology-srm
    "syslog" = ps: with ps; [ ];
    "system_health" = ps: with ps; [ aiohttp-cors ];
    "system_log" = ps: with ps; [ aiohttp-cors ];
    "systemmonitor" = ps: with ps; [ psutil ];
    "tado" = ps: with ps; [ python-tado ];
    "tag" = ps: with ps; [ ];
    "tahoma" = ps: with ps; [ tahoma-api ];
    "tank_utility" = ps: with ps; [ ]; # missing inputs: tank_utility
    "tankerkoenig" = ps: with ps; [ pytankerkoenig ];
    "tapsaff" = ps: with ps; [ ]; # missing inputs: tapsaff
    "tasmota" = ps: with ps; [ aiohttp-cors hatasmota paho-mqtt ];
    "tautulli" = ps: with ps; [ ]; # missing inputs: pytautulli
    "tcp" = ps: with ps; [ ];
    "ted5000" = ps: with ps; [ xmltodict ];
    "telegram" = ps: with ps; [ pysocks aiohttp-cors python-telegram-bot ];
    "telegram_bot" = ps: with ps; [ pysocks aiohttp-cors python-telegram-bot ];
    "tellduslive" = ps: with ps; [ tellduslive ];
    "tellstick" = ps: with ps; [ ]; # missing inputs: tellcore-net tellcore-py
    "telnet" = ps: with ps; [ ];
    "temper" = ps: with ps; [ ]; # missing inputs: temperusb
    "template" = ps: with ps; [ ];
    "tensorflow" = ps: with ps; [ numpy pillow tensorflow ]; # missing inputs: pycocotools tf-models-official
    "tesla" = ps: with ps; [ teslajsonpy ];
    "tfiac" = ps: with ps; [ ]; # missing inputs: pytfiac
    "thermoworks_smoke" = ps: with ps; [ stringcase ]; # missing inputs: thermoworks_smoke
    "thethingsnetwork" = ps: with ps; [ ];
    "thingspeak" = ps: with ps; [ ]; # missing inputs: thingspeak
    "thinkingcleaner" = ps: with ps; [ ]; # missing inputs: pythinkingcleaner
    "thomson" = ps: with ps; [ ];
    "threshold" = ps: with ps; [ ];
    "tibber" = ps: with ps; [ ]; # missing inputs: pyTibber
    "tikteck" = ps: with ps; [ ]; # missing inputs: tikteck
    "tile" = ps: with ps; [ pytile ];
    "time_date" = ps: with ps; [ ];
    "timer" = ps: with ps; [ ];
    "tmb" = ps: with ps; [ tmb ];
    "tod" = ps: with ps; [ ];
    "todoist" = ps: with ps; [ todoist ];
    "tof" = ps: with ps; [ ]; # missing inputs: RPi.GPIO VL53L1X2
    "tomato" = ps: with ps; [ ];
    "toon" = ps: with ps; [ aiohttp-cors hass-nabucasa toonapi ];
    "torque" = ps: with ps; [ aiohttp-cors ];
    "totalconnect" = ps: with ps; [ ]; # missing inputs: total_connect_client
    "touchline" = ps: with ps; [ ]; # missing inputs: pytouchline
    "tplink" = ps: with ps; [ pyhs100 ];
    "tplink_lte" = ps: with ps; [ ]; # missing inputs: tp-connected
    "traccar" = ps: with ps; [ aiohttp-cors stringcase ]; # missing inputs: pytraccar
    "trace" = ps: with ps; [ ];
    "trackr" = ps: with ps; [ ]; # missing inputs: pytrackr
    "tradfri" = ps: with ps; [ ]; # missing inputs: pytradfri[async]
    "trafikverket_train" = ps: with ps; [ pytrafikverket ];
    "trafikverket_weatherstation" = ps: with ps; [ pytrafikverket ];
    "transmission" = ps: with ps; [ transmissionrpc ];
    "transport_nsw" = ps: with ps; [ ]; # missing inputs: PyTransportNSW
    "travisci" = ps: with ps; [ ]; # missing inputs: TravisPy
    "trend" = ps: with ps; [ numpy ];
    "tts" = ps: with ps; [ aiohttp-cors mutagen ];
    "tuya" = ps: with ps; [ tuyaha ];
    "twentemilieu" = ps: with ps; [ twentemilieu ];
    "twilio" = ps: with ps; [ aiohttp-cors twilio ];
    "twilio_call" = ps: with ps; [ aiohttp-cors twilio ];
    "twilio_sms" = ps: with ps; [ aiohttp-cors twilio ];
    "twinkly" = ps: with ps; [ twinkly-client ];
    "twitch" = ps: with ps; [ python-twitch-client ];
    "twitter" = ps: with ps; [ twitterapi ];
    "ubus" = ps: with ps; [ openwrt-ubus-rpc ];
    "ue_smart_radio" = ps: with ps; [ ];
    "uk_transport" = ps: with ps; [ ];
    "unifi" = ps: with ps; [ aiounifi ];
    "unifi_direct" = ps: with ps; [ pexpect ];
    "unifiled" = ps: with ps; [ unifiled ];
    "universal" = ps: with ps; [ ];
    "upb" = ps: with ps; [ ]; # missing inputs: upb_lib
    "upc_connect" = ps: with ps; [ connect-box ];
    "upcloud" = ps: with ps; [ ]; # missing inputs: upcloud-api
    "updater" = ps: with ps; [ distro ];
    "upnp" = ps: with ps; [ async-upnp-client ];
    "uptime" = ps: with ps; [ ];
    "uptimerobot" = ps: with ps; [ ]; # missing inputs: pyuptimerobot
    "uscis" = ps: with ps; [ ]; # missing inputs: uscisstatus
    "usgs_earthquakes_feed" = ps: with ps; [ geojson-client ];
    "utility_meter" = ps: with ps; [ ];
    "uvc" = ps: with ps; [ uvcclient ];
    "vacuum" = ps: with ps; [ ];
    "vallox" = ps: with ps; [ ]; # missing inputs: vallox-websocket-api
    "vasttrafik" = ps: with ps; [ ]; # missing inputs: vtjp
    "velbus" = ps: with ps; [ python-velbus ];
    "velux" = ps: with ps; [ pyvlx ];
    "venstar" = ps: with ps; [ venstarcolortouch ];
    "vera" = ps: with ps; [ pyvera ];
    "verisure" = ps: with ps; [ vsure ];
    "versasense" = ps: with ps; [ ]; # missing inputs: pyversasense
    "version" = ps: with ps; [ pyhaversion ];
    "vesync" = ps: with ps; [ pyvesync ];
    "viaggiatreno" = ps: with ps; [ ];
    "vicare" = ps: with ps; [ pyvicare ];
    "vilfo" = ps: with ps; [ ]; # missing inputs: vilfo-api-client
    "vivotek" = ps: with ps; [ ]; # missing inputs: libpyvivotek
    "vizio" = ps: with ps; [ pyvizio ];
    "vlc" = ps: with ps; [ python-vlc ];
    "vlc_telnet" = ps: with ps; [ ]; # missing inputs: python-telnet-vlc
    "voicerss" = ps: with ps; [ ];
    "volkszaehler" = ps: with ps; [ volkszaehler ];
    "volumio" = ps: with ps; [ pyvolumio ];
    "volvooncall" = ps: with ps; [ ]; # missing inputs: volvooncall
    "vultr" = ps: with ps; [ vultr ];
    "w800rf32" = ps: with ps; [ ]; # missing inputs: pyW800rf32
    "wake_on_lan" = ps: with ps; [ wakeonlan ];
    "waqi" = ps: with ps; [ waqiasync ];
    "water_heater" = ps: with ps; [ ];
    "waterfurnace" = ps: with ps; [ waterfurnace ];
    "watson_iot" = ps: with ps; [ ]; # missing inputs: ibmiotf
    "watson_tts" = ps: with ps; [ ]; # missing inputs: ibm-watson
    "waze_travel_time" = ps: with ps; [ WazeRouteCalculator ];
    "weather" = ps: with ps; [ ];
    "webhook" = ps: with ps; [ aiohttp-cors ];
    "webostv" = ps: with ps; [ aiopylgtv ];
    "websocket_api" = ps: with ps; [ aiohttp-cors ];
    "wemo" = ps: with ps; [ pywemo ];
    "whois" = ps: with ps; [ python-whois ];
    "wiffi" = ps: with ps; [ wiffi ];
    "wilight" = ps: with ps; [ pywilight ];
    "wink" = ps: with ps; [ aiohttp-cors pubnubsub-handler python-wink ];
    "wirelesstag" = ps: with ps; [ ]; # missing inputs: wirelesstagpy
    "withings" = ps: with ps; [ aiohttp-cors ]; # missing inputs: withings-api
    "wled" = ps: with ps; [ wled ];
    "wolflink" = ps: with ps; [ ]; # missing inputs: wolf_smartset
    "workday" = ps: with ps; [ holidays ];
    "worldclock" = ps: with ps; [ ];
    "worldtidesinfo" = ps: with ps; [ ];
    "worxlandroid" = ps: with ps; [ ];
    "wsdot" = ps: with ps; [ ];
    "wunderground" = ps: with ps; [ ];
    "x10" = ps: with ps; [ ];
    "xbee" = ps: with ps; [ ]; # missing inputs: xbee-helper
    "xbox" = ps: with ps; [ aiohttp-cors ]; # missing inputs: xbox-webapi
    "xbox_live" = ps: with ps; [ xboxapi ];
    "xeoma" = ps: with ps; [ pyxeoma ];
    "xiaomi" = ps: with ps; [ ha-ffmpeg ];
    "xiaomi_aqara" = ps: with ps; [ pyxiaomigateway aiohttp-cors netdisco zeroconf ];
    "xiaomi_miio" = ps: with ps; [ construct python-miio ];
    "xiaomi_tv" = ps: with ps; [ pymitv ];
    "xmpp" = ps: with ps; [ slixmpp ];
    "xs1" = ps: with ps; [ ]; # missing inputs: xs1-api-client
    "yale_smart_alarm" = ps: with ps; [ yalesmartalarmclient ];
    "yamaha" = ps: with ps; [ rxv ];
    "yamaha_musiccast" = ps: with ps; [ ]; # missing inputs: pymusiccast
    "yandex_transport" = ps: with ps; [ ]; # missing inputs: aioymaps
    "yandextts" = ps: with ps; [ ];
    "yeelight" = ps: with ps; [ yeelight ];
    "yeelightsunflower" = ps: with ps; [ ]; # missing inputs: yeelightsunflower
    "yi" = ps: with ps; [ aioftp ha-ffmpeg ];
    "zabbix" = ps: with ps; [ ]; # missing inputs: py-zabbix
    "zamg" = ps: with ps; [ ];
    "zengge" = ps: with ps; [ ]; # missing inputs: zengge
    "zeroconf" = ps: with ps; [ aiohttp-cors zeroconf ];
    "zerproc" = ps: with ps; [ pyzerproc ];
    "zestimate" = ps: with ps; [ xmltodict ];
    "zha" = ps: with ps; [ aiohttp-cors bellows pyserial-asyncio pyserial zeroconf zha-quirks zigpy-cc zigpy-deconz zigpy-xbee zigpy-zigate zigpy-znp zigpy ];
    "zhong_hong" = ps: with ps; [ ]; # missing inputs: zhong_hong_hvac
    "ziggo_mediabox_xl" = ps: with ps; [ ]; # missing inputs: ziggo-mediabox-xl
    "zodiac" = ps: with ps; [ ];
    "zone" = ps: with ps; [ ];
    "zoneminder" = ps: with ps; [ zm-py ];
    "zwave" = ps: with ps; [ aiohttp-cors homeassistant-pyozw paho-mqtt pydispatcher python-openzwave-mqtt ];
    "zwave_js" = ps: with ps; [ aiohttp-cors zwave-js-server-python ];
  };
}