Merge a base environment section with a child that extends it. Child values override base values, except for lists which are merged.
(
base_env: EnvironmentSection, child_env: EnvironmentSection
)
| 576 | |
| 577 | |
| 578 | def _merge_env_sections( |
| 579 | base_env: EnvironmentSection, child_env: EnvironmentSection |
| 580 | ) -> EnvironmentSection: |
| 581 | """ |
| 582 | Merge a base environment section with a child that extends it. |
| 583 | Child values override base values, except for lists which are merged. |
| 584 | """ |
| 585 | from dataclasses import replace |
| 586 | |
| 587 | # Start with the child environment |
| 588 | merged = replace(child_env) |
| 589 | |
| 590 | # Override with base values only if child doesn't have them |
| 591 | if not merged.platform and base_env.platform: |
| 592 | merged.platform = base_env.platform |
| 593 | if not merged.framework and base_env.framework: |
| 594 | merged.framework = base_env.framework |
| 595 | if not merged.board and base_env.board: |
| 596 | merged.board = base_env.board |
| 597 | if not merged.build_type and base_env.build_type: |
| 598 | merged.build_type = base_env.build_type |
| 599 | if not merged.lib_ldf_mode and base_env.lib_ldf_mode: |
| 600 | merged.lib_ldf_mode = base_env.lib_ldf_mode |
| 601 | if not merged.upload_port and base_env.upload_port: |
| 602 | merged.upload_port = base_env.upload_port |
| 603 | if not merged.upload_protocol and base_env.upload_protocol: |
| 604 | merged.upload_protocol = base_env.upload_protocol |
| 605 | if not merged.upload_speed and base_env.upload_speed: |
| 606 | merged.upload_speed = base_env.upload_speed |
| 607 | if not merged.monitor_port and base_env.monitor_port: |
| 608 | merged.monitor_port = base_env.monitor_port |
| 609 | if not merged.monitor_speed and base_env.monitor_speed: |
| 610 | merged.monitor_speed = base_env.monitor_speed |
| 611 | if not merged.board_build_mcu and base_env.board_build_mcu: |
| 612 | merged.board_build_mcu = base_env.board_build_mcu |
| 613 | if not merged.board_build_f_cpu and base_env.board_build_f_cpu: |
| 614 | merged.board_build_f_cpu = base_env.board_build_f_cpu |
| 615 | if not merged.board_build_partitions and base_env.board_build_partitions: |
| 616 | merged.board_build_partitions = base_env.board_build_partitions |
| 617 | if not merged.check_tool and base_env.check_tool: |
| 618 | merged.check_tool = base_env.check_tool |
| 619 | |
| 620 | # For list fields, prepend base values to child values (child has priority) |
| 621 | if base_env.build_flags: |
| 622 | merged.build_flags = base_env.build_flags + merged.build_flags |
| 623 | if base_env.build_src_filter: |
| 624 | merged.build_src_filter = base_env.build_src_filter + merged.build_src_filter |
| 625 | if base_env.targets: |
| 626 | merged.targets = base_env.targets + merged.targets |
| 627 | if base_env.lib_deps: |
| 628 | merged.lib_deps = base_env.lib_deps + merged.lib_deps |
| 629 | if base_env.lib_ignore: |
| 630 | merged.lib_ignore = base_env.lib_ignore + merged.lib_ignore |
| 631 | if base_env.lib_extra_dirs: |
| 632 | merged.lib_extra_dirs = base_env.lib_extra_dirs + merged.lib_extra_dirs |
| 633 | if base_env.monitor_filters: |
| 634 | merged.monitor_filters = base_env.monitor_filters + merged.monitor_filters |
| 635 | if base_env.extra_scripts: |
no test coverage detected