HarfBuzz language_from_string Python метод самоанализа не принимает str - PullRequest
1 голос
/ 08 июня 2019

Я только начинаю работать с HarfBuzz и перешел на использование интерфейса GObject Introspection для изучения его API. Пока все было просто, но я немного запутался с language_from_string, который имеет следующую строку документации:

language_from_string(str:list) -> HarfBuzz.language_t

т.е. в IPython я делаю:

from gi.repository import HarfBuzz

?HarfBuzz.language_from_string

в ванильном Python вы можете заменить последнюю строку на: print(HarfBuzz.language_from_string.__doc__) (или аналогичный)

если я вызову этот метод со строкой, например:

HarfBuzz.language_from_string('en')

Я получаю

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Item 0: Must be number, not str

назад, а если я сначала преобразую в список кодов:

en = HarfBuzz.language_from_string(list(map(ord, 'en')))

ошибка исчезает, и я получаю что-то полезное обратно. например Я могу сделать:

HarfBuzz.language_to_string(en)

и я получаю ожидаемое en в виде строки.

HarfBuzz Issue # 91 об этом методе, но, похоже, не имеет отношения к делу.

1 Ответ

1 голос
/ 11 июня 2019

Вы должны назвать его как HarfBuzz.language_from_string(b'en') (строка, но с префиксом b) в python3, так как строки больше не просто последовательность байтов в py3 в отличие от py2.

Знаете ли вы какой-нибудь API gi, который получает реальное представление строки в python3? Если это так, дайте мне знать, иначе это ожидается со стороны HarfBuzz.

...