prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  todo-decorator-remove-solved
  Removed the code as the issue is closed.
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `torchtext/datasets/multi30k.py`
  Content:
  ```
  1 import os
  2 from functools import partial
  3 from typing import Union, Tuple
  4 
  5 from torchtext._internal.module_utils import is_module_available
  6 from torchtext.data.datasets_utils import (
  7     _wrap_split_argument,
  8     _create_dataset_directory,
  9 )
  10 
  11 if is_module_available("torchdata"):
  12     from torchdata.datapipes.iter import FileOpener, IterableWrapper
  13     from torchtext._download_hooks import HttpReader
  14 
  15 # TODO: Update URL to original once the server is back up (see https://github.com/pytorch/text/issues/1756)
  16 URL = {
  17     "train": r"https://raw.githubusercontent.com/neychev/small_DL_repo/master/datasets/Multi30k/training.tar.gz",
  18     "valid": r"https://raw.githubusercontent.com/neychev/small_DL_repo/master/datasets/Multi30k/validation.tar.gz",
  19     "test": r"https://raw.githubusercontent.com/neychev/small_DL_repo/master/datasets/Multi30k/mmt16_task1_test.tar.gz",
  20 }
  21 
  22 MD5 = {
  23     "train": "20140d013d05dd9a72dfde46478663ba05737ce983f478f960c1123c6671be5e",
  24     "valid": "a7aa20e9ebd5ba5adce7909498b94410996040857154dab029851af3a866da8c",
  25     "test": "6d1ca1dba99e2c5dd54cae1226ff11c2551e6ce63527ebb072a1f70f72a5cd36",
  26 }
  27 
  28 _PREFIX = {
  29     "train": "train",
  30     "valid": "val",
  31     "test": "test",
  32 }
  33 
  34 NUM_LINES = {
  35     "train": 29000,
  36     "valid": 1014,
  37     "test": 1000,
  38 }
  39 
  40 DATASET_NAME = "Multi30k"
  41 
  42 
  43 def _filepath_fn(root, split, _=None):
  44     return os.path.join(root, os.path.basename(URL[split]))
  45 
  46 
  47 def _decompressed_filepath_fn(root, split, language_pair, i, _):
  48     return os.path.join(root, f"{_PREFIX[split]}.{language_pair[i]}")
  49 
  50 
  51 def _filter_fn(split, language_pair, i, x):
  52     return f"{_PREFIX[split]}.{language_pair[i]}" in x[0]
  53 
  54 
  55 @_create_dataset_directory(dataset_name=DATASET_NAME)
  56 @_wrap_split_argument(("train", "valid", "test"))
  57 def Multi30k(root: str, split: Union[Tuple[str], str], language_pair: Tuple[str] = ("de", "en")):
  58     """Multi30k dataset
  59 
  60     .. warning::
  61 
  62         using datapipes is still currently subject to a few caveats. if you wish
  63         to use this dataset with shuffling, multi-processing, or distributed
  64         learning, please see :ref:`this note <datapipes_warnings>` for further
  65         instructions.
  66 
  67     For additional details refer to https://www.statmt.org/wmt16/multimodal-task.html#task1
  68 
  69     Number of lines per split:
  70         - train: 29000
  71         - valid: 1014
  72         - test: 1000
  73 
  74     Args:
  75         root: Directory where the datasets are saved. Default: os.path.expanduser('~/.torchtext/cache')
  76         split: split or splits to be returned. Can be a string or tuple of strings. Default: ('train', 'valid', 'test')
  77         language_pair: tuple or list containing src and tgt language. Available options are ('de','en') and ('en', 'de')
  78 
  79     :return: DataPipe that yields tuple of source and target sentences
  80     :rtype: (str, str)
  81     """
  82 
  83     assert len(language_pair) == 2, "language_pair must contain only 2 elements: src and tgt language respectively"
  84     assert tuple(sorted(language_pair)) == (
  85         "de",
  86         "en",
  87     ), "language_pair must be either ('de','en') or ('en', 'de')"
  88 
  89     if not is_module_available("torchdata"):
  90         raise ModuleNotFoundError(
  91             "Package `torchdata` not found. Please install following instructions at https://github.com/pytorch/data"
  92         )
  93 
  94     url_dp = IterableWrapper([URL[split]])
  95 
  96     cache_compressed_dp = url_dp.on_disk_cache(
  97         filepath_fn=partial(_filepath_fn, root, split),
  98         hash_dict={_filepath_fn(root, split): MD5[split]},
  99         hash_type="sha256",
  100     )
  101     cache_compressed_dp = HttpReader(cache_compressed_dp).end_caching(mode="wb", same_filepath_fn=True)
  102 
  103     cache_compressed_dp_1, cache_compressed_dp_2 = cache_compressed_dp.fork(num_instances=2)
  104 
  105     src_cache_decompressed_dp = cache_compressed_dp_1.on_disk_cache(
  106         filepath_fn=partial(_decompressed_filepath_fn, root, split, language_pair, 0)
  107     )
  108     src_cache_decompressed_dp = (
  109         FileOpener(src_cache_decompressed_dp, mode="b")
  110         .load_from_tar()
  111         .filter(partial(_filter_fn, split, language_pair, 0))
  112     )
  113     src_cache_decompressed_dp = src_cache_decompressed_dp.end_caching(mode="wb", same_filepath_fn=True)
  114 
  115     tgt_cache_decompressed_dp = cache_compressed_dp_2.on_disk_cache(
  116         filepath_fn=partial(_decompressed_filepath_fn, root, split, language_pair, 1)
  117     )
  118     tgt_cache_decompressed_dp = (
  119         FileOpener(tgt_cache_decompressed_dp, mode="b")
  120         .load_from_tar()
  121         .filter(partial(_filter_fn, split, language_pair, 1))
  122     )
  123     tgt_cache_decompressed_dp = tgt_cache_decompressed_dp.end_caching(mode="wb", same_filepath_fn=True)
  124 
  125     src_data_dp = FileOpener(src_cache_decompressed_dp, encoding="utf-8").readlines(
  126         return_path=False, strip_newline=True
  127     )
  128     tgt_data_dp = FileOpener(tgt_cache_decompressed_dp, encoding="utf-8").readlines(
  129         return_path=False, strip_newline=True
  130     )
  131 
  132     return src_data_dp.zip(tgt_data_dp).shuffle().set_shuffle(False).sharding_filter()
  133
  ```
  --- 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/torchtext/datasets/multi30k.py b/torchtext/datasets/multi30k.py
  --- a/torchtext/datasets/multi30k.py
  +++ b/torchtext/datasets/multi30k.py
  @@ -12,11 +12,10 @@
       from torchdata.datapipes.iter import FileOpener, IterableWrapper
       from torchtext._download_hooks import HttpReader
   
  -# TODO: Update URL to original once the server is back up (see https://github.com/pytorch/text/issues/1756)
   URL = {
  -    "train": r"https://raw.githubusercontent.com/neychev/small_DL_repo/master/datasets/Multi30k/training.tar.gz",
  -    "valid": r"https://raw.githubusercontent.com/neychev/small_DL_repo/master/datasets/Multi30k/validation.tar.gz",
  -    "test": r"https://raw.githubusercontent.com/neychev/small_DL_repo/master/datasets/Multi30k/mmt16_task1_test.tar.gz",
  +    "train": "http://www.quest.dcs.shef.ac.uk/wmt16_files_mmt/training.tar.gz",
  +    "valid": "http://www.quest.dcs.shef.ac.uk/wmt16_files_mmt/validation.tar.gz",
  +    "test": "http://www.quest.dcs.shef.ac.uk/wmt16_files_mmt/mmt16_task1_test.tar.gz",
   }
   
   MD5 = {
  
verification_info: {"golden_diff": "diff --git a/torchtext/datasets/multi30k.py b/torchtext/datasets/multi30k.py\n--- a/torchtext/datasets/multi30k.py\n+++ b/torchtext/datasets/multi30k.py\n@@ -12,11 +12,10 @@\n     from torchdata.datapipes.iter import FileOpener, IterableWrapper\n     from torchtext._download_hooks import HttpReader\n \n-# TODO: Update URL to original once the server is back up (see https://github.com/pytorch/text/issues/1756)\n URL = {\n-    \"train\": r\"https://raw.githubusercontent.com/neychev/small_DL_repo/master/datasets/Multi30k/training.tar.gz\",\n-    \"valid\": r\"https://raw.githubusercontent.com/neychev/small_DL_repo/master/datasets/Multi30k/validation.tar.gz\",\n-    \"test\": r\"https://raw.githubusercontent.com/neychev/small_DL_repo/master/datasets/Multi30k/mmt16_task1_test.tar.gz\",\n+    \"train\": \"http://www.quest.dcs.shef.ac.uk/wmt16_files_mmt/training.tar.gz\",\n+    \"valid\": \"http://www.quest.dcs.shef.ac.uk/wmt16_files_mmt/validation.tar.gz\",\n+    \"test\": \"http://www.quest.dcs.shef.ac.uk/wmt16_files_mmt/mmt16_task1_test.tar.gz\",\n }\n \n MD5 = {\n", "issue": "todo-decorator-remove-solved\nRemoved the code as the issue is closed.\n", "before_files": [{"content": "import os\nfrom functools import partial\nfrom typing import Union, Tuple\n\nfrom torchtext._internal.module_utils import is_module_available\nfrom torchtext.data.datasets_utils import (\n    _wrap_split_argument,\n    _create_dataset_directory,\n)\n\nif is_module_available(\"torchdata\"):\n    from torchdata.datapipes.iter import FileOpener, IterableWrapper\n    from torchtext._download_hooks import HttpReader\n\n# TODO: Update URL to original once the server is back up (see https://github.com/pytorch/text/issues/1756)\nURL = {\n    \"train\": r\"https://raw.githubusercontent.com/neychev/small_DL_repo/master/datasets/Multi30k/training.tar.gz\",\n    \"valid\": r\"https://raw.githubusercontent.com/neychev/small_DL_repo/master/datasets/Multi30k/validation.tar.gz\",\n    \"test\": r\"https://raw.githubusercontent.com/neychev/small_DL_repo/master/datasets/Multi30k/mmt16_task1_test.tar.gz\",\n}\n\nMD5 = {\n    \"train\": \"20140d013d05dd9a72dfde46478663ba05737ce983f478f960c1123c6671be5e\",\n    \"valid\": \"a7aa20e9ebd5ba5adce7909498b94410996040857154dab029851af3a866da8c\",\n    \"test\": \"6d1ca1dba99e2c5dd54cae1226ff11c2551e6ce63527ebb072a1f70f72a5cd36\",\n}\n\n_PREFIX = {\n    \"train\": \"train\",\n    \"valid\": \"val\",\n    \"test\": \"test\",\n}\n\nNUM_LINES = {\n    \"train\": 29000,\n    \"valid\": 1014,\n    \"test\": 1000,\n}\n\nDATASET_NAME = \"Multi30k\"\n\n\ndef _filepath_fn(root, split, _=None):\n    return os.path.join(root, os.path.basename(URL[split]))\n\n\ndef _decompressed_filepath_fn(root, split, language_pair, i, _):\n    return os.path.join(root, f\"{_PREFIX[split]}.{language_pair[i]}\")\n\n\ndef _filter_fn(split, language_pair, i, x):\n    return f\"{_PREFIX[split]}.{language_pair[i]}\" in x[0]\n\n\n@_create_dataset_directory(dataset_name=DATASET_NAME)\n@_wrap_split_argument((\"train\", \"valid\", \"test\"))\ndef Multi30k(root: str, split: Union[Tuple[str], str], language_pair: Tuple[str] = (\"de\", \"en\")):\n    \"\"\"Multi30k dataset\n\n    .. warning::\n\n        using datapipes is still currently subject to a few caveats. if you wish\n        to use this dataset with shuffling, multi-processing, or distributed\n        learning, please see :ref:`this note <datapipes_warnings>` for further\n        instructions.\n\n    For additional details refer to https://www.statmt.org/wmt16/multimodal-task.html#task1\n\n    Number of lines per split:\n        - train: 29000\n        - valid: 1014\n        - test: 1000\n\n    Args:\n        root: Directory where the datasets are saved. Default: os.path.expanduser('~/.torchtext/cache')\n        split: split or splits to be returned. Can be a string or tuple of strings. Default: ('train', 'valid', 'test')\n        language_pair: tuple or list containing src and tgt language. Available options are ('de','en') and ('en', 'de')\n\n    :return: DataPipe that yields tuple of source and target sentences\n    :rtype: (str, str)\n    \"\"\"\n\n    assert len(language_pair) == 2, \"language_pair must contain only 2 elements: src and tgt language respectively\"\n    assert tuple(sorted(language_pair)) == (\n        \"de\",\n        \"en\",\n    ), \"language_pair must be either ('de','en') or ('en', 'de')\"\n\n    if not is_module_available(\"torchdata\"):\n        raise ModuleNotFoundError(\n            \"Package `torchdata` not found. Please install following instructions at https://github.com/pytorch/data\"\n        )\n\n    url_dp = IterableWrapper([URL[split]])\n\n    cache_compressed_dp = url_dp.on_disk_cache(\n        filepath_fn=partial(_filepath_fn, root, split),\n        hash_dict={_filepath_fn(root, split): MD5[split]},\n        hash_type=\"sha256\",\n    )\n    cache_compressed_dp = HttpReader(cache_compressed_dp).end_caching(mode=\"wb\", same_filepath_fn=True)\n\n    cache_compressed_dp_1, cache_compressed_dp_2 = cache_compressed_dp.fork(num_instances=2)\n\n    src_cache_decompressed_dp = cache_compressed_dp_1.on_disk_cache(\n        filepath_fn=partial(_decompressed_filepath_fn, root, split, language_pair, 0)\n    )\n    src_cache_decompressed_dp = (\n        FileOpener(src_cache_decompressed_dp, mode=\"b\")\n        .load_from_tar()\n        .filter(partial(_filter_fn, split, language_pair, 0))\n    )\n    src_cache_decompressed_dp = src_cache_decompressed_dp.end_caching(mode=\"wb\", same_filepath_fn=True)\n\n    tgt_cache_decompressed_dp = cache_compressed_dp_2.on_disk_cache(\n        filepath_fn=partial(_decompressed_filepath_fn, root, split, language_pair, 1)\n    )\n    tgt_cache_decompressed_dp = (\n        FileOpener(tgt_cache_decompressed_dp, mode=\"b\")\n        .load_from_tar()\n        .filter(partial(_filter_fn, split, language_pair, 1))\n    )\n    tgt_cache_decompressed_dp = tgt_cache_decompressed_dp.end_caching(mode=\"wb\", same_filepath_fn=True)\n\n    src_data_dp = FileOpener(src_cache_decompressed_dp, encoding=\"utf-8\").readlines(\n        return_path=False, strip_newline=True\n    )\n    tgt_data_dp = FileOpener(tgt_cache_decompressed_dp, encoding=\"utf-8\").readlines(\n        return_path=False, strip_newline=True\n    )\n\n    return src_data_dp.zip(tgt_data_dp).shuffle().set_shuffle(False).sharding_filter()\n", "path": "torchtext/datasets/multi30k.py"}], "after_files": [{"content": "import os\nfrom functools import partial\nfrom typing import Union, Tuple\n\nfrom torchtext._internal.module_utils import is_module_available\nfrom torchtext.data.datasets_utils import (\n    _wrap_split_argument,\n    _create_dataset_directory,\n)\n\nif is_module_available(\"torchdata\"):\n    from torchdata.datapipes.iter import FileOpener, IterableWrapper\n    from torchtext._download_hooks import HttpReader\n\nURL = {\n    \"train\": \"http://www.quest.dcs.shef.ac.uk/wmt16_files_mmt/training.tar.gz\",\n    \"valid\": \"http://www.quest.dcs.shef.ac.uk/wmt16_files_mmt/validation.tar.gz\",\n    \"test\": \"http://www.quest.dcs.shef.ac.uk/wmt16_files_mmt/mmt16_task1_test.tar.gz\",\n}\n\nMD5 = {\n    \"train\": \"20140d013d05dd9a72dfde46478663ba05737ce983f478f960c1123c6671be5e\",\n    \"valid\": \"a7aa20e9ebd5ba5adce7909498b94410996040857154dab029851af3a866da8c\",\n    \"test\": \"6d1ca1dba99e2c5dd54cae1226ff11c2551e6ce63527ebb072a1f70f72a5cd36\",\n}\n\n_PREFIX = {\n    \"train\": \"train\",\n    \"valid\": \"val\",\n    \"test\": \"test\",\n}\n\nNUM_LINES = {\n    \"train\": 29000,\n    \"valid\": 1014,\n    \"test\": 1000,\n}\n\nDATASET_NAME = \"Multi30k\"\n\n\ndef _filepath_fn(root, split, _=None):\n    return os.path.join(root, os.path.basename(URL[split]))\n\n\ndef _decompressed_filepath_fn(root, split, language_pair, i, _):\n    return os.path.join(root, f\"{_PREFIX[split]}.{language_pair[i]}\")\n\n\ndef _filter_fn(split, language_pair, i, x):\n    return f\"{_PREFIX[split]}.{language_pair[i]}\" in x[0]\n\n\n@_create_dataset_directory(dataset_name=DATASET_NAME)\n@_wrap_split_argument((\"train\", \"valid\", \"test\"))\ndef Multi30k(root: str, split: Union[Tuple[str], str], language_pair: Tuple[str] = (\"de\", \"en\")):\n    \"\"\"Multi30k dataset\n\n    .. warning::\n\n        using datapipes is still currently subject to a few caveats. if you wish\n        to use this dataset with shuffling, multi-processing, or distributed\n        learning, please see :ref:`this note <datapipes_warnings>` for further\n        instructions.\n\n    For additional details refer to https://www.statmt.org/wmt16/multimodal-task.html#task1\n\n    Number of lines per split:\n        - train: 29000\n        - valid: 1014\n        - test: 1000\n\n    Args:\n        root: Directory where the datasets are saved. Default: os.path.expanduser('~/.torchtext/cache')\n        split: split or splits to be returned. Can be a string or tuple of strings. Default: ('train', 'valid', 'test')\n        language_pair: tuple or list containing src and tgt language. Available options are ('de','en') and ('en', 'de')\n\n    :return: DataPipe that yields tuple of source and target sentences\n    :rtype: (str, str)\n    \"\"\"\n\n    assert len(language_pair) == 2, \"language_pair must contain only 2 elements: src and tgt language respectively\"\n    assert tuple(sorted(language_pair)) == (\n        \"de\",\n        \"en\",\n    ), \"language_pair must be either ('de','en') or ('en', 'de')\"\n\n    if not is_module_available(\"torchdata\"):\n        raise ModuleNotFoundError(\n            \"Package `torchdata` not found. Please install following instructions at https://github.com/pytorch/data\"\n        )\n\n    url_dp = IterableWrapper([URL[split]])\n\n    cache_compressed_dp = url_dp.on_disk_cache(\n        filepath_fn=partial(_filepath_fn, root, split),\n        hash_dict={_filepath_fn(root, split): MD5[split]},\n        hash_type=\"sha256\",\n    )\n    cache_compressed_dp = HttpReader(cache_compressed_dp).end_caching(mode=\"wb\", same_filepath_fn=True)\n\n    cache_compressed_dp_1, cache_compressed_dp_2 = cache_compressed_dp.fork(num_instances=2)\n\n    src_cache_decompressed_dp = cache_compressed_dp_1.on_disk_cache(\n        filepath_fn=partial(_decompressed_filepath_fn, root, split, language_pair, 0)\n    )\n    src_cache_decompressed_dp = (\n        FileOpener(src_cache_decompressed_dp, mode=\"b\")\n        .load_from_tar()\n        .filter(partial(_filter_fn, split, language_pair, 0))\n    )\n    src_cache_decompressed_dp = src_cache_decompressed_dp.end_caching(mode=\"wb\", same_filepath_fn=True)\n\n    tgt_cache_decompressed_dp = cache_compressed_dp_2.on_disk_cache(\n        filepath_fn=partial(_decompressed_filepath_fn, root, split, language_pair, 1)\n    )\n    tgt_cache_decompressed_dp = (\n        FileOpener(tgt_cache_decompressed_dp, mode=\"b\")\n        .load_from_tar()\n        .filter(partial(_filter_fn, split, language_pair, 1))\n    )\n    tgt_cache_decompressed_dp = tgt_cache_decompressed_dp.end_caching(mode=\"wb\", same_filepath_fn=True)\n\n    src_data_dp = FileOpener(src_cache_decompressed_dp, encoding=\"utf-8\").readlines(\n        return_path=False, strip_newline=True\n    )\n    tgt_data_dp = FileOpener(tgt_cache_decompressed_dp, encoding=\"utf-8\").readlines(\n        return_path=False, strip_newline=True\n    )\n\n    return src_data_dp.zip(tgt_data_dp).shuffle().set_shuffle(False).sharding_filter()\n", "path": "torchtext/datasets/multi30k.py"}]}