Skip to content

Commit da4e318

Browse files
committed
Split runs_on normalizer due to more complex field types
1 parent ef304a6 commit da4e318

1 file changed

Lines changed: 29 additions & 2 deletions

File tree

src/openhound_github/models/workflow_job.py

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)