obj должен быть экземпляром или подтипом типа - PullRequest
1 голос
/ 06 июня 2019

Я пытаюсь динамически загрузить блокнот jupyter в модуль и нашел пример рабочего кода в https://github.com/axil/import-ipynb/blob/master/import_ipynb.py. Однако, так как эта реализация использует некоторые устаревшие функции, и я хочу объединить некоторые общие функции в один нужный мне пакет реализовать свою собственную версию. Однако, когда я пытаюсь преобразовать магический код Jupyter в код Python перед выполнением, я получаю эту странную ошибку.

(Pdb) self
<IPython.core.inputsplitter.IPythonInputSplitter object at 0x102198c50>
(Pdb) IPythonInputSplitter
<class 'IPython.core.inputsplitter.IPythonInputSplitter'>
(Pdb) type(self)
<class 'IPython.core.inputsplitter.IPythonInputSplitter'>
(Pdb) IPythonInputSplitter is type(self)
False
(Pdb) super(IPythonInputSplitter, self)
*** TypeError: super(type, obj): obj must be an instance or subtype of type

Вот некоторый контекст для нарушающего кода:

for cell in notebook.cells:
    if cell.cell_type == "code":
        code = self.shell.input_transformer_manager.transform_cell(cell.source)

По типу ошибки я не думаю, что это особая проблема для ipython, но я не совсем понимаю

1 Ответ

0 голосов
/ 24 июня 2019

Эта проблема не связана с предоставленным кодом

Проблема возникла из-за того, что модуль, содержащий IPython.core.inputsplitter.IPythonInputSplitter, был перезагружен с использованием importlib.reload между созданием экземпляра и проверкой типов.

...