MCPcopy Create free account
hub / github.com/abetlen/llama-cpp-python / visit

Method visit

examples/server/server.py:330–354  ·  view source on GitHub ↗
(node: Any)

Source from the content-addressed store, hash-verified

328
329 def resolve_refs(self, schema: Dict[str, Any], url: str) -> Dict[str, Any]:
330 def visit(node: Any) -> Any:
331 if isinstance(node, list):
332 return [visit(child) for child in node]
333 if isinstance(node, dict):
334 ref = node.get("$ref")
335 if ref is not None and ref not in self._refs:
336 if ref.startswith("https://"):
337 raise ValueError("remote schema fetch is not allowed")
338 elif ref.startswith("#/"):
339 target = schema
340 ref = f"{url}{ref}"
341 node["$ref"] = ref
342 else:
343 raise ValueError(f"Unsupported ref {ref}")
344
345 for selector in ref.split("#")[-1].split("/")[1:]:
346 assert target is not None and selector in target, (
347 f"Error resolving ref {ref}: {selector} not in {target}"
348 )
349 target = target[selector]
350 self._refs[ref] = target
351 else:
352 for value in node.values():
353 visit(value)
354 return node
355
356 return cast(Dict[str, Any], visit(schema))
357

Callers 4

_generate_union_ruleMethod · 0.95
_resolve_refMethod · 0.95
_build_object_ruleMethod · 0.95
to_gbnfMethod · 0.45

Calls 11

_reserved_namesMethod · 0.95
_add_ruleMethod · 0.95
_resolve_refMethod · 0.95
_generate_union_ruleMethod · 0.95
_build_object_ruleMethod · 0.95
_build_repetitionMethod · 0.95
_visit_patternMethod · 0.95
_add_primitiveMethod · 0.95
_primitive_rulesMethod · 0.95
_string_format_rulesMethod · 0.95

Tested by

no test coverage detected