/// <summary> /// Attach the PyObject to a new PySharp object /// </summary> /// <param name="pySharp">New PySharp object</param> /// <returns>A new copy of itself</returns> public PyObject Attach(PySharp pySharp) { if (_newReference) { Py.Py_IncRef(_pyReference); } return(new PyObject(pySharp, _pyReference, _newReference)); }
/// <summary> /// Get a PyObject from a list /// </summary> /// <typeparam name="TItem"></typeparam> /// <param name="value"></param> /// <returns></returns> public PyObject From <TItem>(IEnumerable <TItem> value) { var result = new PyObject(this, Py.PyList_New(value.Count()), true); for (var i = 0; i < value.Count(); i++) { var pyItem = From(value.ElementAt(i)); if (pyItem == null) { return(PyZero); } // PyList_SetItem steals a reference, this makes sure we dont free it later Py.Py_IncRef(pyItem); if (Py.PyList_SetItem(result, i, pyItem) == -1) { return(PyZero); } } return(result); }