pyConvertBackDynamic function

Object? pyConvertBackDynamic(
  1. Pointer<PyObject> result
)

Convers a python object back to a dart representation

Implementation

Object? pyConvertBackDynamic(Pointer<PyObject> result) {
  if (result == nullptr) {
    if (pyErrOccurred()) {
      dartpyc.PyErr_Print();
      throw UnimplementedError('Python error occurred');
    }
    return null;
  }

  if (result == dartpyc.Py_None) {
    dartpyc.Py_DecRef(result);
    return null;
  } else if (result.isBool) {
    if (result == dartpyc.Py_True) {
      dartpyc.Py_DecRef(result);
      return true;
    }
    dartpyc.Py_DecRef(result);
    return false;
  } else {
    try {
      final res = result.asNum;
      dartpyc.Py_DecRef(result);
      return res;
    } on DartPyException catch (_) {
      dartpyc.PyErr_Clear();
      try {
        final res = result.asString;
        dartpyc.Py_DecRef(result);
        return res;
      } on DartPyException catch (_) {
        dartpyc.PyErr_Clear();
        throw DartPyException(
            'Could not figure out the type of the object to convert back to: not a known primitive');
      }
    }
  }
}