Невозможно использовать цитонизированный модуль с абстрактным статическим методом. - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь конвертировать один из моих модулей Python, используя Cython.Cython успешно генерирует файл .pyd, но когда я пытаюсь его импортировать, происходит сбой:

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
>>> import example
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "example.py", line 6, in init example
    @abstractmethod
  File "C:\Program Files\Python3\lib\abc.py", line 23, in abstractmethod
    funcobj.__isabstractmethod__ = True
AttributeError: attribute '__isabstractmethod__' of 'staticmethod' objects is not writable

Мой модуль содержит метод, который является одновременно абстрактным и статическим:

from abc import abstractmethod

class c:
    @abstractmethod
    @staticmethod
    def foo():
        raise NotImplementedError

Согласнодо https://docs.python.org/3/library/abc.html#abc.abstractmethod это должно быть возможно.Если я удалю аннотацию @abstractmethod, я могу цитонизировать и импортировать модуль.Это также работает, если я использую @abstractstaticmethod, но этот декоратор устарел в abc.

Это ошибка Cython, или я делаю что-то не так?Я использую Cython версии 0.28.5 с инструментами сборки для Visual Studio 2017 на Windows 7.

...