def finished(experiment_name, reset=True):
    """
    Track a conversion.

    :param experiment_name: Name of the experiment.
    :param reset: If set to `True` current user's session is reset so that they
        may start the test again in the future.  If set to `False` the user
        will always see the alternative they started with.  Defaults to `True`.
    """
    if _exclude_visitor():
        return
    redis = _get_redis_connection()
    try:
        experiment = Experiment.find(redis, experiment_name)
        if not experiment:
            return
        alternative_name = _get_session().get(experiment.key)
        if alternative_name:
            split_finished = set(session.get('split_finished', []))
            if experiment.key not in split_finished:
                alternative = Alternative(
                    redis, alternative_name, experiment_name)
                alternative.increment_completion()
            if reset:
                _get_session().pop(experiment.key, None)
                try:
                    split_finished.remove(experiment.key)
                except __HOLE__:
                    pass
            else:
                split_finished.add(experiment.key)
            session['split_finished'] = list(split_finished)
    except ConnectionError:
        if not current_app.config['SPLIT_DB_FAILOVER']:
            raise
dataset/ETHPy150Open jpvanhal/flask-split/flask_split/core.py/finished