[issue42901] [Enum] move member creation to __set_name__ in order to support __init_subclass__

2021-01-12 Thread Ethan Furman


Ethan Furman  added the comment:


New changeset c314e60388282d9829762fb6c30b12e2807caa19 by Ethan Furman in 
branch 'master':
bpo-42901: [Enum] move member creation to `__set_name__` (GH-24196)
https://github.com/python/cpython/commit/c314e60388282d9829762fb6c30b12e2807caa19


--

___
Python tracker 

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



[issue42921] Inferred Optional type of wrapper function arguments

2021-01-12 Thread Joseph Perez


New submission from Joseph Perez :

`typing.get_type_hints` gives a different result for a wrapper created with 
`functools.wraps` in case of inferred `Optional` arguments (when the default 
value of the argument is None)

```python
from functools import wraps
from typing import get_type_hints

def foo(bar: int = None): ...

@wraps(foo)
def foo2(*args, **kwargs): ...

print(get_type_hints(foo))  # {'bar': typing.Optional[int]}
print(get_type_hints(foo2))  # {'bar': }
```

This is because `get_type_hints` use the defauts of the wrapper (`foo2`) and 
not those of the wrapped function (`foo`).
This is not consistent with some other tools like `inspect.signature` which 
gives the same signature (and thus same default argument) for the wrapped 
function and its wrapper.

I think this case has simply been forgotten in the resolution of 
https://bugs.python.org/issue37838 (fixing `get_type_hints` not taking `wraps` 
in account at all), because inferred `Optional` is a kind deprecated feature 
(https://github.com/python/typing/issues/275).

--
messages: 385005
nosy: joperez
priority: normal
severity: normal
status: open
title: Inferred Optional type of wrapper function arguments
type: behavior

___
Python tracker 

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



[issue42915] enum.Flag ~ bitwise negation is very slow and can't be defined as a Flag value

2021-01-12 Thread Ethan Furman


Ethan Furman  added the comment:

I just finished a rewrite of Flag for 3.10.  Using your test below I was able 
to tweak the rewrite so the final numbers are:

Took normal 0.148092 seconds.
Took cached 0.017438 seconds.

Your original post had a ratio of nearly 200 -- it is now 8.7ish.

--
assignee:  -> ethan.furman

___
Python tracker 

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



[issue42918] Nested multi-line expression will lead to "compile()" fails

2021-01-12 Thread Xinmeng Xia


Xinmeng Xia  added the comment:

For sure! As soon as we validate this technique, we will open source it on 
GitHub.

--

___
Python tracker 

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



[issue42920] How to add end_lineno in pyclbr?

2021-01-12 Thread Aviral Srivastava


New submission from Aviral Srivastava :

I created a PR a year ago, https://github.com/python/cpython/pull/16466/files, 
and now the source code is completely changed. How do I create another PR or if 
there is another way through which I can get an end line for each object (class 
and function) as stated 
here(https://stackoverflow.com/questions/58142456/how-to-get-the-scope-of-a-class-in-terms-of-starting-line-and-end-line-in-python).

--
components: Library (Lib)
messages: 385002
nosy: kebab-mai-haddi
priority: normal
severity: normal
status: open
title: How to add end_lineno in pyclbr?
type: enhancement
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



[issue42918] Nested multi-line expression will lead to "compile()" fails

2021-01-12 Thread Guido van Rossum

Guido van Rossum  added the comment:

It’s good work! Is it open source?

--

___
Python tracker 

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



[issue42918] Nested multi-line expression will lead to "compile()" fails

2021-01-12 Thread Xinmeng Xia


Xinmeng Xia  added the comment:

The bytecode of c is as following:

  0 LOAD_CONST   0 (1)
  2 STORE_NAME   0 (d)
  4 LOAD_CONST   1 (None)
  6 RETURN_VALUE
===

Yes, my team is working on developing a new fuzzier for the CPython.

Also, we are trying to apply it on the newest version of CPython. 

We will carefully analyze all bugs before reporting them on the tracker.

Hope our work does not bother you too much.

--

___
Python tracker 

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



[issue42918] Nested multi-line expression will lead to "compile()" fails

2021-01-12 Thread Guido van Rossum


Guido van Rossum  added the comment:

What does the bytecode for c in program 2 look like?

Also, how do you find all these bugs? Are you developing a new fuzzier?

--
nosy: +gvanrossum

___
Python tracker 

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



[issue42918] Nested multi-line expression will lead to "compile()" fails

2021-01-12 Thread Guido van Rossum


Change by Guido van Rossum :


--
nosy: +lys.nikolaou

___
Python tracker 

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



[issue42919] Blank in multiline “if expressions” will lead to EOF errors

2021-01-12 Thread Guido van Rossum


Change by Guido van Rossum :


--
nosy: +lys.nikolaou

___
Python tracker 

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



[issue42913] asyncio.ProactorEventLoop mishandles signal wakeup file descriptor

2021-01-12 Thread Guido van Rossum


Guido van Rossum  added the comment:

Looks this was not tested or thought through with multiple loops and signals 
(admittedly, using signals is never fun, and even less so on Windows).

Can you send a PR with a fix?

--
nosy: +gvanrossum

___
Python tracker 

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



[issue1635741] Py_Finalize() doesn't clear all Python objects at exit

2021-01-12 Thread Dong-hee Na


Change by Dong-hee Na :


--
pull_requests: +23031
pull_request: https://github.com/python/cpython/pull/24205

___
Python tracker 

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



[issue21895] signal.pause() and signal handlers don't react to SIGCHLD in non-main thread

2021-01-12 Thread Guido van Rossum


Guido van Rossum  added the comment:

When I removed myself from the nosy list I did mean to stop working on this 
bug, just that I am unlikely to be of any help. :-)

--
nosy: +gvanrossum

___
Python tracker 

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



[issue42918] Nested multi-line expression will lead to "compile()" fails

2021-01-12 Thread Xinmeng Xia


Change by Xinmeng Xia :


--
components: +Interpreter Core

___
Python tracker 

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



[issue42919] Blank in multiline “if expressions” will lead to EOF errors

2021-01-12 Thread Xinmeng Xia

New submission from Xinmeng Xia :

In build-in function compile() of mode 'single',  single statement can be well 
compiled. (see program 1 and program 2). However,  if we leave 4 blank spaces 
before the end of triple-quotation mark of "if expression",(see program 3), The 
parser will raise syntax error. This is not the expected output.  Spaces in the 
end of multi-line expression should not affect the compilation results. No 
error should be reported in this case.


program 1 (expected)
===
snippet ="""
a = 1
 """
compile(snippet, "", "single")
===

program 2 (expected)
===
snippet ="""
if True:
 a = 1
"""
compile(snippet, "", "single")
===

program 3 (unexpected)
===
snippet ="""
if True:
 a = 1
 """
compile(snippet, "", "single")
===
Traceback (most recent call last):
 File "/home/xxm/Desktop/nameChanging/report/test1.py", line 1, in 
 compile(snippet, "", "single")
 File "", line 4
SyntaxError: unexpected EOF while parsing

Expected output: No error reported (like program1 and program2)


>> python -V
Python 3.10.0a2
>>uname -a
Linux xxm-System-Product-Name 4.15.0-64-generic #73~16.04.1-Ubuntu SMP Fri Sep 
13 09:56:18 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

--
components: Interpreter Core
messages: 384996
nosy: xxm
priority: normal
severity: normal
status: open
title: Blank in multiline “if expressions” will lead to EOF errors
type: compile error
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



[issue42918] Nested multi-line expression will lead to "compile()" fails

2021-01-12 Thread Xinmeng Xia

New submission from Xinmeng Xia :

For build-in function compile() in mode 'single',  only single statement can be 
well compiled. If we compile multiple statements,  the parser will raise a 
syntaxError. Seeing the following two programs,  In program 1, 2 statement are 
compiled. So the parser raises a Syntax error. It's the expected output. 
However, if we insert a nested multi-line assignment in this code(see program 
2), 3 statements are compiled. We expect the parser also raise a Sytax error. 
But it' not.

Program 1 ( with expected results)
===
code1 = """
a = 1
b = 2
"""
c = compile(code1, "", "single")
===
Traceback (most recent call last):
  File "/home/xxm/Desktop/nameChanging/report/test1.py", line 641, in 
c = compile(code1, "", "single")
  File "", line 2
a = 1
 ^
SyntaxError: multiple statements found while compiling a single statement


Program 2 (with unexpected results)
=
code2 = """
c ='''
d=1
'''
a = 1
b = 2
"""
c = compile(code2, "", "single")
=


Expected out for program 2: Raise a syntaxError too, But it's not.

>> python -V
Python 3.10.0a2
>>uname -a
Linux xxm-System-Product-Name 4.15.0-64-generic #73~16.04.1-Ubuntu SMP Fri Sep 
13 09:56:18 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

--
messages: 384995
nosy: xxm
priority: normal
severity: normal
status: open
title: Nested multi-line expression will lead to "compile()" fails
type: compile error
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



[issue42899] Is it legal to eliminate tests of a value, when that test has no effect on control flow?

2021-01-12 Thread Josh Rosenberg


Josh Rosenberg  added the comment:

Gregory: Even in a low-level compiled language (say, C++), pretty sure the 
compiler can't automatically optimize out:

if (x) { }

unless it has sure knowledge of the implementation of operator bool; if 
operator bool's implementation isn't in the header file, and link time 
optimization isn't involved, it has to call it to ensure any side-effects it 
might have are invoked.

It can only bypass the call if it knows the implementation of operator bool and 
can verify it has no observable side-effects (as-if rule). There are exceptions 
to the as-if rule for optimizations in special cases (copy elision), but I'm 
pretty sure operator bool isn't one of them; if the optimizer doesn't know the 
implementation of operator bool, it must call it just in case it does something 
weird but critical to the program logic.

Point is, I agree that:

if x:
 pass

must evaluate non-constant-literal x for truthiness, no matter how silly that 
seems (not a huge loss, given very little code should ever actually do that).

--
nosy: +josh.r

___
Python tracker 

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



[issue15373] copy.copy() does not properly copy os.environment

2021-01-12 Thread Josh Rosenberg


Josh Rosenberg  added the comment:

Would we remove the functionality of os.environ.copy()? It seems very odd for 
types to have a .copy() method that works, while not supporting copy.copy, 
especially when there is zero documentation, on the web or the docstring, to 
even hint at the difference.

I'm strongly in favor of silently doing the right thing and behaving the same 
way the .copy() method already behaves; if you want a "copy" of os.environ that 
still modifies the environment, that's just aliasing it (envalias = 
os.environ), not copying at all. If you're trying to make a shallow copy, not 
an alias, you're trying to separate it from the parent, which every other 
dict-like thing does (assuming immutable values), where os.environ is a very 
weird exception (for copy.copy, but not the .copy() method).

Can someone give an example where you'd want copy.copy to produce a "shallow 
copy" that acts like an alias, not an actual independent copy?

--
nosy: +josh.r

___
Python tracker 

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



[issue42915] enum.Flag ~ bitwise negation is very slow and can't be defined as a Flag value

2021-01-12 Thread Guido van Rossum


Change by Guido van Rossum :


--
nosy: +ethan.furman

___
Python tracker 

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



[issue42914] pprint numbers with underscore

2021-01-12 Thread Raymond Hettinger


Raymond Hettinger  added the comment:

> It would be nice if pprint learned to insert underscores in long numbers

+1 but I would make this optional.


> Here is an implementation of the safe repr for numbers if helpful

I suggest using the existing string formatting tools as a foundation

>>> format(10**9, ',d').replace(',', '_')
'1_000_000_000'

--
nosy: +rhettinger

___
Python tracker 

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



[issue42917] Block stack size for frame objects should be dynamically sizable

2021-01-12 Thread Roundup Robot


Change by Roundup Robot :


--
keywords: +patch
nosy: +python-dev
nosy_count: 1.0 -> 2.0
pull_requests: +23029
stage:  -> patch review
pull_request: https://github.com/python/cpython/pull/24204

___
Python tracker 

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



[issue42917] Block stack size for frame objects should be dynamically sizable

2021-01-12 Thread Thomas Anderson


New submission from Thomas Anderson :

Currently the block stack size is hardcoded to 20.  Similar to how the value 
stack is dynamically sizable, we should make the block stack dynamically 
sizable.  This will reduce space on average (since the typical number of blocks 
for a function is well below 20) and allow code generators to generate code 
with more deep nesting.  Note: the motivation is not necessarily to reduce 
memory usage, but to make L1 cache misses less likely for stack objects.

--
components: Interpreter Core
messages: 384991
nosy: tomkpz
priority: normal
severity: normal
status: open
title: Block stack size for frame objects should be dynamically sizable
type: enhancement
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



[issue42848] asyncio produces an unexpected traceback with recursive __getattribute__

2021-01-12 Thread Guido van Rossum


Guido van Rossum  added the comment:

Will be fixed in 3.10.

I prefer not to backport the solution (Irit, do you agree?)

--
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



[issue42916] Support for DICOM image file format in imghdr module

2021-01-12 Thread Charles Law


New submission from Charles Law :

DICOM is a file format used frequently in medical imaging (it is also a 
communications protocol). It has been used since the 80's, and is still widely 
used by modern medical equipment.

It has a well defined format: 
http://dicom.nema.org/dicom/2013/output/chtml/part10/chapter_7.html

This proposal is for the addiction of a check to imghdr module to detect DICOM 
files, with imghdr.what() and return 'dicom' if a dicom file is found.

--
components: Library (Lib)
messages: 384989
nosy: claw
priority: normal
severity: normal
status: open
title: Support for DICOM image file format in imghdr module
type: enhancement
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



[issue42800] Traceback objects allow accessing frame objects without triggering audit hooks

2021-01-12 Thread STINNER Victor


STINNER Victor  added the comment:

Aaaah, PR 24182 doesn't add a hook to object.__getattr__, but to the C getter 
functions on traceback and frame. That sounds more acceptable to me :-) These 
operations are uncommon and should not be part of "hot code" (critical for 
performance) unless you're doing something crazy :-p

--

___
Python tracker 

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



[issue1635741] Py_Finalize() doesn't clear all Python objects at exit

2021-01-12 Thread STINNER Victor


STINNER Victor  added the comment:

> In GH-23598, PyModule_AddObjectRef was added as EXPORT_DATA. Shouldn't it be 
> EXPORT_FUNC?

Oh, I didn't notice that there was EXPORT_DATA. Right, EXPORT_FUNC must be used.

--

___
Python tracker 

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



[issue41036] Visit the type of instance of heap types if tp_traverse is not implemented

2021-01-12 Thread STINNER Victor


STINNER Victor  added the comment:

I created a thread on python-dev:
"Heap types (PyType_FromSpec) must fully implement the GC protocol"
https://mail.python.org/archives/list/python-...@python.org/thread/C4ILXGPKBJQYUN5YDMTJOEOX7RHOD4S3/

--

___
Python tracker 

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



[issue42914] pprint numbers with underscore

2021-01-12 Thread Felipe


Felipe  added the comment:

Here is an implementation of the safe repr for numbers if helpful:

```
def safe_repr_int(object):
sign = ''
if object < 0:
sign = '-'
object  = -object
r = repr(object)
if len(r) <= 4:
return sign + r
parts = [sign]
left = len(r) % 3
if left:
parts.append(r[0:left])
parts.append('_')
r = r[left:]
parts.append(r[0:3])
for i in range(3, len(r), 3):
parts.append('_')
parts.append(r[i:i + 3])
return ''.join(parts)
```

--

___
Python tracker 

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



[issue25988] collections.abc.Indexable

2021-01-12 Thread STINNER Victor


STINNER Victor  added the comment:

New changeset c47c78b878ff617164b2b94ff711a6103e781753 by Hugo van Kemenade in 
branch 'master':
bpo-37324: Remove ABC aliases from collections (GH-23754)
https://github.com/python/cpython/commit/c47c78b878ff617164b2b94ff711a6103e781753

--

___
Python tracker 

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



[issue42915] enum.Flag ~ bitwise negation is very slow and can't be defined as a Flag value

2021-01-12 Thread Kevin Chen


New submission from Kevin Chen :

Here's a code sample:

```
import time
from enum import Flag, auto


class MyFlag(Flag):
NONE = 0
FLAG_1 = auto()
FLAG_2 = auto()
FLAG_3 = auto()
FLAG_4 = auto()
FLAG_5 = auto()
FLAG_6 = auto()
#
# NOT_FLAG_1_OR_2 = ~FLAG_1 & ~FLAG_2


def test_flag():
f = MyFlag.NONE
inverted = (
~MyFlag.FLAG_1
& ~MyFlag.FLAG_2
& ~MyFlag.FLAG_3
& ~MyFlag.FLAG_4
& ~MyFlag.FLAG_5
& ~MyFlag.FLAG_6
)
return f & inverted


INVERTED = (
~MyFlag.FLAG_1
& ~MyFlag.FLAG_2
& ~MyFlag.FLAG_3
& ~MyFlag.FLAG_4
& ~MyFlag.FLAG_5
& ~MyFlag.FLAG_6
)


def test_flag_cached():
f = MyFlag.NONE
return f & INVERTED


if __name__ == "__main__":
start_time = time.time()
for _ in range(10_000):
test_flag()

elapsed = time.time() - start_time
print(f"Took normal {elapsed:2f} seconds.")

start_time = time.time()
for _ in range(10_000):
test_flag_cached()

elapsed = time.time() - start_time
print(f"Took cached {elapsed:2f} seconds.")
```

And its outputs:
```
Took normal 1.799731 seconds.
Took cached 0.009488 seconds.
```

Basically, bitwise negation is very very slow. From what I can tell, it seems 
that a lot of time is spent here computing powers of two. I've read elsewhere 
that flag values are cached, and it looks like negated Flag values can't be 
cached? This seems related to the second issue, which is that any negated Flag 
value being defined results in `RecursionError: maximum recursion depth 
exceeded` as it searches for a good name for Flag.

Obviously, the simple workaround is just to define a constant variable 
elsewhere with the negated value, but it isn't very obvious anywhere that this 
is necessary, and I wanted to raise this to see if anyone has knowledge of the 
implementation details of Flag for possibly resolving this in the class itself.

--
messages: 384983
nosy: aspin2
priority: normal
severity: normal
status: open
title: enum.Flag ~ bitwise negation is very slow and can't be defined as a Flag 
value
versions: Python 3.8

___
Python tracker 

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



[issue42862] Use functools.lru_cache iso. _sqlite.Cache in sqlite3 module

2021-01-12 Thread Erlend Egeberg Aasland


Change by Erlend Egeberg Aasland :


--
pull_requests: +23028
pull_request: https://github.com/python/cpython/pull/24203

___
Python tracker 

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



[issue42914] pprint numbers with underscore

2021-01-12 Thread Felipe


New submission from Felipe :

It would be nice if pprint learned to insert underscores in long numbers

Current behavior:

>>> pprint.pprint(int(1e9))
10

Desired behavior

>>> pprint.pprint(int(1e9))
1_000_000_000

Wikipedia tells me that "groups of 3" is the international standard to be 
followed here [1][2]

[1] https://en.wikipedia.org/wiki/ISO_31-0#Numbers
[2] https://en.wikipedia.org/wiki/Decimal_separator#Digit_grouping

--
components: Library (Lib)
messages: 384982
nosy: fov
priority: normal
severity: normal
status: open
title: pprint numbers with underscore
type: enhancement
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



[issue37324] collections: remove deprecated aliases to ABC classes

2021-01-12 Thread STINNER Victor


STINNER Victor  added the comment:


New changeset c47c78b878ff617164b2b94ff711a6103e781753 by Hugo van Kemenade in 
branch 'master':
bpo-37324: Remove ABC aliases from collections (GH-23754)
https://github.com/python/cpython/commit/c47c78b878ff617164b2b94ff711a6103e781753


--

___
Python tracker 

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



[issue42848] asyncio produces an unexpected traceback with recursive __getattribute__

2021-01-12 Thread Guido van Rossum


Guido van Rossum  added the comment:


New changeset 6dfd1734f5b230bb8fbd2a9df806c1333b6652a8 by Irit Katriel in 
branch 'master':
bpo-42848: remove recursion from TracebackException (GH-24158)
https://github.com/python/cpython/commit/6dfd1734f5b230bb8fbd2a9df806c1333b6652a8


--

___
Python tracker 

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



[issue42913] asyncio.ProactorEventLoop mishandles signal wakeup file descriptor

2021-01-12 Thread Michel Hidalgo


New submission from Michel Hidalgo :

asyncio.ProactorEventLoop uses a socket.socketpair and signal.set_wakeup_fd to 
wake up a loop that's polling I/O. However it does so with no consideration for 
file descriptors previously set (i.e. no signal number forwarding). Either by 
user code or by another instance of asyncio.ProactorEventLoop.

The following snippet is enough for the above to cause the loop to hang forever:

import asyncio
import gc

asyncio.set_event_loop(asyncio.ProactorEventLoop())
asyncio.set_event_loop(asyncio.ProactorEventLoop())
gc.collect()
asyncio.get_event_loop().run_forever()


The first asyncio.ProactorEventLoop instance sets a signal wakeup file 
descriptor on construction (see 
https://github.com/python/cpython/blob/187f76def8a5bd0af7ab512575cad30cfe624b05/Lib/asyncio/proactor_events.py#L632).
 The second instances does the same, dropping the file descriptor set by the 
first one (not good, not necessarily bad). When the garbage collector purges 
the first instance, signal wakeups are disabled completely (see 
https://github.com/python/cpython/blob/187f76def8a5bd0af7ab512575cad30cfe624b05/Lib/asyncio/proactor_events.py#L679).
 The loop cannot be interrupted with Ctrl+C anymore (bad).

--
components: Windows, asyncio
messages: 384979
nosy: asvetlov, hidmic, paul.moore, steve.dower, tim.golden, yselivanov, 
zach.ware
priority: normal
severity: normal
status: open
title: asyncio.ProactorEventLoop mishandles signal wakeup file descriptor
type: behavior
versions: Python 3.8

___
Python tracker 

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



[issue1635741] Py_Finalize() doesn't clear all Python objects at exit

2021-01-12 Thread Petr Viktorin


Petr Viktorin  added the comment:

In GH-23598, PyModule_AddObjectRef was added as EXPORT_DATA. Shouldn't it be 
EXPORT_FUNC?

--

___
Python tracker 

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



[issue42912] enum.Flag ~ bitwise negation is very slow

2021-01-12 Thread Kevin Chen


New submission from Kevin Chen :

Ignore this, opened issue by accident

--
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



[issue42912] enum.Flag ~ bitwise negation is very slow

2021-01-12 Thread Kevin Chen


Change by Kevin Chen :


--
nosy: aspin2
priority: normal
severity: normal
status: open
title: enum.Flag ~ bitwise negation is very slow
versions: Python 3.8

___
Python tracker 

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



[issue42862] Use functools.lru_cache iso. _sqlite.Cache in sqlite3 module

2021-01-12 Thread Erlend Egeberg Aasland


Erlend Egeberg Aasland  added the comment:

> I do not like using _functools._lru_cache_wrapper. It is a deep 
> implementation detail, private function of private module. Use 
> functools.lru_cache.

All right, thanks.

--

___
Python tracker 

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



[issue42911] Addition chains for pow saves 10 % time!

2021-01-12 Thread Serhiy Storchaka


Change by Serhiy Storchaka :


--
nosy: +serhiy.storchaka

___
Python tracker 

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



[issue42911] Addition chains for pow saves 10 % time!

2021-01-12 Thread Jurjen N.E. Bos


Jurjen N.E. Bos  added the comment:

Some more information for the interested:
The algorithm I made tries to smoothly change the"chunk size" with growing 
length of the exponent. So the exponents that win the most (up to 14% fewer 
multiplication) are the long exponents that are just shorter than the 
FIVEARY_CUTOFF.
But, I worked hard to make an algorithm that also saves multiplications for 
shorter numbers. Numbers of up to about 20 bits will be using the optimal chunk 
size.
And, of course, the decision must be made quickly because for some frequently 
occurring parameters (e.g., 3**25), the routine doesn't take that long anyway.
This is obtained by checking two properties of the exponent that strongly 
influence the addition chain: the higher four bits, and (surprise!) the number 
of pairs of bits with distance 2: in other words, (n>>2).bit_count().
After days of trying out all kinds of heuristics, and days of crunching,I 
measured the optimal parameters. I added the code I used to do that.
Guido may remember that I wrote a chapter in my Ph.D. on the subject of 
addition chains. The interesting thing is that I then used Python for that too: 
that was almost 30 years ago!
When implementing, I discovered that lots of the code around it had been in 
flux, so I didn't manage to "cherry pick" it into 3.10 yet. (One example: the 
bit_length and bit_count routines were renamed and moved around). And, I don't 
have windows 10:-(
But anyway, have a look and let me hear what you think of it. I'll also want to 
test and measure it a bit more, but I am sure it is quite stable.

--
Added file: https://bugs.python.org/file49738/longobject.py

___
Python tracker 

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



[issue15373] copy.copy() does not properly copy os.environment

2021-01-12 Thread Irit Katriel


Change by Irit Katriel :


--
components: +Library (Lib)
versions: +Python 3.10 -Python 3.7

___
Python tracker 

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



[issue42906] python3 -m doctest test.py tests the stdlib "time" module instead

2021-01-12 Thread Guido van Rossum


Guido van Rossum  added the comment:

Whoops, I meant

export PYTHONPATH=.

--

___
Python tracker 

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



[issue42906] python3 -m doctest test.py tests the stdlib "time" module instead

2021-01-12 Thread Guido van Rossum


Guido van Rossum  added the comment:

Sorry, this is not a bug. The builtin time module takes precedence in this case 
because the current directory is not put at the front of the module search path 
(sys.path).

As a workaround you could exportPYTHONPATH=.

--
nosy: +gvanrossum
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



[issue42874] running configure on Solaris 10 gives grep "illegal option" errors

2021-01-12 Thread miss-islington


miss-islington  added the comment:


New changeset 0f66498fd8ee8644be6df963b86a1523f6069ddd by Paul Ganssle in 
branch 'master':
bpo-42874: Remove grep -qE options for Solaris 10 compatibility (GH-24200)
https://github.com/python/cpython/commit/0f66498fd8ee8644be6df963b86a1523f6069ddd


--
nosy: +miss-islington

___
Python tracker 

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



[issue41620] Python Unittest does not return results object when the test is skipped

2021-01-12 Thread Irit Katriel


Irit Katriel  added the comment:

The justification on the PR is: 

"The problem is that when I'm trying to collect test results if one of the 
tests is being skipped the error below pops up because test_result object is 
None.
AttributeError: 'NoneType' object has no attribute 'testsRun'"

which can be worked around with a simple "is not None" check. 

There will be cases where someone wants to know that a test was not executed, 
and inspecting a TestResult object to see that it actually represents Nothing 
is not as natural.

I'm -1 on this change.

--
nosy: +iritkatriel

___
Python tracker 

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



[issue42899] Is it legal to eliminate tests of a value, when that test has no effect on control flow?

2021-01-12 Thread Guido van Rossum


Guido van Rossum  added the comment:

Hm, I hadn't realized the issue of bool(a) being evaluated once or twice.

The most important side effect that bool(a) can have is raising (as e.g. numpy 
arrays do), not producing random results. Another important side effect might 
be loading some value into a cache.

So I think dropping an *extra* call is fine, while dropping the *only* call is 
not.

--

___
Python tracker 

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



[issue33066] raise an exception from multiple positions break the traceback frames

2021-01-12 Thread Irit Katriel


Irit Katriel  added the comment:

See this documentation of with_traceback() regarding an API to set the 
traceback on an exception object.
 https://docs.python.org/3/library/exceptions.html#BaseException.with_traceback

--
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



[issue42899] Is it legal to eliminate tests of a value, when that test has no effect on control flow?

2021-01-12 Thread Gregory P. Smith


Gregory P. Smith  added the comment:

If the body of a conditional does nothing, it seems fine to optimize the 
condition out to me.  But I see code from a low level compiled language 
perspective where that is clearly what would happen.  In reality, who ever 
meaningfully writes code where the body of a conditional does nothing?

 * Placeholder code with a # TODO perhaps.  [fine to optimize out]
 * Unit tests attempting to test the behavior of __bool__().  [an annoying 
behavior change]

Are there others?  Are we expecting this odd "not quite a no-op because we're 
so high level" pattern to ever appear in a performance critical situation?

The workaround for the latter would be to explicitly `if bool(x):` instead of 
`if x:` when the body is a no-op.  Or not make the body a no-op.  I expect 
unittest of __bool__() code owners would be fine with that so long as we call 
it out clearly in What's New docs, it's just that it could be an annoying 
change for them to make.

Ideally we'd also provide a lib2to3 fixer to detect and fixup code exhibiting 
that pattern.

The easiest answer is just not to optimize this out if it isn't actually 
providing us anything deemed important.

--

___
Python tracker 

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



[issue42902] a python embedded program may load "C:\Lib\os.py" on windows system

2021-01-12 Thread STINNER Victor


STINNER Victor  added the comment:

Hum. The code in Python 3.8 is complicated. When Py_SetPath() is called, Python 
starts by computing the Python Path Configuration because of:

/* Getting the program full path calls pathconfig_global_init() */
wchar_t *program_full_path = _PyMem_RawWcsdup(Py_GetProgramFullPath());

The result is stored info _Py_path_config. Then Py_SetPath() overrides 
program_full_path, prefix, exec_prefix and module_search_path of 
_Py_path_config.

When Python reachs Py_Initialize(), PyConfig_Read() does not compute the Python 
Path Configuration, but copies what comes from _Py_path_config.

--

I changed the code a lot of Python 3.10 to make it more deterministic and 
simpler. For example, Py_SetPath() no longer computes the Python Path 
Configuration.

commit ace3f9a0ce7b9fe8ae757fdd614f1e7a171f92b0
Author: Victor Stinner 
Date:   Tue Nov 10 21:10:22 2020 +0100

bpo-42260: Fix _PyConfig_Read() if compute_path_config=0 (GH-23220)

Fix _PyConfig_Read() if compute_path_config=0: use values set by
Py_SetPath(), Py_SetPythonHome() and Py_SetProgramName(). Add
compute_path_config parameter to _PyConfig_InitPathConfig().

The following functions now return NULL if called before
Py_Initialize():

* Py_GetExecPrefix()
* Py_GetPath()
* Py_GetPrefix()
* Py_GetProgramFullPath()
* Py_GetProgramName()
* Py_GetPythonHome()

These functions no longer automatically computes the Python Path
Configuration. Moreover, Py_SetPath() no longer computes
program_full_path.

This change is a little bit backward incompatible, even I would not recommend 
to call Py_GetXXX() functions before Py_Initialize() in Python 3.8 or 3.9.

--

___
Python tracker 

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



[issue42902] a python embedded program may load "C:\Lib\os.py" on windows system

2021-01-12 Thread Eryk Sun


Eryk Sun  added the comment:

> I still don't understand if the issue involves Py_SetPath() or not.

It seems to me that this issue is concerned with the default behavior that 
looks for the "lib/os.py" landmark via search_for_prefix() in PC/getpathp.c. 
Starting at the image path, it searches for the landmark up to the root 
directory. Any authenticated user can create a "C:/Lib" directory.

That said, I don't think the normal Python distribution is intended to be a 
base installation for embedding applications, as opposed to using a private 
copy of the embedded distribution. So in practice there may be no issue here.

--
nosy: +eryksun

___
Python tracker 

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



[issue42843] What min_sphinx for Python 3.10

2021-01-12 Thread STINNER Victor


STINNER Victor  added the comment:

There is a PPA on Ubuntu for Python 3.10. The PPA maintainer considers the drop 
the documentation, see discussion at:
https://github.com/python/cpython/pull/23620#issuecomment-755423140

--

___
Python tracker 

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



[issue42843] What min_sphinx for Python 3.10

2021-01-12 Thread STINNER Victor


Change by STINNER Victor :


--
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



[issue42899] Is it legal to eliminate tests of a value, when that test has no effect on control flow?

2021-01-12 Thread Mark Shannon


Mark Shannon  added the comment:

> How do we know `x` is falsey without calling `bool()` on it?

We don't, but in `if x: pass`, it doesn't matter.
Discounting side-effects in __bool__, the code does nothing regardless of the 
value of `x`.

--

___
Python tracker 

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



[issue42843] What min_sphinx for Python 3.10

2021-01-12 Thread STINNER Victor


STINNER Victor  added the comment:

* Fedora 33 (stable) ships python3-sphinx 3.2.1-1 and python3.10 version 
3.10.0~a3-1 (the alpha4 is under tests).
* Debian Buster (stable) ships python3-sphinx 1.8.4-1 and python3 version 
3.7.3-1
* Debian Sid (unstable) ships python3-sphinx 3.4.3-1 and python3 version 
3.9.1-1.
* Ubuntu Groovy (stable) ships python3-sphinx 3.2.1-1 and python3 version 
3.8.6-0ubuntu1
* Ubuntu Hirsute (dev) ships python3-sphinx 3.3.1-1 and python3 version 
3.9.0-3ubuntu1

In this list, requiring Sphinx 3.2+ to build Python 3.10 documentation would 
only be an issue on Debian Buster.

I didn't check Red Hat RHEL or SUSE SLE. If they want to ship Python 3.10 but 
only have an old Sphinx, they can either use a newer Sphinx to build the doc, 
or ship Python 3.10 with no doc (since it would not be the "system Python", it 
may be an acceptable tradeoff).

--

___
Python tracker 

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



[issue42899] Is it legal to eliminate tests of a value, when that test has no effect on control flow?

2021-01-12 Thread Mark Shannon


Mark Shannon  added the comment:

It's clearer if you rewrite

if a and b:
...

as

tmp = a and b
if tmp:
...

if a is falsey then bool(a) gets called in `tmp = a and b` and `a` is assigned 
to `tmp`. Then in `if tmp`, bool(a) is called again.

I agree with you about it not being an optimization if it changes the 
semantics. But only within agreed semantics.
Optimizations are allow to make fewer calls to __hash__() in a dictionary, or 
change race conditions, because those are outside of the language specification.

--

___
Python tracker 

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



[issue41116] build on macOS 11 (beta) does not find system-supplied third-party libraries

2021-01-12 Thread seb


seb  added the comment:

I tried that before, also with your command, without success. I saw that the 
CFLAGS includes weren't forwarded to the compiler - I don't know if that is 
only an issue here on my system. So instead I modified the setup.py and added 
the directory manually. It now works. Thanks for your help!!

--

___
Python tracker 

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



[issue42899] Is it legal to eliminate tests of a value, when that test has no effect on control flow?

2021-01-12 Thread Ethan Furman


Ethan Furman  added the comment:

If an optimization changes semantics it's not an optimization.

In  `if x: pass` how do we know `x` is falsely without calling `bool()` on it?

---

On a slightly different note, in the code:

if a and b:
   ...

why is `bool(a)` called twice?

--
nosy: +ethan.furman

___
Python tracker 

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



[issue42843] What min_sphinx for Python 3.10

2021-01-12 Thread STINNER Victor


STINNER Victor  added the comment:

Ah, the issue is also being discussed in PR 24142 comments.

--

___
Python tracker 

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



[issue42899] Is it legal to eliminate tests of a value, when that test has no effect on control flow?

2021-01-12 Thread Mark Shannon


Change by Mark Shannon :


--
priority: normal -> release blocker

___
Python tracker 

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



[issue42899] Is it legal to eliminate tests of a value, when that test has no effect on control flow?

2021-01-12 Thread Mark Shannon


Mark Shannon  added the comment:

They aren't quite the same. If `a` is falsey, and bool(a) has a side-effect, 
then that side-effect should occur twice in:

if a and b:
...

but only once in
if a:
if b:
...

It gets more interesting (silly), if `a.__bool__()` alternated between True and 
False.

If we say that such behavior is illegal, and can be ignored by the optimizer, 
then 3.10 is correct (as it stands).

My example was wrong though, as you've pointed out.
`if x: pass` it transformed to `x`. It is the test that is eliminated, not the 
evaluation of `x`.

--
priority: release blocker -> normal

___
Python tracker 

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



[issue42889] Incorrect behavior of Python parser after ast node of test program being modified

2021-01-12 Thread Guido van Rossum


Guido van Rossum  added the comment:

Yeah, there's supposed to be a checker.

--
nosy: +lys.nikolaou, serhiy.storchaka

___
Python tracker 

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



[issue42911] Addition chains for pow saves 10 % time!

2021-01-12 Thread Guido van Rossum


Change by Guido van Rossum :


--
nosy: +mark.dickinson, tim.peters

___
Python tracker 

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



[issue42899] Is it legal to eliminate tests of a value, when that test has no effect on control flow?

2021-01-12 Thread Guido van Rossum


Guido van Rossum  added the comment:

Can we translate 'if x: pass' into 'pass'? No, because calling its __bool__ 
method may have a side effect (as we saw at the start of this thread).

Can we eliminate a lone 'x'? Only if it's a local variable and we're *sure* 
(because of control flow analysis) that it's got a value. For globals and class 
variables we must execute the load because there could always be an exception 
(or the dict could have a trap for lookups).

Can we eliminate e.g. 'x.y'? Never, because it can have a side effect.

In general, eliminating this kind of thing seems silly -- in code that the user 
intends to be fast such things don't occur, and in test the user probably has a 
reason to write odd code.


On the other question, I don't see how there's any possible difference in 
evaluation and side effects between

if a and b: ...

and

if a:
if b:
...

so I have no problem with that (in fact that is what it *means*).

--

___
Python tracker 

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



[issue24650] Error in yield expression documentation

2021-01-12 Thread Irit Katriel


Change by Irit Katriel :


--
keywords: +easy
versions: +Python 3.10 -Python 3.3, Python 3.4, Python 3.5, Python 3.6

___
Python tracker 

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



[issue42908] Incorrect line numbers at end of try-except and with statements containing if False: pass

2021-01-12 Thread Mark Shannon


Change by Mark Shannon :


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

___
Python tracker 

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



[issue42910] Wrong code appears in the type alias introduction

2021-01-12 Thread Casuall


Change by Casuall :


--
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



[issue42874] running configure on Solaris 10 gives grep "illegal option" errors

2021-01-12 Thread Martin Wheatley


Martin Wheatley  added the comment:

I'll do the test

it happens with a plain ./configure

Many thanks
Martin

On Tue, 12 Jan 2021 at 15:11, Paul Ganssle  wrote:

>
> Paul Ganssle  added the comment:
>
> This particular grep statement is used to validate the `tzpath` variable.
> Apparently it is easy enough to achieve what I was going for using vanilla
> grep with no options, so I've created GH-24200 to fix the issue.
>
> I notice that there are other uses of `-q` and `-E` in the configure file,
> but presumably those are on more optional paths.
>
> @martin.wheatley.home: Can you check to see if GH-24200 fixes your issue?
>
> Also, can you clarify whether this happens with a plain `./configure`
> invocation, or are you specifying `./configure
> --with-tzpath='/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo'`
> yourself?
>
> --
> versions: +Python 3.10
>
> ___
> Python tracker 
> 
> ___
>

--

___
Python tracker 

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



[issue42910] Wrong code appears in the type alias introduction

2021-01-12 Thread Casuall

Casuall  added the comment:

I am using python3.8, it turned out to be a version issue, sorry

--原始邮件--
发件人:
"Python tracker"

https://bugs.python.org/issue42910;
___

--

___
Python tracker 

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



[issue42874] running configure on Solaris 10 gives grep "illegal option" errors

2021-01-12 Thread Martin Wheatley


Martin Wheatley  added the comment:

I'll do the test

it happens with a plain ./configure

Many thanks
Martin

On Tue, 12 Jan 2021 at 15:11, Paul Ganssle  wrote:

>
> Paul Ganssle  added the comment:
>
> This particular grep statement is used to validate the `tzpath` variable.
> Apparently it is easy enough to achieve what I was going for using vanilla
> grep with no options, so I've created GH-24200 to fix the issue.
>
> I notice that there are other uses of `-q` and `-E` in the configure file,
> but presumably those are on more optional paths.
>
> @martin.wheatley.home: Can you check to see if GH-24200 fixes your issue?
>
> Also, can you clarify whether this happens with a plain `./configure`
> invocation, or are you specifying `./configure
> --with-tzpath='/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo'`
> yourself?
>
> --
> versions: +Python 3.10
>
> ___
> Python tracker 
> 
> ___
>

--

___
Python tracker 

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



[issue42903] optimize lru_cache for functions with no arguments

2021-01-12 Thread Eugene Toder


Eugene Toder  added the comment:

@cache does not address the problem or any of the concerns brought up in the 
thread. Thread-safe @once is a nice idea, but more work of course.

--

___
Python tracker 

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



[issue42904] get_type_hints does not provide localns for classes

2021-01-12 Thread Ken Jin


Change by Ken Jin :


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

___
Python tracker 

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



[issue42874] running configure on Solaris 10 gives grep "illegal option" errors

2021-01-12 Thread Paul Ganssle


Paul Ganssle  added the comment:

This particular grep statement is used to validate the `tzpath` variable. 
Apparently it is easy enough to achieve what I was going for using vanilla grep 
with no options, so I've created GH-24200 to fix the issue.

I notice that there are other uses of `-q` and `-E` in the configure file, but 
presumably those are on more optional paths.

@martin.wheatley.home: Can you check to see if GH-24200 fixes your issue?

Also, can you clarify whether this happens with a plain `./configure` 
invocation, or are you specifying `./configure 
--with-tzpath='/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo'`
 yourself?

--
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



[issue42874] running configure on Solaris 10 gives grep "illegal option" errors

2021-01-12 Thread Paul Ganssle


Change by Paul Ganssle :


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

___
Python tracker 

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



[issue42843] What min_sphinx for Python 3.10

2021-01-12 Thread STINNER Victor


STINNER Victor  added the comment:

> Some distribs may want/need to ship Python 3.10 along with Sphinx 2?

In my experience, Linux distributions prefer to only ship a single Sphinx 
version. The question is more which Linux distributions are stuck at Sphinx 2 
only?

If there is a short list of Linux distributions which cannot use Sphinx 3, even 
just to build the Python documentation, would it be acceptable for them to stop 
shipping the Python documentation?

In Fedora, the Python documentation is a separated package. For example, it 
allows us to upgrade Python while Fedora Rawhide was upgrade to Sphinx 3 but 
the Python documentation was not compatible with Sphinx 3 (fixed in bpo-40204).

If you ask *me*: I mostly care about Fedora which already uses Sphinx 3.2, so 
I'm fine with requiring Sphinx 3.2 (the Python documentation is *not* 
compatible with Sphinx 3.0 and 3.1: see bpo-40204).

If the minimum required Sphinx version changes, please document it properly at:
https://docs.python.org/dev/whatsnew/3.10.html#build-changes

--

___
Python tracker 

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



[issue42911] Addition chains for pow saves 10 % time!

2021-01-12 Thread Jurjen N.E. Bos


New submission from Jurjen N.E. Bos :

When looking at the code of pow() with integer exponent, I noticed there is a 
hard boundary between the binary and "fiveary" (actually 32-ary) computations. 
Also, the fiveary wasn't really optimal.

So I wrote a proof of concept version of long_pow that dynamically uses 
addition chains!
It does save over 10 % of multiplications for exponents from 20 to a few 
hundred bits, and then the saving go down to a few percent for very long 
numbers. It does not take much more memory nor time for any argument 
combination I checked.
I tested it on 3.8rc1, but I am planning to port it to 3.10. This is a bit 
difficult, since *lots* of code around it changed, and I only have Windows 7. 
However, I'll keep you posted.
See https://github.com/jneb/cpython/tree/38_fast_pow

--
components: Interpreter Core
files: longobject.c
messages: 384949
nosy: jneb
priority: normal
severity: normal
status: open
title: Addition chains for pow saves 10 % time!
type: performance
versions: Python 3.10
Added file: https://bugs.python.org/file49737/longobject.c

___
Python tracker 

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



[issue42910] Wrong code appears in the type alias introduction

2021-01-12 Thread Serhiy Storchaka


Serhiy Storchaka  added the comment:

What version of Python did you use? This is a documentation for Python 3.9.

--
nosy: +serhiy.storchaka

___
Python tracker 

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



[issue41994] Refcount issues in import

2021-01-12 Thread Serhiy Storchaka


Serhiy Storchaka  added the comment:

Thank you Petr!

--
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



[issue42899] Is it legal to eliminate tests of a value, when that test has no effect on control flow?

2021-01-12 Thread Serhiy Storchaka


Serhiy Storchaka  added the comment:

For the latter, it was decided that it is legal a long time ago. It has a 
benefit and we did not have any complains for all these years. The absent of 
this optimization would encourage writing less readable code for performance.

For the former, what is the benefit?

--

___
Python tracker 

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



[issue40052] Incorrect pointer alignment in _PyVectorcall_Function() of cpython/abstract.h

2021-01-12 Thread Petr Viktorin


Petr Viktorin  added the comment:


New changeset 187f76def8a5bd0af7ab512575cad30cfe624b05 by Petr Viktorin in 
branch '3.8':
[3.8] bpo-40052: Fix alignment issue in PyVectorcall_Function() (GH-23999) 
(GH-24120)
https://github.com/python/cpython/commit/187f76def8a5bd0af7ab512575cad30cfe624b05


--

___
Python tracker 

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



[issue42910] Wrong code appears in the type alias introduction

2021-01-12 Thread Casuall

New submission from Casuall :

I learned about type aliases on the 
page(https://docs.python.org/3/library/typing.html), and I found that following 
the code (Vector = list[float])in the tutorial, an error occurred (NameError: 
name 'typing' is not defined) when running.

The following code has the same problem:
  ConnectionOptions = dict[str, str]
  Address = tuple[str, int]
  Server = tuple[Address, ConnectionOptions]

I searched through google and found the correct code:
  from typing import List
  Vector = List[float]

  from typing import Dict, Tuple, Sequence
 
  ConnectionOptions = Dict[str, str]
  Address = Tuple[str, int]
  Server = Tuple[Address, ConnectionOptions]

--
assignee: docs@python
components: Documentation
messages: 384944
nosy: Smile-zjk, docs@python
priority: normal
severity: normal
status: open
title: Wrong code appears in the type alias introduction

___
Python tracker 

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



[issue41994] Refcount issues in import

2021-01-12 Thread Petr Viktorin


Petr Viktorin  added the comment:


New changeset 4db8988420e0a122d617df741381b0c385af032c by Serhiy Storchaka in 
branch 'master':
bpo-41994: Fix refcount issues in Python/import.c (GH-22632)
https://github.com/python/cpython/commit/4db8988420e0a122d617df741381b0c385af032c


--
nosy: +petr.viktorin

___
Python tracker 

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



[issue42899] Is it legal to eliminate tests of a value, when that test has no effect on control flow?

2021-01-12 Thread Mark Shannon


Mark Shannon  added the comment:

The question still stands.

Is converting `if x: pass` to `pass` legal?

And, if it is not, is converting 

if a and b:
body

to

if a:
if b:
body

a legal transformation?
(ignoring line numbers)


If the first transformation is not allowed but the second is, why?


B.T.W it is trivial to change the behavior, once we've decided what's correct.

--

___
Python tracker 

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



[issue16615] gcc 4.7 unused-but-set warnings

2021-01-12 Thread STINNER Victor


STINNER Victor  added the comment:

We are now dealing with GCC 11 warnings, I close this issue. Moreover, the GCC 
warnings are not mentioned.

--
nosy: +vstinner
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



[issue16615] gcc 4.7 unused-but-set warnings

2021-01-12 Thread Irit Katriel


Irit Katriel  added the comment:

Is this about the pre-version 3.3 warnings? If so it can be closed.

--
nosy: +iritkatriel
status: open -> pending

___
Python tracker 

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



[issue25077] Compiler warnings: initialization from incompatible pointer type

2021-01-12 Thread Irit Katriel


Irit Katriel  added the comment:

Issues 22038 and 23085 seem to have fixed all these warnings between them.

--
nosy: +iritkatriel
resolution:  -> out of date
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



[issue28937] str.split(): allow removing empty strings (when sep is not None)

2021-01-12 Thread Dong-hee Na


Change by Dong-hee Na :


--
nosy: +corona10

___
Python tracker 

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



[issue42843] What min_sphinx for Python 3.10

2021-01-12 Thread Dong-hee Na


Change by Dong-hee Na :


--
nosy: +corona10, vstinner

___
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-01-12 Thread robin


robin  added the comment:

python -mtrace -t repro.py reveals a long string of these:


 --- modulename: errors, funcname: __init__
errors.py(85): super().__init__(*args, **kw)
 --- modulename: errors, funcname: __init__
errors.py(37): if line is not None:
errors.py(38): super().__init__(line)
errors.py(39): self.line = line
_header_value_parser.py(2417): if value and value[0] != ';':
_header_value_parser.py(2426): if value:
_header_value_parser.py(2428): 
mime_parameters.append(ValueTerminal(';', 'parameter-separator'))
 --- modulename: _header_value_parser, funcname: __new__
_header_value_parser.py(855): self = super().__new__(cls, value)
_header_value_parser.py(856): self.token_type = token_type
_header_value_parser.py(857): self.defects = []
_header_value_parser.py(858): return self
_header_value_parser.py(2429): value = value[1:]
_header_value_parser.py(2394): while value:
_header_value_parser.py(2395): try:
_header_value_parser.py(2396): token, value = get_parameter(value)
 --- modulename: _header_value_parser, funcname: get_parameter
_header_value_parser.py(2252): param = Parameter()
 --- modulename: _header_value_parser, funcname: __init__
_header_value_parser.py(110): super().__init__(*args, **kw)
_header_value_parser.py(111): self.defects = []
_header_value_parser.py(2253): token, value = get_attribute(value)
 --- modulename: _header_value_parser, funcname: get_attribute
_header_value_parser.py(2135): attribute = Attribute()
 --- modulename: _header_value_parser, funcname: __init__
_header_value_parser.py(110): super().__init__(*args, **kw)
_header_value_parser.py(111): self.defects = []
_header_value_parser.py(2136): if value and value[0] in CFWS_LEADER:
_header_value_parser.py(2139): if value and value[0] in ATTRIBUTE_ENDS:
_header_value_parser.py(2140): raise errors.HeaderParseError(
_header_value_parser.py(2141): "expected token but found 
'{}'".format(value))
_header_value_parser.py(2398): except errors.HeaderParseError as err:
_header_value_parser.py(2399): leader = None
_header_value_parser.py(2400): if value[0] in CFWS_LEADER:
_header_value_parser.py(2402): if not value:
_header_value_parser.py(2405): if value[0] == ';':
_header_value_parser.py(2406): if leader is not None:
_header_value_parser.py(2408): 
mime_parameters.defects.append(errors.InvalidHeaderDefect(
_header_value_parser.py(2409): "parameter entry with no 
content"))


... which would make sense as such, except at the end, the list of defects is 
empty.  And, of course, it should not take so long.

--

___
Python tracker 

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



[issue11021] email MIME-Version headers for each part in multipart message

2021-01-12 Thread robin


robin  added the comment:

Propose to close as duplicate of https://bugs.python.org/issue25235

--
nosy: +eriker

___
Python tracker 

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



[issue25235] EmailMessage.add_attachment() creates parts with spurious MIME-Version header.

2021-01-12 Thread robin


robin  added the comment:

Duplicate of https://bugs.python.org/issue11021 but this one is more current 
and has a patch.

--
nosy: +eriker

___
Python tracker 

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



[issue42862] Use functools.lru_cache iso. _sqlite.Cache in sqlite3 module

2021-01-12 Thread Serhiy Storchaka


Serhiy Storchaka  added the comment:

I do not like using _functools._lru_cache_wrapper. It is a deep implementation 
detail, private function of private module. Use functools.lru_cache. If it is 
few nanoseconds slower, that cost is only added at connection creation time. It 
is insignificant in any real application in comparison with IO and any real 
work with data. Thousands of short-living in-memory DB instances are only 
created in tests.

--

___
Python tracker 

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



[issue42880] ctypes: variadic function call still doesn't work on Apple Silicon

2021-01-12 Thread Ronald Oussoren


Change by Ronald Oussoren :


--
assignee:  -> docs@python
components: +Documentation
nosy: +docs@python

___
Python tracker 

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



[issue42880] ctypes: variadic function call still doesn't work on Apple Silicon

2021-01-12 Thread Ronald Oussoren


Ronald Oussoren  added the comment:

I agree that this should be mentioned in the documentation for ctypes.

--

___
Python tracker 

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



[issue42905] Issue while installing numba inside fastparquet

2021-01-12 Thread Serhiy Storchaka


Serhiy Storchaka  added the comment:

Neither numba nor fastparquet are parts of the standard Python library. Please 
use corresponding bug trackers.

--
nosy: +serhiy.storchaka
resolution:  -> third party
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



[issue42905] Issue while installing numba inside fastparquet

2021-01-12 Thread Steve Stagg


Steve Stagg  added the comment:

Hi Sachit

I see you raised this issue with the numba library here:
https://github.com/numba/numba/issues/6630

I would recommend sticking with the numba issue unless they can confirm there 
is an issue with core python

--
nosy: +stestagg

___
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-01-12 Thread robin


New submission from robin :

Attached please find a script which takes on the order of 1 minute to parse 
even though the embedded message is reasonably trivial.  The main flaw is that 
the Content-Type: header has a long string of redundant  which is something 
some spammers apparently use to bypass some content filters or analyzers.

The script is short enough to inline here for what I hope is convenience for 
most visitors.


from email import message_from_bytes
#from email.parser import BytesParser
from email.policy import default
##from cProfile import run as cprun

b = (b'''From: me 
To: you 
Subject: sample with ; stuffing in MIME Content-Type: header
Content-type: text/plain''' + b';' * 54 + b'\n' +
   36 * (b' ' + b';' * 990 + b'\n') + b'''\
Content-transfer-encoding: 7bit
MIME-Version: 1.0

Hello.
''')
## cprun('message_from_bytes(b, policy=default)', sort=1)

m = message_from_bytes(b, policy=default)
#m = BytesParser(policy=default).parsebytes(b)

print(m.as_string())


I have commented out two sets of changes; the ones with a single # demonstrate 
that the same error happens with BytesParser, and the ones with ## are for 
profiling the code.

For what it's worth, profiling consistently indicates that it gets stuck in 
builtins.sum while attempting to parse the message.  Here is a partial cProfile 
result from Python 3.7.2:

 
 2148205 function calls (2004560 primitive calls) in 34.533 seconds

   Ordered by: internal time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
160/4   32.3560.202   32.7288.182 {built-in method builtins.sum}
40.5600.1401.6610.415 
_header_value_parser.py:2380(parse_mime_parameters)
   1427720.2300.0000.2300.000 {method 'format' of 'str' objects}
   1429320.2030.0000.2030.000 
_header_value_parser.py:866(all_defects)
   1427720.1970.0000.2880.000 errors.py:84(__init__)
143248/240.1670.000   32.7271.364 
_header_value_parser.py:126()
   1427720.1510.0000.4560.000 
_header_value_parser.py:2126(get_attribute)
   2858480.1460.0000.1460.000 
_header_value_parser.py:109(__init__)
   1427720.1020.0000.6310.000 
_header_value_parser.py:2241(get_parameter)
   1427720.0910.0000.0910.000 errors.py:36(__init__)
   1430760.0880.0000.1530.000 
_header_value_parser.py:854(__new__)
   1430800.0650.0000.0650.000 {built-in method __new__ of type 
object at 0x101c20640}
   120.0440.0040.0860.007 
_header_value_parser.py:716(params)
   2858390.0420.0000.0420.000 {method 'endswith' of 'str' 
objects}
30.0300.010   27.5129.171 
message.py:588(get_content_maintype)
   2864820.0290.0000.0290.000 {method 'append' of 'list' 
objects}
20.0140.0070.0140.007 :914(get_data)
60.0080.001   25.3694.228 feedparser.py:218(_parsegen)
40.0010.0000.0010.000 {method 'split' of 're.Pattern' 
objects}
160/40.0010.000   32.7288.182 
_header_value_parser.py:124(all_defects)
  2880.0010.0000.0020.000 
_header_value_parser.py:1000(get_fws)
  2880.0010.0000.0030.000 
_header_value_parser.py:1217(get_cfws)



Starting the code and doing a KeyboardInterrupt after a few, or many, seconds 
tends to get a traceback like this, which also points to roughly the same 
culprit:


^CTraceback (most recent call last):
  File "repro.py", line 18, in 
m = message_from_bytes(b, policy=default)
  File "/Users/eriker/.pyenv/versions/3.7.2/lib/python3.7/email/__init__.py", 
line 46, in message_from_bytes
return BytesParser(*args, **kws).parsebytes(s)
  File "/Users/eriker/.pyenv/versions/3.7.2/lib/python3.7/email/parser.py", 
line 124, in parsebytes
return self.parser.parsestr(text, headersonly)
  File "/Users/eriker/.pyenv/versions/3.7.2/lib/python3.7/email/parser.py", 
line 68, in parsestr
return self.parse(StringIO(text), headersonly=headersonly)
  File "/Users/eriker/.pyenv/versions/3.7.2/lib/python3.7/email/parser.py", 
line 57, in parse
feedparser.feed(data)
  File "/Users/eriker/.pyenv/versions/3.7.2/lib/python3.7/email/feedparser.py", 
line 176, in feed
self._call_parse()
  File "/Users/eriker/.pyenv/versions/3.7.2/lib/python3.7/email/feedparser.py", 
line 180, in _call_parse
self._parse()
  File "/Users/eriker/.pyenv/versions/3.7.2/lib/python3.7/email/feedparser.py", 
line 256, in _parsegen
if self._cur.get_content_type() == 'message/delivery-status':
  File "/Users/eriker/.pyenv/versions/3.7.2/lib/python3.7/email/message.py", 
line 578, in get_content_type
value = self.get('content-type', missing)
  File "/Users/eriker/.pyenv/versions/3.7.2/lib/python3.7/email/message.py", 
line 471, in get
return self.policy.header_fetch_parse(k, v)
  File 

[issue41490] Update bundled pip to 20.2.1 and setuptools to 49.2.1

2021-01-12 Thread Julien Palard


Julien Palard  added the comment:

Question: Why do we keep setuptools?

According to PEP453:

> Once pip is able to run pip install --upgrade pip without needing setuptools 
> installed first, then the private copy of setuptools will be removed from 
> ensurepip in subsequent CPython releases.

Which looks like to be the fact now:

$ python3.9 -m venv .venv
$ source .venv/bin/activate
$ pip uninstall setuptools
[...]
Successfully uninstalled setuptools-49.2.1
$ pip install --upgrade pip
[...]
Successfully installed pip-20.3.3

--
nosy: +mdk

___
Python tracker 

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



[issue42862] Use functools.lru_cache iso. _sqlite.Cache in sqlite3 module

2021-01-12 Thread Erlend Egeberg Aasland


Erlend Egeberg Aasland  added the comment:

True that :) I'll close GH-24135 for now and open a PR for this later today.

--

___
Python tracker 

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



[issue42862] Use functools.lru_cache iso. _sqlite.Cache in sqlite3 module

2021-01-12 Thread Berker Peksag


Berker Peksag  added the comment:

We can always reopen GH-24135 and merge it even if we revert this one for some 
reason :)

--

___
Python tracker 

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



  1   2   >