

def heuristics(e, z, z0, dir):
    rv = None
    if (abs(z0) is S.Infinity):
        rv = limit(e.subs(z, (1 / z)), z, S.Zero, ('+' if (z is S.Infinity) else '-'))
        if isinstance(rv, Limit):
            return
    elif (e.is_Mul or e.is_Add or e.is_Pow or e.is_Function):
        r = []
        for a in e.args:
            l = limit(a, z, z0, dir)
            if (l.has(S.Infinity) and (l.is_finite is None)):
                return
            elif isinstance(l, Limit):
                return
            elif (l is S.NaN):
                return
            else:
                r.append(l)
        if r:
            rv = e.func(*r)
            if (rv is S.NaN):
                return
    return rv

dataset/ETHPy150Open sympy/sympy/sympy/series/limits.py heuristics/VarMisuse@61/67 `z0`->`z`