From 00bcf7b817ed459ee617b8af8843aca18d72fe04 Mon Sep 17 00:00:00 2001 From: Claudiu Popa Date: Sat, 7 Mar 2020 17:22:47 +0100 Subject: Prevent a recursion error to happen when inferring the declared metaclass of a class Close #749 --- .../python3/data/metaclass_recursion/monkeypatch.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 tests/testdata/python3/data/metaclass_recursion/monkeypatch.py (limited to 'tests/testdata/python3/data/metaclass_recursion/monkeypatch.py') diff --git a/tests/testdata/python3/data/metaclass_recursion/monkeypatch.py b/tests/testdata/python3/data/metaclass_recursion/monkeypatch.py new file mode 100644 index 00000000..757bb3f8 --- /dev/null +++ b/tests/testdata/python3/data/metaclass_recursion/monkeypatch.py @@ -0,0 +1,17 @@ +# https://github.com/PyCQA/astroid/issues/749 +# Not an actual module but allows us to reproduce the issue +from tests.testdata.python3.data.metaclass_recursion import parent + +class MonkeyPatchClass(parent.OriginalClass): + _original_class = parent.OriginalClass + + @classmethod + def patch(cls): + if parent.OriginalClass != MonkeyPatchClass: + cls._original_class = parent.OriginalClass + parent.OriginalClass = MonkeyPatchClass + + @classmethod + def unpatch(cls): + if parent.OriginalClass == MonkeyPatchClass: + parent.OriginalClass = cls._original_class -- cgit v1.2.1