>Не совсем билтины, там с DOI проблема, я пока не понял в чем конкретно. Неправильно вычисляется возвращаемый тип при множественном возможном.
Я смотрел провалившиеся тесты, пытался разобраться как оно работает. Застрял где-то в недрах doa.py, runmod.py и соседних с ними. Хитрый там код, есть какие-то нюансы с PyObject, на каком-то этапе видимо не так объекты создаются. Но осилить до конца не смог.
class C1(object):
pass
class C2(object):
pass
def a_func(p):
if p == C1:
return C1()
else:
return C2()
a = a_func(C1)
b = a_func(C2)
В этом случае, по ast-у, по вызовам, все хорошо, но я где то потерялся, возвращаемое значение всегда последнее, то есть С2. Хотя и а == это C1 после выполнения. Это, на нынешний момент, основная проблема, за исключением возвращаемого значения eval-а.
:) Да, я выпил несколько урквела, прежде чем понял призрак того, как он там сделал. Логика, мммм.... через попу. До сих пор все не могу уложить в голове. Буду думать дальше.