@@ -167,9 +167,9 @@ class WorkflowJob(BaseAsset):
167167 def org_node_id (self ) -> str | None :
168168 return self ._lookup .org_id_for_login (self .org_login )
169169
170- @field_validator ("runs_on" , " permissions" , mode = "before" )
170+ @field_validator ("permissions" , mode = "before" )
171171 @classmethod
172- def normalize_mapping (cls , value : Any ) -> list [str ] | None :
172+ def normalize_permissions (cls , value : Any ) -> list [str ] | None :
173173 if value is None :
174174 return None
175175
@@ -184,6 +184,33 @@ def normalize_mapping(cls, value: Any) -> list[str] | None:
184184
185185 return [str (value )]
186186
187+ @field_validator ("runs_on" , mode = "before" )
188+ @classmethod
189+ def normalize_runs_on (cls , value : Any ) -> list [str ] | None :
190+ if value is None :
191+ return None
192+
193+ if isinstance (value , str ):
194+ return [value ]
195+
196+ if isinstance (value , list ):
197+ return [str (item ) for item in value ]
198+
199+ if isinstance (value , dict ):
200+ labels = value .get ("labels" )
201+ if labels is None :
202+ return None
203+
204+ if isinstance (labels , str ):
205+ return [labels ]
206+
207+ if isinstance (labels , list ):
208+ return [str (item ) for item in labels ]
209+
210+ return [str (labels )]
211+
212+ return [str (value )]
213+
187214 @property
188215 def as_node (self ) -> GHNode :
189216 return GHNode (
0 commit comments