[issue46558] Quadratic time internal base conversions

2022-01-30 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: Somebody pointed me to V8's implementation of str(bigint) today: https://github.com/v8/v8/blob/main/src/bigint/tostring.cc They say that they can compute str(factorial(1_000_000)) (which is 5.5 million decimal digits) in 1.5s:

[issue46555] Unicode-mangled names refer inconsistently to constants

2022-01-30 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: Ok, I can definitely agree with Serhiy pov: "True" is a keyword that always evaluates to the object that you get when you call bool(1). There is usually no name "True" and directly assigning to it is forbidden. But there are

[issue46555] Unicode-mangled names refer inconsistently to constants

2022-01-29 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: hah, this is "great": >>> 𝕋𝕣𝕦𝕖 = 1 >>> globals() {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': , '__spec__': None, &#x

[issue38085] Interrupting class creation in __init_subclass__ may lead to incorrect isinstance() and issubclass() results

2021-12-23 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: Or, in other words, in my opinion this is the root cause of the bug: class Base: def __init_subclass__(cls): global broken_class broken_class = cls assert 0 try: class Broken(Base): pass except: pass assert

[issue38085] Interrupting class creation in __init_subclass__ may lead to incorrect isinstance() and issubclass() results

2021-12-23 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: hm, I think I figured it out. The root cause is that even though the creation of the class Triffid fails, it can still be found via Animal.__subclasses__(), which the special subclass logic for ABCs is looking at. Triffid fills its _abc_impl

[issue46042] Error range of "duplicate argument" SyntaxErrors is too big

2021-12-11 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: Oh, don't worry, it's all good! It got fixed and I learned something. -- ___ Python tracker <https://bugs.python.o

[issue46042] Error range of "duplicate argument" SyntaxErrors is too big

2021-12-11 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: ah, confused, seems you fixed them both too. will take a closer look! -- ___ Python tracker <https://bugs.python.org/issue46

[issue46042] Error range of "duplicate argument" SyntaxErrors is too big

2021-12-11 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: Oh no, I was about to open mine ;-) https://github.com/python/cpython/compare/main...cfbolz:bpo-46042-syntax-error-range-duplicate-argument?expand=1 Basically equivalent, but I fixed the second bug too (would be very easy to add to yours

[issue46042] Error range of "duplicate argument" SyntaxErrors is too big

2021-12-11 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: let's see whether I promised too much, I don't know CPython's symtable.c too well yet ;-). Will shout for help when I get stuck. Anyway, here is a related bug, coming from the same symtable function symtable_add_def_helpe

[issue46042] Error range of "duplicate argument" SyntaxErrors is too big

2021-12-10 Thread Carl Friedrich Bolz-Tereick
New submission from Carl Friedrich Bolz-Tereick : The error range for the "duplicate argument in function definition" SyntaxError is too large: $ cat x.py def f(a, b, c, d, e, f, g, a): pass $ python x.py File "/home/cfbolz/projects/cpython/x.py", line 1 def f(a,

[issue37971] Wrong trace with multiple decorators (linenumber wrong in frame)

2021-12-10 Thread Carl Friedrich Bolz-Tereick
Change by Carl Friedrich Bolz-Tereick : -- pull_requests: +28252 stage: -> patch review pull_request: https://github.com/python/cpython/pull/30027 ___ Python tracker <https://bugs.python.org/issu

[issue37971] Wrong trace with multiple decorators (linenumber wrong in frame)

2021-12-10 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: I ran into this problem in PyPy today, preparing a patch for CPython too (without looking at the old one). -- nosy: +Carl.Friedrich.Bolz ___ Python tracker <https://bugs.python.org/issue37

[issue45859] test_collections has a wrong test in case _itemgetter is not available

2021-11-21 Thread Carl Friedrich Bolz-Tereick
Change by Carl Friedrich Bolz-Tereick : -- keywords: +patch pull_requests: +27929 stage: -> patch review pull_request: https://github.com/python/cpython/pull/29691 ___ Python tracker <https://bugs.python.org/issu

[issue45859] test_collections has a wrong test in case _itemgetter is not available

2021-11-21 Thread Carl Friedrich Bolz-Tereick
New submission from Carl Friedrich Bolz-Tereick : test_field_descriptor in test_collections tries to pickle the descriptors of a namedtuple's fields, which is _collections._itemgetter on CPython. However, on PyPy that class doesn't exist. The code in collections deals fine with

[issue45781] Deleting __debug__ should be an SyntaxError

2021-11-13 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: ouch, apologies for not checking that! -- ___ Python tracker <https://bugs.python.org/issue45781> ___ ___ Pytho

[issue45781] Deleting __debug__ should be an SyntaxError

2021-11-11 Thread Carl Friedrich Bolz-Tereick
New submission from Carl Friedrich Bolz-Tereick : Right now, deleting __debug__ is not prevented: >>> def f(): ... del __debug__ ... Of course actually executing it doesn't work: >>> del __debug__ Traceback (most recent call last): File "", line 1, i

[issue45764] Parse error improvement forgetting ( after def

2021-11-09 Thread Carl Friedrich Bolz-Tereick
Change by Carl Friedrich Bolz-Tereick : -- keywords: +patch pull_requests: +27735 stage: -> patch review pull_request: https://github.com/python/cpython/pull/29484 ___ Python tracker <https://bugs.python.org/issu

[issue45764] Parse error improvement forgetting ( after def

2021-11-09 Thread Carl Friedrich Bolz-Tereick
New submission from Carl Friedrich Bolz-Tereick : Something I see beginners make occasionally when defining functions without arguments is this: def f: ... Right now it just gives an "invalid syntax", would be nice to get an "expected '('". I will try

[issue45727] Parse error when missing commas is inconsistent

2021-11-05 Thread Carl Friedrich Bolz-Tereick
New submission from Carl Friedrich Bolz-Tereick : I found following inconsistency in the error message when there's a missing comma (it behaves that way both on main and 3.10). Here's what happens with numbers, as expected: Python 3.11.0a1+ (heads/main:32f55d1a5d, Nov 5 2021, 13:1

[issue45716] Confusing parsing error message when trying to use True as keyword argument

2021-11-04 Thread Carl Friedrich Bolz-Tereick
New submission from Carl Friedrich Bolz-Tereick : A bit of a nitpick, but the following SyntaxError message is a bit confusing: >>> f(True=1) File "", line 1 f(True=1) ^ SyntaxError: expression cannot contain assignment, perhaps you meant "=="?

[issue45624] test_graphlib.py depends on iteration order of sets

2021-10-27 Thread Carl Friedrich Bolz-Tereick
Change by Carl Friedrich Bolz-Tereick : -- keywords: +patch pull_requests: +27496 stage: -> patch review pull_request: https://github.com/python/cpython/pull/29233 ___ Python tracker <https://bugs.python.org/issu

[issue45624] test_graphlib.py depends on iteration order of sets

2021-10-27 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: here's the traceback running on pypy3.9-alpha: == FAIL: test_simple_cases (test.test_graphlib.TestTopologica

[issue45624] test_graphlib.py depends on iteration order of sets

2021-10-27 Thread Carl Friedrich Bolz-Tereick
New submission from Carl Friedrich Bolz-Tereick : test_graphlib fails on PyPy because it depends on the iteration order of sets. Will open a PR soon. -- messages: 405084 nosy: Carl.Friedrich.Bolz priority: normal severity: normal status: open title: test_graphlib.py depends on

[issue30570] issubclass segfaults on objects with weird __getattr__

2021-10-18 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: PyPy raises a RecursionError here, which sounds like an ok outcome. So simply checking for the recursion would also be a way of fixing this... -- nosy: +Carl.Friedrich.Bolz ___ Python tracker <ht

[issue45417] Enum creation non-linear in the number of values

2021-10-12 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: I fixed the reliance of set being insertion ordered in pypy and opened a pull request. -- ___ Python tracker <https://bugs.python.org/issue45

[issue45417] Enum creation non-linear in the number of values

2021-10-12 Thread Carl Friedrich Bolz-Tereick
Change by Carl Friedrich Bolz-Tereick : -- nosy: +Carl.Friedrich.Bolz nosy_count: 6.0 -> 7.0 pull_requests: +27198 stage: -> patch review pull_request: https://github.com/python/cpython/pull/28907 ___ Python tracker <https://bugs.p

[issue34561] Replace list sorting merge_collapse()?

2021-09-06 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: Thanks for your work Tim, just adapted the changes to PyPy's Timsort, using bits of runstack.py! -- nosy: +Carl.Friedrich.Bolz ___ Python tracker <https://bugs.python.org/is

[issue25130] Make tests more PyPy compatible

2021-08-28 Thread Carl Friedrich Bolz-Tereick
Change by Carl Friedrich Bolz-Tereick : -- nosy: +Carl.Friedrich.Bolz nosy_count: 6.0 -> 7.0 pull_requests: +26460 pull_request: https://github.com/python/cpython/pull/28002 ___ Python tracker <https://bugs.python.org/issu

[issue43907] pickle.py bytearray memoization bug with protocol 5

2021-04-21 Thread Carl Friedrich Bolz-Tereick
Change by Carl Friedrich Bolz-Tereick : -- keywords: +patch pull_requests: +24221 stage: -> patch review pull_request: https://github.com/python/cpython/pull/25501 ___ Python tracker <https://bugs.python.org/issu

[issue43907] pickle.py bytearray memoization bug with protocol 5

2021-04-21 Thread Carl Friedrich Bolz-Tereick
New submission from Carl Friedrich Bolz-Tereick : The new codepath for the BYTEARRAY8 bytecode is missing memoization: >>> import pickletools, pickle >>> b = (bytearray(b"abc"), ) * 2 >>> b1, b2 = pickle.loads(pickle.dumps(b, 5)) # C version >>&g

[issue43833] Unexpected Parsing of Numeric Literals Concatenated with Boolean Operators

2021-04-14 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: @shreyanavigyan This is a bit off-topic, but it's called "short-circuiting", described here: https://docs.python.org/3/library/stdtypes.html#boolean-operations-and-or-not (or/and aren't really "operators", like +/-

[issue43833] Unexpected Parsing of Numeric Literals Concatenated with Boolean Operators

2021-04-13 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: It's not just about keywords. Eg '1x' tokenizes too but then produces a syntax error in the parser. Keywords are only special in that they can be used to write syntactically meaningful things with these concatenated numbers.

[issue3451] Asymptotically faster divmod and str(long)

2021-04-13 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: yes, that sounds fair. In PyPy we improve things occasionally if somebody feels like working on it, but in general competing against GMP is a fools errand. -- ___ Python tracker <ht

[issue3451] Asymptotically faster divmod and str(long)

2021-04-13 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: FWIW, we have implemented a faster algorithm for divmod for big numbers using Mark's fast_div.py in PyPy. In particular, this speeds up str(long) for large numbers significantly (eg calling str on the result of math.factorial(2**17) is no

[issue43753] [C API] Add Py_Is(x, y) and Py_IsNone(x) functions

2021-04-07 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: Just chiming in to say that for PyPy this API would be extremely useful, because PyPy's "is" is not implementable with a pointer comparison on the C level (due to unboxing we need to compare integers, floats, etc by value)

[issue41972] bytes.find consistently hangs in a particular scenario

2021-02-26 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: > BTW, this initialization in the FASTSEARCH code appears to me to be a > mistake: >skip = mlast - 1; Thanks for pointing that out Tim! Turns out PyPy had copied that mindlessly and I just fixed it. (I'm also generally f

[issue43154] code.InteractiveConsole can crash if sys.excepthook is broken

2021-02-07 Thread Carl Friedrich Bolz-Tereick
New submission from Carl Friedrich Bolz-Tereick : When using code.InteractiveConsole to implement a Python shell (like PyPy is doing), having a broken sys.excepthook set can crash the console (see attached terminal log). Instead, it should catch errors and report then ignore them (using

[issue43148] Call sys.unraisablehook in the REPL when sys.excepthook is broken

2021-02-06 Thread Carl Friedrich Bolz-Tereick
Change by Carl Friedrich Bolz-Tereick : -- nosy: +Carl.Friedrich.Bolz ___ Python tracker <https://bugs.python.org/issue43148> ___ ___ Python-bugs-list mailin

[issue38197] Meaning of tracebacklimit differs between sys.tracebacklimit and traceback module

2020-11-04 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: It's still inconsistent between the two ways to get a traceback, and the inconsistency is not documented. -- ___ Python tracker <https://bugs.python.org/is

[issue39486] bug in %-formatting in Python, related to escaped %-characters

2020-01-29 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: Ok, that means it's intentional. I still think it's missing a documentation change and consistent error messages. -- ___ Python tracker <https://bugs.python.o

[issue39486] bug in %-formatting in Python, related to escaped %-characters

2020-01-29 Thread Carl Friedrich Bolz-Tereick
New submission from Carl Friedrich Bolz-Tereick : The following behaviour of %-formatting changed between Python3.6 and Python3.7, and is in my opinion a bug that was introduced. So far, it has been possible to add conversion flags to a conversion specifier in %-formatting, even if the

[issue39485] Bug in mock running on PyPy3

2020-01-29 Thread Carl Friedrich Bolz-Tereick
Change by Carl Friedrich Bolz-Tereick : -- keywords: +patch pull_requests: +17629 stage: -> patch review pull_request: https://github.com/python/cpython/pull/18252 ___ Python tracker <https://bugs.python.org/issu

[issue39485] Bug in mock running on PyPy3

2020-01-29 Thread Carl Friedrich Bolz-Tereick
New submission from Carl Friedrich Bolz-Tereick : One of the new-in-3.8 tests for unittest.mock, test_spec_has_descriptor_returning_function, is failing on PyPy. This exposes a bug in unittest.mock. The bug is most noticeable on PyPy, where it can be triggered by simply writing a slightly

[issue39220] constant folding affects annotations despite 'from __future__ import annotations'

2020-01-06 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: I don't have a particularly deep opinion on what should be done, just a bit of weirdness I hit upon while implementing the PEP in PyPy. fwiw, we implement it as an AST transformer that the compiler runs before running the optimizer to make

[issue39220] constant folding affects annotations despite 'from __future__ import annotations'

2020-01-05 Thread Carl Friedrich Bolz-Tereick
New submission from Carl Friedrich Bolz-Tereick : PEP 563 interacts in weird ways with constant folding. running the following code: ``` from __future__ import annotations def f(a: 5 + 7) -> a ** 39: return 12 print(f.__annotations__) ``` I would expect this output: ``` {'a&

[issue38197] Meaning of tracebacklimit differs between sys.tracebacklimit and traceback module

2019-09-17 Thread Carl Friedrich Bolz-Tereick
New submission from Carl Friedrich Bolz-Tereick : The meaning of sys.tracebacklimit seems to be different than the meaning of the various limit parameters in the traceback module. One shows the top n stack frames, the other the bottom n. Is this intentional, and if yes, is that difference

[issue18374] ast.parse gives wrong position (col_offset) for some BinOp-s

2019-07-09 Thread Carl Friedrich Bolz-Tereick
Change by Carl Friedrich Bolz-Tereick : -- pull_requests: +14466 pull_request: https://github.com/python/cpython/pull/14659 ___ Python tracker <https://bugs.python.org/issue18

[issue18374] ast.parse gives wrong position (col_offset) for some BinOp-s

2019-07-05 Thread Carl Friedrich Bolz-Tereick
Change by Carl Friedrich Bolz-Tereick : -- pull_requests: +14423 stage: needs patch -> patch review pull_request: https://github.com/python/cpython/pull/14607 ___ Python tracker <https://bugs.python.org/issu

[issue18374] ast.parse gives wrong position (col_offset) for some BinOp-s

2019-07-05 Thread Carl Friedrich Bolz-Tereick
Carl Friedrich Bolz-Tereick added the comment: I think the attached patch fixes the problem. Will create a pull request soon. -- versions: +Python 3.5 -Python 3.7, Python 3.8, Python 3.9 Added file: https://bugs.python.org/file48458/binop-offset.patch

[issue18374] ast.parse gives wrong position (col_offset) for some BinOp-s

2019-07-05 Thread Carl Friedrich Bolz
Carl Friedrich Bolz added the comment: OK, fair enough. That means right now there is no way to find the position of the operator using the ast module at the moment, correct? -- ___ Python tracker <https://bugs.python.org/issue18

[issue18374] ast.parse gives wrong position (col_offset) for some BinOp-s

2019-07-04 Thread Carl Friedrich Bolz
Carl Friedrich Bolz added the comment: FWIW, in my opinion the col_offsets of the two nodes should be 1 and 3, respectively (the positions of the operators). -- nosy: +Carl.Friedrich.Bolz ___ Python tracker <https://bugs.python.org/issue18

[issue13340] list.index does not accept None as start or stop

2011-11-04 Thread Carl Friedrich Bolz
New submission from Carl Friedrich Bolz : The list.index method does not accept None as start and stop, which makes the error message quite confusing: >>> [1, 2, 3].index(2, None, None) Traceback (most recent call last): File "", line 1, in TypeError: slice indices must

[issue12422] When deepcopying, don't store immutable objects in the memo dict

2011-06-27 Thread Carl Friedrich Bolz
Changes by Carl Friedrich Bolz : -- nosy: +Carl.Friedrich.Bolz ___ Python tracker <http://bugs.python.org/issue12422> ___ ___ Python-bugs-list mailing list Unsub

[issue11477] Bug in code dispatching based on internal slots

2011-03-14 Thread Carl Friedrich Bolz
Changes by Carl Friedrich Bolz : -- nosy: +cfbolz ___ Python tracker <http://bugs.python.org/issue11477> ___ ___ Python-bugs-list mailing list Unsubscribe:

[issue5377] Strange behavior when performing int on a Decimal made from -sys.maxint-1

2009-10-11 Thread Carl Friedrich Bolz
Carl Friedrich Bolz added the comment: [...] > Would the bool/int distinction matter to PyPy? No, it's really mostly about longs and ints, because RPython does not have automatic overflowing of ints to longs (the goal is really to translate ints them to C longs with normal C

[issue5377] Strange behavior when performing int on a Decimal made from -sys.maxint-1

2009-10-11 Thread Carl Friedrich Bolz
Carl Friedrich Bolz added the comment: PyPy is a bit of a special case, because it cares about the distinction of int and long in the translation toolchain. Nevertheless, this behavior has been annoying to us. -- nosy: +cfbolz ___ Python tracker

[issue7019] unmarshaling of artificial strings can produce funny longs.

2009-10-01 Thread Carl Friedrich Bolz
Carl Friedrich Bolz added the comment: [...] > How did you encounter this in the first place? I was working on PyPy's marshaler, broke it in such a way that it was producing the bad input that I gave above. Then I fixed it, but didn't kill my .pyc files. So a few days later I go

[issue7019] unmarshaling of artificial strings can produce funny longs.

2009-09-29 Thread Carl Friedrich Bolz
Carl Friedrich Bolz added the comment: Yes, I know :-). I thought I'd report it anyway, as it does more than "just" give you random behavior, but actually produces a broken object. -- ___ Python tracker <http://bugs.py

[issue7019] unmarshaling of artificial strings can produce funny longs.

2009-09-29 Thread Carl Friedrich Bolz
Changes by Carl Friedrich Bolz : -- nosy: +benjamin.peterson ___ Python tracker <http://bugs.python.org/issue7019> ___ ___ Python-bugs-list mailing list Unsub

[issue7019] unmarshaling of artificial strings can produce funny longs.

2009-09-29 Thread Carl Friedrich Bolz
New submission from Carl Friedrich Bolz : When unmarshalling a hand-written string it is possible to break the invariants of longs: Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41) [GCC 4.3.3] on linux2 Type "help", "copyright", "credits" or "l

[issue5791] title information of unicodedata is wrong in some cases

2009-04-19 Thread Carl Friedrich Bolz
New submission from Carl Friedrich Bolz : There seems to be a problem with some unicode character's title information: $ python2.6 Python 2.6.2c1 (release26-maint, Apr 14 2009, 08:02:48) [GCC 4.3.3] on linux2 Type "help", "copyright", "credits" or "licen

[issue4069] set.remove raises confusing KeyError

2008-10-07 Thread Carl Friedrich Bolz
New submission from Carl Friedrich Bolz <[EMAIL PROTECTED]>: When trying to remove a set from a set, the KeyError that is raised is confusing: Python 2.6 (r26:66714, Oct 7 2008, 13:23:57) [GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2 Type "help", "copyright", "

[issue1642] segfault when deleting value member in ctypes types

2007-12-17 Thread Carl Friedrich Bolz
New submission from Carl Friedrich Bolz: When trying to delete the .value member of ctypes simple types my python interpreter segfaults: $ python Python 2.5.1 (r251:54863, Oct 5 2007, 13:36:32) [GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2 Type "help",

[issue1433] marshal roundtripping for unicode

2007-11-13 Thread Carl Friedrich Bolz
New submission from Carl Friedrich Bolz: Marshal does not round-trip unicode surrogate pairs for wide unicode-builds: marshal.loads(marshal.dumps(u"\ud800\udc00")) == u'\U0001' This is very annoying, because the size of unicode constants differs between when you run a