PyPy support breaking CPython compatibility?

Etienne Robillard tkadm30 at yandex.com
Thu Feb 1 04:13:29 EST 2018



Le 2018-01-31 à 05:21, Ned Batchelder a écrit :
> On 1/30/18 3:58 PM, Etienne Robillard wrote:
>> Hi Ned,
>>
>>
>> Le 2018-01-30 à 15:14, Ned Batchelder a écrit :
>>> I'm curious what you had to change for PyPy? (Unless it's a Py2/Py3 
>>> thing as Chris mentions.) 
>>
>> Please take a look at the changesets:
>>
>> https://bitbucket.org/tkadm30/libschevo/commits/745d1aeab5c6ee0d336790cf13d16f327e10c2f8 
>>
>> https://bitbucket.org/tkadm30/libdurus/commits/875636e9b6caa840fd50ca87d69217d87fc06f43 
>>
>>
>> In short, it seems PyPy automagically adds a __weakref__ attribute to 
>> __slots__, causing the CPython interpreter to raise a TypeError...
>
> PyPy and CPython are separate implementations, that never mix: you run 
> your code in one, or in the other.  How can PyPy do something at 
> runtime (add a __weakref__ attribute to __slots__) that can cause 
> CPython to do something at runtime (raise a TypeError)?

Sorry Ned for the confusion. This is strictly a PyPy issue. CPython does 
not raise a TypeError.


>
> A small demonstration case would be very helpful for figuring out what 
> is going on.

Yes....

The problem is with the following code on PyPy 5.9:

class MyClass(object):
   __slots__ = ['__weakref__',]



>
> --Ned.

-- 
Etienne Robillard
tkadm30 at yandex.com
https://www.isotopesoftware.ca/




More information about the Python-list mailing list