Fixing size parameter handling in len-mechanism to handle function parameters with different size parameters
- [x] This contribution adheres to CONTRIBUTING.md.
- [ ] ~~I've updated CHANGELOG.md if applicable.~~
- [x] I've added tests applicable for this pull request
What does this Pull Request accomplish?
Fixes the codegen to properly handle functions with multiple array parameters that reference different size parameters:
-
Updates
metadata_filters.py: Refactors thefilter_parametersfunction to collect all size parameter names referenced by len-sized parameters into alen_size_parameter_names, replacing the previous singlelen_size_parameterapproach. Removed assert to check if all size parameters are same fromfilter_len_parameters. Following this updated var names indefault_method.py.makoandinitialization_method.py.makoto reflect multiple possible size params. -
Updates to nifake to enable testing: Details covered in testing section
Previously, it was assumed all len-mechanism arrays in a function shared the same size parameter. This change enables functions like CreateDeembeddingSparameterTableArray in NI-RFSG where frequencies uses frequenciesSize and sparameterTable uses sparameterTableSize.
List issues fixed by this Pull Request
Issue 2137: Fix size parameter handling for functions with parameters referencing multiple size parameters. Additional PR needs to be raised to update NI-RFSG function metadata (CreateDeembeddingSparameterTableArray) to consume these changes.
What testing has been done?
- Added
MultipleArraysDifferentSizefunction to nifake metadata with two arrays (valuesArrayusingvaluesArraySize, anddataArrayusingdataArraySize) to test the change in filter param logic - Added unit test
test_multiple_arrays_different_sizeintest_library_interpreter.pythat verifies correct handling of multiple arrays with independent size parameters - Test validates that each array's length is properly calculated and passed with its corresponding size parameter (3 elements for
valuesArraywithvaluesArraySize, and 5 elements fordataArraywithdataArraySize) - All existing tests continue to pass.