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]

Reply via email to