junrushao opened a new issue, #208:
URL: https://github.com/apache/tvm-ffi/issues/208
To reproduce this issue:
```python
@tvm_ffi.register_global_func("my.add")
def add(a, b):
return a + b
tvm_ffi.get_global_func_metadata("my.add")
```
Python-side global functions don't have metadata right now, which triggers
the json parser to fail:
```
File ~/Projects/tvm-ffi/python/tvm_ffi/registry.py:271, in
get_global_func_metadata(name)
236 def get_global_func_metadata(name: str) -> dict[str, Any]:
237 """Get metadata (including type schema) for a global function.
238
239 Parameters
(...) 269
270 """
--> 271 return
json.loads(get_global_func("ffi.GetGlobalFuncMetadata")(name))
File
~/.local/share/uv/python/cpython-3.14.0-macos-aarch64-none/lib/python3.14/json/__init__.py:346,
in loads(s, cls, object_hook, parse_float, parse_int, parse_constant,
object_pairs_hook, **kw)
341 s = s.decode(detect_encoding(s), 'surrogatepass')
343 if (cls is None and object_hook is None and
344 parse_int is None and parse_float is None and
345 parse_constant is None and object_pairs_hook is None and not
kw):
--> 346 return _default_decoder.decode(s)
347 if cls is None:
348 cls = JSONDecoder
File
~/.local/share/uv/python/cpython-3.14.0-macos-aarch64-none/lib/python3.14/json/decoder.py:345,
in JSONDecoder.decode(self, s, _w)
340 def decode(self, s, _w=WHITESPACE.match):
341 """Return the Python representation of ``s`` (a ``str`` instance
342 containing a JSON document).
343
344 """
--> 345 obj, end = self.raw_decode(s, idx=_w(s, 0).end())
346 end = _w(s, end).end()
347 if end != len(s):
File
~/.local/share/uv/python/cpython-3.14.0-macos-aarch64-none/lib/python3.14/json/decoder.py:363,
in JSONDecoder.raw_decode(self, s, idx)
361 obj, end = self.scan_once(s, idx)
362 except StopIteration as err:
--> 363 raise JSONDecodeError("Expecting value", s, err.value) from None
364 return obj, end
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
```
A quick fix should be really easy - basically checking in
`registry.py::get_global_func_metadata` if it's an empty string. Further
improvement would be adding metadata to Python-side registered functions, etc
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]