Сделать externed enum «общедоступным» для Python? - PullRequest
7 голосов
/ 16 февраля 2012

Я обертываю библиотеку, которая широко использует перечисления и поэтому содержит много постоянных идентификаторов.Есть ли способ сделать их доступными для Cython (объявить их как extern) и одновременно сделать их доступными для Python?

Я ищу что-то подобное

cdef extern from *:
    public enum:
        spam
        foo
        ham

который должен заменить

cdef extern from *:
    enum:
        cspam "spam"
        cfoo "foo"
        cham "ham"

spam = cspam
foo = cfoo
ham = cham

Примечание: я знаю о возможности перемещения объявлений extern в файл .pxd, чтобы избежать конфликта имен.

Спасибо,Никлас

1 Ответ

1 голос
/ 22 февраля 2012

Я использовал ctypesgen.py с некоторым успехом для экспорта типов и перечислений.Вероятно, этого будет достаточно как для Python, так и для Cython.

...