mp$subscript
mp$ass_subscript
mp$length
mp$ma_lookup (may be implemented at some point but is not at the time of this writing)
sq$concat
sq$repeat
sq$inplace_concat
sq$inplace_repeat
sq$length
sq$ass_item
sq$contains
sq$slice
sq$ass_slice (returns a slice of ass)
sq$item
ob$type
tp$name
tp$descr_set
tp$descr_get
tp$getattr
tp$setattr
tp$mro
tp$iter
tp$iternext
tp$call
tp$str
tp$richcompare
tp$hash
tp$index
The $ names are the underlying implementation of functionality that
corresponds to the equivalent name in the CPython source code. In the
C code, tp$str would be a function pointer on an object named tp_str.
I don't have it quite clear in my mind right now, but generally
speaking, there could be multiple places where an object needs to be
turned into a string, and one of those might be __str__, but others
might include print, etc. Referring to the CPython source might help
(or might make things more confusing).
On the other hand, there may be places where I was too slavish in
trying to follow the CPython code, so some of them may be pointless
redirections. I'm not fully sure what the correct fix for your bug
above is without more investigation.
scott