1818from .metadata_validator import StringExtension
1919
2020
21+ CATEGORY_REQUIRED_FIELDS = {"IAMPolicy" : {"version" : {"authors" , "owner" , "source" }}}
22+
23+
2124def example_from_yaml (
2225 yaml : Any ,
2326 sdks : Dict [str , Sdk ],
@@ -83,7 +86,7 @@ def example_from_yaml(
8386 else :
8487 for name in yaml_languages :
8588 language , errs = language_from_yaml (
86- name , yaml_languages [name ], sdks , blocks , is_action
89+ name , yaml_languages [name ], sdks , blocks , is_action , category
8790 )
8891 languages [language .name ] = language
8992 errors .extend (errs )
@@ -146,6 +149,7 @@ def language_from_yaml(
146149 sdks : Dict [str , Sdk ],
147150 blocks : Set [str ],
148151 is_action : bool ,
152+ category : str ,
149153) -> Tuple [Language , MetadataErrors ]:
150154 errors = MetadataErrors ()
151155 if name not in sdks :
@@ -161,7 +165,7 @@ def language_from_yaml(
161165
162166 versions : List [Version ] = []
163167 for version in yaml_versions :
164- vers , version_errors = version_from_yaml (version , blocks , is_action )
168+ vers , version_errors = version_from_yaml (version , blocks , is_action , category )
165169 errors .extend (version_errors )
166170 versions .append (vers )
167171
@@ -222,9 +226,14 @@ def version_from_yaml(
222226 yaml : Dict [str , Any ],
223227 cross_content_blocks : Set [str ],
224228 is_action : bool ,
229+ category : str ,
225230) -> Tuple ["Version" , MetadataErrors ]:
226231 errors = MetadataErrors ()
227232
233+ for field in CATEGORY_REQUIRED_FIELDS .get (category , {}).get ("version" , {}):
234+ if not yaml .get (field ):
235+ errors .append (metadata_errors .MissingField (field = field ))
236+
228237 sdk_version = int (yaml .get ("sdk_version" , 0 ))
229238 if sdk_version == 0 :
230239 errors .append (metadata_errors .MissingField (field = "sdk_version" ))
0 commit comments