PyGObject GTK+ GLib.Date strftime()
Вызов метода в Poppler возвращает GDate
объект в моем коде Python. Я не могу найти способ, как красиво напечатать этот объект.
Следуя Справочнику по API Python GI, я придумал следующее:
gdate_object = annot_mapping.annot.get_date()
destination_buffer = '.' * 50
print('Output:', GLib.Date.strftime(destination_buffer, 50, '%c', gdate_object))
print('Buffer:', annot_time)
Однако это ничего не помещает в буфер, в то время как он выводит размер записанного буфера.
Как мне получить доступ к буферу назначения?
1 ответ
Решение
Похоже, никто не задокументировал этот API, поэтому он будет нарушен для привязок самоанализа.
Я сделал простой патч, но кажется, что pygobject не любит выделять строковые буферы, я поговорю об этом с апстримом.
diff --git a/glib/gdate.c b/glib/gdate.c
index bea2448..bacdb93 100644
--- a/glib/gdate.c
+++ b/glib/gdate.c
@@ -2418,8 +2418,8 @@ win32_strftime_helper (const GDate *d,
/**
* g_date_strftime:
- * @s: destination buffer
- * @slen: buffer size
+ * @s: (out caller-allocates) (array length=slen): destination buffer
+ * @slen: (in): buffer size
* @format: format string
* @date: valid #GDate
*