New submission from Guido van Rossum <gu...@python.org>:

Hi Victor,

Sorry for making this a deferred blocker. I recall that we had a brief 
discussion somewhere about an accidental change to the array.array type -- this 
is now a heap type (Py_TPFLAGS_HEAPTYPE is set), and as a consequence it is no 
longer immutable.

In 3.9 this is an error:

>>> import array        
>>> array.array.foo = 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't set attributes of built-in/extension type 'array.array'
>>>

But in 3.10a7 it passes:

>>> array.array.foo = 1
>>> array.array.foo    
1
>>>

I would like this type (and other types that have been or will be converted to 
heap types) to remain immutable. How can we do that? I think we may need a new 
flag bit meaning "built-in type, immutable". This bit should not be inherited 
of course.

What do you think? (Feel free to close if this is a duplicate -- I couldn't 
find where we discussed this previously, sorry.)

----------
assignee: vstinner
messages: 391540
nosy: gvanrossum, vstinner
priority: deferred blocker
severity: normal
status: open
title: array.array should remain immutable
type: behavior
versions: Python 3.10, Python 3.11

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue43908>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to