Error with lv_micropython and python3.8

Any ideas? Should I Up the Python to higher versions?
Thanks!

~/lv_micropython$ make -C ports/unix
make: Entering directory ‘/home/ganantharaman/lv_micropython/ports/unix’
Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
LVGL-GEN build-standard/lvgl/lv_mpy.c
File “…/…/lib/lv_bindings/gen/gen_mpy.py”, line 1882
return (user_data if user_data_found else None), *get_user_data_accessors(containing_struct, containing_struct_name)
^
SyntaxError: invalid syntax
…/…/extmod/extmod.mk:399: recipe for target ‘build-standard/lvgl/lv_mpy.c’ failed
make: *** [build-standard/lvgl/lv_mpy.c] Error 1
make: *** Deleting file ‘build-standard/lvgl/lv_mpy.c’
make: Leaving directory ‘/home/ganantharaman/lv_micropython/ports/unix’
~/lv_micropython$ python3 --version
Python 3.8.0
~/lv_micropython$ python --version
Python 3.8.0

def get_user_data(func, func_name = None, containing_struct = None, containing_struct_name = None):
args = func.args.params
if not func_name: func_name = get_arg_name(func.type)
# print(‘/* → callback: func_name = %s, args = %s /’ % (func_name, repr(args)))
user_data_found = False
getter = None
setter = None
user_data = ‘None’
if len(args) > 0 and isinstance(args[0].type, c_ast.PtrDecl):
# if isinstance(args[0].type.type.type, c_ast.Struct):
# struct_arg_type_name = args[0].type.type.type.name # PtrDecl.TypeDecl.Struct. Needed to omit ‘struct’ keyword.
# else:
# struct_arg_type_name = get_type(args[0].type.type, remove_quals = True)
struct_arg_type_name = get_type(args[0].type.type, remove_quals = True)
# print('/
→ get_user_data: containing_struct_name = %s, struct_arg_type_name = %s /’ % (containing_struct_name, struct_arg_type_name))
if containing_struct_name and struct_arg_type_name != containing_struct_name:
return None, None, None
if not containing_struct:
try_generate_type(args[0].type)
if struct_arg_type_name in structs:
containing_struct = structs[struct_arg_type_name]
# print('/
→ containing_struct = %s /’ % containing_struct)
# if struct_arg_type_name in mp_to_lv:
# print('/
→ callback: %s First argument is %s /’ % (gen.visit(func), struct_arg_type_name))
if containing_struct:
flatten_struct_decls = flatten_struct(containing_struct.decls)
user_data = ‘user_data’
user_data_found = user_data in [decl.name for decl in flatten_struct_decls]
# print('/
→ callback: user_data=%s user_data_found=%s containing_struct=%s */’ % (user_data, user_data_found, containing_struct))
if not user_data_found and lvgl_json is not None:
containing_struct_j = next((struct for struct in lvgl_json[“structures”] if struct[“name”] == struct_arg_type_name), None)
if (containing_struct_j is None
and struct_arg_type_name.startswith(“lv_”)
and None is not next((fwd_decl for fwd_decl in lvgl_json[“forward_decls”] if fwd_decl[“name”] == struct_arg_type_name), None)
):
struct_arg_type_name_with_underscore = “_” + struct_arg_type_name
containing_struct_j = next((struct for struct in lvgl_json[“structures”] if struct[“name”] == struct_arg_type_name_with_underscore), None)
if containing_struct_j is not None:
user_data_found = any(user_data == field[“name”] for field in containing_struct_j[“fields”])
getter, setter = get_user_data_accessors(containing_struct, containing_struct_name)
# Ensure that getter and setter are initialized
# Ensure that getter and setter are initialized
if not getter:
getter = None
if not setter:
setter = None
return (user_data if user_data_found else None), getter, setter

This allows me to get past. The problem is with Python 3.5 syntax ( *get_user_…) which I converted to Pre 3.5