Uh oh!
There was an error while loading. Please reload this page.
[mypyc] Optimize list.__add__, list.__iadd__, tuple.__add__ - #18845
Conversation
JukkaL
left a comment
There was a problem hiding this comment.
Thanks for the PR! Left a few minor comments, otherwise looks good.
| * ``tup[n]`` (integer index) | ||
| * ``tup[n:m]``, ``tup[n:]``, ``tup[:m]`` (slicing) | ||
| * ``tup1 + tup2`` |
There was a problem hiding this comment.
Is this only specialized for variable-length tuples? If yes, it's worth adding a note here, since fixed-length tuple concatenation could be quite slow otherwise.
There was a problem hiding this comment.
It should work for fixed-length tuple as well. Just the whole box / unbox dance which could possibly be optimized further at a later point.
| assert [1, 2] + [3, 4] == res | ||
| with assertRaises(TypeError, 'can only concatenate list (not "tuple") to list'): | ||
| assert [1, 2] + (3, 4) == res # type: ignore[operator] | ||
| assert in_place_add([3, 4]) == res |
There was a problem hiding this comment.
Test that the identity of the target object is preserved in +=?
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
https://docs.python.org/3/c-api/sequence.html#c.PySequence_Concat
https://docs.python.org/3/c-api/sequence.html#c.PySequence_InPlaceConcat