pycep-parser 0.7.0.dev7__tar.gz → 0.7.0.dev8__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.
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/PKG-INFO +1 -1
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/pycep/bicep.lark +3 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/pycep/transformer.py +33 -1
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/pycep/typing.py +31 -2
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/pyproject.toml +2 -2
- pycep_parser-0.7.0.dev8/tests/examples/basic/07-func/main.bicep +27 -0
- pycep_parser-0.7.0.dev8/tests/examples/basic/07-func/result.json +140 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_parse_general.py +13 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/LICENSE +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/README.md +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/pycep/__init__.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/pycep/main.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/pycep/models.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/pycep/py.typed +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/pycep/rules/__init__.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/pycep/rules/decorators.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/pycep/rules/functions.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/pycep/utils.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/pycep/validator.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/__init__.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/01-param/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/01-param/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/02-var/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/02-var/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/03-output/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/03-output/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/04-resource/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/04-resource/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/05-module/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/05-module/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/06-type/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/06-type/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complete/playground/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complete/playground/result-line-numbers.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complete/playground/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/01-param-decorator/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/01-param-decorator/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/02-resource-module-decorator/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/02-resource-module-decorator/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/03-resource-existing/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/03-resource-existing/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/04-child-resource/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/04-child-resource/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/05-deploy-condition/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/05-deploy-condition/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/06-output-decorator/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/06-output-decorator/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/07-module-alias/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/07-module-alias/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/08-var-decorator/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/08-var-decorator/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/09-metadata/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/09-metadata/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/10-extension/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/10-extension/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/11-typed-var/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/11-typed-var/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/12-nullable-type/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/12-nullable-type/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/13-import/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/13-import/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/14-type-decorator/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/14-type-decorator/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/invalid/invalid_multi_line.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/loop/array/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/loop/array/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/loop/array-index/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/loop/array-index/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/loop/array-w-newline/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/loop/array-w-newline/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/loop/child/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/loop/child/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/loop/condition/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/loop/condition/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/loop/object/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/loop/object/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/scope/management_group/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/scope/management_group/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/scope/resource_group/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/scope/resource_group/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/scope/subscription/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/scope/subscription/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/scope/tenant/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/scope/tenant/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/__init__.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/any/any/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/any/any/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/array/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/array/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/concat/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/concat/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/contains/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/contains/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/empty/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/empty/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/first/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/first/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/flatten/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/flatten/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/intersection/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/intersection/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/last/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/last/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/length/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/length/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/max/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/max/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/min/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/min/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/skip/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/skip/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/take/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/take/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/union/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/array/union/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/date/date_time_add/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/date/date_time_add/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/date/date_time_from_epoch/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/date/date_time_from_epoch/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/date/date_time_to_epoch/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/date/date_time_to_epoch/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/date/utc_now/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/date/utc_now/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/deployment/deployment/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/deployment/deployment/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/deployment/environment/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/deployment/environment/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/file/load_file_as_base64/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/file/load_file_as_base64/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/file/load_json_content/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/file/load_json_content/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/file/load_text_content/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/file/load_text_content/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/file/load_yaml_content/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/file/load_yaml_content/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/lambda/filter/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/lambda/filter/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/logical/bool/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/logical/bool/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/numeric/int/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/numeric/int/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/object/json/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/object/json/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/resource/extension_resource_id/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/resource/extension_resource_id/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/resource/list_keys/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/resource/list_keys/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/resource/management_group_resource_id/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/resource/management_group_resource_id/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/resource/pick_zones/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/resource/pick_zones/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/resource/reference/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/resource/reference/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/resource/resource_id/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/resource/resource_id/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/resource/subscription_resource_id/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/resource/subscription_resource_id/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/resource/tenant_resource_id/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/resource/tenant_resource_id/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/scope/management_group/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/scope/management_group/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/scope/resource_group/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/scope/resource_group/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/scope/subscription/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/scope/subscription/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/scope/tenant/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/scope/tenant/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/base64/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/base64/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/base64_to_json/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/base64_to_json/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/base64_to_string/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/base64_to_string/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/data_uri/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/data_uri/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/data_uri_to_string/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/data_uri_to_string/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/ends_with/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/ends_with/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/format/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/format/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/guid/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/guid/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/index_of/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/index_of/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/join/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/join/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/last_index_of/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/last_index_of/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/new_guid/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/new_guid/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/pad_left/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/pad_left/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/replace/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/replace/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/split/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/split/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/starts_with/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/starts_with/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/string/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/string/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/substring/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/substring/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/to_lower/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/to_lower/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/to_upper/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/to_upper/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/trim/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/trim/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/unique_string/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/unique_string/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/uri/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/uri/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/uri_component/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/uri_component/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/uri_component_to_string/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/string/uri_component_to_string/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/test_parse_any.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/test_parse_array.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/test_parse_date.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/test_parse_deployment.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/test_parse_file.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/test_parse_lambda.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/test_parse_logical.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/test_parse_numeric.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/test_parse_object.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/test_parse_resource.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/test_parse_scope.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/test_parse_string.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_main.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/accessor/function/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/accessor/function/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/accessor/index/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/accessor/index/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/accessor/nested_resource/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/accessor/nested_resource/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/accessor/non_null/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/accessor/non_null/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/accessor/property/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/accessor/property/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/comparison/equals/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/comparison/equals/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/comparison/equals_case_insensitive/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/comparison/equals_case_insensitive/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/comparison/greater_than/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/comparison/greater_than/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/comparison/greater_than_or_equals/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/comparison/greater_than_or_equals/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/comparison/less_than/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/comparison/less_than/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/comparison/less_than_or_equals/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/comparison/less_than_or_equals/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/comparison/not_equals/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/comparison/not_equals/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/comparison/not_equals_case_insensitive/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/comparison/not_equals_case_insensitive/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/logical/and/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/logical/and/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/logical/coalesce/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/logical/coalesce/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/logical/conditional/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/logical/conditional/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/logical/not/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/logical/not/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/logical/or/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/logical/or/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/numeric/add/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/numeric/add/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/numeric/divide/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/numeric/divide/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/numeric/minus/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/numeric/minus/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/numeric/modulo/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/numeric/modulo/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/numeric/multiply/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/numeric/multiply/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/numeric/substract/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/numeric/substract/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/safe_dereference/main.bicep +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/examples/safe_dereference/result.json +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/test_parse_accessor.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/test_parse_comparison.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/test_parse_logical.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/test_parse_numeric.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_operator/test_parse_safe_dereference.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_parse_loop.py +0 -0
- {pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_parse_scope.py +0 -0
|
@@ -10,6 +10,7 @@ element: "targetScope" "=" QUOTED_INTERPOLATION
|
|
|
10
10
|
| [decorators] "resource" STRING type_api_pair [EXISTING] "=" resource_value -> resource
|
|
11
11
|
| [decorators] "module" STRING module_path "=" module_value -> module
|
|
12
12
|
| [decorators] "type" STRING "=" type_value -> custom_type
|
|
13
|
+
| [decorators] "func" _func_statement -> custom_func
|
|
13
14
|
|
|
14
15
|
?value: _NEWLINE? "null" -> null
|
|
15
16
|
| _NEWLINE? "true" -> true
|
|
@@ -30,6 +31,8 @@ element: "targetScope" "=" QUOTED_INTERPOLATION
|
|
|
30
31
|
|
|
31
32
|
_import_statement: (("{" import_alias ("," import_alias)* "}" | import_alias) "from" QUOTED_INTERPOLATION | QUOTED_INTERPOLATION)
|
|
32
33
|
|
|
34
|
+
_func_statement: STRING "(" (STRING data_type ("," STRING data_type)*)? ")" data_type "=>" value_brackets
|
|
35
|
+
|
|
33
36
|
// element values
|
|
34
37
|
|
|
35
38
|
?var_value: value_brackets | loop
|
|
@@ -63,7 +63,7 @@ class BicepToJson(Transformer[Token, pycep_typing.BicepJson]):
|
|
|
63
63
|
# very unlikely this will happen in a real Bicep file, but in test files possible
|
|
64
64
|
continue
|
|
65
65
|
for key, value in arg.items():
|
|
66
|
-
result.setdefault(key, {})[value["__name__"]] = value["__attrs__"] # ty: ignore[
|
|
66
|
+
result.setdefault(key, {})[value["__name__"]] = value["__attrs__"] # ty: ignore[not-subscriptable, no-matching-overload]
|
|
67
67
|
|
|
68
68
|
return result
|
|
69
69
|
|
|
@@ -356,6 +356,38 @@ class BicepToJson(Transformer[Token, pycep_typing.BicepJson]):
|
|
|
356
356
|
|
|
357
357
|
return result
|
|
358
358
|
|
|
359
|
+
@v_args(meta=True)
|
|
360
|
+
def custom_func(
|
|
361
|
+
self,
|
|
362
|
+
meta: Meta,
|
|
363
|
+
args: tuple[
|
|
364
|
+
list[pycep_typing.Decorator] | None,
|
|
365
|
+
Token,
|
|
366
|
+
pycep_typing.PossibleValue,
|
|
367
|
+
pycep_typing.PossibleValue,
|
|
368
|
+
],
|
|
369
|
+
) -> pycep_typing.FunctionResponse:
|
|
370
|
+
decorators, name, *arg_type_pairs, return_type, expression = args
|
|
371
|
+
|
|
372
|
+
result: pycep_typing.FunctionResponse = {
|
|
373
|
+
"functions": {
|
|
374
|
+
"__name__": str(name),
|
|
375
|
+
"__attrs__": {
|
|
376
|
+
"decorators": decorators or [],
|
|
377
|
+
# TODO: change `zip` to `itertools.pairwise` when updating to Python 3.10
|
|
378
|
+
"args": {str(arg_name): arg_type for arg_name, arg_type in zip(*[iter(arg_type_pairs)] * 2)},
|
|
379
|
+
"type": return_type,
|
|
380
|
+
"expression": expression,
|
|
381
|
+
},
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
if self.add_line_numbers:
|
|
386
|
+
result["functions"]["__attrs__"]["__start_line__"] = meta.line
|
|
387
|
+
result["functions"]["__attrs__"]["__end_line__"] = meta.end_line
|
|
388
|
+
|
|
389
|
+
return result
|
|
390
|
+
|
|
359
391
|
####################
|
|
360
392
|
#
|
|
361
393
|
# element type extras
|
|
@@ -10,7 +10,7 @@ PossibleNoneValue: TypeAlias = "PossibleValue | None"
|
|
|
10
10
|
ModulePath: TypeAlias = "LocalModulePath | BicepRegistryModulePath | BicepRegistryAliasModulePath | TemplateSpecModulePath | TemplateSpecAliasModulePath"
|
|
11
11
|
ModuleDetail: TypeAlias = "_LocalModulePathDetail | _BicepRegistryModulePathDetail | _BicepRegistryAliasModulePathDetail | _TemplateSpecModulePathDetail | _TemplateSpecAliasModulePathDetail"
|
|
12
12
|
LoopType: TypeAlias = "LoopArray | LoopArrayIndex | LoopObject | LoopRange"
|
|
13
|
-
ElementResponse: TypeAlias = "ImportResponse | ParamResponse | VarResponse | ResourceResponse | ModuleResponse | OutputResponse | TypeResponse | ExtensionResponse"
|
|
13
|
+
ElementResponse: TypeAlias = "ImportResponse | ParamResponse | VarResponse | ResourceResponse | ModuleResponse | OutputResponse | TypeResponse | ExtensionResponse | FunctionResponse"
|
|
14
14
|
Decorator: TypeAlias = "DecoratorAllowed | DecoratorBatchSize | DecoratorDescription | DecoratorExport | DecoratorMinLength | DecoratorMaxLength | DecoratorMinValue | DecoratorMaxValue | DecoratorMetadata | DecoratorSealed | DecoratorSecure | UnknownDecorator"
|
|
15
15
|
|
|
16
16
|
ComparisonOperators: TypeAlias = "GreaterThanOrEquals | GreaterThan | LessThanOrEquals | LessThan | Equals | NotEquals | EqualsCaseInsensitive | NotEqualsCaseInsensitive"
|
|
@@ -209,8 +209,34 @@ class ApiTypeVersion(TypedDict):
|
|
|
209
209
|
api_version: str
|
|
210
210
|
|
|
211
211
|
|
|
212
|
+
TypeAttributes: TypeAlias = VariableAttributes
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
class _Types(TypedDict):
|
|
216
|
+
__name__: str
|
|
217
|
+
__attrs__: TypeAttributes
|
|
218
|
+
|
|
219
|
+
|
|
212
220
|
class TypeResponse(TypedDict):
|
|
213
|
-
types:
|
|
221
|
+
types: _Types
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
class FunctionAttributes(TypedDict):
|
|
225
|
+
decorators: list[Decorator]
|
|
226
|
+
args: dict[str, str]
|
|
227
|
+
type: str
|
|
228
|
+
expression: PossibleValue
|
|
229
|
+
__start_line__: NotRequired[int]
|
|
230
|
+
__end_line__: NotRequired[int]
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
class _Functions(TypedDict):
|
|
234
|
+
__name__: str
|
|
235
|
+
__attrs__: FunctionAttributes
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
class FunctionResponse(TypedDict):
|
|
239
|
+
functions: _Functions
|
|
214
240
|
|
|
215
241
|
|
|
216
242
|
####################
|
|
@@ -1337,6 +1363,9 @@ class PropertyAccessor(TypedDict):
|
|
|
1337
1363
|
class BicepJson(TypedDict):
|
|
1338
1364
|
globals: GlobalsAttributes
|
|
1339
1365
|
imports: NotRequired[dict[str, ImportAttributes]]
|
|
1366
|
+
extensions: NotRequired[dict[str, ExtensionAttributes]]
|
|
1367
|
+
types: NotRequired[dict[str, VariableAttributes]]
|
|
1368
|
+
functions: NotRequired[dict[str, FunctionAttributes]]
|
|
1340
1369
|
parameters: NotRequired[dict[str, ParameterAttributes]]
|
|
1341
1370
|
variables: NotRequired[dict[str, VariableAttributes]]
|
|
1342
1371
|
resources: NotRequired[dict[str, ResourceAttributes]]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "pycep-parser"
|
|
3
|
-
version = "0.7.0.
|
|
3
|
+
version = "0.7.0.dev8"
|
|
4
4
|
description = "A Python based Bicep parser"
|
|
5
5
|
authors = [
|
|
6
6
|
{ name = "Anton Grübel", email = "anton.gruebel@gmail.com" }
|
|
@@ -39,7 +39,7 @@ dev = [
|
|
|
39
39
|
"assertpy>=1.1,<2.0",
|
|
40
40
|
"prek>=0.2.25,<0.3.0",
|
|
41
41
|
"pytest>=8.4.2,<9.0.0",
|
|
42
|
-
"ty>=0.0.
|
|
42
|
+
"ty>=0.0.8,<0.1.0",
|
|
43
43
|
]
|
|
44
44
|
|
|
45
45
|
[build-system]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// https://docs.azure.cn/en-us/azure-resource-manager/bicep/user-defined-functions
|
|
2
|
+
|
|
3
|
+
// definition
|
|
4
|
+
func buildUrl(https bool, hostname string, path string) string => '${https ? 'https' : 'http'}://${hostname}${empty(path) ? '' : '/${path}'}'
|
|
5
|
+
|
|
6
|
+
func sayHelloString(name string) string => 'Hi ${name}!'
|
|
7
|
+
|
|
8
|
+
func sayHelloObject(name string) object => {
|
|
9
|
+
hello: 'Hi ${name}!'
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
func nameArray(name string) array => [
|
|
13
|
+
name
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
func addNameArray(name string) array => [
|
|
17
|
+
'Mary'
|
|
18
|
+
'Bob'
|
|
19
|
+
name
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
// usage
|
|
23
|
+
output azureUrl string = buildUrl(true, 'microsoft.com', 'azure')
|
|
24
|
+
output greetingArray array = map(['Evie', 'Casper'], name => sayHelloString(name))
|
|
25
|
+
output greetingObject object = sayHelloObject('John')
|
|
26
|
+
output nameArray array = nameArray('John')
|
|
27
|
+
output addNameArray array = addNameArray('John')
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
{
|
|
2
|
+
"globals": {
|
|
3
|
+
"scope": {
|
|
4
|
+
"value": "resourceGroup"
|
|
5
|
+
}
|
|
6
|
+
},
|
|
7
|
+
"functions": {
|
|
8
|
+
"buildUrl": {
|
|
9
|
+
"decorators": [],
|
|
10
|
+
"args": {
|
|
11
|
+
"https": "bool",
|
|
12
|
+
"hostname": "string",
|
|
13
|
+
"path": "string"
|
|
14
|
+
},
|
|
15
|
+
"type": "string",
|
|
16
|
+
"expression": "${https ? 'https' : 'http'}://${hostname}${empty(path) ? '' : '/${path}'}"
|
|
17
|
+
},
|
|
18
|
+
"sayHelloString": {
|
|
19
|
+
"decorators": [],
|
|
20
|
+
"args": {
|
|
21
|
+
"name": "string"
|
|
22
|
+
},
|
|
23
|
+
"type": "string",
|
|
24
|
+
"expression": "Hi ${name}!"
|
|
25
|
+
},
|
|
26
|
+
"sayHelloObject": {
|
|
27
|
+
"decorators": [],
|
|
28
|
+
"args": {
|
|
29
|
+
"name": "string"
|
|
30
|
+
},
|
|
31
|
+
"type": "object",
|
|
32
|
+
"expression": {
|
|
33
|
+
"hello": "Hi ${name}!"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"nameArray": {
|
|
37
|
+
"decorators": [],
|
|
38
|
+
"args": {
|
|
39
|
+
"name": "string"
|
|
40
|
+
},
|
|
41
|
+
"type": "array",
|
|
42
|
+
"expression": [
|
|
43
|
+
"name"
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
"addNameArray": {
|
|
47
|
+
"decorators": [],
|
|
48
|
+
"args": {
|
|
49
|
+
"name": "string"
|
|
50
|
+
},
|
|
51
|
+
"type": "array",
|
|
52
|
+
"expression": [
|
|
53
|
+
"Mary",
|
|
54
|
+
"Bob",
|
|
55
|
+
"name"
|
|
56
|
+
]
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"outputs": {
|
|
60
|
+
"azureUrl": {
|
|
61
|
+
"decorators": [],
|
|
62
|
+
"type": "string",
|
|
63
|
+
"value": {
|
|
64
|
+
"function": {
|
|
65
|
+
"type": "buildUrl",
|
|
66
|
+
"parameters": {
|
|
67
|
+
"arg_1": true,
|
|
68
|
+
"arg_2": "microsoft.com",
|
|
69
|
+
"arg_3": "azure"
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"greetingArray": {
|
|
75
|
+
"decorators": [],
|
|
76
|
+
"type": "array",
|
|
77
|
+
"value": {
|
|
78
|
+
"function": {
|
|
79
|
+
"type": "map",
|
|
80
|
+
"parameters": {
|
|
81
|
+
"arg_1": [
|
|
82
|
+
"Evie",
|
|
83
|
+
"Casper"
|
|
84
|
+
],
|
|
85
|
+
"arg_2": {
|
|
86
|
+
"type": "lambda_expression",
|
|
87
|
+
"detail": {
|
|
88
|
+
"var_1": "name",
|
|
89
|
+
"expression": {
|
|
90
|
+
"function": {
|
|
91
|
+
"type": "sayHelloString",
|
|
92
|
+
"parameters": {
|
|
93
|
+
"arg_1": "name"
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"greetingObject": {
|
|
104
|
+
"decorators": [],
|
|
105
|
+
"type": "object",
|
|
106
|
+
"value": {
|
|
107
|
+
"function": {
|
|
108
|
+
"type": "sayHelloObject",
|
|
109
|
+
"parameters": {
|
|
110
|
+
"arg_1": "John"
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
"nameArray": {
|
|
116
|
+
"decorators": [],
|
|
117
|
+
"type": "array",
|
|
118
|
+
"value": {
|
|
119
|
+
"function": {
|
|
120
|
+
"type": "nameArray",
|
|
121
|
+
"parameters": {
|
|
122
|
+
"arg_1": "John"
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
"addNameArray": {
|
|
128
|
+
"decorators": [],
|
|
129
|
+
"type": "array",
|
|
130
|
+
"value": {
|
|
131
|
+
"function": {
|
|
132
|
+
"type": "addNameArray",
|
|
133
|
+
"parameters": {
|
|
134
|
+
"arg_1": "John"
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
@@ -87,6 +87,19 @@ def test_parse_type() -> None:
|
|
|
87
87
|
assert_that(result).is_equal_to(expected_result)
|
|
88
88
|
|
|
89
89
|
|
|
90
|
+
def test_parse_func() -> None:
|
|
91
|
+
# given
|
|
92
|
+
sub_dir_path = EXAMPLES_DIR / "basic/07-func"
|
|
93
|
+
file_path = sub_dir_path / "main.bicep"
|
|
94
|
+
expected_result = json.loads((sub_dir_path / "result.json").read_text())
|
|
95
|
+
|
|
96
|
+
# when
|
|
97
|
+
result = BICEP_PARSER.parse(file_path=file_path)
|
|
98
|
+
|
|
99
|
+
# then
|
|
100
|
+
assert_that(result).is_equal_to(expected_result)
|
|
101
|
+
|
|
102
|
+
|
|
90
103
|
def test_parse_param_decorator() -> None:
|
|
91
104
|
# given
|
|
92
105
|
sub_dir_path = EXAMPLES_DIR / "complex/01-param-decorator"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/01-param/main.bicep
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/01-param/result.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/03-output/main.bicep
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/03-output/result.json
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/04-resource/main.bicep
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/04-resource/result.json
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/05-module/main.bicep
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/05-module/result.json
RENAMED
|
File without changes
|
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/basic/06-type/result.json
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complete/playground/main.bicep
RENAMED
|
File without changes
|
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complete/playground/result.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/09-metadata/main.bicep
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/09-metadata/result.json
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/10-extension/main.bicep
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/10-extension/result.json
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/11-typed-var/main.bicep
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/11-typed-var/result.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/13-import/main.bicep
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/complex/13-import/result.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/invalid/invalid_multi_line.bicep
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/loop/array-index/main.bicep
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/loop/array-index/result.json
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/loop/array-w-newline/main.bicep
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/loop/array-w-newline/result.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/loop/condition/main.bicep
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/loop/condition/result.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/scope/management_group/main.bicep
RENAMED
|
File without changes
|
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/scope/resource_group/main.bicep
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/scope/resource_group/result.json
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/scope/subscription/main.bicep
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/examples/scope/subscription/result.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/any/any/main.bicep
RENAMED
|
File without changes
|
{pycep_parser-0.7.0.dev7 → pycep_parser-0.7.0.dev8}/tests/test_function/examples/any/any/result.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|