prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Tensorboard integration with integers for parameter boundaries
  When using the `optuna.integration.tensorboard.TensorBoardCallback` with integer parameters for `suggest_uniform`, a `TypeError` is raised.
  
  ## Expected behavior
  No TypeError should be raised, instead the integer should be casted to a float.
  
  ## Environment
  
  - Optuna version: 2.5.0
  - Python version: 3.7.5
  - OS: Debian Testing
  - (Optional) Other libraries and their versions: Tensorboard 2.4.1
  
  ## Error messages, stack traces, or logs
  
  ```
  Traceback (most recent call last):
    File "tensorboard_test.py", line 13, in <module>
      study.optimize(objective, n_trials=10, timeout=600, callbacks=[tensorboard_callback])
    File "/home/timon/.pyenv/versions/3.7.5/lib/python3.7/site-packages/optuna/study.py", line 385, in optimize
      show_progress_bar=show_progress_bar,
    File "/home/timon/.pyenv/versions/3.7.5/lib/python3.7/site-packages/optuna/_optimize.py", line 73, in _optimize
      progress_bar=progress_bar,
    File "/home/timon/.pyenv/versions/3.7.5/lib/python3.7/site-packages/optuna/_optimize.py", line 178, in _optimize_sequential
      callback(study, frozen_trial)
    File "/home/timon/.pyenv/versions/3.7.5/lib/python3.7/site-packages/optuna/integration/tensorboard.py", line 41, in __call__
      self._initialization(study)
    File "/home/timon/.pyenv/versions/3.7.5/lib/python3.7/site-packages/optuna/integration/tensorboard.py", line 102, in _initialization
      self._add_distributions(trial.distributions)
    File "/home/timon/.pyenv/versions/3.7.5/lib/python3.7/site-packages/optuna/integration/tensorboard.py", line 62, in _add_distributions
      param_name, hp.RealInterval(param_distribution.low, param_distribution.high)
    File "/home/timon/.pyenv/versions/3.7.5/lib/python3.7/site-packages/tensorboard/plugins/hparams/summary_v2.py", line 444, in __init__
      raise TypeError("min_value must be a float: %r" % (min_value,))
  TypeError: min_value must be a float: 0
  ```
  
  ## Steps to reproduce
  
  1. Execute the example below
  
  ## Reproducible examples (optional)
  
  ```python
  import optuna
  from optuna.integration.tensorboard import TensorBoardCallback
  
  def objective(trial: optuna.trial.Trial) -> float:
      param = trial.suggest_uniform("param", 0, 1)
      return param**2
  
  tensorboard_callback = TensorBoardCallback("logs/", metric_name="value")
  
  study = optuna.create_study()
  study.optimize(objective, n_trials=10, callbacks=[tensorboard_callback])
  ```
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `optuna/integration/tensorboard.py`
  Content:
  ```
  1 import os
  2 from typing import Dict
  3 
  4 import optuna
  5 from optuna._experimental import experimental
  6 from optuna._imports import try_import
  7 
  8 
  9 with try_import() as _imports:
  10     from tensorboard.plugins.hparams import api as hp
  11     import tensorflow as tf
  12 
  13 
  14 @experimental("2.0.0")
  15 class TensorBoardCallback(object):
  16     """Callback to track Optuna trials with TensorBoard.
  17 
  18     This callback adds relevant information that is tracked by Optuna to TensorBoard.
  19 
  20     See `the example <https://github.com/optuna/optuna/blob/master/
  21     examples/tensorboard_simple.py>`_.
  22 
  23     Args:
  24         dirname:
  25             Directory to store TensorBoard logs.
  26         metric_name:
  27             Name of the metric. Since the metric itself is just a number,
  28             `metric_name` can be used to give it a name. So you know later
  29             if it was roc-auc or accuracy.
  30 
  31     """
  32 
  33     def __init__(self, dirname: str, metric_name: str) -> None:
  34         _imports.check()
  35         self._dirname = dirname
  36         self._metric_name = metric_name
  37         self._hp_params: Dict[str, hp.HParam] = {}
  38 
  39     def __call__(self, study: optuna.study.Study, trial: optuna.trial.FrozenTrial) -> None:
  40         if len(self._hp_params) == 0:
  41             self._initialization(study)
  42         if trial.state != optuna.trial.TrialState.COMPLETE:
  43             return
  44         trial_value = trial.value if trial.value is not None else float("nan")
  45         hparams = {}
  46         for param_name, param_value in trial.params.items():
  47             if param_name not in self._hp_params:
  48                 self._add_distributions(trial.distributions)
  49             hparams[self._hp_params[param_name]] = param_value
  50         run_name = "trial-%d" % trial.number
  51         run_dir = os.path.join(self._dirname, run_name)
  52         with tf.summary.create_file_writer(run_dir).as_default():
  53             hp.hparams(hparams, trial_id=run_name)  # record the values used in this trial
  54             tf.summary.scalar(self._metric_name, trial_value, step=trial.number)
  55 
  56     def _add_distributions(
  57         self, distributions: Dict[str, optuna.distributions.BaseDistribution]
  58     ) -> None:
  59         for param_name, param_distribution in distributions.items():
  60             if isinstance(param_distribution, optuna.distributions.UniformDistribution):
  61                 self._hp_params[param_name] = hp.HParam(
  62                     param_name, hp.RealInterval(param_distribution.low, param_distribution.high)
  63                 )
  64             elif isinstance(param_distribution, optuna.distributions.LogUniformDistribution):
  65                 self._hp_params[param_name] = hp.HParam(
  66                     param_name, hp.RealInterval(param_distribution.low, param_distribution.high)
  67                 )
  68             elif isinstance(param_distribution, optuna.distributions.DiscreteUniformDistribution):
  69                 self._hp_params[param_name] = hp.HParam(
  70                     param_name, hp.RealInterval(param_distribution.low, param_distribution.high)
  71                 )
  72             elif isinstance(param_distribution, optuna.distributions.IntUniformDistribution):
  73                 self._hp_params[param_name] = hp.HParam(
  74                     param_name, hp.IntInterval(param_distribution.low, param_distribution.high)
  75                 )
  76             elif isinstance(param_distribution, optuna.distributions.CategoricalDistribution):
  77                 self._hp_params[param_name] = hp.HParam(
  78                     param_name, hp.Discrete(param_distribution.choices)
  79                 )
  80             else:
  81                 distribution_list = [
  82                     optuna.distributions.UniformDistribution.__name__,
  83                     optuna.distributions.LogUniformDistribution.__name__,
  84                     optuna.distributions.DiscreteUniformDistribution.__name__,
  85                     optuna.distributions.IntUniformDistribution.__name__,
  86                     optuna.distributions.CategoricalDistribution.__name__,
  87                 ]
  88                 raise NotImplementedError(
  89                     "The distribution {} is not implemented. "
  90                     "The parameter distribution should be one of the {}".format(
  91                         param_distribution, distribution_list
  92                     )
  93                 )
  94 
  95     def _initialization(self, study: optuna.Study) -> None:
  96         completed_trials = [
  97             trial
  98             for trial in study.get_trials(deepcopy=False)
  99             if trial.state == optuna.trial.TrialState.COMPLETE
  100         ]
  101         for trial in completed_trials:
  102             self._add_distributions(trial.distributions)
  103
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/optuna/integration/tensorboard.py b/optuna/integration/tensorboard.py
  --- a/optuna/integration/tensorboard.py
  +++ b/optuna/integration/tensorboard.py
  @@ -56,34 +56,36 @@
       def _add_distributions(
           self, distributions: Dict[str, optuna.distributions.BaseDistribution]
       ) -> None:
  +        real_distributions = (
  +            optuna.distributions.UniformDistribution,
  +            optuna.distributions.LogUniformDistribution,
  +            optuna.distributions.DiscreteUniformDistribution,
  +        )
  +        int_distributions = (optuna.distributions.IntUniformDistribution,)
  +        categorical_distributions = (optuna.distributions.CategoricalDistribution,)
  +        supported_distributions = (
  +            real_distributions + int_distributions + categorical_distributions
  +        )
  +
           for param_name, param_distribution in distributions.items():
  -            if isinstance(param_distribution, optuna.distributions.UniformDistribution):
  -                self._hp_params[param_name] = hp.HParam(
  -                    param_name, hp.RealInterval(param_distribution.low, param_distribution.high)
  -                )
  -            elif isinstance(param_distribution, optuna.distributions.LogUniformDistribution):
  -                self._hp_params[param_name] = hp.HParam(
  -                    param_name, hp.RealInterval(param_distribution.low, param_distribution.high)
  -                )
  -            elif isinstance(param_distribution, optuna.distributions.DiscreteUniformDistribution):
  +            if isinstance(param_distribution, real_distributions):
                   self._hp_params[param_name] = hp.HParam(
  -                    param_name, hp.RealInterval(param_distribution.low, param_distribution.high)
  +                    param_name,
  +                    hp.RealInterval(float(param_distribution.low), float(param_distribution.high)),
                   )
  -            elif isinstance(param_distribution, optuna.distributions.IntUniformDistribution):
  +            elif isinstance(param_distribution, int_distributions):
                   self._hp_params[param_name] = hp.HParam(
  -                    param_name, hp.IntInterval(param_distribution.low, param_distribution.high)
  +                    param_name,
  +                    hp.IntInterval(param_distribution.low, param_distribution.high),
                   )
  -            elif isinstance(param_distribution, optuna.distributions.CategoricalDistribution):
  +            elif isinstance(param_distribution, categorical_distributions):
                   self._hp_params[param_name] = hp.HParam(
  -                    param_name, hp.Discrete(param_distribution.choices)
  +                    param_name,
  +                    hp.Discrete(param_distribution.choices),
                   )
               else:
                   distribution_list = [
  -                    optuna.distributions.UniformDistribution.__name__,
  -                    optuna.distributions.LogUniformDistribution.__name__,
  -                    optuna.distributions.DiscreteUniformDistribution.__name__,
  -                    optuna.distributions.IntUniformDistribution.__name__,
  -                    optuna.distributions.CategoricalDistribution.__name__,
  +                    distribution.__name__ for distribution in supported_distributions
                   ]
                   raise NotImplementedError(
                       "The distribution {} is not implemented. "
  
verification_info: {"golden_diff": "diff --git a/optuna/integration/tensorboard.py b/optuna/integration/tensorboard.py\n--- a/optuna/integration/tensorboard.py\n+++ b/optuna/integration/tensorboard.py\n@@ -56,34 +56,36 @@\n     def _add_distributions(\n         self, distributions: Dict[str, optuna.distributions.BaseDistribution]\n     ) -> None:\n+        real_distributions = (\n+            optuna.distributions.UniformDistribution,\n+            optuna.distributions.LogUniformDistribution,\n+            optuna.distributions.DiscreteUniformDistribution,\n+        )\n+        int_distributions = (optuna.distributions.IntUniformDistribution,)\n+        categorical_distributions = (optuna.distributions.CategoricalDistribution,)\n+        supported_distributions = (\n+            real_distributions + int_distributions + categorical_distributions\n+        )\n+\n         for param_name, param_distribution in distributions.items():\n-            if isinstance(param_distribution, optuna.distributions.UniformDistribution):\n-                self._hp_params[param_name] = hp.HParam(\n-                    param_name, hp.RealInterval(param_distribution.low, param_distribution.high)\n-                )\n-            elif isinstance(param_distribution, optuna.distributions.LogUniformDistribution):\n-                self._hp_params[param_name] = hp.HParam(\n-                    param_name, hp.RealInterval(param_distribution.low, param_distribution.high)\n-                )\n-            elif isinstance(param_distribution, optuna.distributions.DiscreteUniformDistribution):\n+            if isinstance(param_distribution, real_distributions):\n                 self._hp_params[param_name] = hp.HParam(\n-                    param_name, hp.RealInterval(param_distribution.low, param_distribution.high)\n+                    param_name,\n+                    hp.RealInterval(float(param_distribution.low), float(param_distribution.high)),\n                 )\n-            elif isinstance(param_distribution, optuna.distributions.IntUniformDistribution):\n+            elif isinstance(param_distribution, int_distributions):\n                 self._hp_params[param_name] = hp.HParam(\n-                    param_name, hp.IntInterval(param_distribution.low, param_distribution.high)\n+                    param_name,\n+                    hp.IntInterval(param_distribution.low, param_distribution.high),\n                 )\n-            elif isinstance(param_distribution, optuna.distributions.CategoricalDistribution):\n+            elif isinstance(param_distribution, categorical_distributions):\n                 self._hp_params[param_name] = hp.HParam(\n-                    param_name, hp.Discrete(param_distribution.choices)\n+                    param_name,\n+                    hp.Discrete(param_distribution.choices),\n                 )\n             else:\n                 distribution_list = [\n-                    optuna.distributions.UniformDistribution.__name__,\n-                    optuna.distributions.LogUniformDistribution.__name__,\n-                    optuna.distributions.DiscreteUniformDistribution.__name__,\n-                    optuna.distributions.IntUniformDistribution.__name__,\n-                    optuna.distributions.CategoricalDistribution.__name__,\n+                    distribution.__name__ for distribution in supported_distributions\n                 ]\n                 raise NotImplementedError(\n                     \"The distribution {} is not implemented. \"\n", "issue": "Tensorboard integration with integers for parameter boundaries\nWhen using the `optuna.integration.tensorboard.TensorBoardCallback` with integer parameters for `suggest_uniform`, a `TypeError` is raised.\r\n\r\n## Expected behavior\r\nNo TypeError should be raised, instead the integer should be casted to a float.\r\n\r\n## Environment\r\n\r\n- Optuna version: 2.5.0\r\n- Python version: 3.7.5\r\n- OS: Debian Testing\r\n- (Optional) Other libraries and their versions: Tensorboard 2.4.1\r\n\r\n## Error messages, stack traces, or logs\r\n\r\n```\r\nTraceback (most recent call last):\r\n  File \"tensorboard_test.py\", line 13, in <module>\r\n    study.optimize(objective, n_trials=10, timeout=600, callbacks=[tensorboard_callback])\r\n  File \"/home/timon/.pyenv/versions/3.7.5/lib/python3.7/site-packages/optuna/study.py\", line 385, in optimize\r\n    show_progress_bar=show_progress_bar,\r\n  File \"/home/timon/.pyenv/versions/3.7.5/lib/python3.7/site-packages/optuna/_optimize.py\", line 73, in _optimize\r\n    progress_bar=progress_bar,\r\n  File \"/home/timon/.pyenv/versions/3.7.5/lib/python3.7/site-packages/optuna/_optimize.py\", line 178, in _optimize_sequential\r\n    callback(study, frozen_trial)\r\n  File \"/home/timon/.pyenv/versions/3.7.5/lib/python3.7/site-packages/optuna/integration/tensorboard.py\", line 41, in __call__\r\n    self._initialization(study)\r\n  File \"/home/timon/.pyenv/versions/3.7.5/lib/python3.7/site-packages/optuna/integration/tensorboard.py\", line 102, in _initialization\r\n    self._add_distributions(trial.distributions)\r\n  File \"/home/timon/.pyenv/versions/3.7.5/lib/python3.7/site-packages/optuna/integration/tensorboard.py\", line 62, in _add_distributions\r\n    param_name, hp.RealInterval(param_distribution.low, param_distribution.high)\r\n  File \"/home/timon/.pyenv/versions/3.7.5/lib/python3.7/site-packages/tensorboard/plugins/hparams/summary_v2.py\", line 444, in __init__\r\n    raise TypeError(\"min_value must be a float: %r\" % (min_value,))\r\nTypeError: min_value must be a float: 0\r\n```\r\n\r\n## Steps to reproduce\r\n\r\n1. Execute the example below\r\n\r\n## Reproducible examples (optional)\r\n\r\n```python\r\nimport optuna\r\nfrom optuna.integration.tensorboard import TensorBoardCallback\r\n\r\ndef objective(trial: optuna.trial.Trial) -> float:\r\n    param = trial.suggest_uniform(\"param\", 0, 1)\r\n    return param**2\r\n\r\ntensorboard_callback = TensorBoardCallback(\"logs/\", metric_name=\"value\")\r\n\r\nstudy = optuna.create_study()\r\nstudy.optimize(objective, n_trials=10, callbacks=[tensorboard_callback])\r\n```\n", "before_files": [{"content": "import os\nfrom typing import Dict\n\nimport optuna\nfrom optuna._experimental import experimental\nfrom optuna._imports import try_import\n\n\nwith try_import() as _imports:\n    from tensorboard.plugins.hparams import api as hp\n    import tensorflow as tf\n\n\n@experimental(\"2.0.0\")\nclass TensorBoardCallback(object):\n    \"\"\"Callback to track Optuna trials with TensorBoard.\n\n    This callback adds relevant information that is tracked by Optuna to TensorBoard.\n\n    See `the example <https://github.com/optuna/optuna/blob/master/\n    examples/tensorboard_simple.py>`_.\n\n    Args:\n        dirname:\n            Directory to store TensorBoard logs.\n        metric_name:\n            Name of the metric. Since the metric itself is just a number,\n            `metric_name` can be used to give it a name. So you know later\n            if it was roc-auc or accuracy.\n\n    \"\"\"\n\n    def __init__(self, dirname: str, metric_name: str) -> None:\n        _imports.check()\n        self._dirname = dirname\n        self._metric_name = metric_name\n        self._hp_params: Dict[str, hp.HParam] = {}\n\n    def __call__(self, study: optuna.study.Study, trial: optuna.trial.FrozenTrial) -> None:\n        if len(self._hp_params) == 0:\n            self._initialization(study)\n        if trial.state != optuna.trial.TrialState.COMPLETE:\n            return\n        trial_value = trial.value if trial.value is not None else float(\"nan\")\n        hparams = {}\n        for param_name, param_value in trial.params.items():\n            if param_name not in self._hp_params:\n                self._add_distributions(trial.distributions)\n            hparams[self._hp_params[param_name]] = param_value\n        run_name = \"trial-%d\" % trial.number\n        run_dir = os.path.join(self._dirname, run_name)\n        with tf.summary.create_file_writer(run_dir).as_default():\n            hp.hparams(hparams, trial_id=run_name)  # record the values used in this trial\n            tf.summary.scalar(self._metric_name, trial_value, step=trial.number)\n\n    def _add_distributions(\n        self, distributions: Dict[str, optuna.distributions.BaseDistribution]\n    ) -> None:\n        for param_name, param_distribution in distributions.items():\n            if isinstance(param_distribution, optuna.distributions.UniformDistribution):\n                self._hp_params[param_name] = hp.HParam(\n                    param_name, hp.RealInterval(param_distribution.low, param_distribution.high)\n                )\n            elif isinstance(param_distribution, optuna.distributions.LogUniformDistribution):\n                self._hp_params[param_name] = hp.HParam(\n                    param_name, hp.RealInterval(param_distribution.low, param_distribution.high)\n                )\n            elif isinstance(param_distribution, optuna.distributions.DiscreteUniformDistribution):\n                self._hp_params[param_name] = hp.HParam(\n                    param_name, hp.RealInterval(param_distribution.low, param_distribution.high)\n                )\n            elif isinstance(param_distribution, optuna.distributions.IntUniformDistribution):\n                self._hp_params[param_name] = hp.HParam(\n                    param_name, hp.IntInterval(param_distribution.low, param_distribution.high)\n                )\n            elif isinstance(param_distribution, optuna.distributions.CategoricalDistribution):\n                self._hp_params[param_name] = hp.HParam(\n                    param_name, hp.Discrete(param_distribution.choices)\n                )\n            else:\n                distribution_list = [\n                    optuna.distributions.UniformDistribution.__name__,\n                    optuna.distributions.LogUniformDistribution.__name__,\n                    optuna.distributions.DiscreteUniformDistribution.__name__,\n                    optuna.distributions.IntUniformDistribution.__name__,\n                    optuna.distributions.CategoricalDistribution.__name__,\n                ]\n                raise NotImplementedError(\n                    \"The distribution {} is not implemented. \"\n                    \"The parameter distribution should be one of the {}\".format(\n                        param_distribution, distribution_list\n                    )\n                )\n\n    def _initialization(self, study: optuna.Study) -> None:\n        completed_trials = [\n            trial\n            for trial in study.get_trials(deepcopy=False)\n            if trial.state == optuna.trial.TrialState.COMPLETE\n        ]\n        for trial in completed_trials:\n            self._add_distributions(trial.distributions)\n", "path": "optuna/integration/tensorboard.py"}], "after_files": [{"content": "import os\nfrom typing import Dict\n\nimport optuna\nfrom optuna._experimental import experimental\nfrom optuna._imports import try_import\n\n\nwith try_import() as _imports:\n    from tensorboard.plugins.hparams import api as hp\n    import tensorflow as tf\n\n\n@experimental(\"2.0.0\")\nclass TensorBoardCallback(object):\n    \"\"\"Callback to track Optuna trials with TensorBoard.\n\n    This callback adds relevant information that is tracked by Optuna to TensorBoard.\n\n    See `the example <https://github.com/optuna/optuna/blob/master/\n    examples/tensorboard_simple.py>`_.\n\n    Args:\n        dirname:\n            Directory to store TensorBoard logs.\n        metric_name:\n            Name of the metric. Since the metric itself is just a number,\n            `metric_name` can be used to give it a name. So you know later\n            if it was roc-auc or accuracy.\n\n    \"\"\"\n\n    def __init__(self, dirname: str, metric_name: str) -> None:\n        _imports.check()\n        self._dirname = dirname\n        self._metric_name = metric_name\n        self._hp_params: Dict[str, hp.HParam] = {}\n\n    def __call__(self, study: optuna.study.Study, trial: optuna.trial.FrozenTrial) -> None:\n        if len(self._hp_params) == 0:\n            self._initialization(study)\n        if trial.state != optuna.trial.TrialState.COMPLETE:\n            return\n        trial_value = trial.value if trial.value is not None else float(\"nan\")\n        hparams = {}\n        for param_name, param_value in trial.params.items():\n            if param_name not in self._hp_params:\n                self._add_distributions(trial.distributions)\n            hparams[self._hp_params[param_name]] = param_value\n        run_name = \"trial-%d\" % trial.number\n        run_dir = os.path.join(self._dirname, run_name)\n        with tf.summary.create_file_writer(run_dir).as_default():\n            hp.hparams(hparams, trial_id=run_name)  # record the values used in this trial\n            tf.summary.scalar(self._metric_name, trial_value, step=trial.number)\n\n    def _add_distributions(\n        self, distributions: Dict[str, optuna.distributions.BaseDistribution]\n    ) -> None:\n        real_distributions = (\n            optuna.distributions.UniformDistribution,\n            optuna.distributions.LogUniformDistribution,\n            optuna.distributions.DiscreteUniformDistribution,\n        )\n        int_distributions = (optuna.distributions.IntUniformDistribution,)\n        categorical_distributions = (optuna.distributions.CategoricalDistribution,)\n        supported_distributions = (\n            real_distributions + int_distributions + categorical_distributions\n        )\n\n        for param_name, param_distribution in distributions.items():\n            if isinstance(param_distribution, real_distributions):\n                self._hp_params[param_name] = hp.HParam(\n                    param_name,\n                    hp.RealInterval(float(param_distribution.low), float(param_distribution.high)),\n                )\n            elif isinstance(param_distribution, int_distributions):\n                self._hp_params[param_name] = hp.HParam(\n                    param_name,\n                    hp.IntInterval(param_distribution.low, param_distribution.high),\n                )\n            elif isinstance(param_distribution, categorical_distributions):\n                self._hp_params[param_name] = hp.HParam(\n                    param_name,\n                    hp.Discrete(param_distribution.choices),\n                )\n            else:\n                distribution_list = [\n                    distribution.__name__ for distribution in supported_distributions\n                ]\n                raise NotImplementedError(\n                    \"The distribution {} is not implemented. \"\n                    \"The parameter distribution should be one of the {}\".format(\n                        param_distribution, distribution_list\n                    )\n                )\n\n    def _initialization(self, study: optuna.Study) -> None:\n        completed_trials = [\n            trial\n            for trial in study.get_trials(deepcopy=False)\n            if trial.state == optuna.trial.TrialState.COMPLETE\n        ]\n        for trial in completed_trials:\n            self._add_distributions(trial.distributions)\n", "path": "optuna/integration/tensorboard.py"}]}