MCPcopy Create free account
hub / github.com/URLab-Sim/UnrealRoboticsLab / schema_attrs

Function schema_attrs

Scripts/codegen/_codegen_core.py:230–264  ·  view source on GitHub ↗

Read an attribute list at a dotted path, e.g. ``actuator_common.attrs``. Returns [] if missing.

(schema: Dict[str, Any], path: str)

Source from the content-addressed store, hash-verified

228
229
230def schema_attrs(schema: Dict[str, Any], path: str) -> List[str]:
231 """Read an attribute list at a dotted path, e.g.
232 ``actuator_common.attrs``. Returns [] if missing."""
233 cur: Any = schema
234 for piece in path.split("."):
235 if isinstance(cur, dict) and piece in cur:
236 cur = cur[piece]
237 else:
238 return []
239 if isinstance(cur, list):
240 if cur and isinstance(cur[0], str):
241 return list(cur)
242 attrs: List[str] = []
243 for entry in cur:
244 if isinstance(entry, dict):
245 if "attrs" in entry and isinstance(entry["attrs"], list):
246 attrs.extend([str(x) for x in entry["attrs"]])
247 else:
248 for v in entry.values():
249 if isinstance(v, list):
250 attrs.extend([str(x) for x in v])
251 seen = set()
252 out = []
253 for a in attrs:
254 if a not in seen:
255 seen.add(a)
256 out.append(a)
257 return out
258 if isinstance(cur, dict):
259 attrs2: List[str] = []
260 for v in cur.values():
261 if isinstance(v, list):
262 attrs2.extend([str(x) for x in v if isinstance(x, str)])
263 return attrs2
264 return []
265
266
267def schema_subtype_attrs(schema: Dict[str, Any], category: str,

Callers 7

emit_subclass_filesFunction · 0.90
emit_multi_uclassFunction · 0.90
kept_props_for_categoryFunction · 0.90
_collect_attrsFunction · 0.90

Calls 1

addMethod · 0.80

Tested by

no test coverage detected