idf-build-apps 2.13.2__py3-none-any.whl → 2.14.0__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.
- idf_build_apps/__init__.py +2 -2
- idf_build_apps/__main__.py +1 -1
- idf_build_apps/app.py +4 -2
- idf_build_apps/args.py +15 -2
- idf_build_apps/autocompletions.py +1 -1
- idf_build_apps/constants.py +1 -1
- idf_build_apps/finder.py +1 -1
- idf_build_apps/junit/__init__.py +1 -1
- idf_build_apps/junit/report.py +1 -1
- idf_build_apps/junit/utils.py +1 -1
- idf_build_apps/log.py +1 -1
- idf_build_apps/main.py +14 -8
- idf_build_apps/manifest/__init__.py +1 -1
- idf_build_apps/manifest/manifest.py +20 -6
- idf_build_apps/manifest/soc_header.py +1 -1
- idf_build_apps/session_args.py +1 -1
- idf_build_apps/utils.py +1 -1
- idf_build_apps/yaml/__init__.py +1 -1
- idf_build_apps/yaml/parser.py +37 -4
- {idf_build_apps-2.13.2.dist-info → idf_build_apps-2.14.0.dist-info}/METADATA +1 -1
- idf_build_apps-2.14.0.dist-info/RECORD +27 -0
- idf_build_apps-2.13.2.dist-info/RECORD +0 -27
- {idf_build_apps-2.13.2.dist-info → idf_build_apps-2.14.0.dist-info}/WHEEL +0 -0
- {idf_build_apps-2.13.2.dist-info → idf_build_apps-2.14.0.dist-info}/entry_points.txt +0 -0
- {idf_build_apps-2.13.2.dist-info → idf_build_apps-2.14.0.dist-info}/licenses/LICENSE +0 -0
idf_build_apps/__init__.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: 2022-
|
|
1
|
+
# SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
|
|
2
2
|
# SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
"""
|
|
@@ -8,7 +8,7 @@ Tools for building ESP-IDF related apps.
|
|
|
8
8
|
# ruff: noqa: E402
|
|
9
9
|
# avoid circular imports
|
|
10
10
|
|
|
11
|
-
__version__ = '2.
|
|
11
|
+
__version__ = '2.14.0'
|
|
12
12
|
|
|
13
13
|
from .session_args import (
|
|
14
14
|
SessionArgs,
|
idf_build_apps/__main__.py
CHANGED
idf_build_apps/app.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: 2022-
|
|
1
|
+
# SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
|
|
2
2
|
# SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
import copy
|
|
@@ -511,7 +511,9 @@ class App(BaseModel):
|
|
|
511
511
|
BuildStatus.UNKNOWN,
|
|
512
512
|
BuildStatus.SHOULD_BE_BUILT,
|
|
513
513
|
):
|
|
514
|
-
|
|
514
|
+
if not self.build_comment:
|
|
515
|
+
self.build_comment = f'Build {self.build_status.value}. Skipping...'
|
|
516
|
+
|
|
515
517
|
return
|
|
516
518
|
|
|
517
519
|
# real build starts here
|
idf_build_apps/args.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: 2024-
|
|
1
|
+
# SPDX-FileCopyrightText: 2024-2026 Espressif Systems (Shanghai) CO LTD
|
|
2
2
|
# SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
import argparse
|
|
@@ -145,7 +145,6 @@ class BaseArguments(BaseSettings):
|
|
|
145
145
|
# these below two are supported in pydantic 2.6
|
|
146
146
|
pyproject_toml_table_header=('tool', 'idf-build-apps'),
|
|
147
147
|
pyproject_toml_depth=sys.maxsize,
|
|
148
|
-
validate_default=True,
|
|
149
148
|
extra='ignore', # we're supporting pydantic <2.6 as well, so we ignore extra fields
|
|
150
149
|
)
|
|
151
150
|
|
|
@@ -303,6 +302,19 @@ class DependencyDrivenBuildArguments(GlobalArguments):
|
|
|
303
302
|
),
|
|
304
303
|
default=None, # type: ignore
|
|
305
304
|
)
|
|
305
|
+
common_components: t.Optional[t.List[str]] = field(
|
|
306
|
+
FieldMetadata(
|
|
307
|
+
validate_method=[ValidateMethod.TO_LIST],
|
|
308
|
+
type=semicolon_separated_str_to_list,
|
|
309
|
+
shorthand='-rc',
|
|
310
|
+
),
|
|
311
|
+
description='semicolon-separated list of components. '
|
|
312
|
+
'expand the `- *common_components` placeholder in manifests. '
|
|
313
|
+
'Must be specified together with --modified-components. '
|
|
314
|
+
'If set to "", the value would be considered as None. '
|
|
315
|
+
'If set to ";", the value would be considered as an empty list.',
|
|
316
|
+
default=None, # type: ignore
|
|
317
|
+
)
|
|
306
318
|
deactivate_dependency_driven_build_by_filepatterns: t.Optional[t.List[str]] = field(
|
|
307
319
|
FieldMetadata(
|
|
308
320
|
validate_method=[ValidateMethod.TO_LIST],
|
|
@@ -375,6 +387,7 @@ class DependencyDrivenBuildArguments(GlobalArguments):
|
|
|
375
387
|
App.MANIFEST = Manifest.from_files(
|
|
376
388
|
self.manifest_files,
|
|
377
389
|
root_path=to_absolute_path(self.manifest_rootpath),
|
|
390
|
+
common_components=self.common_components,
|
|
378
391
|
)
|
|
379
392
|
|
|
380
393
|
@property
|
idf_build_apps/constants.py
CHANGED
idf_build_apps/finder.py
CHANGED
idf_build_apps/junit/__init__.py
CHANGED
idf_build_apps/junit/report.py
CHANGED
idf_build_apps/junit/utils.py
CHANGED
idf_build_apps/log.py
CHANGED
idf_build_apps/main.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# PYTHON_ARGCOMPLETE_OK
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: 2022-
|
|
3
|
+
# SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
|
|
4
4
|
# SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
|
|
6
6
|
import argparse
|
|
@@ -386,26 +386,26 @@ def main():
|
|
|
386
386
|
sys.exit(0)
|
|
387
387
|
|
|
388
388
|
kwargs = vars(args)
|
|
389
|
+
kwargs_without_none = drop_none_kwargs(kwargs)
|
|
389
390
|
action = kwargs.pop('action')
|
|
390
391
|
config_file = kwargs.pop('config_file')
|
|
391
392
|
if config_file:
|
|
392
393
|
apply_config_file(config_file)
|
|
393
394
|
|
|
394
395
|
if action == 'dump-manifest-sha':
|
|
395
|
-
arguments = DumpManifestShaArguments(**
|
|
396
|
+
arguments = DumpManifestShaArguments(**kwargs_without_none)
|
|
396
397
|
Manifest.from_files(arguments.manifest_files).dump_sha_values(arguments.output)
|
|
397
398
|
sys.exit(0)
|
|
398
|
-
elif action == 'find':
|
|
399
|
-
print('reinstall idf-build-apps')
|
|
400
|
-
print(kwargs['paths'])
|
|
401
399
|
|
|
402
|
-
|
|
400
|
+
if action == 'find':
|
|
401
|
+
arguments = FindArguments(**kwargs_without_none)
|
|
403
402
|
else:
|
|
404
|
-
arguments = BuildArguments(**
|
|
403
|
+
arguments = BuildArguments(**kwargs_without_none)
|
|
405
404
|
|
|
406
405
|
# real call starts here
|
|
407
406
|
# build also needs to find first
|
|
408
|
-
apps = find_apps(args.paths, args.target, find_arguments=
|
|
407
|
+
apps = find_apps(args.paths, args.target, find_arguments=FindArguments.model_validate(kwargs_without_none))
|
|
408
|
+
|
|
409
409
|
if isinstance(arguments, FindArguments): # find only
|
|
410
410
|
if arguments.output:
|
|
411
411
|
os.makedirs(os.path.dirname(os.path.realpath(arguments.output)), exist_ok=True)
|
|
@@ -447,6 +447,12 @@ def main():
|
|
|
447
447
|
for app in failed_apps:
|
|
448
448
|
print(f' {app}')
|
|
449
449
|
|
|
450
|
+
disabled_apps = [app for app in apps if app.build_status == BuildStatus.DISABLED]
|
|
451
|
+
if disabled_apps:
|
|
452
|
+
print('Disabled the following apps:')
|
|
453
|
+
for app in disabled_apps:
|
|
454
|
+
print(f' {app}')
|
|
455
|
+
|
|
450
456
|
if ret_code != 0:
|
|
451
457
|
sys.exit(ret_code)
|
|
452
458
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: 2022-
|
|
1
|
+
# SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
|
|
2
2
|
# SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import contextvars
|
|
4
4
|
import logging
|
|
@@ -45,7 +45,7 @@ class IfClause:
|
|
|
45
45
|
try:
|
|
46
46
|
self.stmt: BoolStmt = parse_bool_expr(stmt)
|
|
47
47
|
self._stmt: str = stmt
|
|
48
|
-
except (ParseException, InvalidIfClause) as ex:
|
|
48
|
+
except (ParseException, InvalidIfClause, AttributeError) as ex:
|
|
49
49
|
raise InvalidIfClause(f'Invalid if clause: {stmt}. {ex}')
|
|
50
50
|
|
|
51
51
|
self.temporary = temporary
|
|
@@ -342,12 +342,19 @@ class Manifest:
|
|
|
342
342
|
self._rule_paths = {rule.folder: rule for rule in self.rules}
|
|
343
343
|
|
|
344
344
|
@classmethod
|
|
345
|
-
def from_files(
|
|
345
|
+
def from_files(
|
|
346
|
+
cls,
|
|
347
|
+
paths: t.Iterable[PathLike],
|
|
348
|
+
*,
|
|
349
|
+
root_path: str = os.curdir,
|
|
350
|
+
common_components: t.Optional[t.Sequence[str]] = None,
|
|
351
|
+
) -> 'Manifest':
|
|
346
352
|
"""
|
|
347
353
|
Create a Manifest instance from multiple manifest files
|
|
348
354
|
|
|
349
355
|
:param paths: manifest file paths
|
|
350
356
|
:param root_path: root path for relative paths in manifest files
|
|
357
|
+
:param common_components: sequence of strings to expand the ``- *common_components`` placeholder in manifests
|
|
351
358
|
:return: Manifest instance
|
|
352
359
|
"""
|
|
353
360
|
# folder, defined as dict
|
|
@@ -356,7 +363,7 @@ class Manifest:
|
|
|
356
363
|
rules: t.List[FolderRule] = []
|
|
357
364
|
for path in paths:
|
|
358
365
|
LOGGER.debug('Loading manifest file %s', path)
|
|
359
|
-
_manifest = cls.from_file(path, root_path=root_path)
|
|
366
|
+
_manifest = cls.from_file(path, root_path=root_path, common_components=common_components)
|
|
360
367
|
|
|
361
368
|
for rule in _manifest.rules:
|
|
362
369
|
if rule.folder in _known_folders:
|
|
@@ -373,15 +380,22 @@ class Manifest:
|
|
|
373
380
|
return Manifest(rules, root_path=root_path)
|
|
374
381
|
|
|
375
382
|
@classmethod
|
|
376
|
-
def from_file(
|
|
383
|
+
def from_file(
|
|
384
|
+
cls,
|
|
385
|
+
path: PathLike,
|
|
386
|
+
*,
|
|
387
|
+
root_path: str = os.curdir,
|
|
388
|
+
common_components: t.Optional[t.Sequence[str]] = None,
|
|
389
|
+
) -> 'Manifest':
|
|
377
390
|
"""
|
|
378
391
|
Create a Manifest instance from a manifest file
|
|
379
392
|
|
|
380
393
|
:param path: path to the manifest file
|
|
381
394
|
:param root_path: root path for relative paths in manifest file
|
|
395
|
+
:param common_components: sequence of strings to expand the ``{{root_components}}`` placeholder in manifests
|
|
382
396
|
:return: Manifest instance
|
|
383
397
|
"""
|
|
384
|
-
manifest_dict = parse(path)
|
|
398
|
+
manifest_dict = parse(path, common_components=common_components)
|
|
385
399
|
|
|
386
400
|
rules: t.List[FolderRule] = []
|
|
387
401
|
for folder, folder_rule in manifest_dict.items():
|
idf_build_apps/session_args.py
CHANGED
idf_build_apps/utils.py
CHANGED
idf_build_apps/yaml/__init__.py
CHANGED
idf_build_apps/yaml/parser.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: 2024-
|
|
1
|
+
# SPDX-FileCopyrightText: 2024-2026 Espressif Systems (Shanghai) CO LTD
|
|
2
2
|
# SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
import typing as t
|
|
@@ -62,8 +62,41 @@ def parse_postfixes(manifest_dict: t.Dict):
|
|
|
62
62
|
manifest_dict[folder] = updated_folder
|
|
63
63
|
|
|
64
64
|
|
|
65
|
-
def
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
def flatten_common_components(manifest_dict: t.Dict):
|
|
66
|
+
"""
|
|
67
|
+
Flattens nested lists under `depends_components` into a single list of strings.
|
|
68
|
+
"""
|
|
69
|
+
|
|
70
|
+
for folder, folder_rule in manifest_dict.items():
|
|
71
|
+
if not isinstance(folder_rule, t.Dict):
|
|
72
|
+
continue
|
|
73
|
+
|
|
74
|
+
depends = folder_rule.get('depends_components')
|
|
75
|
+
if not isinstance(depends, t.List):
|
|
76
|
+
continue
|
|
77
|
+
|
|
78
|
+
flattened: t.List[str] = []
|
|
79
|
+
for item in depends:
|
|
80
|
+
if isinstance(item, t.List):
|
|
81
|
+
flattened.extend(map(str, item))
|
|
82
|
+
else:
|
|
83
|
+
flattened.append(item)
|
|
84
|
+
|
|
85
|
+
folder_rule['depends_components'] = flattened
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def parse(path: PathLike, *, common_components: t.Optional[t.Sequence[str]] = None) -> t.Dict:
|
|
89
|
+
common_components_yaml = (
|
|
90
|
+
'.common_components: &common_components\n' + '\n'.join(f' - {component}' for component in common_components)
|
|
91
|
+
if common_components
|
|
92
|
+
else ''
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
with open(path, encoding='utf-8') as f:
|
|
96
|
+
user_yaml = f.read()
|
|
97
|
+
|
|
98
|
+
manifest_dict = yaml.safe_load(f'{common_components_yaml}\n{user_yaml}') or {}
|
|
99
|
+
|
|
100
|
+
flatten_common_components(manifest_dict)
|
|
68
101
|
parse_postfixes(manifest_dict)
|
|
69
102
|
return manifest_dict
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
idf_build_apps/__init__.py,sha256=aPohj9cU8yfQCqYn7wKsJDjVMUJq6A__07PNoAFUHbs,711
|
|
2
|
+
idf_build_apps/__main__.py,sha256=xbvcgp3sNxXZZ0MMr9XU12TjdzHBWq6DF1FYUSmAjHE,182
|
|
3
|
+
idf_build_apps/app.py,sha256=_B4kCTCUq7mSd6T-VwtLbBM9iHSpXRpfM0vmrznkjYo,40223
|
|
4
|
+
idf_build_apps/args.py,sha256=sdp7eI33BXKmqucs60sS0kK8l5p4fRpRS6H7Y0XyITY,40803
|
|
5
|
+
idf_build_apps/autocompletions.py,sha256=UbswHAWRvqvq4TgDBFjqHGlDLS_NEBM8EE0LlLUYY0A,2143
|
|
6
|
+
idf_build_apps/constants.py,sha256=CW7vKXV6brsNLWeGLNCoDj28r5GO9So3RFNqgk_X2CI,2166
|
|
7
|
+
idf_build_apps/finder.py,sha256=eSIr-y5yPTInQk5IQHggRJyxOndciexaNzpU4VVhfQQ,5833
|
|
8
|
+
idf_build_apps/log.py,sha256=2aJRqx3hPT9IhSv3RLkXR5j7PgB2RX47G766c4i_m5c,3899
|
|
9
|
+
idf_build_apps/main.py,sha256=B5yb6cy5UgqHP8-f7VEc9CrbkQmWGEpf6ww70MC_1z8,18255
|
|
10
|
+
idf_build_apps/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
+
idf_build_apps/session_args.py,sha256=BMWfW48hHHt5UsAbzTJ9BMnerVP5lnulb0h3Db-BNC8,2973
|
|
12
|
+
idf_build_apps/utils.py,sha256=YAVIYTvz86G--qjh58H376taQ-qe1PbebXcWxYNdnFs,10976
|
|
13
|
+
idf_build_apps/junit/__init__.py,sha256=ZFbtFP4nrRUsN_7rdCYWPZRSAYH_OXetZyd3JGv71bs,231
|
|
14
|
+
idf_build_apps/junit/report.py,sha256=SUQ7VQwc4zUUwLt6srVncvue9iswIFm7AHOao7umyo4,6565
|
|
15
|
+
idf_build_apps/junit/utils.py,sha256=bmrCn44DH3b_LrlKTN7t7l94ttEmitiwVGVBrCQC1yo,1303
|
|
16
|
+
idf_build_apps/manifest/__init__.py,sha256=Fze5wbperMK1F35KXnkAEc93u-ldDl7eQQkv75DoJ18,479
|
|
17
|
+
idf_build_apps/manifest/manifest.py,sha256=UG6t7l9BNmZ223pl674-gSpBgUos3wwHPWwO9Y7-R0A,18580
|
|
18
|
+
idf_build_apps/manifest/soc_header.py,sha256=vBO8oDEIIcxWRCDOPNXtqHKU0yv8q4yMrTo22W55iNw,177
|
|
19
|
+
idf_build_apps/vendors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
|
+
idf_build_apps/vendors/pydantic_sources.py,sha256=cxSIPRc3eI5peVMhDxwf58YaGhuG4SCwPRVX2znFEek,4553
|
|
21
|
+
idf_build_apps/yaml/__init__.py,sha256=lbBz5r6hp8dSsxIypGFcc5EbXgWw2codDmky8QCo-sg,167
|
|
22
|
+
idf_build_apps/yaml/parser.py,sha256=qlPZbLOM48CFs4F8i83Sa0QAl8AA-DQceWozTE_CkHM,3191
|
|
23
|
+
idf_build_apps-2.14.0.dist-info/entry_points.txt,sha256=3pVUirUEsb6jsDRikkQWNUt4hqLK2ci1HvW_Vf8b6uE,59
|
|
24
|
+
idf_build_apps-2.14.0.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
25
|
+
idf_build_apps-2.14.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
|
26
|
+
idf_build_apps-2.14.0.dist-info/METADATA,sha256=Zo3oJH3A2BCUuQmQ67mhFNw68LrXWfJvDwP5SngpIp4,4795
|
|
27
|
+
idf_build_apps-2.14.0.dist-info/RECORD,,
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
idf_build_apps/__init__.py,sha256=E0n56IiCyZFns3uVrkkIGeCv1hE9surybp-xb5vQlLE,711
|
|
2
|
-
idf_build_apps/__main__.py,sha256=pT6OsFQRjCw39Jg43HAeGKzq8h5E_0m7kHDE2QMqDe0,182
|
|
3
|
-
idf_build_apps/app.py,sha256=iMu2m20O7vMpHWWQv107pjtqIJXMT-0Je3uWeWznfog,40179
|
|
4
|
-
idf_build_apps/args.py,sha256=Kf14fvk07qsZYYpJqROMimA8w7YlVqOxjr21W88FZJ8,40171
|
|
5
|
-
idf_build_apps/autocompletions.py,sha256=2fZQxzgZ21ie_2uk-B-7-xWYCChfOSgRFRYb7I2Onfo,2143
|
|
6
|
-
idf_build_apps/constants.py,sha256=2iwLPZRhSQcn1v4RAcOJnHbqp1fDTp6A1gHaxn5ciTE,2166
|
|
7
|
-
idf_build_apps/finder.py,sha256=CKppfxa-nPedHKXfyQ841q1DZc0BimVulXK52EfCD0o,5833
|
|
8
|
-
idf_build_apps/log.py,sha256=15sSQhv9dJsHShDR2KgFGFp8ByjV0HogLr1X1lHYqGs,3899
|
|
9
|
-
idf_build_apps/main.py,sha256=okfGrChI2i4Vzeag_dRKD5QaxlpAJ2rZ-MFcIS2PzXk,18034
|
|
10
|
-
idf_build_apps/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
-
idf_build_apps/session_args.py,sha256=1B7e3M9_eKdQezGNXaocqCq7iE4MOxpYJkfanCfdkDE,2973
|
|
12
|
-
idf_build_apps/utils.py,sha256=YJZOXIpo3aoRkGZJoQUJHAPWi2VkTDAVzQG5DI2igxw,10976
|
|
13
|
-
idf_build_apps/junit/__init__.py,sha256=ljILW1rfeBAIlwZIw8jstYrVbugErlmCYzSzJwNFC2I,231
|
|
14
|
-
idf_build_apps/junit/report.py,sha256=yzt5SiJEA_AUlw2Ld23J7enYlfDluvmKAcCnAM8ccqE,6565
|
|
15
|
-
idf_build_apps/junit/utils.py,sha256=idBrLgsz6Co2QUQqq1AiyzRHnqbJf_EoykEAxCkjHZw,1303
|
|
16
|
-
idf_build_apps/manifest/__init__.py,sha256=CP4_LSkh7sb_DsWLSzqkSZ3UojyVdM10bX9avlmn2pg,479
|
|
17
|
-
idf_build_apps/manifest/manifest.py,sha256=i8bXxyHeIFxYN5Z1l0dNNBFdgP7SKl3t0TCVqhlF0Lo,18051
|
|
18
|
-
idf_build_apps/manifest/soc_header.py,sha256=_F6H5-HP6ateAqKUGlRGH-SUtQ8NJ1RI0hBeCFvsDYA,172
|
|
19
|
-
idf_build_apps/vendors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
|
-
idf_build_apps/vendors/pydantic_sources.py,sha256=cxSIPRc3eI5peVMhDxwf58YaGhuG4SCwPRVX2znFEek,4553
|
|
21
|
-
idf_build_apps/yaml/__init__.py,sha256=R6pYasVsD31maeZ4dWRZnS10hwzM7gXdnfzDsOIRJ-4,167
|
|
22
|
-
idf_build_apps/yaml/parser.py,sha256=IhY7rCWXOxrzzgEiKipTdPs_8yXDf8JZr-sMewV1pk8,2133
|
|
23
|
-
idf_build_apps-2.13.2.dist-info/entry_points.txt,sha256=3pVUirUEsb6jsDRikkQWNUt4hqLK2ci1HvW_Vf8b6uE,59
|
|
24
|
-
idf_build_apps-2.13.2.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
25
|
-
idf_build_apps-2.13.2.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
|
26
|
-
idf_build_apps-2.13.2.dist-info/METADATA,sha256=ELm5hM4bEZkyG9lwiiXAQBCtuE_PySR3qz0mtR0GukE,4795
|
|
27
|
-
idf_build_apps-2.13.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|