diff --git a/homeassistant/components/aquostv/manifest.json b/homeassistant/components/aquostv/manifest.json
index 011b8e67a19c57881fc2c628a60bcb3701e9408d..1bac2bdfb5ff8ad6c0035cd2da160ef3bedeac86 100644
--- a/homeassistant/components/aquostv/manifest.json
+++ b/homeassistant/components/aquostv/manifest.json
@@ -5,5 +5,5 @@
   "documentation": "https://www.home-assistant.io/integrations/aquostv",
   "iot_class": "local_polling",
   "loggers": ["sharp_aquos_rc"],
-  "requirements": ["sharp-aquos-rc==0.3.2"]
+  "requirements": ["sharp_aquos_rc==0.3.2"]
 }
diff --git a/homeassistant/components/asterisk_mbox/manifest.json b/homeassistant/components/asterisk_mbox/manifest.json
index 840c48aff2aa29c7851497a387b22ed5550dfa01..8348e40ba6b9aae225059132b8fc4fa322317dc9 100644
--- a/homeassistant/components/asterisk_mbox/manifest.json
+++ b/homeassistant/components/asterisk_mbox/manifest.json
@@ -5,5 +5,5 @@
   "documentation": "https://www.home-assistant.io/integrations/asterisk_mbox",
   "iot_class": "local_push",
   "loggers": ["asterisk_mbox"],
-  "requirements": ["asterisk-mbox==0.5.0"]
+  "requirements": ["asterisk_mbox==0.5.0"]
 }
diff --git a/homeassistant/components/duotecno/manifest.json b/homeassistant/components/duotecno/manifest.json
index d26d4fce61e6562fd8a8b20f75812cd08c167277..be2a74f884f42d74a7fedc5deb87983d2672c298 100644
--- a/homeassistant/components/duotecno/manifest.json
+++ b/homeassistant/components/duotecno/manifest.json
@@ -5,5 +5,5 @@
   "config_flow": true,
   "documentation": "https://www.home-assistant.io/integrations/duotecno",
   "iot_class": "local_push",
-  "requirements": ["pyduotecno==2023.8.4"]
+  "requirements": ["pyDuotecno==2023.8.4"]
 }
diff --git a/homeassistant/components/emulated_hue/manifest.json b/homeassistant/components/emulated_hue/manifest.json
index 01dae2dca77275167616ac167e7e1cc225ca96c8..ff3591e00667d572f239cd9be224a1fee6fa42bf 100644
--- a/homeassistant/components/emulated_hue/manifest.json
+++ b/homeassistant/components/emulated_hue/manifest.json
@@ -7,5 +7,5 @@
   "documentation": "https://www.home-assistant.io/integrations/emulated_hue",
   "iot_class": "local_push",
   "quality_scale": "internal",
-  "requirements": ["aiohttp-cors==0.7.0"]
+  "requirements": ["aiohttp_cors==0.7.0"]
 }
diff --git a/homeassistant/components/esphome/manifest.json b/homeassistant/components/esphome/manifest.json
index e311a0913aeacc2d6dbb6fb72c6b23016c28a817..65c5bf44d5b00baec32a6293491230a3f5cfc39c 100644
--- a/homeassistant/components/esphome/manifest.json
+++ b/homeassistant/components/esphome/manifest.json
@@ -15,7 +15,7 @@
   "iot_class": "local_push",
   "loggers": ["aioesphomeapi", "noiseprotocol"],
   "requirements": [
-    "async_interrupt==1.1.1",
+    "async-interrupt==1.1.1",
     "aioesphomeapi==16.0.5",
     "bluetooth-data-tools==1.11.0",
     "esphome-dashboard-api==1.2.3"
diff --git a/homeassistant/components/foobot/manifest.json b/homeassistant/components/foobot/manifest.json
index 890cd95784cc5afee35294811f46b4a0ae53044e..a517f1fea6fa033e9f3ae86e9c6151544c291800 100644
--- a/homeassistant/components/foobot/manifest.json
+++ b/homeassistant/components/foobot/manifest.json
@@ -5,5 +5,5 @@
   "documentation": "https://www.home-assistant.io/integrations/foobot",
   "iot_class": "cloud_polling",
   "loggers": ["foobot_async"],
-  "requirements": ["foobot-async==1.0.0"]
+  "requirements": ["foobot_async==1.0.0"]
 }
diff --git a/homeassistant/components/gardena_bluetooth/manifest.json b/homeassistant/components/gardena_bluetooth/manifest.json
index 3e07eb1ad425f6ed579d3adcc209e165803779d9..bcbb25d55a264067c9386c50c945006f46594a45 100644
--- a/homeassistant/components/gardena_bluetooth/manifest.json
+++ b/homeassistant/components/gardena_bluetooth/manifest.json
@@ -13,5 +13,5 @@
   "dependencies": ["bluetooth_adapters"],
   "documentation": "https://www.home-assistant.io/integrations/gardena_bluetooth",
   "iot_class": "local_polling",
-  "requirements": ["gardena_bluetooth==1.4.0"]
+  "requirements": ["gardena-bluetooth==1.4.0"]
 }
diff --git a/homeassistant/components/greeneye_monitor/manifest.json b/homeassistant/components/greeneye_monitor/manifest.json
index 33a4947c01d23055c2a47d99d2d3d920414440b1..fcf4d004d265657474373e94edf8bbc92e3949bc 100644
--- a/homeassistant/components/greeneye_monitor/manifest.json
+++ b/homeassistant/components/greeneye_monitor/manifest.json
@@ -5,5 +5,5 @@
   "documentation": "https://www.home-assistant.io/integrations/greeneye_monitor",
   "iot_class": "local_push",
   "loggers": ["greeneye"],
-  "requirements": ["greeneye-monitor==3.0.3"]
+  "requirements": ["greeneye_monitor==3.0.3"]
 }
diff --git a/homeassistant/components/http/manifest.json b/homeassistant/components/http/manifest.json
index dec1b9485b6921be99c195e44c40ec6b94631a17..bce425adbdb6e95f2f5313eb332b71d856e148de 100644
--- a/homeassistant/components/http/manifest.json
+++ b/homeassistant/components/http/manifest.json
@@ -6,5 +6,5 @@
   "integration_type": "system",
   "iot_class": "local_push",
   "quality_scale": "internal",
-  "requirements": ["aiohttp-cors==0.7.0"]
+  "requirements": ["aiohttp_cors==0.7.0"]
 }
diff --git a/homeassistant/components/pushover/manifest.json b/homeassistant/components/pushover/manifest.json
index 3b538f756e0591321ac0215618d6b50770dc3055..d086321c0885ce3a0f4c73968dbcb09400dbd507 100644
--- a/homeassistant/components/pushover/manifest.json
+++ b/homeassistant/components/pushover/manifest.json
@@ -6,5 +6,5 @@
   "documentation": "https://www.home-assistant.io/integrations/pushover",
   "iot_class": "cloud_push",
   "loggers": ["pushover_complete"],
-  "requirements": ["pushover-complete==1.1.1"]
+  "requirements": ["pushover_complete==1.1.1"]
 }
diff --git a/homeassistant/components/tplink_omada/manifest.json b/homeassistant/components/tplink_omada/manifest.json
index 9c303b24661adfde978faea4dc1f5347681e5b2b..3215a9ba77dc57211d99056ce29e6fb5c4af803f 100644
--- a/homeassistant/components/tplink_omada/manifest.json
+++ b/homeassistant/components/tplink_omada/manifest.json
@@ -6,5 +6,5 @@
   "documentation": "https://www.home-assistant.io/integrations/tplink_omada",
   "integration_type": "hub",
   "iot_class": "local_polling",
-  "requirements": ["tplink_omada_client==1.3.2"]
+  "requirements": ["tplink-omada-client==1.3.2"]
 }
diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt
index b1ad7f7a3c540479e710a79ece5d1de71377a9d1..6c65a08a97e97d7112f869708591f644418404ef 100644
--- a/homeassistant/package_constraints.txt
+++ b/homeassistant/package_constraints.txt
@@ -1,6 +1,6 @@
 aiodiscover==1.5.1
-aiohttp-cors==0.7.0
 aiohttp==3.8.5
+aiohttp_cors==0.7.0
 astral==2.2
 async-timeout==4.0.3
 async-upnp-client==0.35.1
diff --git a/requirements_all.txt b/requirements_all.txt
index e7cb02e348f9157d45223d61860e58599e32fb3e..c059d20cbd5dbd727f7cf26373f7f199eb9640de 100644
--- a/requirements_all.txt
+++ b/requirements_all.txt
@@ -254,7 +254,7 @@ aiohomekit==3.0.3
 
 # homeassistant.components.emulated_hue
 # homeassistant.components.http
-aiohttp-cors==0.7.0
+aiohttp_cors==0.7.0
 
 # homeassistant.components.hue
 aiohue==4.6.2
@@ -448,7 +448,10 @@ arris-tg2492lg==1.2.1
 asmog==0.0.6
 
 # homeassistant.components.asterisk_mbox
-asterisk-mbox==0.5.0
+asterisk_mbox==0.5.0
+
+# homeassistant.components.esphome
+async-interrupt==1.1.1
 
 # homeassistant.components.dlna_dmr
 # homeassistant.components.dlna_dms
@@ -458,9 +461,6 @@ asterisk-mbox==0.5.0
 # homeassistant.components.yeelight
 async-upnp-client==0.35.1
 
-# homeassistant.components.esphome
-async_interrupt==1.1.1
-
 # homeassistant.components.keyboard_remote
 asyncinotify==4.0.2
 
@@ -818,7 +818,7 @@ flux-led==1.0.4
 fnv-hash-fast==0.4.1
 
 # homeassistant.components.foobot
-foobot-async==1.0.0
+foobot_async==1.0.0
 
 # homeassistant.components.forecast_solar
 forecast-solar==3.0.0
@@ -840,7 +840,7 @@ fritzconnection[qr]==1.13.2
 gTTS==2.2.4
 
 # homeassistant.components.gardena_bluetooth
-gardena_bluetooth==1.4.0
+gardena-bluetooth==1.4.0
 
 # homeassistant.components.google_assistant_sdk
 gassist-text==0.0.10
@@ -922,7 +922,7 @@ gps3==0.33.3
 greeclimate==1.4.1
 
 # homeassistant.components.greeneye_monitor
-greeneye-monitor==3.0.3
+greeneye_monitor==3.0.3
 
 # homeassistant.components.greenwave
 greenwavereality==0.5.1
@@ -1488,7 +1488,7 @@ pure-python-adb[async]==0.3.0.dev0
 pushbullet.py==0.11.0
 
 # homeassistant.components.pushover
-pushover-complete==1.1.1
+pushover_complete==1.1.1
 
 # homeassistant.components.pvoutput
 pvo==1.0.0
@@ -1535,6 +1535,9 @@ pyCEC==0.5.2
 # homeassistant.components.control4
 pyControl4==1.1.0
 
+# homeassistant.components.duotecno
+pyDuotecno==2023.8.4
+
 # homeassistant.components.eight_sleep
 pyEight==0.3.2
 
@@ -1662,9 +1665,6 @@ pydrawise==2023.8.0
 # homeassistant.components.android_ip_webcam
 pydroid-ipcam==2.0.0
 
-# homeassistant.components.duotecno
-pyduotecno==2023.8.4
-
 # homeassistant.components.ebox
 pyebox==1.1.4
 
@@ -2398,7 +2398,7 @@ sfrbox-api==0.0.6
 sharkiq==1.0.2
 
 # homeassistant.components.aquostv
-sharp-aquos-rc==0.3.2
+sharp_aquos_rc==0.3.2
 
 # homeassistant.components.shodan
 shodan==1.28.0
@@ -2587,7 +2587,7 @@ total-connect-client==2023.2
 tp-connected==0.0.4
 
 # homeassistant.components.tplink_omada
-tplink_omada_client==1.3.2
+tplink-omada-client==1.3.2
 
 # homeassistant.components.transmission
 transmission-rpc==4.1.5
diff --git a/requirements_test.txt b/requirements_test.txt
index 8da4e92c81d1dfb3c956ece4a98ae133b668eac6..2d0c256ac262830658326ea454340fc5d8ebf04e 100644
--- a/requirements_test.txt
+++ b/requirements_test.txt
@@ -29,7 +29,7 @@ pytest-unordered==0.5.2
 pytest-picked==0.4.6
 pytest-xdist==3.3.1
 pytest==7.3.1
-requests_mock==1.11.0
+requests-mock==1.11.0
 respx==0.20.2
 syrupy==4.5.0
 tqdm==4.66.1
diff --git a/requirements_test_all.txt b/requirements_test_all.txt
index 0f6f5d3880619a2315657ef7f03324c391c7871e..dbd433aa4c00ba6979399b6281f89c6f3f9dcb49 100644
--- a/requirements_test_all.txt
+++ b/requirements_test_all.txt
@@ -232,7 +232,7 @@ aiohomekit==3.0.3
 
 # homeassistant.components.emulated_hue
 # homeassistant.components.http
-aiohttp-cors==0.7.0
+aiohttp_cors==0.7.0
 
 # homeassistant.components.hue
 aiohue==4.6.2
@@ -404,6 +404,9 @@ aranet4==2.1.3
 # homeassistant.components.arcam_fmj
 arcam-fmj==1.4.0
 
+# homeassistant.components.esphome
+async-interrupt==1.1.1
+
 # homeassistant.components.dlna_dmr
 # homeassistant.components.dlna_dms
 # homeassistant.components.samsungtv
@@ -412,9 +415,6 @@ arcam-fmj==1.4.0
 # homeassistant.components.yeelight
 async-upnp-client==0.35.1
 
-# homeassistant.components.esphome
-async_interrupt==1.1.1
-
 # homeassistant.components.sleepiq
 asyncsleepiq==1.3.7
 
@@ -646,7 +646,7 @@ flux-led==1.0.4
 fnv-hash-fast==0.4.1
 
 # homeassistant.components.foobot
-foobot-async==1.0.0
+foobot_async==1.0.0
 
 # homeassistant.components.forecast_solar
 forecast-solar==3.0.0
@@ -662,7 +662,7 @@ fritzconnection[qr]==1.13.2
 gTTS==2.2.4
 
 # homeassistant.components.gardena_bluetooth
-gardena_bluetooth==1.4.0
+gardena-bluetooth==1.4.0
 
 # homeassistant.components.google_assistant_sdk
 gassist-text==0.0.10
@@ -726,7 +726,7 @@ govee-ble==0.23.0
 greeclimate==1.4.1
 
 # homeassistant.components.greeneye_monitor
-greeneye-monitor==3.0.3
+greeneye_monitor==3.0.3
 
 # homeassistant.components.pure_energie
 gridnet==4.2.0
@@ -1130,7 +1130,7 @@ pure-python-adb[async]==0.3.0.dev0
 pushbullet.py==0.11.0
 
 # homeassistant.components.pushover
-pushover-complete==1.1.1
+pushover_complete==1.1.1
 
 # homeassistant.components.pvoutput
 pvo==1.0.0
@@ -1165,6 +1165,9 @@ pyCEC==0.5.2
 # homeassistant.components.control4
 pyControl4==1.1.0
 
+# homeassistant.components.duotecno
+pyDuotecno==2023.8.4
+
 # homeassistant.components.eight_sleep
 pyEight==0.3.2
 
@@ -1241,9 +1244,6 @@ pydiscovergy==2.0.3
 # homeassistant.components.android_ip_webcam
 pydroid-ipcam==2.0.0
 
-# homeassistant.components.duotecno
-pyduotecno==2023.8.4
-
 # homeassistant.components.econet
 pyeconet==0.1.20
 
@@ -1899,7 +1899,7 @@ toonapi==0.2.1
 total-connect-client==2023.2
 
 # homeassistant.components.tplink_omada
-tplink_omada_client==1.3.2
+tplink-omada-client==1.3.2
 
 # homeassistant.components.transmission
 transmission-rpc==4.1.5