Skip to content

Do not exclude build directory from ruff check#43572

Open
arkq wants to merge 7 commits intoproject-chip:masterfrom
arkq:ruff-build-check
Open

Do not exclude build directory from ruff check#43572
arkq wants to merge 7 commits intoproject-chip:masterfrom
arkq:ruff-build-check

Conversation

@arkq
Copy link
Contributor

@arkq arkq commented Mar 13, 2026

Summary

The build name is a very generic name which appears in our Python modules and also is a directory for built artifacts. Instead of excluding a generic name (which will disable ruff check in some part of our code base) exclude specific paths.

Also, added two new rules to ruff: PLE (this rule has found 2 extra errors) and RSE for simplifying exceptions.

Testing

CI will verify.

arkq added 3 commits March 13, 2026 11:34
The `build` name is a very generic name which appears in our Python
modules and also is a directory for built artifacts. Instead of
excluding a generic name (which will disable ruff check in some part
of our code base) exclude specific paths.
Copilot AI review requested due to automatic review settings March 13, 2026 11:23
@pullapprove pullapprove bot requested review from andy31415 March 13, 2026 11:23
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request improves code quality by refining the ruff linter configuration. It replaces a broad build directory exclusion with more specific paths, ensuring that Python modules named build are correctly linted. The introduction of new ruff rules (PLE for Pylint errors and RSE for flake8-raise) has driven a series of beneficial code changes across the repository. These changes include adopting more idiomatic Python constructs (like any() and set comprehensions), simplifying exception handling with contextlib.suppress, standardizing logging calls, and cleaning up code by removing unused imports and unnecessary parentheses in raise statements. The changes are well-executed and contribute to better code consistency and maintainability.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the repo’s Python linting configuration so ruff no longer excludes every directory named build, and tightens linting by enabling additional rules. To keep CI green under the expanded lint scope, the PR also applies targeted cleanups across build scripts and a few Python modules (notably logging usage and exception-raising style), and adds unit coverage for the build glob matcher.

Changes:

  • Update pyproject.toml ruff excludes to remove the generic build exclusion, replacing it with specific build-artifact paths; enable PLE and RSE rule groups.
  • Refactor/clean Python code to satisfy newly-applied lint rules (module-level loggers, simplified raise ...).
  • Add/expand build-script structure and tests (new build targets module, new Genio builder, glob matcher unit test).

Reviewed changes

Copilot reviewed 28 out of 31 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/controller/python/tests/scripts/cluster_objects.py Simplifies raise statements to comply with RSE.
src/controller/python/matter/crypto/p256keypair.py Simplifies NotImplementedError raises for RSE.
src/controller/python/matter/commissioning/init.py Simplifies NotImplementedError raise for RSE.
src/controller/python/matter/clusters/ClusterObjects.py Simplifies NotImplementedError raises for RSE in cluster object base APIs.
scripts/py_matter_idl/matter/idl/lint/type_definitions.py Simplifies MissingIdlError raising for RSE.
scripts/py_matter_idl/matter/idl/generators/storage.py Simplifies NotImplementedError raises for RSE in generator storage interface.
scripts/flashing/psoc6_firmware_utils.py Simplifies NotImplementedError raises for RSE.
scripts/flashing/firmware_utils.py Simplifies NotImplementedError raise for RSE.
scripts/build/test_glob_matcher.py Adds unit tests for GlobMatcher.
scripts/build/test.py Materializes iterators with list(...) (minor simplification/clarity).
scripts/build/runner/shell.py Switches to module logger usage; adjusts log emission to satisfy logging lint rules.
scripts/build/clang_coverage_wrapper.py Switches to module logger usage and minor simplifications in Click option config.
scripts/build/builders/tizen.py Uses contextlib.suppress and module logger to satisfy linting requirements.
scripts/build/builders/telink.py Uses module logger instead of root logger calls.
scripts/build/builders/nxp.py Uses module logger instead of root logger calls.
scripts/build/builders/nuttx.py Uses module logger instead of root logger calls.
scripts/build/builders/nrf.py Uses module logger instead of root logger calls.
scripts/build/builders/genio.py Adds a new Genio GN-based builder and app enum.
scripts/build/builders/esp32.py Uses module logger instead of root logger calls.
scripts/build/builders/efr32.py Uses module logger instead of root logger calls.
scripts/build/builders/builder.py Uses module logger; simplifies abstract NotImplementedError raises for RSE.
scripts/build/builders/bouffalolab.py Uses module logger and minor boolean simplification.
scripts/build/builders/android.py Uses module logger and minor iteration simplifications.
scripts/build/build_examples.py Removes unused helper and simplifies target lowercasing comprehension.
scripts/build/build_darwin_framework.py Uses contextlib.suppress for simpler exception handling.
scripts/build/build/targets.py Introduces consolidated build target definitions (including Genio).
scripts/build/build/target.py Uses module logger and small simplifications (any(...), generator usage).
scripts/build/build/init.py Uses module logger and removes unused imports.
pyproject.toml Adjusts ruff excludes to avoid generic build exclusion; enables PLE and RSE.
credentials/generate_revocation_set.py Fixes incorrect log.error usage by using proper formatting parameters.
build/config/linux/pkg-config.py Simplifies regexp matching with any(...).

Copilot AI review requested due to automatic review settings March 13, 2026 12:09
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates Python linting so ruff no longer excludes every directory named build, and enables additional lint rules. The PR also includes a broad set of mechanical fixes across Python scripts to comply with the tightened lint configuration.

Changes:

  • Update pyproject.toml ruff excludes to target specific artifact directories instead of the generic build, and enable PLE + RSE rules.
  • Apply lint-driven refactors across Python code (exception raising simplifications, comprehension/list usage simplifications, logging via module-level loggers).
  • Add/extend build-script support code and tests (e.g., glob matcher unit test, new build target definitions and Genio builder).

Reviewed changes

Copilot reviewed 28 out of 31 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/controller/python/tests/scripts/cluster_objects.py Simplify raise ValueError() to satisfy exception-style lint rules.
src/controller/python/matter/crypto/p256keypair.py Simplify NotImplementedError raising for abstract methods.
src/controller/python/matter/commissioning/init.py Simplify NotImplementedError raising for abstract provider method.
src/controller/python/matter/clusters/ClusterObjects.py Simplify NotImplementedError raising in cluster object base APIs.
scripts/py_matter_idl/matter/idl/lint/type_definitions.py Simplify raising of MissingIdlError when IDL is absent.
scripts/py_matter_idl/matter/idl/generators/storage.py Simplify NotImplementedError raising for storage interface.
scripts/flashing/psoc6_firmware_utils.py Simplify NotImplementedError raising in interface methods.
scripts/flashing/firmware_utils.py Simplify NotImplementedError raising in interface method.
scripts/build/test_glob_matcher.py Add unit tests for GlobMatcher.
scripts/build/test.py Replace list comprehensions with list(...) for lint compliance and minor clarity.
scripts/build/runner/shell.py Use module-level logger; fix boolean logic (dedup and ...).
scripts/build/clang_coverage_wrapper.py Use module-level logger; simplify iterable construction for Click choice.
scripts/build/builders/tizen.py Use module-level logger; simplify exception suppression.
scripts/build/builders/telink.py Use module-level logger for build output messages.
scripts/build/builders/nxp.py Use module-level logger for warnings.
scripts/build/builders/nuttx.py Use module-level logger for build output messages.
scripts/build/builders/nrf.py Use module-level logger for exceptions/errors/info.
scripts/build/builders/genio.py Add new Genio builder implementation.
scripts/build/builders/esp32.py Use module-level logger for build output messages.
scripts/build/builders/efr32.py Use module-level logger for build output messages.
scripts/build/builders/builder.py Use module-level logger; simplify NotImplementedError raising; logging call sites updated.
scripts/build/builders/bouffalolab.py Use module-level logger; simplify boolean expressions; update logging call sites.
scripts/build/builders/android.py Use module-level logger; minor loop simplification and logging call updates.
scripts/build/build_examples.py Minor lint-driven cleanups (unused helper removal, set comprehension).
scripts/build/build_darwin_framework.py Simplify exception suppression via contextlib.suppress.
scripts/build/build/targets.py Add/define build target matrix used by build scripts.
scripts/build/build/target.py Use module-level logger; simplify loops/expressions; small helper cleanup.
scripts/build/build/init.py Use module-level logger; adjust imports and logging call sites.
pyproject.toml Refine ruff exclude patterns; enable PLE and RSE.
credentials/generate_revocation_set.py Fix logging argument formatting to avoid logging runtime formatting errors.
build/config/linux/pkg-config.py Simplify loop to any(...) for lint compliance.

@github-actions
Copy link

PR #43572: Size comparison from fa956ce to 158a236

Full report (1 build for stm32)
platform target config section fa956ce 158a236 change % change
stm32 light STM32WB5MM-DK FLASH 478820 478820 0 0.0
RAM 141324 141324 0 0.0

@github-actions
Copy link

github-actions bot commented Mar 13, 2026

PR #43572: Size comparison from fa956ce to a83dd02

Full report (34 builds for bl602, bl616, bl702, bl702l, cc13x4_26x4, cc32xx, efr32, esp32, nrfconnect, nxp, psoc6, qpg, realtek, stm32, telink)
platform target config section fa956ce a83dd02 change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1089396 1089396 0 0.0
RAM 144762 144762 0 0.0
bl616 lighting-app bl616+thread FLASH 1100324 1100324 0 0.0
RAM 104184 104184 0 0.0
bl616+wifi+shell FLASH 1586916 1586916 0 0.0
RAM 98080 98080 0 0.0
bl702 lighting-app bl702+eth FLASH 1052752 1052752 0 0.0
RAM 108357 108357 0 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 890764 890764 0 0.0
RAM 105748 105748 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 779164 779164 0 0.0
RAM 103324 103324 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 786528 786528 0 0.0
RAM 108508 108508 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 732724 732724 0 0.0
RAM 97316 97316 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 716160 716160 0 0.0
RAM 97476 97476 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 558106 558106 0 0.0
RAM 204504 204504 0 0.0
lock CC3235SF_LAUNCHXL FLASH 591230 591230 0 0.0
RAM 204744 204744 0 0.0
efr32 lock-app BRD4187C FLASH 971196 971196 0 0.0
RAM 125796 125796 0 0.0
BRD4338a FLASH 769268 769260 -8 -0.0
RAM 236544 236544 0 0.0
window-app BRD4187C FLASH 1074656 1074656 0 0.0
RAM 126440 126440 0 0.0
esp32 all-clusters-app c3devkit DRAM 98356 98356 0 0.0
FLASH 1596564 1596564 0 0.0
IRAM 93514 93514 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 857588 857588 0 0.0
RAM 161999 161999 0 0.0
nxp contact mcxw71+release FLASH 735808 735808 0 0.0
RAM 66936 66936 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1708508 1708508 0 0.0
RAM 213940 213940 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1607180 1607180 0 0.0
RAM 210812 210812 0 0.0
light cy8ckit_062s2_43012 FLASH 1470412 1470412 0 0.0
RAM 196988 196988 0 0.0
lock cy8ckit_062s2_43012 FLASH 1497092 1497092 0 0.0
RAM 224732 224732 0 0.0
qpg lighting-app qpg6200+debug FLASH 840636 840636 0 0.0
RAM 127780 127780 0 0.0
lock-app qpg6200+debug FLASH 779312 779312 0 0.0
RAM 118728 118728 0 0.0
realtek light-switch-app rtl8777g FLASH 720520 720520 0 0.0
RAM 113448 113448 0 0.0
lighting-app rtl8777g FLASH 767736 767736 0 0.0
RAM 114688 114688 0 0.0
stm32 light STM32WB5MM-DK FLASH 478820 478820 0 0.0
RAM 141324 141324 0 0.0
telink bridge-app tl7218x FLASH 728648 728648 0 0.0
RAM 95760 95760 0 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 852792 852792 0 0.0
RAM 44176 44176 0 0.0
tl7218x FLASH 844196 844196 0 0.0
RAM 99564 99564 0 0.0
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 725462 725462 0 0.0
RAM 55740 55740 0 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 788030 788030 0 0.0
RAM 74916 74916 0 0.0
light-switch-app-ota-factory-data tl3218x_retention FLASH 725458 725458 0 0.0
RAM 33220 33220 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 616200 616200 0 0.0
RAM 118232 118232 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 842966 842970 4 0.0
RAM 97272 97272 0 0.0

@codecov
Copy link

codecov bot commented Mar 13, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 54.07%. Comparing base (fa956ce) to head (a83dd02).

Additional details and impacted files
@@           Coverage Diff           @@
##           master   #43572   +/-   ##
=======================================
  Coverage   54.07%   54.07%           
=======================================
  Files        1548     1548           
  Lines      106709   106709           
  Branches    13308    13308           
=======================================
  Hits        57704    57704           
  Misses      49005    49005           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants