[issue38316] docs: Code object's "co_stacksize" field is described with mistake

2019-10-04 Thread Terry J. Reedy


Change by Terry J. Reedy :


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



[issue38373] List overallocation strategy

2019-10-04 Thread Tim Peters


Tim Peters  added the comment:

Don't know.  Define "the problem" ;-)  As soon as the allocation is over 512 
bytes (64 pointers), it's punted to the system malloc family.  Before then, do 
a relative handful of relatively small memcpy's really matter?

pymalloc is faster than system mallocs, and probably uses space more 
efficiently.  There are no pure wins here :-)

--

___
Python tracker 

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



[issue38308] Add optional weighting to statistics.harmonic_mean()

2019-10-04 Thread Raymond Hettinger


Raymond Hettinger  added the comment:

> Can I process with this issue with your guide?

Thank you, but this is one I would like to do myself.  I've already done work 
on it and would like to wrap it up (also, it's more complicated than it seems 
because the supporting functions are a bit awkward to use in this context).

--

___
Python tracker 

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



[issue38373] List overallocation strategy

2019-10-04 Thread Raymond Hettinger


Raymond Hettinger  added the comment:

> WRT pymalloc, it will always copy on growing resize in this context

That sounds like an excellent reason NOT to use pymalloc ;-)

--

___
Python tracker 

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



[issue38348] Make python -m ast more configurable

2019-10-04 Thread Batuhan


Batuhan  added the comment:

> I do not want to complicate this tiny feature.
Making more configurable isn't making it complicated. It is just improving 
users control over it by indentation and parsing option.

--

___
Python tracker 

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



[issue22240] argparse support for "python -m module" in help

2019-10-04 Thread Samuel Marks


Samuel Marks  added the comment:

See https://bugs.python.org/msg353987 for manual test

--
Added file: https://bugs.python.org/file48643/prog-module-name-handler.patch

___
Python tracker 

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



[issue38167] O_DIRECT read fails with 4K mmap buffer

2019-10-04 Thread Paul


Paul  added the comment:

> Problem is you follow it with:
>
> fo = os.fdopen(fd, 'rb+')

> which introduces a Python level of buffering around the kernel unbuffered 
> file descriptor. You'd need to pass buffering=0 to make os.fdopen avoid 
> returning a buffered file object, making it:

> fo = os.fdopen(fd, 'rb+', buffering=0)

You are absolutely right!  This fixed the issue.  So... is this not a bug, 
then?  Should I discard my patch?

--

___
Python tracker 

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



[issue22240] argparse support for "python -m module" in help

2019-10-04 Thread Samuel Marks


Samuel Marks  added the comment:

Until this is accepted, I've modified my codebase:
```
from argparse import ArgumentParser

ArgumentParser(
  prog=None if globals().get('__spec__') is None else 'python -m 
{}'.format(__spec__.name.partition('.')[0])
)
```

--
nosy: +samuelmarks

___
Python tracker 

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



[issue38373] List overallocation strategy

2019-10-04 Thread Tim Peters


Tim Peters  added the comment:

WRT pymalloc, it will always copy on growing resize in this context.  A 
pymalloc pool is dedicated to blocks of the same size class, so if the size 
class increases (they're 16 bytes apart now), the data must be copied to a 
different pool (dedicated to blocks of the larger size class).

--

___
Python tracker 

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



[issue38308] Add optional weighting to statistics.harmonic_mean()

2019-10-04 Thread Dong-hee Na


Dong-hee Na  added the comment:

@rhettinger
If you are okay, Can I process with this issue with your guide?

--

___
Python tracker 

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



[issue38167] O_DIRECT read fails with 4K mmap buffer

2019-10-04 Thread Josh Rosenberg


Josh Rosenberg  added the comment:

> I do not believe an unbuffered file uses O_DIRECT.  This is why I use 
> os.open(fpath, os.O_DIRECT).

Problem is you follow it with:

fo = os.fdopen(fd, 'rb+')

which introduces a Python level of buffering around the kernel unbuffered file 
descriptor. You'd need to pass buffering=0 to make os.fdopen avoid returning a 
buffered file object, making it:

fo = os.fdopen(fd, 'rb+', buffering=0)

--

___
Python tracker 

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



[issue38232] empty local-part in addr_spec displayed incorrectly

2019-10-04 Thread Abhilash Raj


Abhilash Raj  added the comment:

It is actually parsed correctly and serialized back when you try to convert it 
to a string representation:

from email.parser import BytesFeedParser
import email.policy

def main():
eml_string = 'From: Nobody <""@example.org>'
parser = BytesFeedParser(policy = email.policy.default)
parser.feed(eml_string.encode())
msg = parser.close()
print(msg.get('From').addresses[0].addr_spec)
print(repr(msg.get('From')._parse_tree))
print(msg.as_string())

Running this gives me:


@example.org
AddressList([Address([Mailbox([NameAddr([DisplayName([Atom([ValueTerminal('Nobody'),
 CFWSList([WhiteSpaceTerminal(' ')])])]), AngleAddr([ValueTerminal('<'), 
AddrSpec([LocalPart([QuotedString([BareQuotedString([ValueTerminal('')])])]), 
ValueTerminal('@'), Domain([DotAtom([DotAtomText([ValueTerminal('example'), 
ValueTerminal('.'), ValueTerminal('org')])])])]), ValueTerminal('>')])])])])])
From: Nobody <""@example.org>


Notice the : 
AddrSpec([LocalPart([QuotedString([BareQuotedString([ValueTerminal('')])])])

print() converts the addr-spec into a string, which omits the quotes. This is 
true for any non-none string too:


he...@example.org
AddressList([Address([Mailbox([NameAddr([DisplayName([Atom([ValueTerminal('Nobody'),
 CFWSList([WhiteSpaceTerminal(' ')])])]), AngleAddr([ValueTerminal('<'), 
AddrSpec([LocalPart([QuotedString([BareQuotedString([ValueTerminal('hello')])])]),
 ValueTerminal('@'), Domain([DotAtom([DotAtomText([ValueTerminal('example'), 
ValueTerminal('.'), ValueTerminal('org')])])])]), ValueTerminal('>')])])])])])
From: Nobody <"hello"@example.org>


If you prefer the string representation of the header's parsed value, you can 
try:

print(msg.get('From').fold(policy=email.policy.default))

Which prints:

From: Nobody <""@example.org>

--

___
Python tracker 

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



[issue38341] Add SMTPNotSupportedError in the exports of smtplib

2019-10-04 Thread miss-islington


Change by miss-islington :


--
pull_requests: +16180
pull_request: https://github.com/python/cpython/pull/16590

___
Python tracker 

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



[issue38341] Add SMTPNotSupportedError in the exports of smtplib

2019-10-04 Thread Abhilash Raj


Abhilash Raj  added the comment:


New changeset 3faf826e5879536d2272f1a51c58965a16827f81 by Abhilash Raj (nde) in 
branch 'master':
bpo-38341: Add SMTPNotSupportedError in the exports of smtplib (#16525)
https://github.com/python/cpython/commit/3faf826e5879536d2272f1a51c58965a16827f81


--

___
Python tracker 

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



[issue38341] Add SMTPNotSupportedError in the exports of smtplib

2019-10-04 Thread Abhilash Raj


Abhilash Raj  added the comment:

It seems that SMTPNotSupportedError is publicly documented, it should be a part 
of __all__.

--
nosy: +maxking

___
Python tracker 

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



[issue33714] module can set an exception in tp_clear

2019-10-04 Thread Ashley Whetter


Ashley Whetter  added the comment:

I've just realised that this issue was specific to tp_clear on a module and not 
on objects. tp_clear on modules has already been fixed in 
https://bugs.python.org/issue33622.
I think this is closable.

--

___
Python tracker 

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



[issue38368] Crash when subclassing ctypes.Union

2019-10-04 Thread Vinay Sajip


Change by Vinay Sajip :


--
keywords: +patch
pull_requests: +16179
stage: test needed -> patch review
pull_request: https://github.com/python/cpython/pull/16589

___
Python tracker 

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



[issue38373] List overallocation strategy

2019-10-04 Thread Serhiy Storchaka


Serhiy Storchaka  added the comment:

Here is some data. step is the number of items added at a time, the first row 
is the size, the second row is the currently allocated size, the third row is 
the proposed allocated size.

for step in (1, 2, 3, 4, 5, 6, 7, 8, 9, 10):
sizes0 = range(step, step*31, step)
sizes1 = []
sizes2 = []
old_size = allocated1 = allocated2 = 0
for size in sizes0:
if size > allocated1:
allocated1 = size + (size >> 3) + (3 if size < 9 else 6)
sizes1.append(allocated1)
if size > allocated2:
allocated2 = (size + (size >> 3) + 6) & ~3
if size - old_size > allocated2 - size:
allocated2 = (size + 3) & ~3
sizes2.append(allocated2)
old_size = size
print('\nstep =', step)
print(' '.join(f'{x:3}' for x in sizes0))
print(' '.join(f'{x:3}' for x in sizes1))
print(' '.join(f'{x:3}' for x in sizes2))

step = 1
  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20 
 21  22  23  24  25  26  27  28  29  30
  4   4   4   4   8   8   8   8  16  16  16  16  16  16  16  16  25  25  25  25 
 25  25  25  25  25  35  35  35  35  35
  4   4   4   4   8   8   8   8  16  16  16  16  16  16  16  16  24  24  24  24 
 24  24  24  24  32  32  32  32  32  32

step = 2
  2   4   6   8  10  12  14  16  18  20  22  24  26  28  30  32  34  36  38  40 
 42  44  46  48  50  52  54  56  58  60
  5   5   9   9  17  17  17  17  26  26  26  26  26  37  37  37  37  37  48  48 
 48  48  48  48  62  62  62  62  62  62
  8   8   8   8  16  16  16  16  24  24  24  24  32  32  32  32  44  44  44  44 
 44  44  56  56  56  56  56  56  68  68

step = 3
  3   6   9  12  15  18  21  24  27  30  33  36  39  42  45  48  51  54  57  60 
 63  66  69  72  75  78  81  84  87  90
  6   6  16  16  16  26  26  26  36  36  36  36  49  49  49  49  63  63  63  63 
 63  80  80  80  80  80  97  97  97  97
  8   8  16  16  16  24  24  24  36  36  36  36  48  48  48  48  60  60  60  60 
 76  76  76  76  76  92  92  92  92  92

step = 4
  4   8  12  16  20  24  28  32  36  40  44  48  52  56  60  64  68  72  76  80 
 84  88  92  96 100 104 108 112 116 120
  7  12  12  24  24  24  37  37  37  51  51  51  64  64  64  64  82  82  82  82 
100 100 100 100 100 123 123 123 123 123
  8   8  16  16  28  28  28  40  40  40  52  52  52  68  68  68  68  84  84  84 
 84 104 104 104 104 104 124 124 124 124

step = 5
  5  10  15  20  25  30  35  40  45  50  55  60  65  70  75  80  85  90  95 100 
105 110 115 120 125 130 135 140 145 150
  8  17  17  28  28  39  39  51  51  51  67  67  67  84  84  84 101 101 101 101 
124 124 124 124 146 146 146 146 146 174
  8  16  16  28  28  36  36  48  48  60  60  60  76  76  76  96  96  96  96 116 
116 116 116 140 140 140 140 140 168 168

step = 6
  6  12  18  24  30  36  42  48  54  60  66  72  78  84  90  96 102 108 114 120 
126 132 138 144 150 156 162 168 174 180
  9  19  19  33  33  46  46  60  60  60  80  80  80 100 100 100 120 120 120 120 
147 147 147 147 174 174 174 174 174 208
 12  12  24  24  36  36  52  52  64  64  80  80  80 100 100 100 120 120 120 120 
144 144 144 144 172 172 172 172 200 200

step = 7
  7  14  21  28  35  42  49  56  63  70  77  84  91  98 105 112 119 126 133 140 
147 154 161 168 175 182 189 196 203 210
 10  21  21  37  37  53  53  69  69  84  84  84 108 108 108 132 132 132 155 155 
155 155 187 187 187 187 218 218 218 218
  8  16  28  28  44  44  60  60  76  76  92  92  92 116 116 116 136 136 136 160 
160 160 184 184 184 184 216 216 216 216

step = 8
  8  16  24  32  40  48  56  64  72  80  88  96 104 112 120 128 136 144 152 160 
168 176 184 192 200 208 216 224 232 240
 12  24  24  42  42  60  60  78  78  96  96  96 123 123 123 150 150 150 177 177 
177 177 213 213 213 213 249 249 249 249
  8  24  24  40  40  60  60  76  76  96  96  96 120 120 120 148 148 148 176 176 
176 176 212 212 212 212 248 248 248 248

step = 9
  9  18  27  36  45  54  63  72  81  90  99 108 117 126 135 144 153 162 171 180 
189 198 207 216 225 234 243 252 261 270
 16  26  36  36  56  56  76  76  97  97 117 117 117 147 147 147 178 178 178 208 
208 208 208 249 249 249 249 289 289 289
 12  20  36  36  56  56  76  76  96  96 116 116 136 136 136 168 168 168 196 196 
196 228 228 228 228 268 268 268 268 308

step = 10
 10  20  30  40  50  60  70  80  90 100 110 120 130 140 150 160 170 180 190 200 
210 220 230 240 250 260 270 280 290 300
 17  28  39  51  51  73  73  96  96 118 118 141 141 141 174 174 174 208 208 208 
242 242 242 242 287 287 287 287 332 332
 12  20  32  40  60  60  84  84 104 104 128 128 152 152 152 184 184 184 216 216 
216 252 252 252 252 296 296 296 296 340

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 

[issue38373] List overallocation strategy

2019-10-04 Thread Raymond Hettinger


Raymond Hettinger  added the comment:

We should definitely revisit the over-allocation strategy.  I last worked on 
the existing strategy back in 2004.  Since then, the weighting of the 
speed/space trade-off considerations have changed.   

We need to keep the amortized O(1) append() behavior, but possibly we would 
benefit from more over-allocation and fewer resizes.  Also, we should look at 
the interaction with the small object allocator to see if its design is causing 
realloc() to frequently have to move data rather than extending in place.

--

___
Python tracker 

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



[issue38374] Remove weakref.ReferenceError entry from documentation

2019-10-04 Thread Martijn Pieters


New submission from Martijn Pieters :

The weakref documentation still mentions weakref.ReferenceError:

https://docs.python.org/3/library/weakref.html#weakref.ReferenceError

But this alias for the built-in ReferenceError exception was removed in the 3.0 
development cycle 
(https://github.com/python/cpython/commit/2633c69fae7e413b2b64b01d8c0c901ae649a225#diff-b7975e9ef5a6be5f64e9bb391de03057),
 the last version where `weakref.ReferenceError` still exists is Python 2.7.

Please remove it, it's just confusing now.

--
assignee: docs@python
components: Documentation
messages: 353977
nosy: docs@python, mjpieters
priority: normal
severity: normal
status: open
title: Remove weakref.ReferenceError entry from documentation
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



[issue38373] List overallocation strategy

2019-10-04 Thread Brandt Bucher


Change by Brandt Bucher :


--
nosy: +brandtbucher

___
Python tracker 

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



[issue38373] List overallocation strategy

2019-10-04 Thread Serhiy Storchaka


New submission from Serhiy Storchaka :

Currently list uses the following formula for allocating an array for items (if 
size != 0):

allocated = size + (size >> 3) + (3 if size < 9 else 6)

If add items by 1 the growth pattern is:  0, 4, 8, 16, 25, 35, 46, 58, 72, 88, 
...

I think this strategy can be improved.

1. There is no much sense in allocating the space for 25 items. The standard 
Python allocator returns addresses aligned to 16 bytes on 64-bit platform. It 
will allocate a space for 26 items. It is more efficient if the starting 
address is a multiple of some power of two, and perhaps larger than the pointer 
size.

So it may be better to allocate a multiple of two or four items. Few first 
sizes are multiple of four, so this is good multiplier. I suggest to use the 
following expression:

allocated = (size + (size >> 3) + 6) & ~3

It adds bits AND, but removes conditional value.

2. It is common enough case if the list is created from a sequence of a known 
size and do not adds items anymore. Or if it is created by concatenating of few 
sequences. In such cases the list can overallocate a space which will never be 
used. For example:

>>> import sys
>>> sys.getsizeof([1, 2, 3])
80
>>> sys.getsizeof([*(1, 2, 3)])
104

List display allocates a space for exactly 3 items. But a list created from a 
tuple allocates a space for 6 items.

Other example. Let extend a list by 10 items at a time.

size allocated
 10 17
 20 28
 30 39
 40 51
 50 51
 60 73
 70 73
 80 96
 90 96
100118

We need to reallocate an array after first four steps. 17 is too small for 20, 
28 is too small for 30, 39 is too small for 40. So overallocating does not 
help, it just spends a space.

My idea, that if we adds several items at a time and need to reallocate an 
array, we check if the overallocated size is enough for adding the same amount 
of items next time. If it is not enough, we do not overallocate.

The final algorithm is:

allocated = (size + (size >> 3) + 6) & ~3
if size - old_size > allocated - size:
allocated = (size + 3) & ~3

It will save a space if extend a list by many items few times.

--
components: Interpreter Core
messages: 353976
nosy: rhettinger, serhiy.storchaka, tim.peters
priority: normal
severity: normal
status: open
title: List overallocation strategy
type: resource usage
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



[issue38266] Revert bpo-37878: Make PyThreadState_DeleteCurrent() Internal

2019-10-04 Thread Wenzel Jakob


Wenzel Jakob  added the comment:

This is great -- thank you for handling this so quickly.

--

___
Python tracker 

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



[issue38328] Speed up the creation time of constant list literals.

2019-10-04 Thread Serhiy Storchaka


Serhiy Storchaka  added the comment:

Okay, but first I want to solve an issue with list overallocation.

--

___
Python tracker 

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



[issue26510] [argparse] Add required argument to add_subparsers

2019-10-04 Thread Adam Stewart


Change by Adam Stewart :


--
pull_requests: +16178
pull_request: https://github.com/python/cpython/pull/16588

___
Python tracker 

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



[issue38328] Speed up the creation time of constant list literals.

2019-10-04 Thread Brandt Bucher


Brandt Bucher  added the comment:

...unless you'd prefer that I add them to this PR. But I think it's a better 
idea to add and review them separately.

--

___
Python tracker 

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



[issue38348] Make python -m ast more configurable

2019-10-04 Thread Serhiy Storchaka


Serhiy Storchaka  added the comment:

Sorry, I do not understand you. typed_ast does not have such features as 
multiline dump() and CLI. What relation is this have with the --type-comments 
flag?

As for fitting tree into the terminal width, the current indentation is 3 
spaces. Changing it to 2 spaces will not save much horisontal space, and 
1-space indentation is not particularly readable.

I do not want to complicate this tiny feature. If you want more control on the 
output, you can write a small Python script which calls ast.dump() 
programmatically.

--

___
Python tracker 

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



[issue33714] module can set an exception in tp_clear

2019-10-04 Thread Ashley Whetter


Ashley Whetter  added the comment:

I've attached a reproduction case. Here's the setup.py that I used:

```
from distutils.core import Extension, setup

extension = Extension("breaky", ["breaky.c"])

setup(
name="tp_clear",
version="0.1.0",
ext_modules=[extension],
)
```

which I built and ran with:
```
python setup.py build_ext --inplace
python -c "import breaky, gc; a = breaky.Breaky(); a = 1"
```

--
nosy: +AWhetter
Added file: https://bugs.python.org/file48642/breaky.c

___
Python tracker 

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



[issue35173] Re-use already existing functionality to allow Python 2.7.x (both embedded and standalone) to locate the module path according to the shared library

2019-10-04 Thread Ali Rizvi-Santiago


Ali Rizvi-Santiago  added the comment:

Sure. It was for Python2 anyways.

-Ali

On Wed, Sep 25, 2019 at 8:00 PM STINNER Victor 
wrote:

>
> STINNER Victor  added the comment:
>
> Modules/getpath.c and PC/getpathp.c have been deeply reworked with the
> implementation of the PEP 587 in Python 3.8. Parameters which are already
> set (ex: Py_SetProgramName() or using the new PyConfig API) are no longer
> overriden. I added some tests on the "path configuration".
>
> The most reliable way to configure the path configuration is now to use
> the new initialization API using PyConfig.
> https://docs.python.org/dev/c-api/init_config.html
>
> --
> nosy: +vstinner
> resolution:  -> fixed
> stage:  -> resolved
> status: open -> closed
> versions: +Python 3.8, Python 3.9 -Python 2.7
>
> ___
> Python tracker 
> 
> ___
>

--

___
Python tracker 

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



[issue21084] IDLE can't deal with characters above the range (U+0000-U+FFFF)

2019-10-04 Thread Terry J. Reedy


Terry J. Reedy  added the comment:

As noted on #13153, files with astral chars can now be read without an 
exception, but the presence of astral chars messes up editing text that follows 
at least on the same line by misplacing the cursor.  I will open a new issue 
about replacing such with \U escapes.

--

___
Python tracker 

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



[issue38348] Make python -m ast more configurable

2019-10-04 Thread Ivan Levkivskyi


Change by Ivan Levkivskyi :


--
nosy: +levkivskyi

___
Python tracker 

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



[issue36698] Shell restart when error message contains non-BMP characters

2019-10-04 Thread Terry J. Reedy

Terry J. Reedy  added the comment:

As with #22742, the problem, without PR 16583, only occurs with *nix.  On 
Windows, the traceback ends with "Exception: �" and a prompt is printed.

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



[issue38368] Crash when subclassing ctypes.Union

2019-10-04 Thread Vinay Sajip


Vinay Sajip  added the comment:

> We should not segfault here.

Agreed, MAX_ELEMENTS was set to be an upper bound which shouldn't be hit. I'll 
investigate with OP's example data and see where the bug is.

--

___
Python tracker 

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



[issue34938] Fix mimetype.init() to account for from import

2019-10-04 Thread Brandt Bucher


Change by Brandt Bucher :


--
nosy: +brandtbucher

___
Python tracker 

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



[issue34938] Fix mimetype.init() to account for from import

2019-10-04 Thread Steve Dower


Steve Dower  added the comment:

Adding email team here, since you were pinged on the PR.

PR 16567 doesn't fix the `inited` member, which is considerably more difficult 
to do, unfortunately, but it does mean that it's out of sync with the values 
you hold. Arguably this is a better state to be in though.

Unfortunately, the "internal" data structures referred to in the docs[1] are 
all documented public API, which means we can't just ignore this issue :( We 
ought to at least update the docs to mention that `inited` won't be updated if 
you've `from ... import`ed it (which would normally be obvious, except that now 
some other values _will_ be updated).

Also, the `init` docs say that it will only be completely rebuilt when `files` 
is `None` (and specifically calls out passing an empty list as a way to avoid 
this happening). I'm pretty sure we don't respect this now.

All up, I think we have more work to do here to get the behaviour right. 
Alternatively, we can make changes in 3.9 to specify better usage (such as 
explicitly discouraging direct use of the dictionaries and adding more helper 
functions if necessary).

[1]: https://docs.python.org/3/library/mimetypes.html#mimetypes.init

--
nosy: +barry, maxking, r.david.murray, steve.dower
versions: +Python 3.9 -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



[issue38328] Speed up the creation time of constant list literals.

2019-10-04 Thread Brandt Bucher


Brandt Bucher  added the comment:

Yes, I was thinking about that (and BUILD_CONST_KEY_MAP as well). I'll open 
another PR with those as soon as this one is in.

--

___
Python tracker 

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



[issue38328] Speed up the creation time of constant list literals.

2019-10-04 Thread Serhiy Storchaka


Serhiy Storchaka  added the comment:

Great! I withdrew the original proposition in issue33325 because the part of 
the optimization was not so good as I expected. But this part is good.

$ ./python -m timeit "[$(seq -s, 10)]"
500 loops, best of 5: 75.5 nsec per loop
$ ./python -m timeit "[*($(seq -s, 10))]"
500 loops, best of 5: 57.2 nsec per loop

Would you consider to optimize also creating a set of constants?

$ ./python -m timeit "{$(seq -s, 10)}"
200 loops, best of 5: 186 nsec per loop
$ ./python -m timeit -s "a = frozenset(($(seq -s, 10)))"  "{*a}"
200 loops, best of 5: 116 nsec per loop

--
nosy: +serhiy.storchaka

___
Python tracker 

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



[issue22742] IDLE shows traceback when printing non-BMP character

2019-10-04 Thread Terry J. Reedy

Terry J. Reedy  added the comment:

Printing the unquoted escape representation rather than a replacement char is a 
bit strange and not what I expect from the python docs.  I could see it as a 
bug.  In any case, on Windows, it is the Python REPL that raises, but only for 
sys.stdout.

>>> import sys
>>> print('\ud800', file=sys.stderr)
\ud800
>>> print('\ud800', file=sys.stdout)
Traceback (most recent call last):
  File "", line 1, in 
UnicodeEncodeError: 'utf-8' codec can't encode character '\ud800' in position 
0: surrogates not allowed

whereas on Windows the surrogate is displayed as a box with diagonal lines ([X] 
compressed in one char) in both cases.  When copied and pasted into FireFox, 
the pasted surrogate shows as a square box containing mini D 8 0 0 chars.
>>> print('\ud800', file=sys.stdout)
�
>>> print('\ud800', file=sys.stderr)
�

I consider putting the undisplayable codepoint, rather than a replacement 
character, into the editor buffer (however tcl encodes it) so that IDLE can 
retrieve it without loss of information the proper thing for tk to do. IDLE can 
then potentially identify the character to the user.
===

An oddity though.  With

>>> import tkinter as tk
>>> r = tk.Tk()
>>> t = tk.Text(r)
>>> t.pack()
>>> t.insert('insert', 'a\ud800b')

the box is an empty square, not crossed.  But when I copy-paste 'a�b' into the 
font sample (Serhiy, making this editable was a great idea), it is crossed for 
every font I tried, even for Courier, which is what is being used in text t.

--
stage:  -> needs patch

___
Python tracker 

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



[issue38353] Cleanup the path configuration implementation code (getpath.c)

2019-10-04 Thread STINNER Victor


STINNER Victor  added the comment:


New changeset c02b41b1fb115c87693530ea6a480b2e15460424 by Victor Stinner in 
branch 'master':
bpo-38353: getpath.c: allocates strings on the heap (GH-16585)
https://github.com/python/cpython/commit/c02b41b1fb115c87693530ea6a480b2e15460424


--

___
Python tracker 

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



[issue38006] Crash in remove() weak reference callback of weakref.WeakValueDictionary at Python exit

2019-10-04 Thread Tim Peters


Tim Peters  added the comment:

BTW, the phrase "missing tp_traverse" is misleading.  If an object with a NULL 
tp_traverse appears in a gc generation, gc will blow up the next time that 
generation is collected.  That's always been so - gc doesn't check whether 
tp_traverse is NULL, it just calls it.  It's tp_clear that it checks, because 
that one is optional.

I don't recall any problem we've had with extensions implementing the gc 
protocol incorrectly or incompletely.  It's this issue's problem:  containers 
not participating in gc _at all_.

If we had a traditional mark-sweep collector, that would be massively 
catastrophic.  Miss a pointer and you can conclude a live object is actually 
trash, and tear it down while it's still in use.

Our problem is the opposite:  miss a pointer and we can conclude a trash object 
is actually live.  At the start, the worst that _could_ do is leak memory.  
It's the later introduction of time-to-die finalizers (weakref callbacks at 
first) that created the opportunity for segfaults:  the only 100% clearly safe 
way to run finalizers in cyclic trash is to force them to run _before_ anything 
at all is torn down by force (tp_clear).  But to run them in advance, we have 
to know the relevant objects _are_ trash.  Which we can't always know if 
containers don't always participate.

While Neil & I haven't thought of ways that can go wrong now beyond that a 
"surprise finalizer" may get run any number of times, that doesn't mean far 
worse things can't happen - just that they'll surprise us when they do :-)

--

___
Python tracker 

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



[issue38372] Undefined behavior when changing dict while iterating it

2019-10-04 Thread Beatris Boneva


Beatris Boneva  added the comment:

Now I see it is duplicate of https://bugs.python.org/issue19332. Closing it.

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



[issue38368] Crash when subclassing ctypes.Union

2019-10-04 Thread Steve Dower


Steve Dower  added the comment:

Given this limit can easily be hit by user code, I'd like to see it turned into 
a proper check with an exception (or a dynamic array) rather than just an 
assertion. We should not segfault here.

while (length > 0) {
actual_types[actual_type_index++] = >ffi_type_pointer;
assert(actual_type_index <= MAX_ELEMENTS);
length--;
}

--

___
Python tracker 

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



[issue38368] Crash when subclassing ctypes.Union

2019-10-04 Thread Steve Dower


Steve Dower  added the comment:

Increasing MAX_ELEMENTS fixes it, but I'm not sure what other impacts there are 
from doing that.

+Vinay who added the array handling that's hitting the limit.

--
nosy: +vinay.sajip
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



[issue16974] when "python -c command" does a traceback, it open the file ""

2019-10-04 Thread AWhetter


AWhetter  added the comment:

If we were to add a new attribute to indicate whether a file is real or not, 
there would need to be a way for users to indicate whether a file is real or 
not to functions such as `compile()` (there's lots more!) that take a filename. 
Without enforcing this being set and introducing backward incompatible changes, 
it would need a default value. To be backwards compatible we could default to 
True and the existing behaviour persists.

It's also worth mentioning that there's a few places (there might be more!) 
where Python already assumes that a file in angle brackets is not a real file:
* 
https://github.com/python/cpython/blob/abd7cd856ba326bd7574135c7d034e98492ab695/Lib/bdb.py#L45
* 
https://github.com/python/cpython/blob/abd7cd856ba326bd7574135c7d034e98492ab695/Lib/pdb.py#L694
* 
https://github.com/python/cpython/blob/abd7cd856ba326bd7574135c7d034e98492ab695/Lib/pickle.py#L324

Nothing major though and easily changeable so it's definitely possible but it 
would be a lot of work to make sure that everything is setting the new 
attribute properly.

Is there a preference on what the name of this attribute should be? Maybe 
`__is_real_file__`. It's clear but long.

--
nosy: +AWhetter

___
Python tracker 

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



[issue38368] Crash when subclassing ctypes.Union

2019-10-04 Thread Steve Dower


Steve Dower  added the comment:

I get this assertion in a debug build:

Assertion failed: actual_type_index <= MAX_ELEMENTS, file 
c:\projects\cpython\modules\_ctypes\stgdict.c, line 718

--

___
Python tracker 

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



[issue38372] Undefined behavior when changing dict while iterating it

2019-10-04 Thread Беатрис Бонева

New submission from Беатрис Бонева :

When changing a dict while iterating through it by removing one key and 
inserting other which is calculated based on the old one, the dict is changed 
unexpectedly.

The following function:

```
def test(d: dict): 
 for i in d: 
 d[i+1] = d.pop(i)
```

when called with input dict `{1: 'test'}` transforms the dict to:
- `{6: 'test'}` in Python3.7.4;
- `{8: 'test'}` in Python3.5.3 and Python2.7.

If I change the function to add 2 to the key ( `d[i+2] = d.pop(i)` ) and use 
the same input `{1: 'test'}` the dict is changed to:
- `{11: 'test'}` in Python3.7;
- `{9: 'test'}` in Python3.5.

Similar thing happens with strings:

```
def test(d: dict): 
 for i in d: 
 d[i+'x'] = d.pop(i)
```

When called with input dict `{'a': 'test'}` it transforms it to:
- `{'ax': 'test'}` in Python3.7.4;
- `{'axx': 'test'}` in Python3.5.3.

--
components: Library (Lib)
messages: 353954
nosy: Беатрис Бонева
priority: normal
severity: normal
status: open
title: Undefined behavior when changing dict while iterating it
type: behavior
versions: Python 2.7, Python 3.5, Python 3.6, Python 3.7

___
Python tracker 

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



[issue38368] Crash when subclassing ctypes.Union

2019-10-04 Thread Steve Dower


Steve Dower  added the comment:

Also crashes on Windows (x64 and x86), and on 3.7.5rc1, so this is likely in 
our code.

--
nosy: +ned.deily, steve.dower
priority: normal -> release blocker
stage:  -> test needed
versions: +Python 3.7

___
Python tracker 

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



[issue38249] Optimize out Py_UNREACHABLE in the release mode

2019-10-04 Thread Barry A. Warsaw


Barry A. Warsaw  added the comment:

+1 Serhiy.

--

___
Python tracker 

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



[issue37025] Misleading error message "Python failed to load the default activation context"

2019-10-04 Thread Steve Dower


Steve Dower  added the comment:

This doesn't apply since Python 3.5, as the HAVE_SXS preprocessor variable is 
not defined.

We should just delete this code entirely in 3.9, and patch the message in 2.7.

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



[issue38167] O_DIRECT read fails with 4K mmap buffer

2019-10-04 Thread Paul


Paul  added the comment:

> I agree with Josh. If you want to use O_DIRECT, use an unbuffered file object 
> and be sure to issue reads of the right size.

I do not believe an unbuffered file uses O_DIRECT.  This is why I use 
os.open(fpath, os.O_DIRECT).

> Also I'm curious: why are you using O_DIRECT, and furthermore, why are you 
> using it to read into mmap'ed memory?

I am testing a storage device and must use O_DIRECT to avoid the kernel's 
cache.  I am using mmap because it was the simplest way to get a page-aligned 
memory buffer, which is required for direct IO.

I believe that this is a bug regardless of the use of mmap, especially 
considering that this worked in Python 2.  I believe the fix I have sent out 
for review addresses it adequately.

--

___
Python tracker 

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



[issue38235] Docs of logging module says argument is named "lvl". TypeError.

2019-10-04 Thread AWhetter


Change by AWhetter :


--
pull_requests: +16177
pull_request: https://github.com/python/cpython/pull/16586

___
Python tracker 

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



[issue37878] Sub-Interpreters : Document PyThreadState_DeleteCurrent()

2019-10-04 Thread STINNER Victor


STINNER Victor  added the comment:

> "when we un-revert we should be sure to move PyThreadState_DeleteCurrent() 
> from Include/pystate.h to Include/cpython/pystate.h."

Ah, I didn't see this comment. If Eric endorses this change, I'm fine with it 
:-)

I close the issue.

If someone wants to modify PyThreadState_DeleteCurrent() to automatically call 
PyThreadState_Clear(), please open a new issue for that.

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



[issue38249] Optimize out Py_UNREACHABLE in the release mode

2019-10-04 Thread STINNER Victor


STINNER Victor  added the comment:

> Py_UNREACHABLE() is for situations which are *logically* impossible, not just 
> uncommon.

I suggest to clarify/enhance Py_UNREACHABLE() documentation to make it more 
explicit in that case.

--

___
Python tracker 

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



[issue38353] Cleanup the path configuration implementation code (getpath.c)

2019-10-04 Thread STINNER Victor


Change by STINNER Victor :


--
pull_requests: +16176
pull_request: https://github.com/python/cpython/pull/16585

___
Python tracker 

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



[issue38371] Tkinter: deprecate the split() method

2019-10-04 Thread Serhiy Storchaka


Change by Serhiy Storchaka :


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

___
Python tracker 

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



[issue38371] Tkinter: deprecate the split() method

2019-10-04 Thread Serhiy Storchaka


New submission from Serhiy Storchaka :

The tkapp.split() method has weird behavior. It splits a string recursively, so 
the type of items and the depth of nesting depends on spaces in string values. 
For example:

>>> import tkinter
>>> root = tkinter.Tcl()
>>> root.tk.split('Hi')
'Hi'
>>> root.tk.split('Hello "Good bye"')
('Hello', ('Good', 'bye'))

It may work as you meant in some cases (if items at the same level either all 
have spaces or all do not have spaces), but return unexpected  result for 
untested cases. It is more robust to use the tkapp.splitlist() method, which 
split exactly one level and always returns a tuple of strings. It can be used 
recursively if you need nested lists.

>>> root.tk.splitlist('Hi')
('Hi',)
>>> root.tk.splitlist('Hello "Good bye"')
('Hello', 'Good bye')
>>> [root.tk.splitlist(x) for x in root.tk.splitlist('Hello "Good bye"')]
[('Hello',), ('Good', 'bye')]

--
components: Tkinter
messages: 353948
nosy: serhiy.storchaka
priority: normal
severity: normal
status: open
title: Tkinter: deprecate the split() method
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



[issue36698] Shell restart when error message contains non-BMP characters

2019-10-04 Thread Serhiy Storchaka


Change by Serhiy Storchaka :


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

___
Python tracker 

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



[issue38227] Setting a signal handler gets multiprocessing.Pool stuck

2019-10-04 Thread Ionel Cristian Mărieș

Ionel Cristian Mărieș  added the comment:

atexit proved time and time again to be unreliable, not really an option. Not 
all programs shutdown nicely enough for atexit. 

Should I tell users "use forkserver on 3.8 because broken stuff"?

--

___
Python tracker 

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



[issue38353] Cleanup the path configuration implementation code (getpath.c)

2019-10-04 Thread STINNER Victor


STINNER Victor  added the comment:


New changeset abd7cd856ba326bd7574135c7d034e98492ab695 by Victor Stinner in 
branch 'master':
bpo-38353: getpath.c uses dynamically allocated strings (GH-16582)
https://github.com/python/cpython/commit/abd7cd856ba326bd7574135c7d034e98492ab695


--

___
Python tracker 

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



[issue13153] IDLE 3.x on Windows exits when pasting non-BMP unicode

2019-10-04 Thread Tal Einat


Tal Einat  added the comment:

Indeed, Serhiy, you've done an amazing job with this change and it will greatly 
benefit many people.

--

___
Python tracker 

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



[issue38346] Wrong behavior when using `assert_called_with` with mutable object

2019-10-04 Thread Vedran Čačić

Vedran Čačić  added the comment:

> when `b` has same values of `a` before it is mutated.

There might be no such object. Or it might exist, but you still wouldn't want 
it.

Consider the case when a is a coroutine that has just started (a=coro()). You 
call f with a, and then advance a to the next yielding point. Is f called with 
a? You say no. Ok. But imagine you call coro again, and call that b (b=coro()). 
Is f called with b? Do you really want to say yes to that?

--

___
Python tracker 

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



[issue38266] Revert bpo-37878: Make PyThreadState_DeleteCurrent() Internal

2019-10-04 Thread Ned Deily


Change by Ned Deily :


--
keywords:  -3.8regression
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



[issue38167] O_DIRECT read fails with 4K mmap buffer

2019-10-04 Thread Antoine Pitrou


Antoine Pitrou  added the comment:

Also I'm curious: why are you using O_DIRECT, and furthermore, why are you 
using it to read into mmap'ed memory?

--

___
Python tracker 

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



[issue38167] O_DIRECT read fails with 4K mmap buffer

2019-10-04 Thread Antoine Pitrou


Antoine Pitrou  added the comment:

I agree with Josh. If you want to use O_DIRECT, use an unbuffered file object 
and be sure to issue reads of the right size.

--
nosy: +pitrou

___
Python tracker 

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



[issue38249] Optimize out Py_UNREACHABLE in the release mode

2019-10-04 Thread Antoine Pitrou


Antoine Pitrou  added the comment:

I agree with Serhiy.  If you hit a rare situation that you don't want to 
handle, use Py_FatalError(), not Py_UNREACHABLE().

Py_UNREACHABLE() is for situations which are *logically* impossible, not just 
uncommon.

--
nosy: +pitrou

___
Python tracker 

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



[issue38284] signal.sigwait* do not intercept certain signals

2019-10-04 Thread Antoine Pitrou


Antoine Pitrou  added the comment:

Closing as not a Python bug.

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



[issue38284] signal.sigwait* do not intercept certain signals

2019-10-04 Thread Antoine Pitrou

Antoine Pitrou  added the comment:

Python just exposes thin wrappers around the underlying libc calls, so you have 
to understand how those work.

On Linux, the sigwaitinfo() man page says:

NOTES
   In normal usage, the calling program blocks the signals  in
   set via a prior call to sigprocmask(2) (so that the default
   disposition for these signals does not occur if they become
   pending  between  successive calls to sigwaitinfo() or sig‐
   timedwait()) and does not establish handlers for these sig‐
   nals.

So you need to block the given signal with pthread_sigmask() before waiting on 
it.  For example:

>>> import signal
>>> signal.pthread_sigmask(signal.SIG_BLOCK, [signal.SIGHUP])
set()
>>> signal.sigwait([signal.SIGHUP])


--
nosy: +pitrou

___
Python tracker 

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



[issue38227] Setting a signal handler gets multiprocessing.Pool stuck

2019-10-04 Thread Antoine Pitrou


Antoine Pitrou  added the comment:

Several things here:

- you can perform critical cleanup with the atexit module; using a signal 
handler for that is extremely low-level and error-prone

- you can also try to switch to the "forkserver" method of multiprocessing, 
perhaps that will fix your issue

--
nosy: +pitrou

___
Python tracker 

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



[issue38353] Cleanup the path configuration implementation code (getpath.c)

2019-10-04 Thread STINNER Victor


Change by STINNER Victor :


--
pull_requests: +16173
pull_request: https://github.com/python/cpython/pull/16582

___
Python tracker 

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



[issue13153] IDLE 3.x on Windows exits when pasting non-BMP unicode

2019-10-04 Thread STINNER Victor


STINNER Victor  added the comment:

> bpo-13153: Use OS native encoding for converting between Python and Tcl. 
> (GH-16545)

WOW. That's huge. The issue with non-BMP characters has been fixed? Finally? 
The issue was haunting the bug tracker for at least 8 years!!!

--
nosy: +vstinner

___
Python tracker 

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



[issue37878] Sub-Interpreters : Document PyThreadState_DeleteCurrent()

2019-10-04 Thread Joannah Nanjekye


Joannah Nanjekye  added the comment:

> Oh, I didn't notice something in the review: the revert moved 
> >PyThreadState_DeleteCurrent() definition from Include/pystate.h to 
> >Include/cpython/pystate.h. Previously, it was defined in > 
> Include/pystate.h, see the commit removing it:

I made this change as it was requested by Eric snow in issue38266.

"when we un-revert we should be sure to move PyThreadState_DeleteCurrent() from 
Include/pystate.h to Include/cpython/pystate.h."

--

___
Python tracker 

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



[issue38370] An array as attribute of an object is shared between instances

2019-10-04 Thread plugin nieulq


plugin nieulq  added the comment:

Ah ... Ok. My bad.
Thank you for pointing this out to me, Mark.
This is definitely a strange behavior.

--
nosy:  -mark.dickinson
resolution: not a bug -> 

___
Python tracker 

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



[issue30019] IDLE freezes when opening a file with astral characters

2019-10-04 Thread Serhiy Storchaka


Serhiy Storchaka  added the comment:

This looks like a duplicate of issue21084. Fixed by PR 16545 (see issue13153). 
It is virtually Eryk's workaround, but at the Tkinter level.

--
resolution:  -> fixed
stage: needs patch -> 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



[issue21084] IDLE can't deal with characters above the range (U+0000-U+FFFF)

2019-10-04 Thread Serhiy Storchaka


Serhiy Storchaka  added the comment:

Fixed by PR 16545 (see issue13153).

--
resolution:  -> fixed
stage: needs patch -> 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



[issue36698] Shell restart when error message contains non-BMP characters

2019-10-04 Thread Serhiy Storchaka

Serhiy Storchaka  added the comment:

Mostly fixed by PR 16545 (see issue13153). The original example is now passed.

>>> raise Exception('\U0001f603')
Traceback (most recent call last):
  File "", line 1, in 
raise Exception('\U0001f603')
Exception: 
>>> 

But you can still cause a restart of the shell by using surrogate characters:

>>> raise Exception('\ud800')
Traceback (most recent call last):
  File "", line 1, in 
raise Exception('\ud800')
Traceback (most recent call last):
  File "", line 1, in 
raise Exception('\ud800')

 RESTART: Shell 
>>>

--
nosy: +serhiy.storchaka

___
Python tracker 

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



[issue22742] IDLE shows traceback when printing non-BMP character

2019-10-04 Thread Serhiy Storchaka


Serhiy Storchaka  added the comment:

It was fixed for all valid Unicode characters, you can still get an error when 
print a surrogate character to the stderr on Linux:

>>> import sys
>>> print('\ud800', file=sys.stderr)
Traceback (most recent call last):
  File "", line 1, in 
print('\ud800', file=sys.stderr)
UnicodeEncodeError: 'utf-8' codec can't encode character '\ud800' in position 
0: surrogates not allowed

In the Python REPL you get an escaped sequence.

>>> import sys
>>> print('\ud800', file=sys.stderr)
\ud800

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

___
Python tracker 

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



[issue38370] An array as attribute of an object is shared between instances

2019-10-04 Thread Mark Dickinson


Mark Dickinson  added the comment:

This is a common gotcha. Take a look at: 
https://docs.python.org/3/faq/programming.html#why-are-default-values-shared-between-objects

--
nosy: +mark.dickinson
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



[issue38370] An array as attribute of an object is shared between instances

2019-10-04 Thread plugin nieulq


plugin nieulq  added the comment:

I am using this version on Windows :
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit 
(AMD64)].
When an attribute of an object is an array, the array is shared between 
instances as shown in my example.

class AClass(object):
def __init__(self, val=[]):
self.contents = val

def add_content(self, newcontent):
self.contents.append(newcontent)
return self

def print(self):
for val in self.contents:
print(str(val))


if __name__ == '__main__':
sc = AClass()
sc = sc.add_content("Value1").add_content("Value2")

sb = AClass()
sb = sb.add_content("Value3").add_content("Value4")

sc.print()
print("")
sb.print()


When executed, the output generated by the script is:
Value1
Value2
Value3
Value4

Value1
Value2
Value3
Value4

It should be :

Value1
Value2

Value3
Value4

--

___
Python tracker 

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



[issue38370] An array as attribute of an object is shared between instances

2019-10-04 Thread plugin nieulq


New submission from plugin nieulq :

I am using this version on Windows :
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit 
(AMD64)].
When an attribute of an object is an array, the array is shared between 
instances as shown in my example.
When executed, the output generated by the script is:
Value1
Value2
Value3
Value4

Value1
Value2
Value3
Value4

It should be :

Value1
Value2

Value3
Value4

--
components: Windows
messages: 353928
nosy: paul.moore, plugin nieulq, steve.dower, tim.golden, zach.ware
priority: normal
severity: normal
status: open
title: An array as attribute of an object is shared between instances
type: behavior
versions: Python 3.7

___
Python tracker 

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



[issue22742] IDLE shows traceback when printing non-BMP character

2019-10-04 Thread Serhiy Storchaka


Serhiy Storchaka  added the comment:

Fixed by PR 16545 (see issue13153).

--
nosy: +serhiy.storchaka
resolution:  -> fixed
stage: needs patch -> 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



[issue37878] Sub-Interpreters : Document PyThreadState_DeleteCurrent()

2019-10-04 Thread STINNER Victor


STINNER Victor  added the comment:

To be clear: this issue only impacts Python 3.8. The function was only removed 
from the master branch. It was still in the 3.8 branch.

--

___
Python tracker 

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



[issue37878] Sub-Interpreters : Document PyThreadState_DeleteCurrent()

2019-10-04 Thread STINNER Victor


STINNER Victor  added the comment:

> bpo-38266: Revert bpo-37878: Make PyThreadState_DeleteCurrent() Internal 
> (GH-16558)

Oh, I didn't notice something in the review: the revert moved 
PyThreadState_DeleteCurrent() definition from Include/pystate.h to 
Include/cpython/pystate.h. Previously, it was defined in Include/pystate.h, see 
the commit removing it:
https://github.com/python/cpython/commit/2bc43cdc015eda4f1a651bb2b308a17a83c38e14

Joannah: can you please move the definition back to Include/pystate.h, at the 
same place it was before the removal, please?

The revert excluded PyThreadState_DeleteCurrent() from the stable API 
(Py_LIMITED_API).

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



[issue13153] IDLE 3.x on Windows exits when pasting non-BMP unicode

2019-10-04 Thread Serhiy Storchaka


Change by Serhiy Storchaka :


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



[issue38266] Revert bpo-37878: Make PyThreadState_DeleteCurrent() Internal

2019-10-04 Thread STINNER Victor


STINNER Victor  added the comment:

> Since this sounds like a regression being introduced by 3.8.0, should the 
> reversion be included in 3.8.0 final or can it wait for 3.8.1?

Oh, in fact, the change was only made in the master branch: after the 3.8 
branch was created. The 3.8 branch still contains PyThreadState_DeleteCurrent() 
;-) There is no regression in 3.8, only in master, and the regression in master 
has been fixed.

--
priority: release blocker -> 
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



[issue38266] Revert bpo-37878: Make PyThreadState_DeleteCurrent() Internal

2019-10-04 Thread STINNER Victor


STINNER Victor  added the comment:


New changeset 8855e47d09d4db1206c65b24efc8ad0df585ac46 by Victor Stinner 
(Joannah Nanjekye) in branch 'master':
bpo-38266: Revert bpo-37878: Make PyThreadState_DeleteCurrent() Internal 
(GH-16558)
https://github.com/python/cpython/commit/8855e47d09d4db1206c65b24efc8ad0df585ac46


--

___
Python tracker 

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



[issue37878] Sub-Interpreters : Document PyThreadState_DeleteCurrent()

2019-10-04 Thread STINNER Victor


STINNER Victor  added the comment:


New changeset 8855e47d09d4db1206c65b24efc8ad0df585ac46 by Victor Stinner 
(Joannah Nanjekye) in branch 'master':
bpo-38266: Revert bpo-37878: Make PyThreadState_DeleteCurrent() Internal 
(GH-16558)
https://github.com/python/cpython/commit/8855e47d09d4db1206c65b24efc8ad0df585ac46


--

___
Python tracker 

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



[issue36632] test_multiprocessing_forkserver: test_rapid_restart() leaked a dangling process on AMD64 FreeBSD 10-STABLE Non-Debug 3.x

2019-10-04 Thread STINNER Victor


STINNER Victor  added the comment:

Warning on AMD64 Debian root 3.x:
https://buildbot.python.org/all/#/builders/27/builds/3853

test_enable_logging (test.test_multiprocessing_spawn.WithProcessesTestLogging) 
... ok
test_level (test.test_multiprocessing_spawn.WithProcessesTestLogging) ... ok
test_rapid_restart 
(test.test_multiprocessing_spawn.WithProcessesTestManagerRestart) ... ok
Warning -- Dangling processes: {}
test_access 
(test.test_multiprocessing_spawn.WithProcessesTestPicklingConnections) ... ok

--

___
Python tracker 

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



[issue38366] dataclasses: generate the _hash_action table from the if-else tree

2019-10-04 Thread Eric V. Smith


Eric V. Smith  added the comment:

Thank you for your contribution, @iomintz, but I'm not going to accept this 
change. I don't think it improves the clarity of the code. And I realize this 
is wholly a subjective decision, and others may disagree. But to me, looking at 
the table it's clear that each case is handled correctly, while looking through 
the code I'd need to reason about it for each case.

--
resolution:  -> rejected
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



[issue13153] IDLE 3.x on Windows exits when pasting non-BMP unicode

2019-10-04 Thread miss-islington


miss-islington  added the comment:


New changeset 6c3fbbc177f5e1867ab09a315dbf58554a80accd by Miss Islington (bot) 
in branch '3.7':
bpo-13153: Use OS native encoding for converting between Python and Tcl. 
(GH-16545)
https://github.com/python/cpython/commit/6c3fbbc177f5e1867ab09a315dbf58554a80accd


--
nosy: +miss-islington

___
Python tracker 

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



[issue13153] IDLE 3.x on Windows exits when pasting non-BMP unicode

2019-10-04 Thread miss-islington


miss-islington  added the comment:


New changeset dc191245d8f63f5ab41afff0468b7463a07e7b00 by Miss Islington (bot) 
in branch '3.8':
bpo-13153: Use OS native encoding for converting between Python and Tcl. 
(GH-16545)
https://github.com/python/cpython/commit/dc191245d8f63f5ab41afff0468b7463a07e7b00


--

___
Python tracker 

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



[issue38352] In typing docs, note explicit import needed for IO and Pattern/Match

2019-10-04 Thread Ivan Levkivskyi


Ivan Levkivskyi  added the comment:

> So, my request is: In the sections for the IO/TextIO/BinaryIO and 
> Pattern/Match classes, include text warning the user that these types are not 
> imported when you do `from typing import *`.

I don't think this should really be a warning, probably just a note, but 
otherwise I totally agree. Would you like to make a PR?

--

___
Python tracker 

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



[issue13153] IDLE 3.x on Windows exits when pasting non-BMP unicode

2019-10-04 Thread miss-islington


Change by miss-islington :


--
pull_requests: +16171
pull_request: https://github.com/python/cpython/pull/16580

___
Python tracker 

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



[issue13153] IDLE 3.x on Windows exits when pasting non-BMP unicode

2019-10-04 Thread miss-islington


Change by miss-islington :


--
pull_requests: +16172
pull_request: https://github.com/python/cpython/pull/16581

___
Python tracker 

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



[issue13153] IDLE 3.x on Windows exits when pasting non-BMP unicode

2019-10-04 Thread Serhiy Storchaka


Serhiy Storchaka  added the comment:


New changeset 06cb94bc8419b9a24df6b0d724fcd8e40c6971d6 by Serhiy Storchaka in 
branch 'master':
bpo-13153: Use OS native encoding for converting between Python and Tcl. 
(GH-16545)
https://github.com/python/cpython/commit/06cb94bc8419b9a24df6b0d724fcd8e40c6971d6


--

___
Python tracker 

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



[issue38369] Python 3.7.4 venv command does not install pip

2019-10-04 Thread Paul Moore


Paul Moore  added the comment:

Sigh. Never mind, this appears to be because virtualenv uses its own hacked 
copy of site.py which is missing a lot of the venv support code.

I'll report this over on virtualenv.

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



[issue37025] Misleading error message "Python failed to load the default activation context"

2019-10-04 Thread Zackery Spytz


Zackery Spytz  added the comment:

Thank you for the report. I've created a pull request to fix this issue.

--
nosy: +ZackerySpytz
versions: +Python 2.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



[issue37025] Misleading error message "Python failed to load the default activation context"

2019-10-04 Thread Zackery Spytz


Change by Zackery Spytz :


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

___
Python tracker 

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



[issue38369] Python 3.7.4 venv command does not install pip

2019-10-04 Thread Paul Moore


Paul Moore  added the comment:

Further update - this appears to also happen on Ubuntu (at least the version 
available through the Windows Linux subsystem), so it's not a Windows-specific 
issue.

--
assignee: steve.dower -> 

___
Python tracker 

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



[issue38369] Python 3.7.4 venv command does not install pip

2019-10-04 Thread Paul Moore


Paul Moore  added the comment:

This appears to be somehow caused by running Python 3.7.4 from an active 
virtualenv (which I'd forgotten I had active when I did the test).

Regardless, I'd have expected that the command would either correctly create a 
venv containing pip, or fail to create the venv at all. Creating an incomplete 
venv is extremely confusing for the user, if nothing else.

It looks like this is *not* a regression - it's been like this since 3.6.8 at 
least.

Actually, the created venv looks pretty broken to me - it has the *parent* 
environment in `sys.path`, but does not have its *own* environment there:

>.\ve-368a\Scripts\python.exe
Python 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit 
(AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', 'C:\\Work\\Scratch\\vv\\ve-368a\\Scripts\\python36.zip', 
'C:\\Users\\UK03306\\.virtualenvs\\f1980c81dac32d4\\DLLs', 
'C:\\Users\\UK03306\\.virtualenvs\\f1980c81dac32d4\\lib', 
'C:\\Users\\UK03306\\.virtualenvs\\f1980c81dac32d4\\Scripts', 
'C:\\Utils\\PythonVersions\\Python-3.6.8\\Lib', 
'C:\\Utils\\PythonVersions\\Python-3.6.8\\DLLs', 
'C:\\Users\\UK03306\\.virtualenvs\\f1980c81dac32d4', 
'C:\\Users\\UK03306\\.virtualenvs\\f1980c81dac32d4\\lib\\site-packages']

Note the lack of ve-368a directories, and the presence of a lot of directories 
from .virtualenvs (the parent environment).

--

___
Python tracker 

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



[issue38369] Python 3.7.4 venv command does not install pip

2019-10-04 Thread Paul Moore


New submission from Paul Moore :

The venv module with Python 3.4 on Windows doesn't install pip - even though 
the --without-pip flag is not specified. This appears to be a regression since 
pip is installed when using 3.7:

>C:\Utils\PythonVersions\Python-3.7.3\python.exe -m venv ve-373
>dir .\ve-373\Scripts\pip.exe


Directory: C:\Work\Scratch\vv\ve-373\Scripts


ModeLastWriteTime Length Name
- -- 
-a   04/10/2019 10:08 102765 pip.exe


>py -m venv ve-374
>dir .\ve-374\Scripts\pip.exe
dir : Cannot find path 'C:\Work\Scratch\vv\ve-374\Scripts\pip.exe' because it 
does not exist.
At line:1 char:1
+ dir .\ve-374\Scripts\pip.exe
+ 
+ CategoryInfo  : ObjectNotFound: 
(C:\Work\Scratch...Scripts\pip.exe:String) [Get-ChildItem], 
ItemNotFoundException
+ FullyQualifiedErrorId : 
PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
>py -V
Python 3.7.4

--
assignee: steve.dower
components: Library (Lib)
messages: 353911
nosy: paul.moore, steve.dower
priority: normal
severity: normal
status: open
title: Python 3.7.4 venv command does not install pip
type: behavior
versions: Python 3.7

___
Python tracker 

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



  1   2   >