prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  [DOC] transformers tutorial
  There should be a notebook that explains the different transformer scitypes, and how transformers work in `sktime`.
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `sktime/datatypes/_series/_examples.py`
  Content:
  ```
  1 # -*- coding: utf-8 -*-
  2 """Example generation for testing.
  3 
  4 Exports dict of examples, useful for testing as fixtures.
  5 
  6 example_dict: dict indexed by triple
  7   1st element = mtype - str
  8   2nd element = considered as this scitype - str
  9   3rd element = int - index of example
  10 elements are data objects, considered examples for the mtype
  11     all examples with same index are considered "same" on scitype content
  12     if None, indicates that representation is not possible
  13 
  14 example_lossy: dict of bool indexed by triple
  15   1st element = mtype - str
  16   2nd element = considered as this scitype - str
  17   3rd element = int - index of example
  18 elements are bool, indicate whether representation has information removed
  19     all examples with same index are considered "same" on scitype content
  20 
  21 example_metadata: dict of metadata dict, indexed by pair
  22   1st element = considered as this scitype - str
  23   2nd element = int - index of example
  24   (there is no "mtype" element, as properties are equal for all mtypes)
  25 elements are metadata dict, as returned by check_is_mtype
  26     used as expected return of check_is_mtype in tests
  27 
  28 overall, conversions from non-lossy representations to any other ones
  29     should yield the element exactly, identidally (given same index)
  30 """
  31 
  32 import numpy as np
  33 import pandas as pd
  34 
  35 from sktime.utils.validation._dependencies import _check_soft_dependencies
  36 
  37 example_dict = dict()
  38 example_dict_lossy = dict()
  39 example_dict_metadata = dict()
  40 
  41 ###
  42 # example 0: univariate
  43 
  44 s = pd.Series([1, 4, 0.5, -3], dtype=np.float64, name="a")
  45 
  46 example_dict[("pd.Series", "Series", 0)] = s
  47 example_dict_lossy[("pd.Series", "Series", 0)] = False
  48 
  49 df = pd.DataFrame({"a": [1, 4, 0.5, -3]})
  50 
  51 example_dict[("pd.DataFrame", "Series", 0)] = df
  52 example_dict_lossy[("pd.DataFrame", "Series", 0)] = False
  53 
  54 arr = np.array([[1], [4], [0.5], [-3]])
  55 
  56 example_dict[("np.ndarray", "Series", 0)] = arr
  57 example_dict_lossy[("np.ndarray", "Series", 0)] = True
  58 
  59 if _check_soft_dependencies("xarray", severity="none"):
  60     import xarray as xr
  61 
  62     da = xr.DataArray(
  63         [[1], [4], [0.5], [-3]],
  64         coords=[[0, 1, 2, 3], ["a"]],
  65     )
  66 
  67     example_dict[("xr.DataArray", "Series", 0)] = da
  68     example_dict_lossy[("xr.DataArray", "Series", 0)] = False
  69 
  70 
  71 example_dict_metadata[("Series", 0)] = {
  72     "is_univariate": True,
  73     "is_equally_spaced": True,
  74     "is_empty": False,
  75     "has_nans": False,
  76 }
  77 
  78 ###
  79 # example 1: multivariate
  80 
  81 example_dict[("pd.Series", "Series", 1)] = None
  82 example_dict_lossy[("pd.Series", "Series", 1)] = None
  83 
  84 df = pd.DataFrame({"a": [1, 4, 0.5, -3], "b": [3, 7, 2, -3 / 7]})
  85 
  86 example_dict[("pd.DataFrame", "Series", 1)] = df
  87 example_dict_lossy[("pd.DataFrame", "Series", 1)] = False
  88 
  89 arr = np.array([[1, 3], [4, 7], [0.5, 2], [-3, -3 / 7]])
  90 
  91 example_dict[("np.ndarray", "Series", 1)] = arr
  92 example_dict_lossy[("np.ndarray", "Series", 1)] = True
  93 if _check_soft_dependencies("xarray", severity="none"):
  94     import xarray as xr
  95 
  96     da = xr.DataArray(
  97         [[1, 3], [4, 7], [0.5, 2], [-3, -3 / 7]],
  98         coords=[[0, 1, 2, 3], ["a", "b"]],
  99     )
  100 
  101     example_dict[("xr.DataArray", "Series", 1)] = da
  102     example_dict_lossy[("xr.DataArray", "Series", 1)] = False
  103 
  104 example_dict_metadata[("Series", 1)] = {
  105     "is_univariate": False,
  106     "is_equally_spaced": True,
  107     "is_empty": False,
  108     "has_nans": False,
  109 }
  110 
  111 ###
  112 # example 2: multivariate, positive
  113 
  114 example_dict[("pd.Series", "Series", 2)] = None
  115 example_dict_lossy[("pd.Series", "Series", 2)] = None
  116 
  117 df = pd.DataFrame({"a": [1, 4, 0.5, 3], "b": [3, 7, 2, 3 / 7]})
  118 
  119 example_dict[("pd.DataFrame", "Series", 2)] = df
  120 example_dict_lossy[("pd.DataFrame", "Series", 2)] = False
  121 
  122 arr = np.array([[1, 3], [4, 7], [0.5, 2], [3, 3 / 7]])
  123 
  124 example_dict[("np.ndarray", "Series", 2)] = arr
  125 example_dict_lossy[("np.ndarray", "Series", 2)] = True
  126 
  127 if _check_soft_dependencies("xarray", severity="none"):
  128     import xarray as xr
  129 
  130     da = xr.DataArray(
  131         [[1, 3], [4, 7], [0.5, 2], [3, 3 / 7]],
  132         coords=[[0, 1, 2, 3], ["a", "b"]],
  133     )
  134 
  135     example_dict[("xr.DataArray", "Series", 2)] = da
  136     example_dict_lossy[("xr.DataArray", "Series", 2)] = False
  137 
  138 
  139 example_dict_metadata[("Series", 2)] = {
  140     "is_univariate": False,
  141     "is_equally_spaced": True,
  142     "is_empty": False,
  143     "has_nans": False,
  144 }
  145
  ```
  --- 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/sktime/datatypes/_series/_examples.py b/sktime/datatypes/_series/_examples.py
  --- a/sktime/datatypes/_series/_examples.py
  +++ b/sktime/datatypes/_series/_examples.py
  @@ -142,3 +142,39 @@
       "is_empty": False,
       "has_nans": False,
   }
  +
  +###
  +# example 3: univariate, positive
  +
  +s = pd.Series([1, 4, 0.5, 3], dtype=np.float64, name="a")
  +
  +example_dict[("pd.Series", "Series", 3)] = s
  +example_dict_lossy[("pd.Series", "Series", 3)] = False
  +
  +df = pd.DataFrame({"a": [1, 4, 0.5, 3]})
  +
  +example_dict[("pd.DataFrame", "Series", 3)] = df
  +example_dict_lossy[("pd.DataFrame", "Series", 3)] = False
  +
  +arr = np.array([[1], [4], [0.5], [3]])
  +
  +example_dict[("np.ndarray", "Series", 3)] = arr
  +example_dict_lossy[("np.ndarray", "Series", 3)] = True
  +
  +if _check_soft_dependencies("xarray", severity="none"):
  +    import xarray as xr
  +
  +    da = xr.DataArray(
  +        [[1], [4], [0.5], [3]],
  +        coords=[[0, 1, 2, 3], ["a"]],
  +    )
  +
  +    example_dict[("xr.DataArray", "Series", 3)] = da
  +    example_dict_lossy[("xr.DataArray", "Series", 3)] = False
  +
  +example_dict_metadata[("Series", 3)] = {
  +    "is_univariate": True,
  +    "is_equally_spaced": True,
  +    "is_empty": False,
  +    "has_nans": False,
  +}
  
verification_info: {"golden_diff": "diff --git a/sktime/datatypes/_series/_examples.py b/sktime/datatypes/_series/_examples.py\n--- a/sktime/datatypes/_series/_examples.py\n+++ b/sktime/datatypes/_series/_examples.py\n@@ -142,3 +142,39 @@\n     \"is_empty\": False,\n     \"has_nans\": False,\n }\n+\n+###\n+# example 3: univariate, positive\n+\n+s = pd.Series([1, 4, 0.5, 3], dtype=np.float64, name=\"a\")\n+\n+example_dict[(\"pd.Series\", \"Series\", 3)] = s\n+example_dict_lossy[(\"pd.Series\", \"Series\", 3)] = False\n+\n+df = pd.DataFrame({\"a\": [1, 4, 0.5, 3]})\n+\n+example_dict[(\"pd.DataFrame\", \"Series\", 3)] = df\n+example_dict_lossy[(\"pd.DataFrame\", \"Series\", 3)] = False\n+\n+arr = np.array([[1], [4], [0.5], [3]])\n+\n+example_dict[(\"np.ndarray\", \"Series\", 3)] = arr\n+example_dict_lossy[(\"np.ndarray\", \"Series\", 3)] = True\n+\n+if _check_soft_dependencies(\"xarray\", severity=\"none\"):\n+    import xarray as xr\n+\n+    da = xr.DataArray(\n+        [[1], [4], [0.5], [3]],\n+        coords=[[0, 1, 2, 3], [\"a\"]],\n+    )\n+\n+    example_dict[(\"xr.DataArray\", \"Series\", 3)] = da\n+    example_dict_lossy[(\"xr.DataArray\", \"Series\", 3)] = False\n+\n+example_dict_metadata[(\"Series\", 3)] = {\n+    \"is_univariate\": True,\n+    \"is_equally_spaced\": True,\n+    \"is_empty\": False,\n+    \"has_nans\": False,\n+}\n", "issue": "[DOC] transformers tutorial\nThere should be a notebook that explains the different transformer scitypes, and how transformers work in `sktime`.\n", "before_files": [{"content": "# -*- coding: utf-8 -*-\n\"\"\"Example generation for testing.\n\nExports dict of examples, useful for testing as fixtures.\n\nexample_dict: dict indexed by triple\n  1st element = mtype - str\n  2nd element = considered as this scitype - str\n  3rd element = int - index of example\nelements are data objects, considered examples for the mtype\n    all examples with same index are considered \"same\" on scitype content\n    if None, indicates that representation is not possible\n\nexample_lossy: dict of bool indexed by triple\n  1st element = mtype - str\n  2nd element = considered as this scitype - str\n  3rd element = int - index of example\nelements are bool, indicate whether representation has information removed\n    all examples with same index are considered \"same\" on scitype content\n\nexample_metadata: dict of metadata dict, indexed by pair\n  1st element = considered as this scitype - str\n  2nd element = int - index of example\n  (there is no \"mtype\" element, as properties are equal for all mtypes)\nelements are metadata dict, as returned by check_is_mtype\n    used as expected return of check_is_mtype in tests\n\noverall, conversions from non-lossy representations to any other ones\n    should yield the element exactly, identidally (given same index)\n\"\"\"\n\nimport numpy as np\nimport pandas as pd\n\nfrom sktime.utils.validation._dependencies import _check_soft_dependencies\n\nexample_dict = dict()\nexample_dict_lossy = dict()\nexample_dict_metadata = dict()\n\n###\n# example 0: univariate\n\ns = pd.Series([1, 4, 0.5, -3], dtype=np.float64, name=\"a\")\n\nexample_dict[(\"pd.Series\", \"Series\", 0)] = s\nexample_dict_lossy[(\"pd.Series\", \"Series\", 0)] = False\n\ndf = pd.DataFrame({\"a\": [1, 4, 0.5, -3]})\n\nexample_dict[(\"pd.DataFrame\", \"Series\", 0)] = df\nexample_dict_lossy[(\"pd.DataFrame\", \"Series\", 0)] = False\n\narr = np.array([[1], [4], [0.5], [-3]])\n\nexample_dict[(\"np.ndarray\", \"Series\", 0)] = arr\nexample_dict_lossy[(\"np.ndarray\", \"Series\", 0)] = True\n\nif _check_soft_dependencies(\"xarray\", severity=\"none\"):\n    import xarray as xr\n\n    da = xr.DataArray(\n        [[1], [4], [0.5], [-3]],\n        coords=[[0, 1, 2, 3], [\"a\"]],\n    )\n\n    example_dict[(\"xr.DataArray\", \"Series\", 0)] = da\n    example_dict_lossy[(\"xr.DataArray\", \"Series\", 0)] = False\n\n\nexample_dict_metadata[(\"Series\", 0)] = {\n    \"is_univariate\": True,\n    \"is_equally_spaced\": True,\n    \"is_empty\": False,\n    \"has_nans\": False,\n}\n\n###\n# example 1: multivariate\n\nexample_dict[(\"pd.Series\", \"Series\", 1)] = None\nexample_dict_lossy[(\"pd.Series\", \"Series\", 1)] = None\n\ndf = pd.DataFrame({\"a\": [1, 4, 0.5, -3], \"b\": [3, 7, 2, -3 / 7]})\n\nexample_dict[(\"pd.DataFrame\", \"Series\", 1)] = df\nexample_dict_lossy[(\"pd.DataFrame\", \"Series\", 1)] = False\n\narr = np.array([[1, 3], [4, 7], [0.5, 2], [-3, -3 / 7]])\n\nexample_dict[(\"np.ndarray\", \"Series\", 1)] = arr\nexample_dict_lossy[(\"np.ndarray\", \"Series\", 1)] = True\nif _check_soft_dependencies(\"xarray\", severity=\"none\"):\n    import xarray as xr\n\n    da = xr.DataArray(\n        [[1, 3], [4, 7], [0.5, 2], [-3, -3 / 7]],\n        coords=[[0, 1, 2, 3], [\"a\", \"b\"]],\n    )\n\n    example_dict[(\"xr.DataArray\", \"Series\", 1)] = da\n    example_dict_lossy[(\"xr.DataArray\", \"Series\", 1)] = False\n\nexample_dict_metadata[(\"Series\", 1)] = {\n    \"is_univariate\": False,\n    \"is_equally_spaced\": True,\n    \"is_empty\": False,\n    \"has_nans\": False,\n}\n\n###\n# example 2: multivariate, positive\n\nexample_dict[(\"pd.Series\", \"Series\", 2)] = None\nexample_dict_lossy[(\"pd.Series\", \"Series\", 2)] = None\n\ndf = pd.DataFrame({\"a\": [1, 4, 0.5, 3], \"b\": [3, 7, 2, 3 / 7]})\n\nexample_dict[(\"pd.DataFrame\", \"Series\", 2)] = df\nexample_dict_lossy[(\"pd.DataFrame\", \"Series\", 2)] = False\n\narr = np.array([[1, 3], [4, 7], [0.5, 2], [3, 3 / 7]])\n\nexample_dict[(\"np.ndarray\", \"Series\", 2)] = arr\nexample_dict_lossy[(\"np.ndarray\", \"Series\", 2)] = True\n\nif _check_soft_dependencies(\"xarray\", severity=\"none\"):\n    import xarray as xr\n\n    da = xr.DataArray(\n        [[1, 3], [4, 7], [0.5, 2], [3, 3 / 7]],\n        coords=[[0, 1, 2, 3], [\"a\", \"b\"]],\n    )\n\n    example_dict[(\"xr.DataArray\", \"Series\", 2)] = da\n    example_dict_lossy[(\"xr.DataArray\", \"Series\", 2)] = False\n\n\nexample_dict_metadata[(\"Series\", 2)] = {\n    \"is_univariate\": False,\n    \"is_equally_spaced\": True,\n    \"is_empty\": False,\n    \"has_nans\": False,\n}\n", "path": "sktime/datatypes/_series/_examples.py"}], "after_files": [{"content": "# -*- coding: utf-8 -*-\n\"\"\"Example generation for testing.\n\nExports dict of examples, useful for testing as fixtures.\n\nexample_dict: dict indexed by triple\n  1st element = mtype - str\n  2nd element = considered as this scitype - str\n  3rd element = int - index of example\nelements are data objects, considered examples for the mtype\n    all examples with same index are considered \"same\" on scitype content\n    if None, indicates that representation is not possible\n\nexample_lossy: dict of bool indexed by triple\n  1st element = mtype - str\n  2nd element = considered as this scitype - str\n  3rd element = int - index of example\nelements are bool, indicate whether representation has information removed\n    all examples with same index are considered \"same\" on scitype content\n\nexample_metadata: dict of metadata dict, indexed by pair\n  1st element = considered as this scitype - str\n  2nd element = int - index of example\n  (there is no \"mtype\" element, as properties are equal for all mtypes)\nelements are metadata dict, as returned by check_is_mtype\n    used as expected return of check_is_mtype in tests\n\noverall, conversions from non-lossy representations to any other ones\n    should yield the element exactly, identidally (given same index)\n\"\"\"\n\nimport numpy as np\nimport pandas as pd\n\nfrom sktime.utils.validation._dependencies import _check_soft_dependencies\n\nexample_dict = dict()\nexample_dict_lossy = dict()\nexample_dict_metadata = dict()\n\n###\n# example 0: univariate\n\ns = pd.Series([1, 4, 0.5, -3], dtype=np.float64, name=\"a\")\n\nexample_dict[(\"pd.Series\", \"Series\", 0)] = s\nexample_dict_lossy[(\"pd.Series\", \"Series\", 0)] = False\n\ndf = pd.DataFrame({\"a\": [1, 4, 0.5, -3]})\n\nexample_dict[(\"pd.DataFrame\", \"Series\", 0)] = df\nexample_dict_lossy[(\"pd.DataFrame\", \"Series\", 0)] = False\n\narr = np.array([[1], [4], [0.5], [-3]])\n\nexample_dict[(\"np.ndarray\", \"Series\", 0)] = arr\nexample_dict_lossy[(\"np.ndarray\", \"Series\", 0)] = True\n\nif _check_soft_dependencies(\"xarray\", severity=\"none\"):\n    import xarray as xr\n\n    da = xr.DataArray(\n        [[1], [4], [0.5], [-3]],\n        coords=[[0, 1, 2, 3], [\"a\"]],\n    )\n\n    example_dict[(\"xr.DataArray\", \"Series\", 0)] = da\n    example_dict_lossy[(\"xr.DataArray\", \"Series\", 0)] = False\n\n\nexample_dict_metadata[(\"Series\", 0)] = {\n    \"is_univariate\": True,\n    \"is_equally_spaced\": True,\n    \"is_empty\": False,\n    \"has_nans\": False,\n}\n\n###\n# example 1: multivariate\n\nexample_dict[(\"pd.Series\", \"Series\", 1)] = None\nexample_dict_lossy[(\"pd.Series\", \"Series\", 1)] = None\n\ndf = pd.DataFrame({\"a\": [1, 4, 0.5, -3], \"b\": [3, 7, 2, -3 / 7]})\n\nexample_dict[(\"pd.DataFrame\", \"Series\", 1)] = df\nexample_dict_lossy[(\"pd.DataFrame\", \"Series\", 1)] = False\n\narr = np.array([[1, 3], [4, 7], [0.5, 2], [-3, -3 / 7]])\n\nexample_dict[(\"np.ndarray\", \"Series\", 1)] = arr\nexample_dict_lossy[(\"np.ndarray\", \"Series\", 1)] = True\nif _check_soft_dependencies(\"xarray\", severity=\"none\"):\n    import xarray as xr\n\n    da = xr.DataArray(\n        [[1, 3], [4, 7], [0.5, 2], [-3, -3 / 7]],\n        coords=[[0, 1, 2, 3], [\"a\", \"b\"]],\n    )\n\n    example_dict[(\"xr.DataArray\", \"Series\", 1)] = da\n    example_dict_lossy[(\"xr.DataArray\", \"Series\", 1)] = False\n\nexample_dict_metadata[(\"Series\", 1)] = {\n    \"is_univariate\": False,\n    \"is_equally_spaced\": True,\n    \"is_empty\": False,\n    \"has_nans\": False,\n}\n\n###\n# example 2: multivariate, positive\n\nexample_dict[(\"pd.Series\", \"Series\", 2)] = None\nexample_dict_lossy[(\"pd.Series\", \"Series\", 2)] = None\n\ndf = pd.DataFrame({\"a\": [1, 4, 0.5, 3], \"b\": [3, 7, 2, 3 / 7]})\n\nexample_dict[(\"pd.DataFrame\", \"Series\", 2)] = df\nexample_dict_lossy[(\"pd.DataFrame\", \"Series\", 2)] = False\n\narr = np.array([[1, 3], [4, 7], [0.5, 2], [3, 3 / 7]])\n\nexample_dict[(\"np.ndarray\", \"Series\", 2)] = arr\nexample_dict_lossy[(\"np.ndarray\", \"Series\", 2)] = True\n\nif _check_soft_dependencies(\"xarray\", severity=\"none\"):\n    import xarray as xr\n\n    da = xr.DataArray(\n        [[1, 3], [4, 7], [0.5, 2], [3, 3 / 7]],\n        coords=[[0, 1, 2, 3], [\"a\", \"b\"]],\n    )\n\n    example_dict[(\"xr.DataArray\", \"Series\", 2)] = da\n    example_dict_lossy[(\"xr.DataArray\", \"Series\", 2)] = False\n\n\nexample_dict_metadata[(\"Series\", 2)] = {\n    \"is_univariate\": False,\n    \"is_equally_spaced\": True,\n    \"is_empty\": False,\n    \"has_nans\": False,\n}\n\n###\n# example 3: univariate, positive\n\ns = pd.Series([1, 4, 0.5, 3], dtype=np.float64, name=\"a\")\n\nexample_dict[(\"pd.Series\", \"Series\", 3)] = s\nexample_dict_lossy[(\"pd.Series\", \"Series\", 3)] = False\n\ndf = pd.DataFrame({\"a\": [1, 4, 0.5, 3]})\n\nexample_dict[(\"pd.DataFrame\", \"Series\", 3)] = df\nexample_dict_lossy[(\"pd.DataFrame\", \"Series\", 3)] = False\n\narr = np.array([[1], [4], [0.5], [3]])\n\nexample_dict[(\"np.ndarray\", \"Series\", 3)] = arr\nexample_dict_lossy[(\"np.ndarray\", \"Series\", 3)] = True\n\nif _check_soft_dependencies(\"xarray\", severity=\"none\"):\n    import xarray as xr\n\n    da = xr.DataArray(\n        [[1], [4], [0.5], [3]],\n        coords=[[0, 1, 2, 3], [\"a\"]],\n    )\n\n    example_dict[(\"xr.DataArray\", \"Series\", 3)] = da\n    example_dict_lossy[(\"xr.DataArray\", \"Series\", 3)] = False\n\nexample_dict_metadata[(\"Series\", 3)] = {\n    \"is_univariate\": True,\n    \"is_equally_spaced\": True,\n    \"is_empty\": False,\n    \"has_nans\": False,\n}\n", "path": "sktime/datatypes/_series/_examples.py"}]}