/// <summary> /// Return the PyObject as a string /// </summary> /// <returns></returns> public string ToUnicodeString() { try { if (!IsValid) { return(null); } // Manually convert from buffers to string if (GetPyType() == PyType.UnicodeType) { var size = Py.PyUnicodeUCS2_GetSize(this); if (size <= 0) { return(null); } var ptr = Py.PyUnicodeUCS2_AsUnicode(this); if (ptr == IntPtr.Zero) { return(null); } return(Marshal.PtrToStringUni(ptr, size)); } else { var size = Py.PyString_Size(this); if (size <= 0) { return(null); } var ptr = Py.PyString_AsString(this); if (ptr == IntPtr.Zero) { return(null); } return(Marshal.PtrToStringAnsi(ptr, size)); } } finally { HandlePythonError(); } }