У меня есть пакет, зависимость которого не установлена pip
.Чтобы создать документацию, я пытаюсь смоделировать неинсталлируемый пакет, используя MagicMock
.
Однако я наткнулся на проблему с множественным наследованием: когда один изродительские классы - это фиктивный класс, который я получаю:
TypeError: конфликт метакласса: метакласс производного класса должен быть (нестрогим) подклассом метаклассов
Следующий пример иллюстрирует проблему:
файл: class_a.py
class A:
pass
файл: code.py
from class_a import A
class B:
pass
class C(A, B):
pass
file: test.py
import sys
from unittest import mock
# inspired by https://stackoverflow.com/a/37363830/1860757
MOCK_MODULES = ['class_a', ]
sys.modules.update((mod_name, mock.MagicMock()) for mod_name in MOCK_MODULES)
import code
code.C()
Если я запускаю python3 test.py
, я получаю указанное выше исключение.Если я прокомментирую строку, начинающуюся с sys.modules.update
, все будет работать так, как ожидается.
Есть ли способ смоделировать модули или классы так, чтобы множественное наследование продолжало работать?