We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Ingestion request: NEJLT vol 7 & 8
This is a new (to the anthology) venue.

* **Venue name:** Northern European Journal of Language Technology (NEJLT)
* **Website:** [nejlt.org](https://www.nejlt.org/)
* Papers at https://doi.org/10.3384/nejlt.2000-1533.8.1 and https://doi.org/10.3384/nejlt.2000-1533.7.1

I propose:
* volume identifier `nejlt`
* volume titles in the format _Northern European Journal of Language Technology, Volume n_

We're ready to send over two volumes, for 2021 and 2022. Iff and when this is OK with you, I'm happy to go assemble ACLPUB format volumes and send them.

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `bin/anthology/data.py`
Content:
```
1 # -*- coding: utf-8 -*-
2 #
3 # Copyright 2019 Marcel Bollmann <marcel@bollmann.me>
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 #     http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 
17 ################################################################################
18 # This file contains all constants and functions that have hardcoded data (such
19 # as URLs or journal titles) which does not come from the XML.  This is to
20 # provide a single file where such hardcoded data can be looked up and/or
21 # changed.
22 ################################################################################
23 
24 import os
25 import re
26 
27 from typing import Tuple
28 
29 
30 # this is the canonical URL.  In contrast to all other
31 # URL templates, it always links to the official anthology.
32 CANONICAL_URL_TEMPLATE = "https://aclanthology.org/{}"
33 
34 # the prefix is used in different programs and we need to set it everywhere
35 # We use a environment variable to set this and not have to forward the value
36 # through all the programs. If this does not look like the best idea, keep in mind
37 # that the structure is historically grown -- from 2019 to 2020 :-)
38 try:
39     ANTHOLOGY_PREFIX = os.environ["ANTHOLOGY_PREFIX"]
40 except:
41     ANTHOLOGY_PREFIX = "https://aclanthology.org"
42 
43 ATTACHMENT_PREFIX = ANTHOLOGY_PREFIX + "/attachments"
44 ATTACHMENT_TEMPLATE = ATTACHMENT_PREFIX + "/{}"
45 
46 PDF_LOCATION_TEMPLATE = ANTHOLOGY_PREFIX + "/{}.pdf"
47 PDF_THUMBNAIL_LOCATION_TEMPLATE = ANTHOLOGY_PREFIX + "/thumb/{}.jpg"
48 
49 VIDEO_LOCATION_TEMPLATE = ANTHOLOGY_PREFIX + "/{}"
50 
51 # Regular expression matching full Anthology IDs
52 ANTHOLOGY_ID_REGEX = r"[A-Z]\d{2}-\d{4}"
53 
54 # Anthology file location on server
55 # Defaults to ~/anthology-files
56 ANTHOLOGY_FILE_DIR = os.environ.get(
57     "ANTHOLOGY_FILES", os.path.join(os.environ["HOME"], "anthology-files")
58 )
59 
60 # Names of XML elements that may appear multiple times
61 LIST_ELEMENTS = (
62     "attachment",
63     "author",
64     "editor",
65     "video",
66     "revision",
67     "erratum",
68     "award",
69     "pwcdataset",
70     "video",
71     "venue",
72     "colocated",
73 )
74 
75 # New-style IDs that should be handled as journals
76 JOURNAL_IDS = ("cl", "tacl", "tal", "lilt")
77 
78 # Constants associated with DOI assignation
79 DOI_URL_PREFIX = "https://dx.doi.org/"
80 DOI_PREFIX = "10.18653/v1/"
81 
82 # Default ingestion date (= unknown)
83 UNKNOWN_INGEST_DATE = "1900-01-01"
84 
85 # The venue format must match this pattern
86 VENUE_FORMAT = r"^[a-z\d]+$"
87 
88 
89 def match_volume_and_issue(booktitle) -> Tuple[str, str]:
90     """Parses a volume name and issue name from a title.
91 
92     Examples:
93     - <booktitle>Computational Linguistics, Volume 26, Number 1, March 2000</booktitle>
94     - <booktitle>Traitement Automatique des Langues 2011 Volume 52 Numéro 1</booktitle>
95     - <booktitle>Computational Linguistics, Volume 26, Number 1, March 2000</booktitle>
96 
97     :param booktitle: The booktitle
98     :return: the volume and issue numbers
99     """
100     volume_no = re.search(r"Volume\s*(\d+)", booktitle, flags=re.IGNORECASE)
101     if volume_no is not None:
102         volume_no = volume_no.group(1)
103 
104     issue_no = re.search(
105         r"(Number|Numéro|Issue)\s*(\d+-?\d*)", booktitle, flags=re.IGNORECASE
106     )
107     if issue_no is not None:
108         issue_no = issue_no.group(2)
109 
110     return volume_no, issue_no
111 
112 
113 def get_journal_info(top_level_id, volume_title) -> Tuple[str, str, str]:
114     """Returns info about the journal: title, volume no., and issue no.
115     Currently (Feb 2023), this information is parsed from the <booktitle> tag!
116     We should move instead to an explicit representation. See
117 
118         https://github.com/acl-org/acl-anthology/issues/2379
119 
120     :param top_level_id: The collection ID
121     :param volume_title: The text from the <booktitle> tag
122     :return: The journal title, volume number, and issue number
123     """
124 
125     # TODO: consider moving this from code to data (perhaps
126     # under <booktitle> in the volume metadata
127 
128     top_level_id = top_level_id.split(".")[-1]  # for new-style IDs; is a no-op otherwise
129 
130     journal_title = None
131     volume_no = None
132     issue_no = None
133 
134     if top_level_id == "cl":
135         # <booktitle>Computational Linguistics, Volume 26, Number 1, March 2000</booktitle>
136         journal_title = "Computational Linguistics"
137         volume_no, issue_no = match_volume_and_issue(volume_title)
138 
139     elif top_level_id == "lilt":
140         # <booktitle>Linguistic Issues in Language Technology, Volume 10, 2015</booktitle>
141         journal_title = "Linguistic Issues in Language Technology"
142         volume_no, _ = match_volume_and_issue(volume_title)
143 
144     elif top_level_id == "tal":
145         # <booktitle>Traitement Automatique des Langues 2011 Volume 52 Numéro 1</booktitle>
146         journal_title = "Traitement Automatique des Langues"
147         volume_no, issue_no = match_volume_and_issue(volume_title)
148 
149     elif top_level_id[0] == "J":
150         # <booktitle>Computational Linguistics, Volume 26, Number 1, March 2000</booktitle>
151         year = int(top_level_id[1:3])
152         if year >= 65 and year <= 83:
153             journal_title = "American Journal of Computational Linguistics"
154         else:
155             journal_title = "Computational Linguistics"
156 
157         volume_no, issue_no = match_volume_and_issue(volume_title)
158 
159     elif top_level_id[0] == "Q" or top_level_id == "tacl":
160         journal_title = "Transactions of the Association for Computational Linguistics"
161         volume_no, _ = match_volume_and_issue(volume_title)
162 
163     else:
164         journal_title = volume_title
165 
166     return journal_title, volume_no, issue_no
167
```
--- 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()

```

diff --git a/bin/anthology/data.py b/bin/anthology/data.py
--- a/bin/anthology/data.py
+++ b/bin/anthology/data.py
@@ -146,6 +146,10 @@
         journal_title = "Traitement Automatique des Langues"
         volume_no, issue_no = match_volume_and_issue(volume_title)
 
+    elif top_level_id == "nejlt":
+        journal_title = "Northern European Journal of Language Technology"
+        volume_no, _ = match_volume_and_issue(volume_title)
+
     elif top_level_id[0] == "J":
         # <booktitle>Computational Linguistics, Volume 26, Number 1, March 2000</booktitle>
         year = int(top_level_id[1:3])

{"golden_diff": "diff --git a/bin/anthology/data.py b/bin/anthology/data.py\n--- a/bin/anthology/data.py\n+++ b/bin/anthology/data.py\n@@ -146,6 +146,10 @@\n         journal_title = \"Traitement Automatique des Langues\"\n         volume_no, issue_no = match_volume_and_issue(volume_title)\n \n+    elif top_level_id == \"nejlt\":\n+        journal_title = \"Northern European Journal of Language Technology\"\n+        volume_no, _ = match_volume_and_issue(volume_title)\n+\n     elif top_level_id[0] == \"J\":\n         # <booktitle>Computational Linguistics, Volume 26, Number 1, March 2000</booktitle>\n         year = int(top_level_id[1:3])\n", "issue": "Ingestion request: NEJLT vol 7 & 8\nThis is a new (to the anthology) venue.\r\n\r\n* **Venue name:** Northern European Journal of Language Technology (NEJLT)\r\n* **Website:** [nejlt.org](https://www.nejlt.org/)\r\n* Papers at https://doi.org/10.3384/nejlt.2000-1533.8.1 and https://doi.org/10.3384/nejlt.2000-1533.7.1\r\n\r\nI propose:\r\n* volume identifier `nejlt`\r\n* volume titles in the format _Northern European Journal of Language Technology, Volume n_\r\n\r\nWe're ready to send over two volumes, for 2021 and 2022. Iff and when this is OK with you, I'm happy to go assemble ACLPUB format volumes and send them.\n", "before_files": [{"content": "# -*- coding: utf-8 -*-\n#\n# Copyright 2019 Marcel Bollmann <marcel@bollmann.me>\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n################################################################################\n# This file contains all constants and functions that have hardcoded data (such\n# as URLs or journal titles) which does not come from the XML.  This is to\n# provide a single file where such hardcoded data can be looked up and/or\n# changed.\n################################################################################\n\nimport os\nimport re\n\nfrom typing import Tuple\n\n\n# this is the canonical URL.  In contrast to all other\n# URL templates, it always links to the official anthology.\nCANONICAL_URL_TEMPLATE = \"https://aclanthology.org/{}\"\n\n# the prefix is used in different programs and we need to set it everywhere\n# We use a environment variable to set this and not have to forward the value\n# through all the programs. If this does not look like the best idea, keep in mind\n# that the structure is historically grown -- from 2019 to 2020 :-)\ntry:\n    ANTHOLOGY_PREFIX = os.environ[\"ANTHOLOGY_PREFIX\"]\nexcept:\n    ANTHOLOGY_PREFIX = \"https://aclanthology.org\"\n\nATTACHMENT_PREFIX = ANTHOLOGY_PREFIX + \"/attachments\"\nATTACHMENT_TEMPLATE = ATTACHMENT_PREFIX + \"/{}\"\n\nPDF_LOCATION_TEMPLATE = ANTHOLOGY_PREFIX + \"/{}.pdf\"\nPDF_THUMBNAIL_LOCATION_TEMPLATE = ANTHOLOGY_PREFIX + \"/thumb/{}.jpg\"\n\nVIDEO_LOCATION_TEMPLATE = ANTHOLOGY_PREFIX + \"/{}\"\n\n# Regular expression matching full Anthology IDs\nANTHOLOGY_ID_REGEX = r\"[A-Z]\\d{2}-\\d{4}\"\n\n# Anthology file location on server\n# Defaults to ~/anthology-files\nANTHOLOGY_FILE_DIR = os.environ.get(\n    \"ANTHOLOGY_FILES\", os.path.join(os.environ[\"HOME\"], \"anthology-files\")\n)\n\n# Names of XML elements that may appear multiple times\nLIST_ELEMENTS = (\n    \"attachment\",\n    \"author\",\n    \"editor\",\n    \"video\",\n    \"revision\",\n    \"erratum\",\n    \"award\",\n    \"pwcdataset\",\n    \"video\",\n    \"venue\",\n    \"colocated\",\n)\n\n# New-style IDs that should be handled as journals\nJOURNAL_IDS = (\"cl\", \"tacl\", \"tal\", \"lilt\")\n\n# Constants associated with DOI assignation\nDOI_URL_PREFIX = \"https://dx.doi.org/\"\nDOI_PREFIX = \"10.18653/v1/\"\n\n# Default ingestion date (= unknown)\nUNKNOWN_INGEST_DATE = \"1900-01-01\"\n\n# The venue format must match this pattern\nVENUE_FORMAT = r\"^[a-z\\d]+$\"\n\n\ndef match_volume_and_issue(booktitle) -> Tuple[str, str]:\n    \"\"\"Parses a volume name and issue name from a title.\n\n    Examples:\n    - <booktitle>Computational Linguistics, Volume 26, Number 1, March 2000</booktitle>\n    - <booktitle>Traitement Automatique des Langues 2011 Volume 52 Num\u00e9ro 1</booktitle>\n    - <booktitle>Computational Linguistics, Volume 26, Number 1, March 2000</booktitle>\n\n    :param booktitle: The booktitle\n    :return: the volume and issue numbers\n    \"\"\"\n    volume_no = re.search(r\"Volume\\s*(\\d+)\", booktitle, flags=re.IGNORECASE)\n    if volume_no is not None:\n        volume_no = volume_no.group(1)\n\n    issue_no = re.search(\n        r\"(Number|Num\u00e9ro|Issue)\\s*(\\d+-?\\d*)\", booktitle, flags=re.IGNORECASE\n    )\n    if issue_no is not None:\n        issue_no = issue_no.group(2)\n\n    return volume_no, issue_no\n\n\ndef get_journal_info(top_level_id, volume_title) -> Tuple[str, str, str]:\n    \"\"\"Returns info about the journal: title, volume no., and issue no.\n    Currently (Feb 2023), this information is parsed from the <booktitle> tag!\n    We should move instead to an explicit representation. See\n\n        https://github.com/acl-org/acl-anthology/issues/2379\n\n    :param top_level_id: The collection ID\n    :param volume_title: The text from the <booktitle> tag\n    :return: The journal title, volume number, and issue number\n    \"\"\"\n\n    # TODO: consider moving this from code to data (perhaps\n    # under <booktitle> in the volume metadata\n\n    top_level_id = top_level_id.split(\".\")[-1]  # for new-style IDs; is a no-op otherwise\n\n    journal_title = None\n    volume_no = None\n    issue_no = None\n\n    if top_level_id == \"cl\":\n        # <booktitle>Computational Linguistics, Volume 26, Number 1, March 2000</booktitle>\n        journal_title = \"Computational Linguistics\"\n        volume_no, issue_no = match_volume_and_issue(volume_title)\n\n    elif top_level_id == \"lilt\":\n        # <booktitle>Linguistic Issues in Language Technology, Volume 10, 2015</booktitle>\n        journal_title = \"Linguistic Issues in Language Technology\"\n        volume_no, _ = match_volume_and_issue(volume_title)\n\n    elif top_level_id == \"tal\":\n        # <booktitle>Traitement Automatique des Langues 2011 Volume 52 Num\u00e9ro 1</booktitle>\n        journal_title = \"Traitement Automatique des Langues\"\n        volume_no, issue_no = match_volume_and_issue(volume_title)\n\n    elif top_level_id[0] == \"J\":\n        # <booktitle>Computational Linguistics, Volume 26, Number 1, March 2000</booktitle>\n        year = int(top_level_id[1:3])\n        if year >= 65 and year <= 83:\n            journal_title = \"American Journal of Computational Linguistics\"\n        else:\n            journal_title = \"Computational Linguistics\"\n\n        volume_no, issue_no = match_volume_and_issue(volume_title)\n\n    elif top_level_id[0] == \"Q\" or top_level_id == \"tacl\":\n        journal_title = \"Transactions of the Association for Computational Linguistics\"\n        volume_no, _ = match_volume_and_issue(volume_title)\n\n    else:\n        journal_title = volume_title\n\n    return journal_title, volume_no, issue_no\n", "path": "bin/anthology/data.py"}], "after_files": [{"content": "# -*- coding: utf-8 -*-\n#\n# Copyright 2019 Marcel Bollmann <marcel@bollmann.me>\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n################################################################################\n# This file contains all constants and functions that have hardcoded data (such\n# as URLs or journal titles) which does not come from the XML.  This is to\n# provide a single file where such hardcoded data can be looked up and/or\n# changed.\n################################################################################\n\nimport os\nimport re\n\nfrom typing import Tuple\n\n\n# this is the canonical URL.  In contrast to all other\n# URL templates, it always links to the official anthology.\nCANONICAL_URL_TEMPLATE = \"https://aclanthology.org/{}\"\n\n# the prefix is used in different programs and we need to set it everywhere\n# We use a environment variable to set this and not have to forward the value\n# through all the programs. If this does not look like the best idea, keep in mind\n# that the structure is historically grown -- from 2019 to 2020 :-)\ntry:\n    ANTHOLOGY_PREFIX = os.environ[\"ANTHOLOGY_PREFIX\"]\nexcept:\n    ANTHOLOGY_PREFIX = \"https://aclanthology.org\"\n\nATTACHMENT_PREFIX = ANTHOLOGY_PREFIX + \"/attachments\"\nATTACHMENT_TEMPLATE = ATTACHMENT_PREFIX + \"/{}\"\n\nPDF_LOCATION_TEMPLATE = ANTHOLOGY_PREFIX + \"/{}.pdf\"\nPDF_THUMBNAIL_LOCATION_TEMPLATE = ANTHOLOGY_PREFIX + \"/thumb/{}.jpg\"\n\nVIDEO_LOCATION_TEMPLATE = ANTHOLOGY_PREFIX + \"/{}\"\n\n# Regular expression matching full Anthology IDs\nANTHOLOGY_ID_REGEX = r\"[A-Z]\\d{2}-\\d{4}\"\n\n# Anthology file location on server\n# Defaults to ~/anthology-files\nANTHOLOGY_FILE_DIR = os.environ.get(\n    \"ANTHOLOGY_FILES\", os.path.join(os.environ[\"HOME\"], \"anthology-files\")\n)\n\n# Names of XML elements that may appear multiple times\nLIST_ELEMENTS = (\n    \"attachment\",\n    \"author\",\n    \"editor\",\n    \"video\",\n    \"revision\",\n    \"erratum\",\n    \"award\",\n    \"pwcdataset\",\n    \"video\",\n    \"venue\",\n    \"colocated\",\n)\n\n# New-style IDs that should be handled as journals\nJOURNAL_IDS = (\"cl\", \"tacl\", \"tal\", \"lilt\")\n\n# Constants associated with DOI assignation\nDOI_URL_PREFIX = \"https://dx.doi.org/\"\nDOI_PREFIX = \"10.18653/v1/\"\n\n# Default ingestion date (= unknown)\nUNKNOWN_INGEST_DATE = \"1900-01-01\"\n\n# The venue format must match this pattern\nVENUE_FORMAT = r\"^[a-z\\d]+$\"\n\n\ndef match_volume_and_issue(booktitle) -> Tuple[str, str]:\n    \"\"\"Parses a volume name and issue name from a title.\n\n    Examples:\n    - <booktitle>Computational Linguistics, Volume 26, Number 1, March 2000</booktitle>\n    - <booktitle>Traitement Automatique des Langues 2011 Volume 52 Num\u00e9ro 1</booktitle>\n    - <booktitle>Computational Linguistics, Volume 26, Number 1, March 2000</booktitle>\n\n    :param booktitle: The booktitle\n    :return: the volume and issue numbers\n    \"\"\"\n    volume_no = re.search(r\"Volume\\s*(\\d+)\", booktitle, flags=re.IGNORECASE)\n    if volume_no is not None:\n        volume_no = volume_no.group(1)\n\n    issue_no = re.search(\n        r\"(Number|Num\u00e9ro|Issue)\\s*(\\d+-?\\d*)\", booktitle, flags=re.IGNORECASE\n    )\n    if issue_no is not None:\n        issue_no = issue_no.group(2)\n\n    return volume_no, issue_no\n\n\ndef get_journal_info(top_level_id, volume_title) -> Tuple[str, str, str]:\n    \"\"\"Returns info about the journal: title, volume no., and issue no.\n    Currently (Feb 2023), this information is parsed from the <booktitle> tag!\n    We should move instead to an explicit representation. See\n\n        https://github.com/acl-org/acl-anthology/issues/2379\n\n    :param top_level_id: The collection ID\n    :param volume_title: The text from the <booktitle> tag\n    :return: The journal title, volume number, and issue number\n    \"\"\"\n\n    # TODO: consider moving this from code to data (perhaps\n    # under <booktitle> in the volume metadata\n\n    top_level_id = top_level_id.split(\".\")[-1]  # for new-style IDs; is a no-op otherwise\n\n    journal_title = None\n    volume_no = None\n    issue_no = None\n\n    if top_level_id == \"cl\":\n        # <booktitle>Computational Linguistics, Volume 26, Number 1, March 2000</booktitle>\n        journal_title = \"Computational Linguistics\"\n        volume_no, issue_no = match_volume_and_issue(volume_title)\n\n    elif top_level_id == \"lilt\":\n        # <booktitle>Linguistic Issues in Language Technology, Volume 10, 2015</booktitle>\n        journal_title = \"Linguistic Issues in Language Technology\"\n        volume_no, _ = match_volume_and_issue(volume_title)\n\n    elif top_level_id == \"tal\":\n        # <booktitle>Traitement Automatique des Langues 2011 Volume 52 Num\u00e9ro 1</booktitle>\n        journal_title = \"Traitement Automatique des Langues\"\n        volume_no, issue_no = match_volume_and_issue(volume_title)\n\n    elif top_level_id == \"nejlt\":\n        journal_title = \"Northern European Journal of Language Technology\"\n        volume_no, _ = match_volume_and_issue(volume_title)\n\n    elif top_level_id[0] == \"J\":\n        # <booktitle>Computational Linguistics, Volume 26, Number 1, March 2000</booktitle>\n        year = int(top_level_id[1:3])\n        if year >= 65 and year <= 83:\n            journal_title = \"American Journal of Computational Linguistics\"\n        else:\n            journal_title = \"Computational Linguistics\"\n\n        volume_no, issue_no = match_volume_and_issue(volume_title)\n\n    elif top_level_id[0] == \"Q\" or top_level_id == \"tacl\":\n        journal_title = \"Transactions of the Association for Computational Linguistics\"\n        volume_no, _ = match_volume_and_issue(volume_title)\n\n    else:\n        journal_title = volume_title\n\n    return journal_title, volume_no, issue_no\n", "path": "bin/anthology/data.py"}]}