# Path: lcs/metrics.py
# def basic_metrics(trial: int, steps: int, reward: int, time: float):
#     return {
#         'trial': trial,
#         'steps_in_trial': steps,
#         'reward': reward,
#         'perf_time': time,
#     }


import logging
import tempfile
import dill
import mlflow
import numpy as np
from collections import namedtuple
from timeit import default_timer as timer
from typing import Callable, List, Tuple
from lcs.metrics import basic_metrics



TrialMetrics = namedtuple('TrialMetrics', ['steps', 'reward'])

logger = logging.getLogger(__name__)


class Agent:
    total_steps = 0

    def _run_trial_explore(self, env, trials, current_trial) -> TrialMetrics:
        raise NotImplementedError()

    def _run_trial_exploit(self, env, trials, current_trial) -> TrialMetrics:

# Path: lcs/metrics.py
# def basic_metrics(trial: int, steps: int, reward: int, time: float):
#     return {
#         'trial': trial,
#         'steps_in_trial': steps,
#         'reward': reward,
#         'perf_time': time,
#     }


# Path: lcs/agents/Agent.py
import logging
import tempfile
import dill
import mlflow
import numpy as np
from collections import namedtuple
from timeit import default_timer as timer
from typing import Callable, List, Tuple
from lcs.metrics import basic_metrics




TrialMetrics = namedtuple('TrialMetrics', ['steps', 'reward'])

logger = logging.getLogger(__name__)


class Agent:
    total_steps = 0

    def _run_trial_explore(self, env, trials, current_trial) -> TrialMetrics:
        raise NotImplementedError()

    def _run_trial_exploit(self, env, trials, current_trial) -> TrialMetrics:

        raise NotImplementedError()