prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  tracking.JSONDataSet documentation and docstring are not accurate
  Here is the source code for `tracking.JSONDataSet`: https://kedro.readthedocs.io/en/latest/_modules/kedro/extras/datasets/tracking/json_dataset.html#JSONDataSet
  
  The `_load` method has been overriden to raise a `DataSetError` when called.
  
  The documentation does not reflect that well. What has to be fixed:
  
  - The `tracking.JSONDataSet` documentation and API ref should mention that this dataset cannot be loaded (see https://kedro.readthedocs.io/en/latest/kedro.extras.datasets.tracking.JSONDataSet.html)
  - The `tracking.JSONDataSet` class docstring should not call `data_set.load()` (this code snippet that was probably copied from the `json.JSONDataSet`)
  
  </issue>
  <code>
  [start of kedro/extras/datasets/tracking/json_dataset.py]
  1 """``JSONDataSet`` saves data to a JSON file using an underlying
  2 filesystem (e.g.: local, S3, GCS). It uses native json to handle the JSON file.
  3 The ``JSONDataSet`` is part of Kedro Experiment Tracking. The dataset is versioned by default.
  4 """
  5 from typing import NoReturn
  6 
  7 from kedro.extras.datasets.json import JSONDataSet as JDS
  8 from kedro.io.core import DataSetError
  9 
  10 
  11 class JSONDataSet(JDS):
  12     """``JSONDataSet`` saves data to a JSON file using an underlying
  13     filesystem (e.g.: local, S3, GCS). It uses native json to handle the JSON file.
  14     The ``JSONDataSet`` is part of Kedro Experiment Tracking.
  15     The dataset is versioned by default.
  16 
  17         Example:
  18         ::
  19 
  20         >>> from kedro.extras.datasets.tracking import JSONDataSet
  21         >>>
  22         >>> data = {'col1': 1, 'col2': 0.23, 'col3': 0.002}
  23         >>>
  24         >>> # data_set = JSONDataSet(filepath="gcs://bucket/test.json")
  25         >>> data_set = JSONDataSet(filepath="test.json")
  26         >>> data_set.save(data)
  27         >>> reloaded = data_set.load()
  28         >>> assert data == reloaded
  29 
  30     """
  31 
  32     versioned = True
  33 
  34     def _load(self) -> NoReturn:
  35         raise DataSetError(f"Loading not supported for '{self.__class__.__name__}'")
  36
  [end of kedro/extras/datasets/tracking/json_dataset.py]
  [start of kedro/extras/datasets/tracking/metrics_dataset.py]
  1 """``MetricsDataSet`` saves data to a JSON file using an underlying
  2 filesystem (e.g.: local, S3, GCS). It uses native json to handle the JSON file.
  3 The ``MetricsDataSet`` is part of Kedro Experiment Tracking. The dataset is versioned by default
  4 and only takes metrics of numeric values.
  5 """
  6 import json
  7 from typing import Dict, NoReturn
  8 
  9 from kedro.extras.datasets.json import JSONDataSet
  10 from kedro.io.core import DataSetError, get_filepath_str
  11 
  12 
  13 class MetricsDataSet(JSONDataSet):
  14     """``MetricsDataSet`` saves data to a JSON file using an underlying
  15     filesystem (e.g.: local, S3, GCS). It uses native json to handle the JSON file.
  16     The ``MetricsDataSet`` is part of Kedro Experiment Tracking. The dataset is versioned by default
  17     and only takes metrics of numeric values.
  18 
  19         Example:
  20         ::
  21 
  22         >>> from kedro.extras.datasets.tracking import MetricsDataSet
  23         >>>
  24         >>> data = {'col1': 1, 'col2': 0.23, 'col3': 0.002}
  25         >>>
  26         >>> # data_set = MetricsDataSet(filepath="gcs://bucket/test.json")
  27         >>> data_set = MetricsDataSet(filepath="test.json")
  28         >>> data_set.save(data)
  29         >>> reloaded = data_set.load()
  30         >>> assert data == reloaded
  31 
  32     """
  33 
  34     versioned = True
  35 
  36     def _load(self) -> NoReturn:
  37         raise DataSetError(f"Loading not supported for '{self.__class__.__name__}'")
  38 
  39     def _save(self, data: Dict[str, float]) -> None:
  40         """Converts all values in the data from a ``MetricsDataSet`` to float to make sure
  41         they are numeric values which can be displayed in Kedro Viz and then saves the dataset.
  42         """
  43         try:
  44             for key, value in data.items():
  45                 data[key] = float(value)
  46         except ValueError as exc:
  47             raise DataSetError(
  48                 f"The MetricsDataSet expects only numeric values. {exc}"
  49             ) from exc
  50 
  51         save_path = get_filepath_str(self._get_save_path(), self._protocol)
  52 
  53         with self._fs.open(save_path, **self._fs_open_args_save) as fs_file:
  54             json.dump(data, fs_file, **self._save_args)
  55 
  56         self._invalidate_cache()
  57
  [end of kedro/extras/datasets/tracking/metrics_dataset.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/kedro/extras/datasets/tracking/json_dataset.py b/kedro/extras/datasets/tracking/json_dataset.py
  --- a/kedro/extras/datasets/tracking/json_dataset.py
  +++ b/kedro/extras/datasets/tracking/json_dataset.py
  @@ -12,7 +12,7 @@
       """``JSONDataSet`` saves data to a JSON file using an underlying
       filesystem (e.g.: local, S3, GCS). It uses native json to handle the JSON file.
       The ``JSONDataSet`` is part of Kedro Experiment Tracking.
  -    The dataset is versioned by default.
  +    The dataset is write-only and it is versioned by default.
   
           Example:
           ::
  @@ -24,8 +24,6 @@
           >>> # data_set = JSONDataSet(filepath="gcs://bucket/test.json")
           >>> data_set = JSONDataSet(filepath="test.json")
           >>> data_set.save(data)
  -        >>> reloaded = data_set.load()
  -        >>> assert data == reloaded
   
       """
   
  diff --git a/kedro/extras/datasets/tracking/metrics_dataset.py b/kedro/extras/datasets/tracking/metrics_dataset.py
  --- a/kedro/extras/datasets/tracking/metrics_dataset.py
  +++ b/kedro/extras/datasets/tracking/metrics_dataset.py
  @@ -12,9 +12,9 @@
   
   class MetricsDataSet(JSONDataSet):
       """``MetricsDataSet`` saves data to a JSON file using an underlying
  -    filesystem (e.g.: local, S3, GCS). It uses native json to handle the JSON file.
  -    The ``MetricsDataSet`` is part of Kedro Experiment Tracking. The dataset is versioned by default
  -    and only takes metrics of numeric values.
  +    filesystem (e.g.: local, S3, GCS). It uses native json to handle the JSON file. The
  +    ``MetricsDataSet`` is part of Kedro Experiment Tracking. The dataset is write-only,
  +    it is versioned by default and only takes metrics of numeric values.
   
           Example:
           ::
  @@ -26,8 +26,6 @@
           >>> # data_set = MetricsDataSet(filepath="gcs://bucket/test.json")
           >>> data_set = MetricsDataSet(filepath="test.json")
           >>> data_set.save(data)
  -        >>> reloaded = data_set.load()
  -        >>> assert data == reloaded
   
       """
  
verification_info: {"golden_diff": "diff --git a/kedro/extras/datasets/tracking/json_dataset.py b/kedro/extras/datasets/tracking/json_dataset.py\n--- a/kedro/extras/datasets/tracking/json_dataset.py\n+++ b/kedro/extras/datasets/tracking/json_dataset.py\n@@ -12,7 +12,7 @@\n     \"\"\"``JSONDataSet`` saves data to a JSON file using an underlying\n     filesystem (e.g.: local, S3, GCS). It uses native json to handle the JSON file.\n     The ``JSONDataSet`` is part of Kedro Experiment Tracking.\n-    The dataset is versioned by default.\n+    The dataset is write-only and it is versioned by default.\n \n         Example:\n         ::\n@@ -24,8 +24,6 @@\n         >>> # data_set = JSONDataSet(filepath=\"gcs://bucket/test.json\")\n         >>> data_set = JSONDataSet(filepath=\"test.json\")\n         >>> data_set.save(data)\n-        >>> reloaded = data_set.load()\n-        >>> assert data == reloaded\n \n     \"\"\"\n \ndiff --git a/kedro/extras/datasets/tracking/metrics_dataset.py b/kedro/extras/datasets/tracking/metrics_dataset.py\n--- a/kedro/extras/datasets/tracking/metrics_dataset.py\n+++ b/kedro/extras/datasets/tracking/metrics_dataset.py\n@@ -12,9 +12,9 @@\n \n class MetricsDataSet(JSONDataSet):\n     \"\"\"``MetricsDataSet`` saves data to a JSON file using an underlying\n-    filesystem (e.g.: local, S3, GCS). It uses native json to handle the JSON file.\n-    The ``MetricsDataSet`` is part of Kedro Experiment Tracking. The dataset is versioned by default\n-    and only takes metrics of numeric values.\n+    filesystem (e.g.: local, S3, GCS). It uses native json to handle the JSON file. The\n+    ``MetricsDataSet`` is part of Kedro Experiment Tracking. The dataset is write-only,\n+    it is versioned by default and only takes metrics of numeric values.\n \n         Example:\n         ::\n@@ -26,8 +26,6 @@\n         >>> # data_set = MetricsDataSet(filepath=\"gcs://bucket/test.json\")\n         >>> data_set = MetricsDataSet(filepath=\"test.json\")\n         >>> data_set.save(data)\n-        >>> reloaded = data_set.load()\n-        >>> assert data == reloaded\n \n     \"\"\"\n", "issue": "tracking.JSONDataSet documentation and docstring are not accurate\nHere is the source code for `tracking.JSONDataSet`: https://kedro.readthedocs.io/en/latest/_modules/kedro/extras/datasets/tracking/json_dataset.html#JSONDataSet\r\n\r\nThe `_load` method has been overriden to raise a `DataSetError` when called.\r\n\r\nThe documentation does not reflect that well. What has to be fixed:\r\n\r\n- The `tracking.JSONDataSet` documentation and API ref should mention that this dataset cannot be loaded (see https://kedro.readthedocs.io/en/latest/kedro.extras.datasets.tracking.JSONDataSet.html)\r\n- The `tracking.JSONDataSet` class docstring should not call `data_set.load()` (this code snippet that was probably copied from the `json.JSONDataSet`)\n", "before_files": [{"content": "\"\"\"``JSONDataSet`` saves data to a JSON file using an underlying\nfilesystem (e.g.: local, S3, GCS). It uses native json to handle the JSON file.\nThe ``JSONDataSet`` is part of Kedro Experiment Tracking. The dataset is versioned by default.\n\"\"\"\nfrom typing import NoReturn\n\nfrom kedro.extras.datasets.json import JSONDataSet as JDS\nfrom kedro.io.core import DataSetError\n\n\nclass JSONDataSet(JDS):\n    \"\"\"``JSONDataSet`` saves data to a JSON file using an underlying\n    filesystem (e.g.: local, S3, GCS). It uses native json to handle the JSON file.\n    The ``JSONDataSet`` is part of Kedro Experiment Tracking.\n    The dataset is versioned by default.\n\n        Example:\n        ::\n\n        >>> from kedro.extras.datasets.tracking import JSONDataSet\n        >>>\n        >>> data = {'col1': 1, 'col2': 0.23, 'col3': 0.002}\n        >>>\n        >>> # data_set = JSONDataSet(filepath=\"gcs://bucket/test.json\")\n        >>> data_set = JSONDataSet(filepath=\"test.json\")\n        >>> data_set.save(data)\n        >>> reloaded = data_set.load()\n        >>> assert data == reloaded\n\n    \"\"\"\n\n    versioned = True\n\n    def _load(self) -> NoReturn:\n        raise DataSetError(f\"Loading not supported for '{self.__class__.__name__}'\")\n", "path": "kedro/extras/datasets/tracking/json_dataset.py"}, {"content": "\"\"\"``MetricsDataSet`` saves data to a JSON file using an underlying\nfilesystem (e.g.: local, S3, GCS). It uses native json to handle the JSON file.\nThe ``MetricsDataSet`` is part of Kedro Experiment Tracking. The dataset is versioned by default\nand only takes metrics of numeric values.\n\"\"\"\nimport json\nfrom typing import Dict, NoReturn\n\nfrom kedro.extras.datasets.json import JSONDataSet\nfrom kedro.io.core import DataSetError, get_filepath_str\n\n\nclass MetricsDataSet(JSONDataSet):\n    \"\"\"``MetricsDataSet`` saves data to a JSON file using an underlying\n    filesystem (e.g.: local, S3, GCS). It uses native json to handle the JSON file.\n    The ``MetricsDataSet`` is part of Kedro Experiment Tracking. The dataset is versioned by default\n    and only takes metrics of numeric values.\n\n        Example:\n        ::\n\n        >>> from kedro.extras.datasets.tracking import MetricsDataSet\n        >>>\n        >>> data = {'col1': 1, 'col2': 0.23, 'col3': 0.002}\n        >>>\n        >>> # data_set = MetricsDataSet(filepath=\"gcs://bucket/test.json\")\n        >>> data_set = MetricsDataSet(filepath=\"test.json\")\n        >>> data_set.save(data)\n        >>> reloaded = data_set.load()\n        >>> assert data == reloaded\n\n    \"\"\"\n\n    versioned = True\n\n    def _load(self) -> NoReturn:\n        raise DataSetError(f\"Loading not supported for '{self.__class__.__name__}'\")\n\n    def _save(self, data: Dict[str, float]) -> None:\n        \"\"\"Converts all values in the data from a ``MetricsDataSet`` to float to make sure\n        they are numeric values which can be displayed in Kedro Viz and then saves the dataset.\n        \"\"\"\n        try:\n            for key, value in data.items():\n                data[key] = float(value)\n        except ValueError as exc:\n            raise DataSetError(\n                f\"The MetricsDataSet expects only numeric values. {exc}\"\n            ) from exc\n\n        save_path = get_filepath_str(self._get_save_path(), self._protocol)\n\n        with self._fs.open(save_path, **self._fs_open_args_save) as fs_file:\n            json.dump(data, fs_file, **self._save_args)\n\n        self._invalidate_cache()\n", "path": "kedro/extras/datasets/tracking/metrics_dataset.py"}]}