[issue36881] isinstance raises TypeError for metaclass with metaclass=ABCMeta

2021-08-06 Thread Irit Katriel


Irit Katriel  added the comment:

PR27648 fixes this, but it also breaks test_abc.test_issubclass_bad_arguments 
so it's not quite right.


I don't know this area, but I think the problem is in the place the PR changes, 
and that the issue is due to this difference in the type of __subclasses__ 
between C and Meta2:

>>> class C: pass
... 
>>> from abc import ABCMeta
>>> class AbstractMeta(type, metaclass=ABCMeta): pass
... 
>>> class Meta2(AbstractMeta): pass
... 
>>> C.__subclasses__

>>> Meta2.__subclasses__


--
versions: +Python 3.10, Python 3.11, Python 3.9 -Python 3.7

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue36881] isinstance raises TypeError for metaclass with metaclass=ABCMeta

2021-08-06 Thread Irit Katriel


Change by Irit Katriel :


--
keywords: +patch
nosy: +iritkatriel
nosy_count: 7.0 -> 8.0
pull_requests: +26142
stage:  -> patch review
pull_request: https://github.com/python/cpython/pull/27648

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue36881] isinstance raises TypeError for metaclass with metaclass=ABCMeta

2019-07-03 Thread myungsekyo


Change by myungsekyo :


--
nosy: +myungsekyo

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue36881] isinstance raises TypeError for metaclass with metaclass=ABCMeta

2019-07-01 Thread Caleb Donovick


Change by Caleb Donovick :


--
nosy: +donovick

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue36881] isinstance raises TypeError for metaclass with metaclass=ABCMeta

2019-05-28 Thread Jeffrey Kintscher


Change by Jeffrey Kintscher :


--
nosy: +Jeffrey.Kintscher

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue36881] isinstance raises TypeError for metaclass with metaclass=ABCMeta

2019-05-19 Thread Ivan Levkivskyi


Ivan Levkivskyi  added the comment:

I think this is related to how `__subclasscheck__` is implemented in `ABCMeta`. 
I just checked this also happens in Python 3.6 (i.e. it is not something 
specific to the C version introduced in Python 3.7).

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue36881] isinstance raises TypeError for metaclass with metaclass=ABCMeta

2019-05-19 Thread Ivan Levkivskyi


Change by Ivan Levkivskyi :


--
nosy: +levkivskyi

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue36881] isinstance raises TypeError for metaclass with metaclass=ABCMeta

2019-05-11 Thread SilentGhost


Change by SilentGhost :


--
nosy: +rhettinger, stutzbach
type:  -> behavior

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue36881] isinstance raises TypeError for metaclass with metaclass=ABCMeta

2019-05-10 Thread Randy Eckman


New submission from Randy Eckman :

>>> from abc import ABCMeta
>>> class AbstractMeta(type, metaclass=ABCMeta): pass
...
>>> class Meta1(AbstractMeta): pass
...
>>> class Meta2(AbstractMeta): pass
...
>>> class ClassA(metaclass=Meta1): pass
...
>>> isinstance(ClassA, Meta2)
Traceback (most recent call last):
  File "", line 1, in 
  File "C:\miniconda\miniconda3\lib\abc.py", line 139, in __instancecheck__
return _abc_instancecheck(cls, instance)
TypeError: __subclasscheck__() takes exactly one argument (0 given)


This is driven by the fact that the metaclass of AbstractMeta is ABCMeta; if I 
change its metaclass to something else that does not contain ABCMeta in the 
inheritance chain, isinstance returns False as expected.


Possibly related to Issue 2325?

--
components: Interpreter Core
messages: 342152
nosy: emanspeaks
priority: normal
severity: normal
status: open
title: isinstance raises TypeError for metaclass with metaclass=ABCMeta
versions: Python 3.7

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com