def logjoin(fh, field, delimiter, backend, join_connect_string, 
            join_remote_fields, join_remote_name, join_remote_key, **kwargs):
    
    field = field-1
    delimiter = unicode(delimiter)
    
    backend_impl = {
        "sqlalchemy": SQLAlchemyJoinBackend
    }[backend](remote_fields=join_remote_fields, remote_name=join_remote_name, 
                       remote_key=join_remote_key, connect_string=join_connect_string)
    
    for row in imap(lambda x: x.strip(), fh):
        key = row.split(delimiter)[field]
        for join_row in backend_impl.join(key):
            yield key, unicode(row) + delimiter + delimiter.join(imap(unicode, join_row))
Allow derivatives wrt Symbols.
dataset/ETHPy150Open adamhadani/logtools/logtools/_join.py/logjoin--crossover with--dataset/ETHPy150Open sympy/sympy/sympy/core/symbol.py/Symbol._diff_wrt