text: Title: Resolve Jupyter notebook system error with typed returns
  Body: ---------------------------------------------------------------------------
  OSError                                   Traceback (most recent call last)
  Cell In[67], line 1
  ----> 1 x = create_todolist_item("I need to go and visit Jeff at 3pm tomorrow")
        2 print(x)
  
  File ~/Paperplane/repos/monkey-patch.py/examples/wikipedia/../../src/monkey.py:202, in Monkey.patch.<locals>.wrapper(*args, **kwargs)
      200 @wraps(test_func)
      201 def wrapper(*args, **kwargs):
  --> 202     function_description = Register.load_function_description(test_func)
      203     f = str(function_description.__dict__.__repr__() + "\n")
      204     output = Monkey.language_modeler.generate(args, kwargs, Monkey.function_modeler, function_description)
  
  File ~/Paperplane/repos/monkey-patch.py/examples/wikipedia/../../src/register.py:86, in Register.load_function_description(func_object)
       80 # Extract class definitions for input and output types
       81 input_class_definitions = {
       82     param_name: get_class_definition(param_type)
       83     for param_name, param_type in input_type_hints.items()
       84 }
  ---> 86 output_class_definition = get_class_definition(output_type_hint)
       88 return FunctionDescription(
       89     name=func_object.__name__,
       90     docstring=docstring,
     (...)
       94     output_class_definition=output_class_definition
       95 )
  
  File ~/Paperplane/repos/monkey-patch.py/examples/wikipedia/../../src/register.py:77, in Register.load_function_description.<locals>.get_class_definition(class_type)
       75         return [get_class_definition(arg) for arg in class_type.__args__ if arg is not None]
       76 elif inspect.isclass(class_type) and class_type.__module__ != "builtins":
  ---> 77     return inspect.getsource(class_type)
       78 return class_type.__name__
  
  File /usr/local/Cellar/python@3.11/3.11.4_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/inspect.py:1262, in getsource(object)
     1256 def getsource(object):
     1257     """Return the text of the source code for an object.
     1258 
     1259     The argument may be a module, class, method, function, traceback, frame,
     1260     or code object.  The source code is returned as a single string.  An
     1261     OSError is raised if the source code cannot be retrieved."""
  -> 1262     lines, lnum = getsourcelines(object)
     1263     return ''.join(lines)
  
  File /usr/local/Cellar/python@3.11/3.11.4_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/inspect.py:1244, in getsourcelines(object)
     1236 """Return a list of source lines and starting line number for an object.
     1237 
     1238 The argument may be a module, class, method, function, traceback, frame,
     (...)
     1241 original source file the first line of code was found.  An OSError is
     1242 raised if the source code cannot be retrieved."""
     1243 object = unwrap(object)
  -> 1244 lines, lnum = findsource(object)
     1246 if istraceback(object):
     1247     object = object.tb_frame
  
  File /usr/local/Cellar/python@3.11/3.11.4_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/inspect.py:1063, in findsource(object)
     1055 def findsource(object):
     1056     """Return the entire source file and starting line number for an object.
     1057 
     1058     The argument may be a module, class, method, function, traceback, frame,
     1059     or code object.  The source code is returned as a list of all the lines
     1060     in the file and the line number indexes a line in that list.  An OSError
     1061     is raised if the source code cannot be retrieved."""
  -> 1063     file = getsourcefile(object)
     1064     if file:
     1065         # Invalidate cache if needed.
     1066         linecache.checkcache(file)
  
  File /usr/local/Cellar/python@3.11/3.11.4_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/inspect.py:940, in getsourcefile(object)
      936 def getsourcefile(object):
      937     """Return the filename that can be used to locate an object's source.
      938     Return None if no way can be identified to get the source.
      939     """
  --> 940     filename = getfile(object)
      941     all_bytecode_suffixes = importlib.machinery.DEBUG_BYTECODE_SUFFIXES[:]
      942     all_bytecode_suffixes += importlib.machinery.OPTIMIZED_BYTECODE_SUFFIXES[:]
  
  File /usr/local/Cellar/python@3.11/3.11.4_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/inspect.py:908, in getfile(object)
      906             return module.__file__
      907         if object.__module__ == '__main__':
  --> 908             raise OSError('source code not available')
      909     raise TypeError('{!r} is a built-in class'.format(object))
      910 if ismethod(object):
  
  OSError: source code not available