def testBestTrialStr(self):
        """Assert that custom nested parameter columns are printed correctly"""
        config = {"nested": {"conf": "nested_value"}, "toplevel": "toplevel_value"}

        trial = Trial("", config=config, stub=True)
        trial.last_result = {"metric": 1, "config": config}

        result = best_trial_str(trial, "metric")
        self.assertIn("nested_value", result)

        result = best_trial_str(trial, "metric", parameter_columns=["nested/conf"])
        self.assertIn("nested_value", result)
    def testProgressStr(self):
        trials = []
        for i in range(5):
            t = Mock()
            if i == 0:
                t.status = "TERMINATED"
            elif i == 1:
                t.status = "PENDING"
            else:
                t.status = "RUNNING"
            t.trial_id = "%05d" % i
            t.local_dir = "/foo"
            t.location = "here"
            t.config = {"a": i, "b": i * 2, "n": {"k": [i, 2 * i]}}
            t.evaluated_params = {
                "a": i,
                "b": i * 2,
                "n/k/0": i,
                "n/k/1": 2 * i
            }
            t.last_result = {
                "config": {
                    "a": i,
                    "b": i * 2,
                    "n": {
                        "k": [i, 2 * i]
                    }
                },
                "metric_1": i / 2,
                "metric_2": i / 4
            }
            t.__str__ = lambda self: self.trial_id
            trials.append(t)
        # One metric, two parameters
        prog1 = trial_progress_str(trials, ["metric_1"], ["a", "b"],
                                   fmt="psql",
                                   max_rows=3)
        print(prog1)
        assert prog1 == EXPECTED_RESULT_1

        # No metric, all parameters
        prog2 = trial_progress_str(trials, [], None, fmt="psql", max_rows=None)
        print(prog2)
        assert prog2 == EXPECTED_RESULT_2

        # Both metrics, one parameter, all with custom representation
        prog3 = trial_progress_str(trials, {
            "metric_1": "Metric 1",
            "metric_2": "Metric 2"
        }, {"a": "A"},
                                   fmt="psql",
                                   max_rows=3)
        print(prog3)
        assert prog3 == EXPECTED_RESULT_3

        # Current best trial
        best1 = best_trial_str(trials[1], "metric_1")
        assert best1 == EXPECTED_BEST_1