esphome 2025.9.0b3__py3-none-any.whl → 2025.9.0b4__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.

Potentially problematic release.


This version of esphome might be problematic. Click here for more details.

esphome/const.py CHANGED
@@ -4,7 +4,7 @@ from enum import Enum
4
4
 
5
5
  from esphome.enum import StrEnum
6
6
 
7
- __version__ = "2025.9.0b3"
7
+ __version__ = "2025.9.0b4"
8
8
 
9
9
  ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
10
10
  VALID_SUBSTITUTIONS_CHARACTERS = (
esphome/wizard.py CHANGED
@@ -1,6 +1,7 @@
1
1
  import os
2
2
  import random
3
3
  import string
4
+ from typing import Literal, NotRequired, TypedDict, Unpack
4
5
  import unicodedata
5
6
 
6
7
  import voluptuous as vol
@@ -103,11 +104,25 @@ HARDWARE_BASE_CONFIGS = {
103
104
  }
104
105
 
105
106
 
106
- def sanitize_double_quotes(value):
107
+ def sanitize_double_quotes(value: str) -> str:
107
108
  return value.replace("\\", "\\\\").replace('"', '\\"')
108
109
 
109
110
 
110
- def wizard_file(**kwargs):
111
+ class WizardFileKwargs(TypedDict):
112
+ """Keyword arguments for wizard_file function."""
113
+
114
+ name: str
115
+ platform: Literal["ESP8266", "ESP32", "RP2040", "BK72XX", "LN882X", "RTL87XX"]
116
+ board: str
117
+ ssid: NotRequired[str]
118
+ psk: NotRequired[str]
119
+ password: NotRequired[str]
120
+ ota_password: NotRequired[str]
121
+ api_encryption_key: NotRequired[str]
122
+ friendly_name: NotRequired[str]
123
+
124
+
125
+ def wizard_file(**kwargs: Unpack[WizardFileKwargs]) -> str:
111
126
  letters = string.ascii_letters + string.digits
112
127
  ap_name_base = kwargs["name"].replace("_", " ").title()
113
128
  ap_name = f"{ap_name_base} Fallback Hotspot"
@@ -180,7 +195,25 @@ captive_portal:
180
195
  return config
181
196
 
182
197
 
183
- def wizard_write(path, **kwargs):
198
+ class WizardWriteKwargs(TypedDict):
199
+ """Keyword arguments for wizard_write function."""
200
+
201
+ name: str
202
+ type: Literal["basic", "empty", "upload"]
203
+ # Required for "basic" type
204
+ board: NotRequired[str]
205
+ platform: NotRequired[str]
206
+ ssid: NotRequired[str]
207
+ psk: NotRequired[str]
208
+ password: NotRequired[str]
209
+ ota_password: NotRequired[str]
210
+ api_encryption_key: NotRequired[str]
211
+ friendly_name: NotRequired[str]
212
+ # Required for "upload" type
213
+ file_text: NotRequired[str]
214
+
215
+
216
+ def wizard_write(path: str, **kwargs: Unpack[WizardWriteKwargs]) -> bool:
184
217
  from esphome.components.bk72xx import boards as bk72xx_boards
185
218
  from esphome.components.esp32 import boards as esp32_boards
186
219
  from esphome.components.esp8266 import boards as esp8266_boards
@@ -237,14 +270,14 @@ def wizard_write(path, **kwargs):
237
270
 
238
271
  if get_bool_env(ENV_QUICKWIZARD):
239
272
 
240
- def sleep(time):
273
+ def sleep(time: float) -> None:
241
274
  pass
242
275
 
243
276
  else:
244
277
  from time import sleep
245
278
 
246
279
 
247
- def safe_print_step(step, big):
280
+ def safe_print_step(step: int, big: str) -> None:
248
281
  safe_print()
249
282
  safe_print()
250
283
  safe_print(f"============= STEP {step} =============")
@@ -253,14 +286,14 @@ def safe_print_step(step, big):
253
286
  sleep(0.25)
254
287
 
255
288
 
256
- def default_input(text, default):
289
+ def default_input(text: str, default: str) -> str:
257
290
  safe_print()
258
291
  safe_print(f"Press ENTER for default ({default})")
259
292
  return safe_input(text.format(default)) or default
260
293
 
261
294
 
262
295
  # From https://stackoverflow.com/a/518232/8924614
263
- def strip_accents(value):
296
+ def strip_accents(value: str) -> str:
264
297
  return "".join(
265
298
  c
266
299
  for c in unicodedata.normalize("NFD", str(value))
@@ -268,7 +301,7 @@ def strip_accents(value):
268
301
  )
269
302
 
270
303
 
271
- def wizard(path):
304
+ def wizard(path: str) -> int:
272
305
  from esphome.components.bk72xx import boards as bk72xx_boards
273
306
  from esphome.components.esp32 import boards as esp32_boards
274
307
  from esphome.components.esp8266 import boards as esp8266_boards
@@ -509,6 +542,7 @@ def wizard(path):
509
542
  ssid=ssid,
510
543
  psk=psk,
511
544
  password=password,
545
+ type="basic",
512
546
  ):
513
547
  return 1
514
548
 
esphome/writer.py CHANGED
@@ -315,6 +315,19 @@ def clean_build():
315
315
  _LOGGER.info("Deleting %s", dependencies_lock)
316
316
  os.remove(dependencies_lock)
317
317
 
318
+ # Clean PlatformIO cache to resolve CMake compiler detection issues
319
+ # This helps when toolchain paths change or get corrupted
320
+ try:
321
+ from platformio.project.helpers import get_project_cache_dir
322
+ except ImportError:
323
+ # PlatformIO is not available, skip cache cleaning
324
+ pass
325
+ else:
326
+ cache_dir = get_project_cache_dir()
327
+ if cache_dir and cache_dir.strip() and os.path.isdir(cache_dir):
328
+ _LOGGER.info("Deleting PlatformIO cache %s", cache_dir)
329
+ shutil.rmtree(cache_dir)
330
+
318
331
 
319
332
  GITIGNORE_CONTENT = """# Gitignore settings for ESPHome
320
333
  # This is an example and may include too much for your use-case.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: esphome
3
- Version: 2025.9.0b3
3
+ Version: 2025.9.0b4
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=H_WB4rj0uEowvlhEb31EjJQwutLQ5CQkJIsNgDK-wx8,1917
5
5
  esphome/config.py,sha256=74-Y3XKtlB9h__fsu-Zvj6PanDWufVGo1-W4jlG-8cg,43172
6
6
  esphome/config_helpers.py,sha256=E0UO0khX9JW-br_NSsDlLH3VuE-YwMQ99_pzEQVupDc,5391
7
7
  esphome/config_validation.py,sha256=WB_2g9itbOi2z8bo25t8AG1rKHzLZdfa_DiTYQMuxrQ,64839
8
- esphome/const.py,sha256=V_KL_7copxuxPEKCWshLHGBtUhTkAZLPBRuELUzro5M,44218
8
+ esphome/const.py,sha256=OJSPrWEJdmTRErus6q7bm4Ci5G8OZWQQetSOVvFoJYg,44218
9
9
  esphome/coroutine.py,sha256=q2Bcr0MU6CviHLYRV_0lvSo0sLKQnsVlDM0yw-JxOa4,11587
10
10
  esphome/cpp_generator.py,sha256=C9O-H6ekHHdIEsfLGiqo-Sv6LZCmS0OL4A5ZGYHyh6U,32209
11
11
  esphome/cpp_helpers.py,sha256=r-hrUp7luke-ByuK2Z0TCzIvn4tTswMUkAzlVoKntiI,4039
@@ -28,8 +28,8 @@ esphome/types.py,sha256=w5JgG0GQ3vWRwcLpf7A-hkbjRNDX70G0ye845zSyWfg,625
28
28
  esphome/util.py,sha256=IJvyB7f305s8YSM4WgjIPNavTlDPapKnUqmIEARpF2s,11213
29
29
  esphome/voluptuous_schema.py,sha256=EKm4CIP5-e6wY6L1_RleMGCDYbFOWTK_Sa_oO94Advc,9529
30
30
  esphome/vscode.py,sha256=Zg6ToHy7holnMswcSUGm6-89mRsf88owU2kr864eTP0,4241
31
- esphome/wizard.py,sha256=F9LA1y7IyTcMLY9SIKml6ENniYCjfLKauc-81gu3qzU,16427
32
- esphome/writer.py,sha256=cX4txB8gSbrDwZ1HiGk7JjIDD1I5-azW18HuvXO6AoI,10363
31
+ esphome/wizard.py,sha256=xDcHKoJa4pCUJBQjL8BuB2QnwFu1E7z1GlEqW0kFUFo,17573
32
+ esphome/writer.py,sha256=FGHW4MrPDv6GSOZdu8jTYf6FdwyjODIydHf2_DTlUNA,10904
33
33
  esphome/yaml_util.py,sha256=_NKLTaGK9rqjV3r3i-5d_HfZoPBtbtqIvZZ86qMt-oI,23166
34
34
  esphome/zeroconf.py,sha256=dy3aWh1Lf4Sh5e7Izlq30FkdzAKWA6IGvZkXuxYrxFE,6511
35
35
  esphome/build_gen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -3766,9 +3766,9 @@ esphome/dashboard/util/itertools.py,sha256=8eLrWEWmICLtXNxkKdYPQV0c_N4GEz8m9Npnb
3766
3766
  esphome/dashboard/util/password.py,sha256=cQz3b9B-ijTe7zS6BeCW0hc3pWv6JjC78jmnycYYAh8,321
3767
3767
  esphome/dashboard/util/subprocess.py,sha256=T8EW6dbU4LPd2DG1dRrdh8li71tt6J1isn411poMhkk,1022
3768
3768
  esphome/dashboard/util/text.py,sha256=wwFtORlvHjsYkqb68IT-772LHAhWxT4OtnkIcPICQB0,317
3769
- esphome-2025.9.0b3.dist-info/licenses/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
3770
- esphome-2025.9.0b3.dist-info/METADATA,sha256=qSVncUotX9od12PP0k-zlr5QbEYVydHb7mXyQAhegj4,3634
3771
- esphome-2025.9.0b3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
3772
- esphome-2025.9.0b3.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
3773
- esphome-2025.9.0b3.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
3774
- esphome-2025.9.0b3.dist-info/RECORD,,
3769
+ esphome-2025.9.0b4.dist-info/licenses/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
3770
+ esphome-2025.9.0b4.dist-info/METADATA,sha256=Tqq-x-J8pFDxL0NdKjhu3gkOzagg4xnE2V4TBtFm8Es,3634
3771
+ esphome-2025.9.0b4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
3772
+ esphome-2025.9.0b4.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
3773
+ esphome-2025.9.0b4.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
3774
+ esphome-2025.9.0b4.dist-info/RECORD,,