private static Dictionary <PyString, PyObject> GetDotNetModules() { BorrowedReference pyModules = Runtime.PyImport_GetModuleDict(); using var items = Runtime.PyDict_Items(pyModules); nint length = Runtime.PyList_Size(items.BorrowOrThrow()); Debug.Assert(length >= 0); var modules = new Dictionary <PyString, PyObject>(); for (nint i = 0; i < length; i++) { BorrowedReference item = Runtime.PyList_GetItem(items.Borrow(), i); BorrowedReference name = Runtime.PyTuple_GetItem(item, 0); BorrowedReference module = Runtime.PyTuple_GetItem(item, 1); if (ManagedType.IsInstanceOfManagedType(module)) { modules.Add(new PyString(name), new PyObject(module)); } } return(modules); }