Change by Josh Rosenberg :
--
Removed message: https://bugs.python.org/msg416876
___
Python tracker
<https://bugs.python.org/issue39812>
___
___
Python-bug
Josh Rosenberg added the comment:
I think this is causing a regression for code that explicitly desires the
ThreadPoolExecutor to go away abruptly when all other non-daemon threads
complete (by choosing not to use a with statement, and if shutdown is called,
calling it with wait=False, or
Josh Rosenberg added the comment:
Carlos: This has nothing to do with reloading (as Alex's repro shows, no reload
calls are made).
super() *should* behave the same as super(CLASS_DEFINED_IN, self), and it looks
like the outer function is doing half of what it must do to make no-arg
Josh Rosenberg added the comment:
Note: attrgetter could easily be made faster by migrating it to use vectorcall.
--
nosy: +josh.r
___
Python tracker
<https://bugs.python.org/issue46
Josh Rosenberg added the comment:
Agreed, this is not a bug. The behavior of the bool constructor is not a parser
(unlike, say, int), it's a truthiness detector. Non-empty strings are always
truthy, by design, so both "True" and "False" are truthy strings. There&
Josh Rosenberg added the comment:
This is a documented feature of locals() (it's definitionally impossible to
auto-vivify *real* locals, because real locals are statically assigned to
specific indices in a fixed size array at function compile time, and the
locals() function is return
Josh Rosenberg added the comment:
You're right that in non-dataclass scenarios, you'd just use __slots__.
The slots=True thing was necessary for any case where any of the dataclass's
attributes have default values (my_int: int = 0), or are defined with fields
(my_lis
Josh Rosenberg added the comment:
When I define this with the new-in-3.10 slots=True argument to dataclass rather
than manually defining __slots__ it works just fine. Looks like the pickle
format changes rather dramatically to accommodate it.
>>> @dataclass(frozen=True, s
Josh Rosenberg added the comment:
Why not "lambda parameters cannot be parenthesized" (optionally "lambda
function")? def-ed function parameters are parenthesized, so just saying
"Function parameters cannot be parenthesized" seems very we
Josh Rosenberg added the comment:
On the subject of sleep-deprived and/or sloppy, just realized:
return self.__getitem__(len(self) + idx)
should really just be:
idx += len(self)
no need to recurse.
--
___
Python tracker
<ht
Josh Rosenberg added the comment:
"We'll definitely want to make sure that we're careful about bad indices ...
since it would be easy to get weird behavior where too-large negative indexes
start 'wrapping around'"
When I noticed the problem, I originally thought
Josh Rosenberg added the comment:
Hmm... And there's one other issue (that wouldn't affect people until they
actually start worrying about memory overhead). Right now, if you want to
determine the overhead of an instance, the options are:
1. Has __dict__: sys.getsizeof(obj) + sys
Josh Rosenberg added the comment:
Hmm... Key-sharing dictionaries were accepted largely without question because
they didn't harm code that broke them (said code gained nothing, but lost
nothing either), and provided a significant benefit. Specifically:
1. They imposed no penalty on
Josh Rosenberg added the comment:
Negative indexing is broken for absolute paths, see #45414.
--
nosy: +josh.r
___
Python tracker
<https://bugs.python.org/issue21
New submission from Josh Rosenberg :
At least on PosixPath (not currently able to try on Windows to check
WindowsPath, but from a quick code check I think it'll behave the same way),
the negative indexing added in #21041 is implemented incorrectly for absolute
paths. Passing either -1
Josh Rosenberg added the comment:
Aaron: Your understanding of how LEGB works in Python is a little off.
Locals are locals for the *entire* scope of the function, bound or unbound;
deleting them means they hold nothing (they're unbound) but del can't actually
stop them from be
Josh Rosenberg added the comment:
This has nothing to do with properties, it's 100% about using augmented
assignment with numpy arrays and mixed types. An equivalent reproducer is:
a = np.array([1,2,3]) # Implicitly of dtype np.int64
a += 0.5 # Throws the same error, no prope
Josh Rosenberg added the comment:
Seems like an equally reasonable solution would be to make class's with
__trunc__ but not __int__ automatically generate a __int__ in terms of
__trunc__ (similar to __str__ using __repr__ when the latter is defined but not
the former). The inconsisten
Josh Rosenberg added the comment:
Andrei: If designed appropriately, a weakref callback attached to the actual
object would delete the associated ID from the dictionary when the object was
being deleted to avoid that problem. That's basically how WeakKeyDictionary
works already; it do
Josh Rosenberg added the comment:
I just visited the link, and it's now *mostly* English, but with random bits of
Korean in it (mostly in links and section headers).
The first warning block for instance begins:
경고: The parser module is deprecated...
Then a few paragraphs later I
Josh Rosenberg added the comment:
The description is nonsensical as is; not sure the patch goes far enough.
C-style strings are *defined* to end at the NUL terminator; if it really needs
a NUL after the int, saying it "points to the first character which follows the
representation o
Josh Rosenberg added the comment:
Andrei: The size of an instance of Semaphore is 48 bytes + 104 more bytes for
the __dict__ containing its three attributes (ignoring the cost of the
attributes themselves). A slotted class with three attributes only needs 56
bytes of overhead per-instance
Josh Rosenberg added the comment:
See the docs for the title method on what they mean by "titlecased"; "a" is
self-evidently not titlecased.
https://docs.python.org/3/library/stdtypes.html#str.title
--
___
Python tracker
<
Josh Rosenberg added the comment:
"Cased": Characters which are either lowercase or uppercase (they have some
other equivalent form in a different case)
"Uncased": Characters which are neither uppercase nor lowercase.
Do you have a suggested alternate wording?
Josh Rosenberg added the comment:
__deepcopy__ is required to take a second argument by the rules of the copy
module; the second argument is supposed to be a memo dictionary, but there's no
reason to use it for array.array (it can't contain Python objects, and you only
us
New submission from Josh Rosenberg :
At present, set_intersection (the C name for set.intersection) optimizes for
pairs of sets by iterating the smallest set and only adding entries found in
the larger, meaning work is proportionate to the smallest input.
But when the other input isn't
Josh Rosenberg added the comment:
Agreed, stack is a PyObject**, so adding an integer (pto_nargs) to the pointer
(stack) is implicitly by multiples of sizeof(PyObject*). This is how pointer
arithmetic works in all versions of C I'm aware of. The code is correct.
--
nosy: +j
Josh Rosenberg added the comment:
All of the compression modules (gzip, lzma) have this behavior, not just bz2;
it's consistent in that sense. Changing it now, after literally decades with
the old behavior, would needlessly break existing programs. As you say, it's
documented cl
Change by Josh Rosenberg :
--
resolution: -> not a bug
stage: -> resolved
status: open -> closed
___
Python tracker
<https://bugs.python.or
Josh Rosenberg added the comment:
The cause is in dict_merge (see here:
https://github.com/python/cpython/blob/master/Objects/dictobject.c ); it has a
fast path for when the object being merged in (which is what the dict
constructor does; it makes an empty dict, then merges the provided
Josh Rosenberg added the comment:
Making literally every await equivalent to:
await asyncio.sleep(0)
followed by the actual await (which is effectively what you're proposing when
you expect all await to be preemptible) means adding non-trivial overhead to
all async operations (async
Josh Rosenberg added the comment:
Does this need specific documentation? bytearray itself is documented with:
> As bytearray objects are mutable, they support the mutable sequence
> operations in addition to the common bytes and bytearray operations described
> in Bytes and
Josh Rosenberg added the comment:
This is a problem with the docstring. The actual docs for it are a bit more
clear, https://docs.python.org/3/library/filecmp.html#filecmp.cmp :
"If shallow is true, files with identical os.stat() signatures are taken to be
equal. Otherwise, the conten
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'
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
Josh Rosenberg added the comment:
As Serhiy says, the glossary term for an iterable is not the same as the
documentation for typing.Iterable (which at this point is largely defined in
terms of collections.abc.Iterable). True, collections.abc.Iterable does not
detect classes that iterate via
Josh Rosenberg added the comment:
This is a pessimization given the current implementation of str.join; it calls
PySequence_Fast as the very first step, which is effectively free for a tuple
or list input (just reference count manipulation), but must convert a generator
expression to a list
Change by Josh Rosenberg :
--
resolution: -> not a bug
stage: -> resolved
status: open -> closed
___
Python tracker
<https://bugs.python.or
Josh Rosenberg added the comment:
Pingback from #42033. Proper fix for that issue likely involves moving the work
for copying kwargs into PyObject_Call, which would fix this bug by side-effect.
--
nosy: +josh.r
___
Python tracker
<ht
Josh Rosenberg added the comment:
Even if making a copy is necessary when the underlying function receives the
dict "raw", preemptively performing the copy (before knowing if the function
being called is a Vectorcall function) means that when it's a Vectorcall
function
Josh Rosenberg added the comment:
If you're annoyed by having to use two lines, one to copy, one to call the
mutating method, you can use the walrus operator:
(y := x.copy()).some_method()
or:
(y := deepcopy(x)).some_method()
Does that cover your use case?
For the list case,
Josh Rosenberg added the comment:
A rough description is not sufficient. If you have code that reproduces the
problem, post the reproducer so we can check, but odds are you've got a bug in
your code.
--
nosy: +josh.r
status: open ->
Josh Rosenberg added the comment:
If this is going to be closed as rejected, I think it still needs some
improvement to the documentation. Right now, the docs for abstractproperty
(deprecated in favor of combining property and abstractmethod) state:
"If only some components are abs
Josh Rosenberg added the comment:
Looks like someone tried to run python inside an interactive Python shell,
rather than the command line. I'm moving to pending and will eventually close
unless they add a repro for some actual bug.
--
nosy: +josh.r
status: open ->
Josh Rosenberg added the comment:
Yep, Mark Shannon's solution of contextual hashing is what I was trying
(without success) when my last computer died (without backing up work offsite,
oops) and I gave up on this for a while. And Batuhan Taskaya's note about
compiler dictionari
Change by Josh Rosenberg :
--
resolution: -> not a bug
stage: -> resolved
status: open -> closed
___
Python tracker
<https://bugs.python.or
Josh Rosenberg added the comment:
There is an open issue for this already, under #11107 (a reopen of the closed
#2268, where the reopen was justified due to Python 3 making slice objects more
common), just so you know.
I made a stab at this a while ago and gave up due to the problems with
Josh Rosenberg added the comment:
For those who find this in the future, the simplest workaround for the:
for line in sys.stdin:
issue on Python 2 is to replace it with:
for line in iter(sys.stdin.readline, ''):
The problem is caused by the way file.__next__'s bufferi
Josh Rosenberg added the comment:
Is the plan to allow an argument to auto-generate __slots__, or would this
require repeating the names once in __slots__, and once for annotations and the
like?
--
___
Python tracker
<https://bugs.python.
Change by Josh Rosenberg :
--
nosy: +josh.r
___
Python tracker
<https://bugs.python.org/issue42269>
___
___
Python-bugs-list mailing list
Unsubscribe:
Change by Josh Rosenberg :
--
resolution: -> not a bug
stage: -> resolved
status: open -> closed
___
Python tracker
<https://bugs.python.or
Change by Josh Rosenberg :
--
nosy: +josh.r
___
Python tracker
<https://bugs.python.org/issue42033>
___
___
Python-bugs-list mailing list
Unsubscribe:
Change by Josh Rosenberg :
--
type: performance -> behavior
___
Python tracker
<https://bugs.python.org/issue41972>
___
___
Python-bugs-list mailing list
Un
Josh Rosenberg added the comment:
Can reproduce on Alpine Linux, with CPython 3.8.2 (running under WSLv2), so
it's not just you. CPU usage is high; seems like it must be stuck in an
infinite loop.
--
nosy: +josh.r
___
Python tracker
&
Josh Rosenberg added the comment:
It's not textwrap that's doing it, which is why the error is so unhelpful; the
input is assumed to be a str, and the translate method is called on it with a
dict argument, which is valid for str.translate, but not for bytes.translate.
You
Josh Rosenberg added the comment:
Yes, list comprehensions having their own local scope was a change from Py2 to
Py3. Python 2 did not do this for list comps initially, and it was left that
way during the 2.x timeframe due to back compat constraints, but 2.x did it
from the start for
Josh Rosenberg added the comment:
3.8.2 (on Alpine Linux under WSL) produces '0020-10-05', just like your 3.6
example. Not seeing anything obvious in commit history that would break it for
3.7. That said, 3.7 is in security fix only mode at this point (see
https://devguide.
Josh Rosenberg added the comment:
The problem is a lot simpler than you're making it:
1. You submit a time.sleep(30) task. This begins running immediately
2. You try to submit another task, but a NameError is raised, bypassing the
rest of the code (you never call as_completed, wi
Change by Josh Rosenberg :
--
resolution: -> not a bug
stage: -> resolved
status: pending -> closed
___
Python tracker
<https://bugs.python.or
Josh Rosenberg added the comment:
I'm closing this as not being worth the costs of adding new keywords. You're
welcome to propose it on the python-ideas list (a more appropriate place to
propose and suss out the details of significant language changes), but you'll
need to f
Josh Rosenberg added the comment:
You can do the same thing to replace int, float, dict, len, and all the other
built-in classes and functions. Why is Ellipsis so special that it needs
protection, especially when, as you note, ... is an available unoverrideable
way to refer to it? Making
Josh Rosenberg added the comment:
Zackery, should this be closed? Or is there something missing from the patch?
--
___
Python tracker
<https://bugs.python.org/issue36
Josh Rosenberg added the comment:
Was this supposed to deprecate using types.coroutine as a decorator as well?
Because that's not clearly documented, which means people can still use it to
make generator-based coroutines without async def.
--
nosy: +j
Josh Rosenberg added the comment:
The final entry is identical to the second to last, because ints have no
concept of -0. If you used a float literal, it would match the first two:
>>> -0.-1j
(-0-1j)
I suspect the behavior here is due to -1j not actually being a literal on its
Josh Rosenberg added the comment:
Your script is using "true" division with / , (that produces potentially
inaccurate float results) not floor division with // , (which gets int
results). When the inputs vastly exceed the integer representational
capabilities of floats (52-53 bits
Josh Rosenberg added the comment:
Sorry, I think I need examples to grok this in the general case. ChainMap
unioned with dict makes sense to me (it's equivalent to update or
copy-and-update on the top level dict in the ChainMap). But ChainMap unioned
with another ChainMap is less
Josh Rosenberg added the comment:
What is ChainMap going to do? Normally, the left-most argument to ChainMap is
the "top level" dict, but in a regular union scenario, last value wins.
Seems like layering the right hand side's dict on top of the left hand side's
wo
New submission from Josh Rosenberg :
The documentation for extractfile (
https://docs.python.org/3/library/tarfile.html#tarfile.TarFile.extractfile )
says:
"Extract a member from the archive as a file object. member may be a filename
or a TarInfo object. If member is a regular file
Josh Rosenberg added the comment:
This will introduce a risk of data races that didn't previously exist. If you
do:
ba1 = bytearray(b'\x00') * 5
ba2 = bytearray(b'\x00') * 5
... pass references to thread that mutates them ...
ba3 = b
Change by Josh Rosenberg :
--
resolution: -> duplicate
stage: -> resolved
status: open -> closed
superseder: -> ArgumentParser should support bool type according to truth
values
___
Python tracker
<https://bugs.python
Josh Rosenberg added the comment:
Any reason not to just defer opening the file until after the codec has been
validated, so the resource acquisition comes last?
--
nosy: +josh.r
___
Python tracker
<https://bugs.python.org/issue38
Josh Rosenberg added the comment:
That's the expected behavior, and it's clearly documented here:
https://docs.python.org/3/library/stdtypes.html#dict.fromkeys
Quote: "All of the values refer to just a single instance, so it generally
doesn’t make sense for value to be a muta
Josh Rosenberg added the comment:
Yes, five outstanding blocked puts can be bypassed by a put that comes in
immediately after a get creates space. But this isn't really a problem; there
are no guarantees on what order puts are executed in, only a guarantee that
once a put succeeds,
Josh Rosenberg added the comment:
The items that haven't finished the put aren't actually "in" the queue yet, so
I don't see how non-FIFO order of insertion violates any FIFO guarantees for
the contents of the queue; until the items are actually "in", they
Josh Rosenberg added the comment:
To be clear, the docstring is explicitly disclaiming any ordering contract. If
you're reading "unordered" as meaning "not reordered" (like a list or tuple,
where the elements appear in insertion order), that's not what &qu
Change by Josh Rosenberg :
--
nosy: +josh.r
___
Python tracker
<https://bugs.python.org/issue38710>
___
___
Python-bugs-list mailing list
Unsubscribe:
Change by Josh Rosenberg :
--
components: +Library (Lib)
___
Python tracker
<https://bugs.python.org/issue38710>
___
___
Python-bugs-list mailing list
Unsub
Josh Rosenberg added the comment:
Is there a reason folks are supporting a textwrap.dedent-like behavior over the
generally cleaner inspect.cleandoc behavior? The main advantage to the latter
being that it handles:
'''First
Second
Third
'''
Josh Rosenberg added the comment:
I'd be +1 on this, but I'm worried about existing code relying on the
functional use case from your example.
If we are going to discourage it, I think we either have to:
1. Have DeprecationWarning that turns into a SyntaxError, or
2. Never truly
Josh Rosenberg added the comment:
The definition of \w, historically, has corresponded to the set of characters
that can occur in legal variable names in C (alphanumeric ASCII plus
underscores, making it equivalent to [a-zA-Z0-9_] for ASCII regex). That's why,
on top of the definitely
Josh Rosenberg added the comment:
It should probably be backport to all supported 3.x branches though, so people
aren't required to move to 3.8 to benefit from it.
--
___
Python tracker
<https://bugs.python.org/is
Josh Rosenberg added the comment:
Pablo's fix looks like a superset of the original fix applied here, so I'm
assuming it fixes this issue as well.
--
nosy: +josh.r
___
Python tracker
<https://bugs.python.o
Josh Rosenberg added the comment:
OOC, rather than optimizing a fairly ugly use case, might another approach be
to make walrus less leaky? Even if observable leakage is considered desirable,
it strikes me that use cases for walrus in genexprs and comprehensions likely
break up into:
1. 90
Josh Rosenberg added the comment:
Yeah, not a bug. The I/O subsystem was substantially rewritten between Python 2
and Python 3, so you sometimes need to be more explicit about things like
buffering, but as you note, once the buffering is correct, the code works;
there's nothing t
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
Josh Rosenberg added the comment:
The existing documentation is correct, just hard to understand if you don't
already understand the point of metaclasses (metaclasses are hard, the language
to describe them will be inherently a little klunky).
At some point, it might be nice to wr
Josh Rosenberg added the comment:
I prefer rhettinger's PR to your proposed PR; while super() may be useful for
things other than methods, the 99% use case is methods, and deemphasizing that
is a bad idea. rhettinger's PR adds a note about other use cases without
interfering with
Josh Rosenberg added the comment:
I'll note, the same bug appears in Python 2, but only when pickling bytearray;
since bytes in Python 2 is just a str alias, you don't see this misbehavior
with it, only with bytearray (which is consistently incorrect/non-ASCII on bot
Josh Rosenberg added the comment:
This seems like a bug in pickle; protocol 0 is *defined* to be ASCII
compatible. Nothing should encode to a byte above 0x7f. It's not actually
supposed to be "human-readable" (since many ASCII bytes aren't printable), so
the docs
Josh Rosenberg added the comment:
Works just fine for me on 3.7.3 on Ubuntu, reading 4096 bytes. How is it
failing for you? Is an exception raised?
It does seem faintly dangerous to explicitly use O_DIRECT when you're wrapping
it in a buffered reader that doesn't know it has
Josh Rosenberg added the comment:
Note that all of Serhiy's examples are for a known, fixed number of things to
concatenate/union/merge. str.join's API can be used for that by wrapping the
arguments in an anonymous tuple/list, but it's more naturally for a variable
number of
Josh Rosenberg added the comment:
Why do you describe these issues (this one, #38069, #38071-#38076, maybe more)
as making the module PEP 384 compatible? There is no reason to make the
built-in modules stick to the limited API, and it doesn't look like you're
doing that in any ev
Josh Rosenberg added the comment:
basestring in Python 2 means "thing that is logically text", because in Python
2, str can mean *either* logical text *or* binary data, and unicode is always
logical text. str and unicode can kinda sorta interoperate on Python 2, so it
can make sen
Josh Rosenberg added the comment:
This is an exact duplicate of #25457.
--
nosy: +josh.r
resolution: -> duplicate
stage: -> resolved
status: open -> closed
superseder: -> json dump fails for mixed-type keys when sort_keys is specified
__
Change by Josh Rosenberg :
--
title: Restore -> Modifications to support iOS as a cross-compilation target
___
Python tracker
<https://bugs.python.org/issu
Josh Rosenberg added the comment:
Raymond: "Since there isn't much value in reporting which iterable number has
failed"
Isn't there though? If the error just points to the line with the zip, and the
zip is zipping multiple similar things (especially things which won'
Change by Josh Rosenberg :
--
title: Move statitics in Python/import.c to top of the file -> Move statics in
Python/import.c to top of the file
___
Python tracker
<https://bugs.python.org/issu
Josh Rosenberg added the comment:
This problem is specific to private methods AFAICT, since they're the only
things which have an unmangled __name__ used to pickle them, but are stored as
a mangled name.
More details on cause and solution on issue #37852, which I closed as a
duplica
Change by Josh Rosenberg :
--
resolution: -> duplicate
stage: -> resolved
status: open -> closed
superseder: -> Objects referencing private-mangled names do not roundtrip
properly under pickling.
___
Python tracker
<https://
New submission from Josh Rosenberg :
Inspired by this Stack Overflow question, where it prevented using
multiprocessing.Pool.map with a private method:
https://stackoverflow.com/q/57497370/364696
The __name__ of a private method remains the unmangled form, even though only
the mangled form
1 - 100 of 727 matches
Mail list logo