esphome 2025.4.0b3__py3-none-any.whl → 2025.4.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -265,6 +265,12 @@ void BluetoothProxy::bluetooth_device_request(const api::BluetoothDeviceRequest
265
265
  connection->get_connection_index(), connection->address_str().c_str());
266
266
  return;
267
267
  } else if (connection->state() == espbt::ClientState::CONNECTING) {
268
+ if (connection->disconnect_pending()) {
269
+ ESP_LOGW(TAG, "[%d] [%s] Connection request while pending disconnect, cancelling pending disconnect",
270
+ connection->get_connection_index(), connection->address_str().c_str());
271
+ connection->cancel_pending_disconnect();
272
+ return;
273
+ }
268
274
  ESP_LOGW(TAG, "[%d] [%s] Connection request ignored, already connecting", connection->get_connection_index(),
269
275
  connection->address_str().c_str());
270
276
  return;
@@ -187,7 +187,7 @@ void ENS160Component::update() {
187
187
  }
188
188
  return;
189
189
  case INVALID_OUTPUT:
190
- ESP_LOGE(TAG, "ENS160 Invalid Status - No Invalid Output");
190
+ ESP_LOGE(TAG, "ENS160 Invalid Status - No valid output");
191
191
  this->status_set_warning();
192
192
  return;
193
193
  }
@@ -173,6 +173,8 @@ class ESPBTClient : public ESPBTDeviceListener {
173
173
  virtual void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) = 0;
174
174
  virtual void connect() = 0;
175
175
  virtual void disconnect() = 0;
176
+ bool disconnect_pending() const { return this->want_disconnect_; }
177
+ void cancel_pending_disconnect() { this->want_disconnect_ = false; }
176
178
  virtual void set_state(ClientState st) {
177
179
  this->state_ = st;
178
180
  if (st == ClientState::IDLE) {
@@ -120,6 +120,7 @@ void LvglComponent::add_event_cb(lv_obj_t *obj, event_callback_t callback, lv_ev
120
120
  void LvglComponent::add_page(LvPageType *page) {
121
121
  this->pages_.push_back(page);
122
122
  page->set_parent(this);
123
+ lv_disp_set_default(this->disp_);
123
124
  page->setup(this->pages_.size() - 1);
124
125
  }
125
126
  void LvglComponent::show_page(size_t index, lv_scr_load_anim_t anim, uint32_t time) {
@@ -111,7 +111,7 @@ void OnlineImage::update() {
111
111
  case ImageFormat::BMP:
112
112
  accept_mime_type = "image/bmp";
113
113
  break;
114
- #endif // ONLINE_IMAGE_BMP_SUPPORT
114
+ #endif // USE_ONLINE_IMAGE_BMP_SUPPORT
115
115
  #ifdef USE_ONLINE_IMAGE_JPEG_SUPPORT
116
116
  case ImageFormat::JPEG:
117
117
  accept_mime_type = "image/jpeg";
@@ -121,7 +121,7 @@ void OnlineImage::update() {
121
121
  case ImageFormat::PNG:
122
122
  accept_mime_type = "image/png";
123
123
  break;
124
- #endif // ONLINE_IMAGE_PNG_SUPPORT
124
+ #endif // USE_ONLINE_IMAGE_PNG_SUPPORT
125
125
  default:
126
126
  accept_mime_type = "image/*";
127
127
  }
@@ -159,7 +159,7 @@ void OnlineImage::update() {
159
159
  ESP_LOGD(TAG, "Allocating BMP decoder");
160
160
  this->decoder_ = make_unique<BmpDecoder>(this);
161
161
  }
162
- #endif // ONLINE_IMAGE_BMP_SUPPORT
162
+ #endif // USE_ONLINE_IMAGE_BMP_SUPPORT
163
163
  #ifdef USE_ONLINE_IMAGE_JPEG_SUPPORT
164
164
  if (this->format_ == ImageFormat::JPEG) {
165
165
  ESP_LOGD(TAG, "Allocating JPEG decoder");
@@ -171,7 +171,7 @@ void OnlineImage::update() {
171
171
  ESP_LOGD(TAG, "Allocating PNG decoder");
172
172
  this->decoder_ = make_unique<PngDecoder>(this);
173
173
  }
174
- #endif // ONLINE_IMAGE_PNG_SUPPORT
174
+ #endif // USE_ONLINE_IMAGE_PNG_SUPPORT
175
175
 
176
176
  if (!this->decoder_) {
177
177
  ESP_LOGE(TAG, "Could not instantiate decoder. Image format unsupported: %d", this->format_);
@@ -185,7 +185,7 @@ void OnlineImage::update() {
185
185
  this->download_error_callback_.call();
186
186
  return;
187
187
  }
188
- ESP_LOGI(TAG, "Downloading image (Size: %d)", total_size);
188
+ ESP_LOGI(TAG, "Downloading image (Size: %zu)", total_size);
189
189
  this->start_time_ = ::time(nullptr);
190
190
  }
191
191
 
@@ -1,7 +1,8 @@
1
1
 
2
2
  #ifdef USE_ESP32
3
3
  #include "psram.h"
4
- #ifdef USE_ESP_IDF
4
+ #include <esp_idf_version.h>
5
+ #if defined(USE_ESP_IDF) && ESP_IDF_VERSION_MAJOR >= 5
5
6
  #include <esp_psram.h>
6
7
  #endif // USE_ESP_IDF
7
8
 
@@ -15,7 +16,7 @@ static const char *const TAG = "psram";
15
16
 
16
17
  void PsramComponent::dump_config() {
17
18
  ESP_LOGCONFIG(TAG, "PSRAM:");
18
- #ifdef USE_ESP_IDF
19
+ #if defined(USE_ESP_IDF) && ESP_IDF_VERSION_MAJOR >= 5
19
20
  bool available = esp_psram_is_initialized();
20
21
 
21
22
  ESP_LOGCONFIG(TAG, " Available: %s", YESNO(available));
@@ -6,6 +6,7 @@
6
6
  #include <cinttypes>
7
7
  #include <cstdint>
8
8
  #ifdef USE_ESP32
9
+ #include <soc/soc_caps.h>
9
10
  #include "esp_idf_version.h"
10
11
  #include "esp_task_wdt.h"
11
12
  #endif
@@ -40,7 +41,7 @@ void WatchdogManager::set_timeout_(uint32_t timeout_ms) {
40
41
  #if ESP_IDF_VERSION_MAJOR >= 5
41
42
  esp_task_wdt_config_t wdt_config = {
42
43
  .timeout_ms = timeout_ms,
43
- .idle_core_mask = 0x03,
44
+ .idle_core_mask = (1 << SOC_CPU_CORES_NUM) - 1,
44
45
  .trigger_panic = true,
45
46
  };
46
47
  esp_task_wdt_reconfigure(&wdt_config);
esphome/const.py CHANGED
@@ -1,6 +1,6 @@
1
1
  """Constants used by esphome."""
2
2
 
3
- __version__ = "2025.4.0b3"
3
+ __version__ = "2025.4.1"
4
4
 
5
5
  ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
6
6
  VALID_SUBSTITUTIONS_CHARACTERS = (
esphome/log.py CHANGED
@@ -74,13 +74,14 @@ def setup_log(
74
74
 
75
75
  colorama.init()
76
76
 
77
- if log_level == logging.DEBUG:
77
+ # Setup logging - will map log level from string to constant
78
+ logging.basicConfig(level=log_level)
79
+
80
+ if logging.root.level == logging.DEBUG:
78
81
  CORE.verbose = True
79
- elif log_level == logging.CRITICAL:
82
+ elif logging.root.level == logging.CRITICAL:
80
83
  CORE.quiet = True
81
84
 
82
- logging.basicConfig(level=log_level)
83
-
84
85
  logging.getLogger("urllib3").setLevel(logging.WARNING)
85
86
 
86
87
  logging.getLogger().handlers[0].setFormatter(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: esphome
3
- Version: 2025.4.0b3
3
+ Version: 2025.4.1
4
4
  Summary: ESPHome is a system to configure your microcontrollers by simple yet powerful configuration files and control them remotely through Home Automation systems.
5
5
  Author-email: The ESPHome Authors <esphome@openhomefoundation.org>
6
6
  License: MIT
@@ -5,7 +5,7 @@ esphome/codegen.py,sha256=GePHUM7xdXb_Pil59SHVsXg2F4VBPgkH-Fz2PDX8Z54,1873
5
5
  esphome/config.py,sha256=fFrDYbhWY1xn_onAl_0jwlg9D8NkK_FdKULTlnjZtxs,39832
6
6
  esphome/config_helpers.py,sha256=MKf_wzO35nn41FvigXE0iYKDslPgL2ruf8R-EPtTT2I,3256
7
7
  esphome/config_validation.py,sha256=cjOlphJs-ybsA2VlXXPY-lYq80Vm2uPJ8oIXtWhiPU4,62490
8
- esphome/const.py,sha256=YmUUDO7IIGmZtHl5_2ncQyd2O0m97EQf-lynj7iIzbo,40830
8
+ esphome/const.py,sha256=UC1S6lqRz-unu1Uod0Ml5ej8ZG7qAToiFVU2iLZBNbc,40828
9
9
  esphome/coroutine.py,sha256=j_14z8dIIzIBeuNO30D4c1RJvMMt1xZFZ58Evd-EvJA,9344
10
10
  esphome/cpp_generator.py,sha256=1g-y3fxWSrd5Kpbz6DrJXaQajjuwQiTIaTRIz9n7svI,31237
11
11
  esphome/cpp_helpers.py,sha256=6C2vNbOIhZKi43xRVlk5hp9GfshfBn-rc5D_ZFUEYaE,4801
@@ -16,7 +16,7 @@ esphome/final_validate.py,sha256=EPhbU4xyEL3POdSY7oygyAIVvkeYM7qH-6eZWb76DFE,189
16
16
  esphome/git.py,sha256=rKb5JUc05nbRlvR4tRWGL851ANZUYuS7YZp5Tm5wHjE,6296
17
17
  esphome/helpers.py,sha256=2mQ0eyOLjdjaLRL6jdcJfg4UMnqEFY8ORrmEGc5yNHc,12435
18
18
  esphome/loader.py,sha256=5C-agEUY5AnES6Tdn8KTfot89HIQPeGYu8W1s4ZqT9M,6821
19
- esphome/log.py,sha256=HByzlt3RWl0bVsBnu43veUpVHSCdBjL9W6gYEhdNJkE,2098
19
+ esphome/log.py,sha256=XqVmsRvi4hHUkjcjwTSFBYbbXonNeoRKPE9bx9kfWf0,2181
20
20
  esphome/mqtt.py,sha256=jjmdEk-_ov_pAuy-FqNPQlPB1VOJEs8iFi4pe2gdiTM,9223
21
21
  esphome/pins.py,sha256=wO0d-2qn0fhT6WEN0H0AmYRSH90jW154hZT7RewMGYI,10713
22
22
  esphome/platformio_api.py,sha256=OEWhPZ2NQnTrZ3Vtm0IqW0E-xE7EyVhs5w3OtT2xfDY,11905
@@ -380,7 +380,7 @@ esphome/components/ble_scanner/text_sensor.py,sha256=yOB-AMBbNwJ0K9zYXh3ZedA42Os
380
380
  esphome/components/bluetooth_proxy/__init__.py,sha256=yBpHNPhRuw7B_LKUvGFZLnrqItID31kQG-DTT679uu8,3282
381
381
  esphome/components/bluetooth_proxy/bluetooth_connection.cpp,sha256=KBSjOMljcqOsJ0hDSuJjhi8A9GK0_JnL9CPMfs1CDkc,11223
382
382
  esphome/components/bluetooth_proxy/bluetooth_connection.h,sha256=oR0r7QAUNABFMKB_anI_l7lI-iOE6RbyBPkDozoC14Y,1171
383
- esphome/components/bluetooth_proxy/bluetooth_proxy.cpp,sha256=Y6IEGD1-jzbcOYM4vHib0fHO2NSDZCu0RRN6JPSyPsU,22136
383
+ esphome/components/bluetooth_proxy/bluetooth_proxy.cpp,sha256=J5365iSzQ6C61hAAHqnd1jBhjPqp0dsmiat0mDLWv_Q,22466
384
384
  esphome/components/bluetooth_proxy/bluetooth_proxy.h,sha256=lEx8Qx2fcjkBU24vT39VUUuwkVJdQ2cB0lG9hTp0lM8,5144
385
385
  esphome/components/bme280_base/__init__.py,sha256=KQhkrj8Ny2lMRUdJXaem5z3-fiR2J82b9AGe58xnZgE,3688
386
386
  esphome/components/bme280_base/bme280_base.cpp,sha256=st3cMKvdG49rHF-pRfplpqhcFAfLZ_YxNmGouiPUQH4,12989
@@ -754,7 +754,7 @@ esphome/components/endstop/endstop_cover.h,sha256=RRAAHaZRkRjH9Q2KMLDCoGnQ44Z_lC
754
754
  esphome/components/ens160/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
755
755
  esphome/components/ens160/sensor.py,sha256=JmqJW89ItAMvLqzpgrwWuLsNJctyV-_6i18t4rb-KcA,164
756
756
  esphome/components/ens160_base/__init__.py,sha256=VGWuu4IdB7GWLOns49nmj1dWQAUD3FmTYyyxYRRqMAI,2473
757
- esphome/components/ens160_base/ens160_base.cpp,sha256=SbEkBiH0BI8SLUIxsP7bNSyLOBkcAWtSBALqWlwVwts,9984
757
+ esphome/components/ens160_base/ens160_base.cpp,sha256=PRgqcB07kwVCQuquMFx5SjtT8j5ON3ZB-a6x2m2yn0M,9982
758
758
  esphome/components/ens160_base/ens160_base.h,sha256=u8rmUObUBj9JtxNJLjGS_Mv4ZhSmd0R9NwJeNX4D-yo,1732
759
759
  esphome/components/ens160_i2c/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
760
760
  esphome/components/ens160_i2c/ens160_i2c.cpp,sha256=qXi0VlzYvveeoNPMJh6DmGM_QG-Zc15aKL7T9HS76-0,932
@@ -842,7 +842,7 @@ esphome/components/esp32_ble_server/ble_service.h,sha256=BvKpr2fsUlNnviH9gdokI7I
842
842
  esphome/components/esp32_ble_tracker/__init__.py,sha256=mfStrLvJxJcTc1koz1grSqbslqG0SxCpQfi1899vRZk,14649
843
843
  esphome/components/esp32_ble_tracker/automation.h,sha256=0pDA6EX__f14sT0KJwcnqg7UOsueKjjegHPznQj9biw,3795
844
844
  esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp,sha256=-h-yvcDYOCk9zKLmMo45aroEg5vguELxJ3YiW8X-mYA,27960
845
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.h,sha256=tsiHIew8JftoOwHDI9AcD8CSKQLTqnxTHONdvwPix0g,9348
845
+ esphome/components/esp32_ble_tracker/esp32_ble_tracker.h,sha256=D5YTrA5WROUkupXP5uW5y_xqAmfAoT3xxuHHsQ0-Dso,9488
846
846
  esphome/components/esp32_camera/__init__.py,sha256=JL1umjoPo8qLDUaFYQWI34j-ItCshy8COQgn2sa3csM,12630
847
847
  esphome/components/esp32_camera/esp32_camera.cpp,sha256=Ba2nu453rF4FDSlIJwD5sLnzE8ru4kKK4xVCvMdoyac,16960
848
848
  esphome/components/esp32_camera/esp32_camera.h,sha256=3-MKRSBcjDgI3I0uKmt0bGSfp2t6B85Zsjr06tmpa9Q,7590
@@ -1524,7 +1524,7 @@ esphome/components/lvgl/helpers.py,sha256=XI3C5IHwoSVlgR32kMxeXTZWK6iW112nmWv5wB
1524
1524
  esphome/components/lvgl/keypads.py,sha256=jtQjAG4vbTzI5Pr1IBfrEEPzV_0k4wkKfCMfsef6VT4,2124
1525
1525
  esphome/components/lvgl/lv_validation.py,sha256=8FoODFSzpxWUzRcwk7zOmv6TIpN9yXaHDIJjoCifOiA,13843
1526
1526
  esphome/components/lvgl/lvcode.py,sha256=pTpwXB0ZehgHVMF1y-fAvaTZPTbWfwA-iZwTbl2W9hI,10118
1527
- esphome/components/lvgl/lvgl_esphome.cpp,sha256=ZxJ-bm7wTxIbNST4uPLlhvGysfqOVqKyg1AOJzQe0aE,19253
1527
+ esphome/components/lvgl/lvgl_esphome.cpp,sha256=ffClk2SbGPxafbMZRshkkO-4MESBih4ADsfVpbj7cAg,19289
1528
1528
  esphome/components/lvgl/lvgl_esphome.h,sha256=8a5DaKfK0jWa1dQsA0bC0aw_RoPrLXC5vcBzVi4CCXU,13927
1529
1529
  esphome/components/lvgl/lvgl_hal.h,sha256=aZqWpSmKKAB-ZfNxxgxjgASTtLpAZjXJKuoTiPB0qqU,431
1530
1530
  esphome/components/lvgl/lvgl_proxy.h,sha256=JPmVBVh5zD5nraJCN7PqXVmQQlc4CPJe_X9tA6IAtXQ,547
@@ -2028,7 +2028,7 @@ esphome/components/online_image/image_decoder.cpp,sha256=p_693Ac8F-vs2n_1AZ7E57H
2028
2028
  esphome/components/online_image/image_decoder.h,sha256=A8sU-3m5dkyR8S2wXbeR7v7C5mRSLxrvfvsBPYz3a90,3798
2029
2029
  esphome/components/online_image/jpeg_image.cpp,sha256=1qDTfzp7H6oxuRVBVXXgglourmlcBO4uvxQK6YLDFl4,2867
2030
2030
  esphome/components/online_image/jpeg_image.h,sha256=RxlXrSxgd_j7tXYMGdkU1gVmkWB6Jc0YHuq13NrY9fc,741
2031
- esphome/components/online_image/online_image.cpp,sha256=4gJksrHknRF4ZxKRL8gnBMsh_kKY_YV5177tIrr4hzw,10568
2031
+ esphome/components/online_image/online_image.cpp,sha256=NpXUoKdbIJRdPcY5tQ-fxa6WLpTYeRs8sHJnNP2M2pA,10585
2032
2032
  esphome/components/online_image/online_image.h,sha256=40F0zWRI0p6A8pFfQdQ1eD5tnwgCxBDbeNcpCHgeUzk,7177
2033
2033
  esphome/components/online_image/png_image.cpp,sha256=ysXfjX05YPuZaG0wxHg0EiPlj3HlddQqUdDG25W1jpY,2432
2034
2034
  esphome/components/online_image/png_image.h,sha256=oDyTIkyOB2MiKxZ9YmctwN7sbc_E7Qz0PvFxWg9Lip8,783
@@ -2197,7 +2197,7 @@ esphome/components/prometheus/__init__.py,sha256=V3QD6_RZk7tY7PDuKNbQzzimbgRJ0hk
2197
2197
  esphome/components/prometheus/prometheus_handler.cpp,sha256=CYECmgJoD3rXlcBN5GPrDStNuIT34JAAOmpjLL27F64,30420
2198
2198
  esphome/components/prometheus/prometheus_handler.h,sha256=iw1ecV2tnDMA1H6kk59P0I-fE-P8bOrHkRnURi3epRg,6773
2199
2199
  esphome/components/psram/__init__.py,sha256=fmi0xiOuhBdYMt5Wab9PetwRLCbPEz7PtmZHf0CEXzo,3983
2200
- esphome/components/psram/psram.cpp,sha256=S4KxEKxGihvP4GMvpmgGe6KluasB7XUTPpiqtHYS1bs,1408
2200
+ esphome/components/psram/psram.cpp,sha256=ryng74NZ0ok4miBDb21vgwDjl2IWFirZXeh3S4tNfNY,1509
2201
2201
  esphome/components/psram/psram.h,sha256=LdElwxbKK68o4J9sdmMX8RZn5D94lXhCCSDm83Ge2jc,239
2202
2202
  esphome/components/pulse_counter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2203
2203
  esphome/components/pulse_counter/automation.h,sha256=y-QRATOjByPNkmMaTlaIwvO3q1hpJyifb39GV85CS7c,644
@@ -3220,7 +3220,7 @@ esphome/components/wake_on_lan/button.py,sha256=QQwzh-kUVI8RJVxCP_JpQUk0A9lDDf-c
3220
3220
  esphome/components/wake_on_lan/wake_on_lan.cpp,sha256=6rxv_zyBNuYUn-DoahTna0qusEkw4KuU9ccvWU3ZZTY,3114
3221
3221
  esphome/components/wake_on_lan/wake_on_lan.h,sha256=46_1RmAkbCIzHZc0m4ZuJgdO2QHkiWjGuB7hw7MgKZM,984
3222
3222
  esphome/components/watchdog/__init__.py,sha256=phrvkU9sRMp2iVLKx5pNCG11R1HtrJChggVbad-OVWA,26
3223
- esphome/components/watchdog/watchdog.cpp,sha256=oQlZLqWN3CiiyKqn_R77K_IOtjKJbrzPvcc8dKWL1r8,1633
3223
+ esphome/components/watchdog/watchdog.cpp,sha256=A8--WFI3ccw62n7A-MZSmwtO_I2g2rC4bpEUB-kbEWo,1683
3224
3224
  esphome/components/watchdog/watchdog.h,sha256=8Ro3Kgi9C1bYFBkNEeKc188EK63uI48VuzhF5yHPuCk,400
3225
3225
  esphome/components/waveshare_epaper/__init__.py,sha256=4Nn7UhpMJ9oSbuLdyVEW7G9PlIey2v33SWRNVizt9Oc,30
3226
3226
  esphome/components/waveshare_epaper/display.py,sha256=DBEN5glBcXQBvv0bwLcddNzP-fkeyk-yKeHsfPXw1nM,9794
@@ -3481,9 +3481,9 @@ esphome/dashboard/util/itertools.py,sha256=8eLrWEWmICLtXNxkKdYPQV0c_N4GEz8m9Npnb
3481
3481
  esphome/dashboard/util/password.py,sha256=cQz3b9B-ijTe7zS6BeCW0hc3pWv6JjC78jmnycYYAh8,321
3482
3482
  esphome/dashboard/util/subprocess.py,sha256=T8EW6dbU4LPd2DG1dRrdh8li71tt6J1isn411poMhkk,1022
3483
3483
  esphome/dashboard/util/text.py,sha256=ENDnfN4O0NdA3CKVJjQYabFbwbrsIhVKrAMQe53qYu4,534
3484
- esphome-2025.4.0b3.dist-info/licenses/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
3485
- esphome-2025.4.0b3.dist-info/METADATA,sha256=Jt9b7fnpji_hJPcBRJbXakJEdCnvd-2YgwXzUbqTx-4,3673
3486
- esphome-2025.4.0b3.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
3487
- esphome-2025.4.0b3.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
3488
- esphome-2025.4.0b3.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
3489
- esphome-2025.4.0b3.dist-info/RECORD,,
3484
+ esphome-2025.4.1.dist-info/licenses/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
3485
+ esphome-2025.4.1.dist-info/METADATA,sha256=jj3WZGaXL8BXOWuytPx-HxMTDPq2ycMg7c89WNWW0EM,3671
3486
+ esphome-2025.4.1.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
3487
+ esphome-2025.4.1.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
3488
+ esphome-2025.4.1.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
3489
+ esphome-2025.4.1.dist-info/RECORD,,