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 +1 -1
- esphome/wizard.py +42 -8
- esphome/writer.py +13 -0
- {esphome-2025.9.0b3.dist-info → esphome-2025.9.0b4.dist-info}/METADATA +1 -1
- {esphome-2025.9.0b3.dist-info → esphome-2025.9.0b4.dist-info}/RECORD +9 -9
- {esphome-2025.9.0b3.dist-info → esphome-2025.9.0b4.dist-info}/WHEEL +0 -0
- {esphome-2025.9.0b3.dist-info → esphome-2025.9.0b4.dist-info}/entry_points.txt +0 -0
- {esphome-2025.9.0b3.dist-info → esphome-2025.9.0b4.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.9.0b3.dist-info → esphome-2025.9.0b4.dist-info}/top_level.txt +0 -0
esphome/const.py
CHANGED
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
|
-
|
|
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
|
-
|
|
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.
|
|
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=
|
|
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=
|
|
32
|
-
esphome/writer.py,sha256=
|
|
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.
|
|
3770
|
-
esphome-2025.9.
|
|
3771
|
-
esphome-2025.9.
|
|
3772
|
-
esphome-2025.9.
|
|
3773
|
-
esphome-2025.9.
|
|
3774
|
-
esphome-2025.9.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|