Child Class from MagicMock object has weird spec='str' and can't use or mock methods of the class

When a class is created deriving from a MagicMock() object it has an unwanted spec=‘str’. Does anyone know why this happens? Does anyone know any operations that could be done to the MagicMock() object in this case such that it doesn’t have the spec=‘str’ or can use methods of the class?

from unittest.mock import MagicMock

a = MagicMock()

class b():
    @staticmethod
    def x():
        return 1

class c(a):
    @staticmethod
    def x():
        return 1
print(a)
print(b)
print(c)
print(a.x())
print(b.x())
print(c.x())

returns

MagicMock id='140670188364408'>
<class '__main__.b'>
<MagicMock spec='str' id='140670220499320'>
<MagicMock name='mock.x()' id='140670220574848'>
1
Traceback (most recent call last):
    File "/xyz/test.py", line 19, in <module>
        print(c.x())
    File "/xyz/lib/python3.7/unittest/mock.py", line 580, in _getattr_
        raise AttributeError("Mock object has no attribute %r" % name)
AttributeError: Mock object has no attribute 'x'

Basically I need the AttributeError to not be here. Is there something I can do to ‘a’ such that c.x() is valid?

the issue seems to be with _mock_add_spec in mock.py still not sure how to fix this.

I have got my answer on stackoverflow python - Child Class from MagicMock object has weird spec='str' and can't use or mock methods of the class - Stack Overflow . Thanks to anyone who tried to help.