const c = @import("c"); const zpy = @import("root.zig"); pub const Str = extern struct { const Self = @This(); data: c.PyObject, pub fn from(buffer: []const u8) *Self { return @ptrCast(c.PyUnicode_FromStringAndSize(@ptrCast(buffer), @intCast(buffer.len))); } pub fn asUtf8(self: *Self) ![]const u8 { var size: c.Py_ssize_t = undefined; const string: [*]const u8 = c.PyUnicode_AsUTF8AndSize(@ptrCast(self), &size); if (size == -1) return error.Exception; return string[0..@as(usize, @intCast(size))]; } pub fn asObject(self: *Self) *zpy.Object { return @ptrCast(self); } };