[issue44588] Possible double Py_XDECREF in cpython typeobject.c

2021-07-09 Thread Ziyue Jiang


New submission from Ziyue Jiang :

The type_mro_modified() function in Object/typeobject.c may produce double 
Py_XDECREF on mro_meth and type_mro_meth when enter the code:
if (!_PyType_HasFeature(cls, Py_TPFLAGS_HAVE_VERSION_TAG) ||
!PyType_IsSubtype(type, cls)) {
goto clear;
}


I think 
mro_meth = NULL;
type_mro_meth = NULL;
should be added after the first time Py_XDECREF them.

--
components: C API
messages: 397188
nosy: Wesley-Jzy
priority: normal
severity: normal
status: open
title: Possible double Py_XDECREF in cpython typeobject.c
type: crash
versions: Python 3.11

___
Python tracker 

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



[issue44588] Possible double Py_XDECREF in cpython typeobject.c

2021-07-09 Thread Ziyue Jiang


Ziyue Jiang  added the comment:

Maybe a little complicared but you can still construct a case to trigger the 
double free action, thus causing a SIGABRT.

Program received signal SIGABRT, Aborted.
0x77c3718b in raise () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) bt
#0  0x77c3718b in raise () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x77c16859 in abort () from /lib/x86_64-linux-gnu/libc.so.6
#2  0x0051e94e in fatal_error (prefix=prefix@entry=0x0, 
msg=msg@entry=0x6a38e4 "_PyObject_AssertFailed", status=status@entry=-1) at 
../Python/pylifecycle.c:2183
#3  0x005213b0 in Py_FatalError (msg=msg@entry=0x6a38e4 
"_PyObject_AssertFailed") at ../Python/pylifecycle.c:2193
#4  0x00470dd9 in _PyObject_AssertFailed (obj=obj@entry=0x7789c350, 
expr=expr@entry=0x0, msg=msg@entry=0x6a392d "object has negative ref count", 
file=file@entry=0x69 "../Include/object.h", line=line@entry=541, 
function=function@entry=0x6a4a20 <__func__.15840> "_Py_NegativeRefcount") 
at ../Objects/object.c:2200
#5  0x00470ee1 in _Py_NegativeRefcount 
(filename=filename@entry=0x69 "../Include/object.h", 
lineno=lineno@entry=541, op=op@entry=0x7789c350) at ../Objects/object.c:235
#6  0x00490ad8 in _Py_DECREF (op=0x7789c350, lineno=541, 
filename=0x69 "../Include/object.h") at ../Include/object.h:473
#7  _Py_XDECREF (op=0x7789c350) at ../Include/object.h:541
#8  type_mro_modified (type=type@entry=0xb17400, 
bases=bases@entry=0x75917890) at ../Objects/typeobject.c:343
#9  0x004940ca in mro_internal (type=type@entry=0xb17400, 
p_old_mro=p_old_mro@entry=0x0) at ../Objects/typeobject.c:1961
#10 0x0048c816 in PyType_Ready (type=type@entry=0xb17400) at 
../Objects/typeobject.c:5345
#11 0x00493974 in type_new (metatype=, args=, kwds=0x0) at ../Objects/typeobject.c:2806

--

___
Python tracker 

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



[issue44588] Possible double Py_XDECREF in cpython typeobject.c

2021-07-09 Thread Irit Katriel


Irit Katriel  added the comment:

Do you have a small piece of code reproducing it that you can upload?

--
nosy: +iritkatriel

___
Python tracker 

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



[issue44588] Possible double Py_XDECREF in cpython typeobject.c

2021-07-09 Thread Ziyue Jiang


Ziyue Jiang  added the comment:

I have no detailed code. The way to I produce it is that using 
PyType_FromSpec() to generate a type A without the flag 
Py_TPFLAGS_DEFAULT(which sets the flag Py_TPFLAGS_HAVE_VERSION_TAG).

Then compile and run in Python.

from my_pkg import A
class Time1(Time):
def __init__(self):
pass

import multiprocessing (This import is a method to 100% reproduce it. Another 
way is to use python3-dbg running the code.)

--

___
Python tracker 

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



[issue44588] Possible double Py_XDECREF in cpython typeobject.c

2021-07-09 Thread Ziyue Jiang


Ziyue Jiang  added the comment:

Sorry, not inherited from Time, Time is the class I use in a real project.
Time -> A

--

___
Python tracker 

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



[issue44588] Possible double Py_XDECREF in cpython typeobject.c

2021-07-09 Thread Ziyue Jiang


Ziyue Jiang  added the comment:

I just take over a Python3.6 project from a friend, migrating it to the newest 
Python version. Then this problem happened. After debugging, I think it's a 
possible double Py_XDECREF if using C-API like this.
But I'm not familiar with Python C-API before so I'm not sure whether it's a 
problem or just a misuse about tp_flags.

--

___
Python tracker 

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



[issue44583] Failure to build on OSF1.

2021-07-09 Thread Ronald Oussoren


Ronald Oussoren  added the comment:

As mentioned on the PR:

Support for OSF1 was removed in Python 3.3 (see 
https://www.python.org/dev/peps/pep-0011/#unsupporting-platforms).

I expect that there will be little interest amongst the core developers for 
reintroducing support because OSF1 is an ancient operating system that is long 
out of support.

--
nosy: +ronaldoussoren

___
Python tracker 

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



[issue44589] Pattern Matching - duplicate keys in mapping patterns

2021-07-09 Thread Pierre Quentel


New submission from Pierre Quentel :

PEP 634 specifies that

"A mapping pattern may not contain duplicate key values. (If all key patterns 
are literal patterns this is considered a syntax error; otherwise this is a 
runtime error and will raise ValueError.)"

but this is not what happens with the latest release:

Python 3.10.0b3 (tags/v3.10.0b3:865714a, Jun 17 2021, 20:39:25) [MSC v.1929 64 
bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> x = {'a': 1}
>>> match x:
...  case {'a': 1, 'a': 2}: # (A)
...   print('ok')
...
>>> x = {'a': 3}
>>> match x:
...  case {'a': 1, 'a': 2}: # (B)
...   print('ok')
...
>>> x = {'a': 1, 'b': 2}
>>> match x:
...  case {'a': 1, 'a': 2}: # (C)
...   print('ok')
...
Traceback (most recent call last):
  File "", line 2, in 
ValueError: mapping pattern checks duplicate key ('a')
>>>

If I understand the PEP correctly, all these examples should raise a 
SyntaxError for the line

case {'a': 1, 'a': 2}:

since all key patterns are literal patterns, and the key 'a' is duplicated.

Cases (A) where the subject matches one of the key-value patterns, and (B) when 
it doesn't, fail without raising SyntaxError.

Case (C) where one of the keys in the subject is not present in the mapping 
pattern raises a ValueError at runtime instead of SyntaxError.

This behaviour is tested in test_patma.py:

def test_patma_251(self):
x = {"a": 0, "b": 1}
w = y = z = None
with self.assertRaises(ValueError):
match x:
case {"a": y, "a": z}:
w = 0
self.assertIs(w, None)
self.assertIs(y, None)
self.assertIs(z, None)

but this doesn't seem compliant with the specification.

BTW, it's not clear to me why the SyntaxError should be limited to the case 
when all keys are literal patterns; it could be raised whenever a literal 
pattern is repeated, even when there are value patterns or a double-star 
pattern, like in

case {'a': 1, 'a': 2, c.imag, **rest}:

--
components: Interpreter Core
messages: 397195
nosy: quentel
priority: normal
severity: normal
status: open
title: Pattern Matching - duplicate keys in mapping patterns
versions: Python 3.10

___
Python tracker 

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



[issue44590] Create frame objects lazily when needed

2021-07-09 Thread Mark Shannon


New submission from Mark Shannon :

In https://bugs.python.org/issue44032 we moved most of the data in the frame 
stack, that is the locals, stack, and "specials" (globals, builtins, code etc), 
from the heap allocated stack to a (mostly) contiguous array in memory.
That offered some speed up due to better cache locality, and faster allocation 
of frame objects (they are now fixed size so can use a simple freelist).

However, data is still split between the stack allocated frame and the heap 
allocated frame.

We should move the remaining data to the stack and only allocate heap objects 
lazily when needed for tracebacks and the like. This should improve performance 
further by removing the vast majority of heap frame allocations and further 
improving locality of reference.

Not only does this have immediate performance benefits, it also paves the way 
for even better Python-to-Python calls by allowing stack frames to overlap and 
pass arguments with the minimal amount of copying and INCREF/DECREF pairs.

--
assignee: Mark.Shannon
components: Interpreter Core
messages: 397196
nosy: Mark.Shannon, gvanrossum, pablogsal
priority: normal
severity: normal
status: open
title: Create frame objects lazily when needed
type: performance
versions: Python 3.11

___
Python tracker 

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



[issue44589] Pattern Matching - duplicate keys in mapping patterns

2021-07-09 Thread Karthikeyan Singaravelan


Change by Karthikeyan Singaravelan :


--
nosy: +brandtbucher

___
Python tracker 

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



[issue44590] Create frame objects lazily when needed

2021-07-09 Thread Mark Shannon


Change by Mark Shannon :


--
keywords: +patch
pull_requests: +25626
stage:  -> patch review
pull_request: https://github.com/python/cpython/pull/27077

___
Python tracker 

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



[issue44591] Added man heap push

2021-07-09 Thread Ritav Das


New submission from Ritav Das :

Added a heap push method for the max heap invariant and added try except block 
at the end so the user can import that function from the library.

--
components: Windows
messages: 397197
nosy: paul.moore, ritavdas, steve.dower, tim.golden, zach.ware
priority: normal
pull_requests: 25627
severity: normal
status: open
title: Added man heap push
type: enhancement
versions: Python 3.9

___
Python tracker 

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



[issue44591] Added max heap push

2021-07-09 Thread Ritav Das


Change by Ritav Das :


--
title: Added man heap push -> Added max heap push

___
Python tracker 

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



[issue44207] Add a version number to Python functions

2021-07-09 Thread Mark Shannon


Change by Mark Shannon :


--
keywords: +patch
pull_requests: +25628
stage:  -> patch review
pull_request: https://github.com/python/cpython/pull/27078

___
Python tracker 

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



[issue44591] Added max heap push

2021-07-09 Thread Zachary Ware


Change by Zachary Ware :


--
components: +Library (Lib) -Windows
nosy: +rhettinger -zach.ware
stage:  -> patch review
versions: +Python 3.11 -Python 3.9

___
Python tracker 

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



[issue44573] Organize some data files in the Lib/test directory

2021-07-09 Thread Leonardo Freua


Change by Leonardo Freua :


--
stage:  -> resolved
status: open -> closed
type:  -> enhancement

___
Python tracker 

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



[issue44591] Added max heap push

2021-07-09 Thread Raymond Hettinger


Raymond Hettinger  added the comment:

Thanks for the suggestion, but only the minheap functions are public.  The 
maxheap functions are private, for internal use only.  Currently, there is no 
internal need for a maxheap push.

--
resolution:  -> rejected
stage: patch review -> resolved
status: open -> closed

___
Python tracker 

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



[issue44592] tkinter focus_get() with non-tkinter Tk widget

2021-07-09 Thread Akuli


New submission from Akuli :

The purpose of focus_get() is to return the widget that currently has the 
focus. It tries to convert its result to a tkinter widget, which can fail, 
because not all Tk widgets are known to tkinter. Consider this, for example:

import tkinter

def print_focused_widget():
print(repr(root.focus_get()))
root.after(1000, print_focused_widget)

root = tkinter.Tk()
menu = root["menu"] = tkinter.Menu()
menu.add_cascade(label="Click here", menu=tkinter.Menu())
print_focused_widget()
tkinter.mainloop()

Output, with menu clicked after a couple seconds (on Linux):

None


Exception in Tkinter callback
Traceback (most recent call last):
  File "/home/akuli/.local/lib/python3.10/tkinter/__init__.py", line 1916, 
in __call__
return self.func(*args)
  File "/home/akuli/.local/lib/python3.10/tkinter/__init__.py", line 838, 
in callit
func(*args)
  File "/home/akuli/porcu/foo.py", line 4, in print_focused_widget
print(repr(root.focus_get()))
  File "/home/akuli/.local/lib/python3.10/tkinter/__init__.py", line 782, 
in focus_get
return self._nametowidget(name)
  File "/home/akuli/.local/lib/python3.10/tkinter/__init__.py", line 1531, 
in nametowidget
w = w.children[n]
KeyError: '#!menu'

Some nametowidget() calls in tkinter/__init__.py already handle this correctly. 
Consider winfo_children(), for example:

try:
# Tcl sometimes returns extra windows, e.g. for
# menus; those need to be skipped
result.append(self._nametowidget(child))
except KeyError:
pass

--
components: Tkinter
messages: 397199
nosy: Akuli
priority: normal
severity: normal
status: open
title: tkinter focus_get() with non-tkinter Tk widget
type: behavior
versions: Python 3.10

___
Python tracker 

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



[issue44592] tkinter focus_get() with non-tkinter Tk widget

2021-07-09 Thread Akuli


Akuli  added the comment:

Forgot to mention: The correct fix IMO would be to return None when a KeyError 
occurs. This way code like `focus_get() == some_tkinter_widget` would always do 
the right thing, for example.

--

___
Python tracker 

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



[issue44591] Added max heap push

2021-07-09 Thread Ritav Das


Ritav Das  added the comment:

But why not? It's plays a very pivotal role when in competitive coding and 
solving python coding questions in general.

Making them public would help thousands of fellow coders like me by making this 
process more convenient.

--
resolution: rejected -> later
status: closed -> pending

___
Python tracker 

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



[issue44591] Added max heap push

2021-07-09 Thread Ritav Das


Change by Ritav Das :


--
resolution: later -> rejected
status: pending -> closed

___
Python tracker 

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



[issue44571] itertools: takedowhile()

2021-07-09 Thread Raymond Hettinger


Raymond Hettinger  added the comment:

I've done some API experiments using a data munging example.  See attached file.

The proposed API for takewhile() to save the last attribute is somewhat awkward 
to use:

it = iter(report)
tw_it = takewhile(is_header, it)
for line in takewhile(is_header, tw_it):
print('Header:', repr(line))
if hasattr(tw_it, 'odd_element'):
it = chain([tw_it.odd_element], it)
print(mean(map(int, it)))   

What is needed is a new itertool recipe to cover this use case:

headers, data = before_and_after(is_header, report)
for line in headers:
print('Header:', repr(line))
print(mean(map(int, data)))

--
Added file: https://bugs.python.org/file50142/tmp_takewhile.py

___
Python tracker 

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



[issue44587] BooleanOptionalAction displays default=SUPPRESS unlike other action types

2021-07-09 Thread Jacob Walls


Change by Jacob Walls :


--
components: +Library (Lib)
type:  -> behavior

___
Python tracker 

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



[issue44589] Pattern Matching - duplicate keys in mapping patterns

2021-07-09 Thread Brandt Bucher


Brandt Bucher  added the comment:

Nice find! In my opinion, we should do two things here:

- Update PEP 638 to specify that a SyntaxError is raised "if *any duplicate* 
key patterns are literal patterns". This was absolutely our original 
intention... I think the nuances were just lost in the final phrasing. I can 
take care of that PR.

- Update the compiler to raise SyntaxErrors for duplicate literal keys. It 
should be as simple as updating the first loop in compiler_pattern_mapping to 
build a set containing the values of any literal keys and raise on duplicates 
(and adding/updating tests, of course). We'll want to make sure we have test 
coverage of edge cases like {0: _, False: _}, {0: _, 0.0: _}, {0: _, -0: _}, 
{0: _, 0j: _}, etc.

Since you found this, you get first dibs on a PR. Otherwise, I have a few 
first-time contributors who would probably be interested.

--
nosy: +gvanrossum
type:  -> behavior
versions: +Python 3.11 -Python 3.10

___
Python tracker 

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



[issue44589] Pattern Matching - duplicate keys in mapping patterns

2021-07-09 Thread Brandt Bucher


Brandt Bucher  added the comment:

Sorry, that should be PEP 634, not 638.

--

___
Python tracker 

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



[issue44573] Organize some data files in the Lib/test directory

2021-07-09 Thread Leonardo Freua


Change by Leonardo Freua :


--
status: closed -> open

___
Python tracker 

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



[issue44571] itertools: takedowhile()

2021-07-09 Thread Serhiy Storchaka


Serhiy Storchaka  added the comment:

For convenience, the takewhile iterator can also have additional attributes: a 
boolean attribute which indicates that the falsifying element is set, and 
dynamic attribute which is equal to orig_iterator or chain([odd_element], 
orig_iterator).

--

___
Python tracker 

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



[issue44516] Update bundled pip to 21.1.3

2021-07-09 Thread Jacob Walls


New submission from Jacob Walls :

Greetings, all. I take it this is fully resolved?

--
nosy: +jacobtylerwalls

___
Python tracker 

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



[issue44577] Probably defect in Python 3.7.11

2021-07-09 Thread Ned Deily


Ned Deily  added the comment:

That excerpt is not executable by itself.  Without a reproducible test case and 
better traceback info, there is not enough information here to investigate 
further.

--
nosy: +ned.deily

___
Python tracker 

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



[issue44533] Where are the log file(s)

2021-07-09 Thread Éric Araujo

Change by Éric Araujo :


--
resolution: third party -> not a bug
stage:  -> resolved
status: pending -> closed

___
Python tracker 

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



[issue44539] Imghdr JPG Quantized

2021-07-09 Thread Éric Araujo

Change by Éric Araujo :


--
versions:  -Python 3.10, Python 3.6, Python 3.7, Python 3.8, Python 3.9

___
Python tracker 

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



[issue27875] Syslogs /usr/sbin/foo as /foo instead of as foo

2021-07-09 Thread Ned Deily


Change by Ned Deily :


--
resolution:  -> duplicate
stage: needs patch -> resolved
status: open -> closed
superseder:  -> syslog: Default "ident" in syslog.openlog() shouldn't contain 
slash
versions: +Python 3.9 -Python 3.5, Python 3.6, Python 3.8

___
Python tracker 

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



[issue20116] urlparse.parse_qs should take argument for query separator

2021-07-09 Thread Jacob Walls


Jacob Walls  added the comment:

Greetings. I believe this is mooted by #42967 as well as changes even prior to 
that.

https://bugs.python.org/issue42967

--
nosy: +jacobtylerwalls

___
Python tracker 

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



[issue42830] tempfile mkstemp() leaks file descriptors if os.close() is not called

2021-07-09 Thread Andrei Kulakov


Andrei Kulakov  added the comment:

Can someone w/access to a Linux system confirm if running out of FDs raises an 
OSError?

Something like this:

N = `ulimit -n` + 5

for x in range(N): tempfile.mkstemp()

--

___
Python tracker 

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



[issue44550] Spam

2021-07-09 Thread Terry J. Reedy


Change by Terry J. Reedy :


--
nosy:  -skoolbeep

___
Python tracker 

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



[issue44560] Many MUA don't recognize charset "eucgb2312_cn" in email header

2021-07-09 Thread Terry J. Reedy


Terry J. Reedy  added the comment:

Anything before 3.9 only gets security patches.

--
nosy: +terry.reedy
title: Unrecognized charset "eucgb2312_cn" in email header for many MUA -> Many 
MUA don't recognize charset "eucgb2312_cn" in email header
versions:  -Python 3.6, Python 3.7, Python 3.8

___
Python tracker 

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



[issue44592] tkinter focus_get() with non-tkinter Tk widget

2021-07-09 Thread E. Paine


E. Paine  added the comment:

I agree with Akuli that raising a KeyError is not expected behaviour (combined 
with the fact this is caught elsewhere), and therefore is probably a regression.

While we could use `winfo class` to determine the type of Tk widget, this would 
probably require a reasonably sized refactor of tkinter (and we would still 
need to support cases when it's a type we don't know). Therefore, I think 
returning `None` is the best solution.

Akuli, would you like to create a pull request for this?

--
nosy: +epaine, serhiy.storchaka
versions: +Python 3.11, Python 3.9

___
Python tracker 

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



[issue44583] Failure to build on OSF1.

2021-07-09 Thread Terry J. Reedy


Terry J. Reedy  added the comment:

Jay, this issue and PR should either be closed, or you should post on pydev 
list saying why support should be re-enabled, along with a credible offer to 
maintain platform support for several years.

--
nosy: +terry.reedy

___
Python tracker 

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



[issue44592] tkinter focus_get() with non-tkinter Tk widget

2021-07-09 Thread E. Paine


E. Paine  added the comment:

Sorry, I should specify that we would use `winfo class` in order to then return 
a new tkinter object for the existing Tk widget (which currently cannot be done)

--

___
Python tracker 

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



[issue44516] Update bundled pip to 21.1.3

2021-07-09 Thread Stéphane Bidoul

Change by Stéphane Bidoul :


--
resolution:  -> fixed
stage: patch review -> resolved
status: open -> closed

___
Python tracker 

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



[issue44516] Update bundled pip to 21.1.3

2021-07-09 Thread Stéphane Bidoul

Stéphane Bidoul  added the comment:

Yes, I close the issue.

--

___
Python tracker 

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



[issue44589] Pattern Matching - duplicate keys in mapping patterns

2021-07-09 Thread Guido van Rossum

Guido van Rossum  added the comment:

Agreed with everything that Brandt said. These wording issues are subtle!
Note in particular that the original wording implies that {‘x’: 1, ‘x’: 1,
z: 1} would be a runtime error, but it clearly should be a compile time
error.--
--Guido (mobile)

--

___
Python tracker 

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



[issue44592] tkinter focus_get() with non-tkinter Tk widget

2021-07-09 Thread Serhiy Storchaka


Serhiy Storchaka  added the comment:

It is a duplicate of issue734176.

--
resolution:  -> duplicate
stage:  -> resolved
status: open -> closed
superseder:  -> Make Tkinter.py's nametowidget work with cloned menu widgets

___
Python tracker 

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



[issue34550] UnicodeDecodeError when invoke method configure() of Menu instance

2021-07-09 Thread Serhiy Storchaka


Change by Serhiy Storchaka :


--
resolution:  -> out of date
stage:  -> resolved
status: pending -> closed

___
Python tracker 

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



[issue44592] tkinter focus_get() with non-tkinter Tk widget

2021-07-09 Thread Akuli


Akuli  added the comment:

I found issue734176 before I created this. It is NOT a duplicate. While 
issue734176 is about menus, this one is about focus_get(), and not necessarily 
related to menus. In fact, I initially noticed this with an "open file" dialog, 
not with a menu.

I'm not putting my address into your CLA, thank you very much.

--

___
Python tracker 

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



[issue42830] tempfile mkstemp() leaks file descriptors if os.close() is not called

2021-07-09 Thread Mieczysław Torchała

Mieczysław Torchała  added the comment:

Hi Andrei! 

In my case it was:

OSError: [Errno 24] Too many open files

--

___
Python tracker 

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



[issue44593] _randbelow_with_getrandbits may request an unnecessary random bit

2021-07-09 Thread lormuc


New submission from lormuc :

For example, Lib/random.py/Random._randbelow_with_getrandbits(1) should always 
return 0, as per docstring, but it asks for 1 random bit from getrandbits().

--
components: Library (Lib)
messages: 397219
nosy: lormuc
priority: normal
severity: normal
status: open
title: _randbelow_with_getrandbits may request an unnecessary random bit
type: resource usage
versions: Python 3.11

___
Python tracker 

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



[issue44592] tkinter focus_get() with non-tkinter Tk widget

2021-07-09 Thread Terry J. Reedy


Terry J. Reedy  added the comment:

Akuli, what tk widgets do you think are not known to tkinter?  In any case, tk 
menu is known to tkinter.

I cannot reproduce when running on Windows with 3.10.0b3:  Add 
"print(root.children)" (after add_cascade) results in {'!menu': , '!menu2': }.  The names are 
created in tkinter.py lines 2564-2573.

I then see 'None' once and then '' indefinitely even while 
hovering over and clicking 'click me' and the dropdown.  If I click outside the 
tk box, the print returns to 'None'.

Maybe there is an OS difference in what is considered to have 'focus'.

Key '#!menu' looks like '!menu' with '#' prepended.  Someone could try changing 
the tkinter code referenced above and see if the change appears in the bad key. 
 Also check the contents of root.children.

--
nosy: +terry.reedy
resolution: duplicate -> 
stage: resolved -> 
status: closed -> open
superseder: Make Tkinter.py's nametowidget work with cloned menu widgets -> 

___
Python tracker 

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



[issue42830] tempfile mkstemp() leaks file descriptors if os.close() is not called

2021-07-09 Thread Andrei Kulakov

Andrei Kulakov  added the comment:

Mieczysław: perfect, thanks!

--

___
Python tracker 

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



[issue44592] tkinter focus_get() with non-tkinter Tk widget

2021-07-09 Thread Terry J. Reedy


Terry J. Reedy  added the comment:

I am not quite convinced that this is a duplicate of #734176. The latter is 
about tearoff clones and nothing is cloned here. But I do notice that number 
'names were also prefixed with '#'.  What happens if 'tearoff=0' is added to 
the cascade so that it is not even clonable.  The tkinter naming of instances 
after the class was added less than 10 years ago.

--
resolution:  -> duplicate
stage:  -> resolved
status: open -> closed
superseder:  -> Make Tkinter.py's nametowidget work with cloned menu widgets

___
Python tracker 

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



[issue734176] Make Tkinter.py's nametowidget work with cloned menu widgets

2021-07-09 Thread Terry J. Reedy


Terry J. Reedy  added the comment:

See #44592, closed as duplicate of this.

--

___
Python tracker 

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



[issue44592] tkinter focus_get() with non-tkinter Tk widget

2021-07-09 Thread Akuli


Akuli  added the comment:

Unfortunately I don't know any real-world examples of this on Windows. The open 
file dialog works very differently on Windows: it uses the native Windows 
dialog, whereas on Linux, it's implemented in Tcl.

Meanwhile, here's a platform-independent toy example:

import tkinter

root = tkinter.Tk()
root.tk.eval("""
entry .e
pack .e
focus .e
""")
root.after(500, root.focus_get)
root.mainloop()

Also, thanks for reopening!

--
resolution: duplicate -> 
status: closed -> open

___
Python tracker 

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



[issue44593] _randbelow_with_getrandbits may request an unnecessary random bit

2021-07-09 Thread Mark Dickinson


Mark Dickinson  added the comment:

See #37000 for previous discussion.

--
nosy: +mark.dickinson

___
Python tracker 

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



[issue44583] Failure to build on OSF1.

2021-07-09 Thread Jay Krell


Jay Krell  added the comment:

> "credible offer to maintain platform support for several years."

Probably. What does "support" mean?

Fix user-reported bugs? I expect very few/zero.

Run a buildbot? Maybe. Not sure it is worthwhile, depending on frequency.

Provide little autoconf/ifdef patches to keep it working? Sure.
 Hopefully there is some route for "degraded" or "missing" functionality on a 
platform by platform basis; the lack of monotonic time is kinda a problem in my 
PR.

Anyway I'll reread the PEP and email the group, which I tried to join, not sure 
it is working yet.

I will try to use it and keep my copy updated.
I have some python2 scripts I can try to update.

--

___
Python tracker 

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



[issue44593] _randbelow_with_getrandbits may request an unnecessary random bit

2021-07-09 Thread lormuc


Change by lormuc :


--
stage:  -> resolved
status: open -> closed

___
Python tracker 

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



[issue44583] Failure to build on OSF1.

2021-07-09 Thread Terry J. Reedy


Terry J. Reedy  added the comment:

On 7/9/2021 5:29 PM, Jay Krell wrote:

> Probably. What does "support" mean?

This is not my ballpark.

One can also access pydev as newsgroup
gmane.comp.python.devel at news.gmane.io

--

___
Python tracker 

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



[issue42909] Email header with ; ; ; ; stuffing takes very long to parse

2021-07-09 Thread Andrei Kulakov


Andrei Kulakov  added the comment:

According to this: 
https://stackoverflow.com/questions/19852/maximum-length-of-a-mime-content-type-header-field

(with links to RFCs 4288 and 6838), this header should not be longer than 255 
chars.

To fix this issue while maximizing backwards compatibility, I propose to do:
- if content-type > 255 AND count of ';' is > 127 => raise 
HeaderParseError('Appears to be a spam header: length > 255 and large number of 
`;`'

Choosing 127 to be conservatively high, can be adjusted to 20-30 to make 
processing even faster.

--
nosy: +andrei.avk

___
Python tracker 

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



[issue44571] itertools: takedowhile()

2021-07-09 Thread Raymond Hettinger


Raymond Hettinger  added the comment:

> For convenience, the takewhile iterator can also have
> additional attributes: a boolean attribute which indicates 
> that the falsifying element is set, and dynamic attribute 
> which is equal to orig_iterator 
> or chain([odd_element], orig_iterator).

Rather than graft a funky and atypical API onto takewhile(), it would be better 
to have a new tool that returns two iterators, the true steam, and a stream for 
the remaining values.  Either stream may be empty.  There is no need for a 
boolean flag attribute or a remaining stream attribute.  This design fits in 
better with the other itertools.

FWIW, we can already do this using groupby(), but it is only easy if we assume 
the first part of the stream is all true and the remainder of the stream is all 
false.  That isn't good enough for general application.

--

___
Python tracker 

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



[issue44594] AsyncExitStack.enter_async_context() is mishandling exception __context__

2021-07-09 Thread John Belmonte


New submission from John Belmonte :

Over at the Trio project, we have evidence that 
`AsyncExitStack.enter_async_context(foo())` is not actually equivalent to 
`async with foo()` regarding raised exception context.

The symptom is a very long, unhelpful tracebacks because the __context__ of 
raised exceptions is not set to the expected object.

https://github.com/python-trio/trio/issues/2001

I can't speak to this solution myself, but njsmith suggests this amendment to 
contextlib:

saved_context = exc_details[1].__context__
try:
raise exc_details[1]
finally:
exc_details[1].__context__ = saved_context

--
components: Library (Lib)
messages: 397230
nosy: John Belmonte, njs
priority: normal
severity: normal
status: open
title: AsyncExitStack.enter_async_context() is mishandling exception __context__

___
Python tracker 

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



[issue43897] Implement support for validation of pattern matching ASTs

2021-07-09 Thread Pablo Galindo Salgado


Pablo Galindo Salgado  added the comment:


New changeset 2f7636887e9f978352aa47b18d5f376263663ba1 by Batuhan Taskaya in 
branch '3.10':
[3.10] bpo-43897: ast validation for pattern matching nodes (GH-27074)
https://github.com/python/cpython/commit/2f7636887e9f978352aa47b18d5f376263663ba1


--
nosy: +pablogsal

___
Python tracker 

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



[issue43908] array.array should remain immutable: add Py_TPFLAGS_IMMUTABLETYPE flag

2021-07-09 Thread Pablo Galindo Salgado


Pablo Galindo Salgado  added the comment:

Yeah, I think these should be changed, but lest give a bit of time for other 
core devs to mention what they think

--

___
Python tracker 

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



[issue44317] Suggestion for better syntax errors in tokenizer errors

2021-07-09 Thread Pablo Galindo Salgado


Pablo Galindo Salgado  added the comment:


New changeset f24777c2b329974b69d2a3bf5cfc37e0fcace36c by Pablo Galindo Salgado 
in branch 'main':
bpo-44317: Improve tokenizer errors with more informative locations (GH-26555)
https://github.com/python/cpython/commit/f24777c2b329974b69d2a3bf5cfc37e0fcace36c


--

___
Python tracker 

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



[issue44317] Suggestion for better syntax errors in tokenizer errors

2021-07-09 Thread miss-islington


Change by miss-islington :


--
nosy: +miss-islington
nosy_count: 4.0 -> 5.0
pull_requests: +25629
pull_request: https://github.com/python/cpython/pull/27079

___
Python tracker 

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



[issue44573] Organize some data files in the Lib/test directory

2021-07-09 Thread Raymond Hettinger


Change by Raymond Hettinger :


--
resolution:  -> not a bug
status: open -> closed

___
Python tracker 

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



[issue44317] Suggestion for better syntax errors in tokenizer errors

2021-07-09 Thread Pablo Galindo Salgado


Pablo Galindo Salgado  added the comment:


New changeset 2a722d4fab6a9656f3c03cfdaf6d1684277b8af5 by Miss Islington (bot) 
in branch '3.10':
bpo-44317: Improve tokenizer errors with more informative locations (GH-26555) 
(GH-27079)
https://github.com/python/cpython/commit/2a722d4fab6a9656f3c03cfdaf6d1684277b8af5


--

___
Python tracker 

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



[issue44317] Suggestion for better syntax errors in tokenizer errors

2021-07-09 Thread Pablo Galindo Salgado


Change by Pablo Galindo Salgado :


--
resolution:  -> fixed
stage: patch review -> resolved
status: open -> closed

___
Python tracker 

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



[issue44587] argparse BooleanOptionalAction displays default=SUPPRESS unlike other action types

2021-07-09 Thread Ned Deily


Change by Ned Deily :


--
nosy: +rhettinger
title: BooleanOptionalAction displays default=SUPPRESS unlike other action 
types -> argparse BooleanOptionalAction displays default=SUPPRESS unlike other 
action types

___
Python tracker 

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



[issue43219] shutil.copy raises IsADirectoryError when the directory does not actually exist

2021-07-09 Thread miss-islington


Change by miss-islington :


--
nosy: +miss-islington
nosy_count: 4.0 -> 5.0
pull_requests: +25630
pull_request: https://github.com/python/cpython/pull/27081

___
Python tracker 

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



[issue43219] shutil.copy raises IsADirectoryError when the directory does not actually exist

2021-07-09 Thread miss-islington


Change by miss-islington :


--
pull_requests: +25631
pull_request: https://github.com/python/cpython/pull/27082

___
Python tracker 

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



[issue43219] shutil.copy raises IsADirectoryError when the directory does not actually exist

2021-07-09 Thread Gregory P. Smith


Gregory P. Smith  added the comment:


New changeset 248173cc0483a9ad9261353302f1234cf9eb2ebe by andrei kulakov in 
branch 'main':
bpo-43219: shutil.copyfile, raise a less confusing exception instead of 
IsADirectoryError (GH-27049)
https://github.com/python/cpython/commit/248173cc0483a9ad9261353302f1234cf9eb2ebe


--

___
Python tracker 

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



[issue43219] shutil.copy raises IsADirectoryError when the directory does not actually exist

2021-07-09 Thread miss-islington


miss-islington  added the comment:


New changeset 1577259cc51d0d46ad676798ce0a130039acf956 by Miss Islington (bot) 
in branch '3.10':
bpo-43219: shutil.copyfile, raise a less confusing exception instead of 
IsADirectoryError (GH-27049)
https://github.com/python/cpython/commit/1577259cc51d0d46ad676798ce0a130039acf956


--

___
Python tracker 

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



[issue43219] shutil.copy raises IsADirectoryError when the directory does not actually exist

2021-07-09 Thread miss-islington


miss-islington  added the comment:


New changeset c89f0b2587eb0b16175a0bbb12d0b86314ff9320 by Miss Islington (bot) 
in branch '3.9':
[3.9] bpo-43219: shutil.copyfile, raise a less confusing exception instead of 
IsADirectoryError (GH-27049) (GH-27082)
https://github.com/python/cpython/commit/c89f0b2587eb0b16175a0bbb12d0b86314ff9320


--

___
Python tracker 

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



[issue44595] round() gives wrong result

2021-07-09 Thread Jos Dechamps


New submission from Jos Dechamps :

round(0.3368655,6) returns 0.336865 instead of 0.336866

--
messages: 397238
nosy: dechamps
priority: normal
severity: normal
status: open
title: round() gives wrong result
type: behavior

___
Python tracker 

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



[issue44595] round() gives wrong result

2021-07-09 Thread Vedran Čačić

Vedran Čačić  added the comment:

Have you seen the Note at 
https://docs.python.org/3/library/functions.html?highlight=Note#round?

--
nosy: +veky

___
Python tracker 

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



[issue44589] Pattern Matching - duplicate keys in mapping patterns

2021-07-09 Thread Pierre Quentel


Pierre Quentel  added the comment:

Sorry, I don't know C so I can't write a PR for this change.

--

___
Python tracker 

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



[issue44595] round() gives wrong result

2021-07-09 Thread Steven D'Aprano


Steven D'Aprano  added the comment:

Not a bug, the result is correct.

Python floats are binary floating point values, not decimal. 0.3368655's actual 
value is exactly:

0.3368654984392928809029399417340755462646484375

so when rounding to six decimal places, the seventh decimal place is a four, 
not five, and it rounds down to 0.336865. To be precise, it rounds down to:

0.3368650025526247782181599177420139312744140625

--
nosy: +steven.daprano
resolution:  -> not a bug
stage:  -> resolved
status: open -> closed

___
Python tracker 

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



[issue44596] Operand coercion breaks MappingProxyType encapsulation

2021-07-09 Thread Nick Coghlan


New submission from Nick Coghlan :

The fast locals proxy implementation for PEP 558 used the existing 
MappingProxyType implementation as a starting point.

This meant I noticed the following code in the mapping proxy comparison 
implementation:

==
static PyObject *
mappingproxy_richcompare(mappingproxyobject *v, PyObject *w, int op)
{
return PyObject_RichCompare(v->mapping, w, op);
}
==

Seeing that code lead to trying the following experiment:

==
>>> from types import MappingProxyType
>>> d = {}
>>> proxy = MappingProxyType(d)
>>> class Sneaky:
... def __eq__(self, other):
... if other is d:
... raise RuntimeError("Broke encapsulation")
... 
>>> proxy == Sneaky()
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 4, in __eq__
RuntimeError: Broke encapsulation
==

The new `__or__` implementation has a corresponding loophole:


>>> class SneakyOr:
... def __or__(self, other):
... if other is d:
... raise RuntimeError("Broke encapsulation")
... def __ror__(self, other):
... return self.__or__(other)
... 
>>> proxy | SneakyOr()
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 6, in __ror__
  File "", line 4, in __or__
RuntimeError: Broke encapsulation


Delegating these operations to the underlying mapping via the abstract 
operation layer means that the underlying mapping gets exposed to the operand 
coercion machinery and can hence be accessed by the other operand.

--
messages: 397242
nosy: ncoghlan
priority: normal
severity: normal
stage: needs patch
status: open
title: Operand coercion breaks MappingProxyType encapsulation
type: behavior
versions: Python 3.11

___
Python tracker 

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