idf-build-apps 2.15.0__tar.gz → 2.15.1__tar.gz

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.
Files changed (72) hide show
  1. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/CHANGELOG.md +15 -0
  2. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/PKG-INFO +1 -1
  3. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/__init__.py +1 -1
  4. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/args.py +12 -0
  5. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/main.py +3 -1
  6. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/pyproject.toml +1 -1
  7. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/setup.py +1 -1
  8. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/tests/test_cmd.py +36 -0
  9. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/.editorconfig +0 -0
  10. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/.git-blame-ignore-revs +0 -0
  11. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/.gitattributes +0 -0
  12. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/.github/dependabot.yml +0 -0
  13. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/.github/workflows/publish-pypi.yml +0 -0
  14. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/.github/workflows/sync-jira.yml +0 -0
  15. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/.github/workflows/test-build-docs.yml +0 -0
  16. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/.github/workflows/test-build-idf-apps.yml +0 -0
  17. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/.gitignore +0 -0
  18. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/.pre-commit-config.yaml +0 -0
  19. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/.readthedocs.yml +0 -0
  20. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/CONTRIBUTING.md +0 -0
  21. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/LICENSE +0 -0
  22. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/README.md +0 -0
  23. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/_apidoc_templates/module.rst_t +0 -0
  24. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/_apidoc_templates/package.rst_t +0 -0
  25. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/_apidoc_templates/toc.rst_t +0 -0
  26. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/_static/espressif-logo.svg +0 -0
  27. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/_static/theme_overrides.css +0 -0
  28. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/_templates/layout.html +0 -0
  29. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/conf_common.py +0 -0
  30. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/en/Makefile +0 -0
  31. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/en/conf.py +0 -0
  32. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/en/explanations/build.rst +0 -0
  33. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/en/explanations/build_status.rst +0 -0
  34. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/en/explanations/config_rules.rst +0 -0
  35. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/en/explanations/dependency_driven_build.rst +0 -0
  36. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/en/explanations/find.rst +0 -0
  37. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/en/guides/1.x_to_2.x.md +0 -0
  38. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/en/guides/custom_app.md +0 -0
  39. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/en/index.rst +0 -0
  40. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/en/others/CHANGELOG.md +0 -0
  41. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/en/others/CONTRIBUTING.md +0 -0
  42. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/en/references/cli.rst +0 -0
  43. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/en/references/config_file.rst +0 -0
  44. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/docs/en/references/manifest.rst +0 -0
  45. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/__main__.py +0 -0
  46. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/app.py +0 -0
  47. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/autocompletions.py +0 -0
  48. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/constants.py +0 -0
  49. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/finder.py +0 -0
  50. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/junit/__init__.py +0 -0
  51. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/junit/report.py +0 -0
  52. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/junit/utils.py +0 -0
  53. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/log.py +0 -0
  54. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/manifest/__init__.py +0 -0
  55. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/manifest/manifest.py +0 -0
  56. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/manifest/soc_header.py +0 -0
  57. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/py.typed +0 -0
  58. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/session_args.py +0 -0
  59. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/utils.py +0 -0
  60. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/vendors/__init__.py +0 -0
  61. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/vendors/pydantic_sources.py +0 -0
  62. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/yaml/__init__.py +0 -0
  63. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/idf_build_apps/yaml/parser.py +0 -0
  64. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/license_header.txt +0 -0
  65. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/tests/conftest.py +0 -0
  66. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/tests/test_app.py +0 -0
  67. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/tests/test_args.py +0 -0
  68. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/tests/test_build.py +0 -0
  69. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/tests/test_disable_reasons.py +0 -0
  70. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/tests/test_finder.py +0 -0
  71. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/tests/test_manifest.py +0 -0
  72. {idf_build_apps-2.15.0 → idf_build_apps-2.15.1}/tests/test_utils.py +0 -0
@@ -20,6 +20,17 @@
20
20
  </div>
21
21
  <hr>
22
22
 
23
+ ## v2.15.1 (2026-02-04)
24
+
25
+ ### 🐛 Bug Fixes
26
+
27
+ - dump-manifest-sha with common_components *(Fu Hanxi - f5e6414)*
28
+
29
+ ### 📖 Documentation
30
+
31
+ - fix the changelog *(Fu Hanxi - 13e53c1)*
32
+
33
+
23
34
  ## v2.15.0 (2026-01-26)
24
35
 
25
36
  ### ✨ New Features
@@ -53,6 +64,10 @@
53
64
 
54
65
  ## v2.13.3 (2025-10-23)
55
66
 
67
+ ### 🏗️ Changes
68
+
69
+ - Remove non-production code
70
+
56
71
  ---
57
72
 
58
73
  ## v2.13.2 (2025-10-23)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: idf-build-apps
3
- Version: 2.15.0
3
+ Version: 2.15.1
4
4
  Summary: Tools for building ESP-IDF related apps.
5
5
  Author-email: Fu Hanxi <fuhanxi@espressif.com>
6
6
  Requires-Python: >=3.7
@@ -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.15.0'
11
+ __version__ = '2.15.1'
12
12
 
13
13
  from .session_args import (
14
14
  SessionArgs,
@@ -929,6 +929,18 @@ class DumpManifestShaArguments(GlobalArguments):
929
929
  description='Path to the manifest files which contains the build test rules of the apps',
930
930
  default=None, # type: ignore
931
931
  )
932
+ common_components: t.Optional[t.List[str]] = field(
933
+ FieldMetadata(
934
+ validate_method=[ValidateMethod.TO_LIST],
935
+ type=semicolon_separated_str_to_list,
936
+ shorthand='-rc',
937
+ ),
938
+ description='semicolon-separated list of components. '
939
+ 'expand the `- *common_components` placeholder in manifests. '
940
+ 'If set to "", the value would be considered as None. '
941
+ 'If set to ";", the value would be considered as an empty list.',
942
+ default=None, # type: ignore
943
+ )
932
944
 
933
945
  output: t.Optional[str] = field(
934
946
  FieldMetadata(
@@ -394,7 +394,9 @@ def main():
394
394
 
395
395
  if action == 'dump-manifest-sha':
396
396
  arguments = DumpManifestShaArguments(**kwargs_without_none)
397
- Manifest.from_files(arguments.manifest_files).dump_sha_values(arguments.output)
397
+ Manifest.from_files(arguments.manifest_files, common_components=arguments.common_components).dump_sha_values(
398
+ arguments.output
399
+ )
398
400
  sys.exit(0)
399
401
 
400
402
  if action == 'find':
@@ -65,7 +65,7 @@ idf-build-apps = "idf_build_apps:main.main"
65
65
 
66
66
  [tool.commitizen]
67
67
  name = "czespressif"
68
- version = "2.15.0"
68
+ version = "2.15.1"
69
69
 
70
70
  tag_format = "v$version"
71
71
  version_scheme = "pep440"
@@ -38,7 +38,7 @@ entry_points = \
38
38
  {'console_scripts': ['idf-build-apps = idf_build_apps:main.main']}
39
39
 
40
40
  setup(name='idf-build-apps',
41
- version='2.15.0',
41
+ version='2.15.1',
42
42
  description='Tools for building ESP-IDF related apps.',
43
43
  author=None,
44
44
  author_email='Fu Hanxi <fuhanxi@espressif.com>',
@@ -1,6 +1,7 @@
1
1
  # SPDX-FileCopyrightText: 2024-2026 Espressif Systems (Shanghai) CO LTD
2
2
  # SPDX-License-Identifier: Apache-2.0
3
3
  import os
4
+ import subprocess
4
5
  import sys
5
6
  from pathlib import Path
6
7
  from textwrap import dedent
@@ -73,6 +74,41 @@ foobar:
73
74
  )
74
75
 
75
76
 
77
+ def test_manifest_dump_sha_values_with_common_components():
78
+ Path('.idf_build_apps.toml').write_text(
79
+ """
80
+ common_components = ["foo", "bar"]
81
+ """
82
+ )
83
+ Path('test.yml').write_text(
84
+ """
85
+ foo:
86
+ depends_components:
87
+ - *common_components
88
+ """,
89
+ encoding='utf8',
90
+ )
91
+ subprocess.run(
92
+ ['idf-build-apps', 'dump-manifest-sha', '--manifest-files', 'test.yml', '--output', 'test.sha1'], check=True
93
+ )
94
+
95
+ os.remove('.idf_build_apps.toml')
96
+ Path('test2.yml').write_text(
97
+ """
98
+ foo:
99
+ depends_components:
100
+ - foo
101
+ - bar
102
+ """,
103
+ encoding='utf8',
104
+ )
105
+ subprocess.run(
106
+ ['idf-build-apps', 'dump-manifest-sha', '--manifest-files', 'test2.yml', '--output', 'test2.sha1'], check=True
107
+ )
108
+ with open('test.sha1') as f1, open('test2.sha1') as f2:
109
+ assert f1.read() == f2.read()
110
+
111
+
76
112
  def test_manifest_patterns(tmp_path, monkeypatch, capsys):
77
113
  manifest = tmp_path / 'manifest.yml'
78
114
  manifest.write_text(
File without changes