We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Add assignee model to run.py
See also #61.

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `run.py`
Content:
```
1 # -*- coding: utf-8 -*-
2 # This Source Code Form is subject to the terms of the Mozilla Public
3 # License, v. 2.0. If a copy of the MPL was not distributed with this file,
4 # You can obtain one at http://mozilla.org/MPL/2.0/.
5 
6 import argparse
7 import csv
8 import os
9 from datetime import datetime
10 from datetime import timedelta
11 
12 import numpy as np
13 
14 from bugbug import bugzilla
15 from bugbug import db
16 from bugbug import repository  # noqa
17 
18 if __name__ == '__main__':
19     parser = argparse.ArgumentParser()
20     parser.add_argument('--lemmatization', help='Perform lemmatization (using spaCy)', action='store_true')
21     parser.add_argument('--train', help='Perform training', action='store_true')
22     parser.add_argument('--goal',
23                         help='Goal of the classifier',
24                         choices=['bug', 'regression', 'tracking', 'qaneeded', 'uplift', 'component', 'devdocneeded', 'defectfeaturetask'],
25                         default='bug')
26     parser.add_argument('--classifier', help='Type of the classifier', choices=['default', 'nn'], default='default')
27     parser.add_argument('--classify', help='Perform evaluation', action='store_true')
28     parser.add_argument('--generate-sheet', help='Perform evaluation on bugs from last week and generate a csv file', action='store_true')
29     args = parser.parse_args()
30 
31     model_file_name = '{}{}model'.format(
32         args.goal,
33         '' if args.classifier == 'default' else args.classifier
34     )
35 
36     if args.goal == 'bug':
37         from bugbug.models.bug import BugModel
38         model_class = BugModel
39     elif args.goal == 'defectfeaturetask':
40         from bugbug.models.defect_feature_task import DefectFeatureTaskModel
41         model_class = DefectFeatureTaskModel
42     elif args.goal == 'regression':
43         from bugbug.models.regression import RegressionModel
44         model_class = RegressionModel
45     elif args.goal == 'tracking':
46         from bugbug.models.tracking import TrackingModel
47         model_class = TrackingModel
48     elif args.goal == 'qaneeded':
49         from bugbug.models.qaneeded import QANeededModel
50         model_class = QANeededModel
51     elif args.goal == 'uplift':
52         from bugbug.models.uplift import UpliftModel
53         model_class = UpliftModel
54     elif args.goal == 'component':
55         if args.classifier == 'default':
56             from bugbug.models.component import ComponentModel
57             model_class = ComponentModel
58         elif args.classifier == 'nn':
59             from bugbug.models.component_nn import ComponentNNModel
60             model_class = ComponentNNModel
61     elif args.goal == 'devdocneeded':
62         from bugbug.models.devdocneeded import DevDocNeededModel
63         model_class = DevDocNeededModel
64 
65     if args.train:
66         db.download()
67 
68         model = model_class(args.lemmatization)
69         model.train()
70     else:
71         model = model_class.load(model_file_name)
72 
73     if args.classify:
74         for bug in bugzilla.get_bugs():
75             print(f'https://bugzilla.mozilla.org/show_bug.cgi?id={ bug["id"] } - { bug["summary"]} ')
76 
77             if model.calculate_importance:
78                 probas, importances = model.classify(bug, probabilities=True, importances=True)
79 
80                 feature_names = model.get_feature_names()
81                 for i, (importance, index, is_positive) in enumerate(importances):
82                     print(f'{i + 1}. \'{feature_names[int(index)]}\' ({"+" if (is_positive) else "-"}{importance})')
83             else:
84                 probas = model.classify(bug, probabilities=True, importances=False)
85 
86             if np.argmax(probas) == 1:
87                 print(f'Positive! {probas}')
88             else:
89                 print(f'Negative! {probas}')
90             input()
91 
92     if args.generate_sheet:
93         today = datetime.utcnow()
94         a_week_ago = today - timedelta(7)
95         bugs = bugzilla.download_bugs_between(a_week_ago, today)
96 
97         print(f'Classifying {len(bugs)} bugs...')
98 
99         rows = [
100             ['Bug', f'{args.goal}(model)', args.goal, 'Title']
101         ]
102 
103         for bug in bugs:
104             p = model.classify(bug, probabilities=True)
105             rows.append([f'https://bugzilla.mozilla.org/show_bug.cgi?id={bug["id"]}', 'y' if p[0][1] >= 0.7 else 'n', '', bug['summary']])
106 
107         os.makedirs('sheets', exist_ok=True)
108         with open(os.path.join('sheets', f'{args.goal}-{datetime.utcnow().strftime("%Y-%m-%d")}-labels.csv'), 'w') as f:
109             writer = csv.writer(f)
110             writer.writerows(rows)
111
```
--- 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/run.py b/run.py
--- a/run.py
+++ b/run.py
@@ -21,7 +21,7 @@
     parser.add_argument('--train', help='Perform training', action='store_true')
     parser.add_argument('--goal',
                         help='Goal of the classifier',
-                        choices=['bug', 'regression', 'tracking', 'qaneeded', 'uplift', 'component', 'devdocneeded', 'defectfeaturetask'],
+                        choices=['bug', 'regression', 'tracking', 'qaneeded', 'uplift', 'component', 'devdocneeded', 'defectfeaturetask', 'assignee'],
                         default='bug')
     parser.add_argument('--classifier', help='Type of the classifier', choices=['default', 'nn'], default='default')
     parser.add_argument('--classify', help='Perform evaluation', action='store_true')
@@ -61,6 +61,9 @@
     elif args.goal == 'devdocneeded':
         from bugbug.models.devdocneeded import DevDocNeededModel
         model_class = DevDocNeededModel
+    elif args.goal == 'assignee':
+        from bugbug.models.assignee import AssigneeModel
+        model_class = AssigneeModel
 
     if args.train:
         db.download()

{"golden_diff": "diff --git a/run.py b/run.py\n--- a/run.py\n+++ b/run.py\n@@ -21,7 +21,7 @@\n     parser.add_argument('--train', help='Perform training', action='store_true')\n     parser.add_argument('--goal',\n                         help='Goal of the classifier',\n-                        choices=['bug', 'regression', 'tracking', 'qaneeded', 'uplift', 'component', 'devdocneeded', 'defectfeaturetask'],\n+                        choices=['bug', 'regression', 'tracking', 'qaneeded', 'uplift', 'component', 'devdocneeded', 'defectfeaturetask', 'assignee'],\n                         default='bug')\n     parser.add_argument('--classifier', help='Type of the classifier', choices=['default', 'nn'], default='default')\n     parser.add_argument('--classify', help='Perform evaluation', action='store_true')\n@@ -61,6 +61,9 @@\n     elif args.goal == 'devdocneeded':\n         from bugbug.models.devdocneeded import DevDocNeededModel\n         model_class = DevDocNeededModel\n+    elif args.goal == 'assignee':\n+        from bugbug.models.assignee import AssigneeModel\n+        model_class = AssigneeModel\n \n     if args.train:\n         db.download()\n", "issue": "Add assignee model to run.py\nSee also #61.\n", "before_files": [{"content": "# -*- coding: utf-8 -*-\n# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not distributed with this file,\n# You can obtain one at http://mozilla.org/MPL/2.0/.\n\nimport argparse\nimport csv\nimport os\nfrom datetime import datetime\nfrom datetime import timedelta\n\nimport numpy as np\n\nfrom bugbug import bugzilla\nfrom bugbug import db\nfrom bugbug import repository  # noqa\n\nif __name__ == '__main__':\n    parser = argparse.ArgumentParser()\n    parser.add_argument('--lemmatization', help='Perform lemmatization (using spaCy)', action='store_true')\n    parser.add_argument('--train', help='Perform training', action='store_true')\n    parser.add_argument('--goal',\n                        help='Goal of the classifier',\n                        choices=['bug', 'regression', 'tracking', 'qaneeded', 'uplift', 'component', 'devdocneeded', 'defectfeaturetask'],\n                        default='bug')\n    parser.add_argument('--classifier', help='Type of the classifier', choices=['default', 'nn'], default='default')\n    parser.add_argument('--classify', help='Perform evaluation', action='store_true')\n    parser.add_argument('--generate-sheet', help='Perform evaluation on bugs from last week and generate a csv file', action='store_true')\n    args = parser.parse_args()\n\n    model_file_name = '{}{}model'.format(\n        args.goal,\n        '' if args.classifier == 'default' else args.classifier\n    )\n\n    if args.goal == 'bug':\n        from bugbug.models.bug import BugModel\n        model_class = BugModel\n    elif args.goal == 'defectfeaturetask':\n        from bugbug.models.defect_feature_task import DefectFeatureTaskModel\n        model_class = DefectFeatureTaskModel\n    elif args.goal == 'regression':\n        from bugbug.models.regression import RegressionModel\n        model_class = RegressionModel\n    elif args.goal == 'tracking':\n        from bugbug.models.tracking import TrackingModel\n        model_class = TrackingModel\n    elif args.goal == 'qaneeded':\n        from bugbug.models.qaneeded import QANeededModel\n        model_class = QANeededModel\n    elif args.goal == 'uplift':\n        from bugbug.models.uplift import UpliftModel\n        model_class = UpliftModel\n    elif args.goal == 'component':\n        if args.classifier == 'default':\n            from bugbug.models.component import ComponentModel\n            model_class = ComponentModel\n        elif args.classifier == 'nn':\n            from bugbug.models.component_nn import ComponentNNModel\n            model_class = ComponentNNModel\n    elif args.goal == 'devdocneeded':\n        from bugbug.models.devdocneeded import DevDocNeededModel\n        model_class = DevDocNeededModel\n\n    if args.train:\n        db.download()\n\n        model = model_class(args.lemmatization)\n        model.train()\n    else:\n        model = model_class.load(model_file_name)\n\n    if args.classify:\n        for bug in bugzilla.get_bugs():\n            print(f'https://bugzilla.mozilla.org/show_bug.cgi?id={ bug[\"id\"] } - { bug[\"summary\"]} ')\n\n            if model.calculate_importance:\n                probas, importances = model.classify(bug, probabilities=True, importances=True)\n\n                feature_names = model.get_feature_names()\n                for i, (importance, index, is_positive) in enumerate(importances):\n                    print(f'{i + 1}. \\'{feature_names[int(index)]}\\' ({\"+\" if (is_positive) else \"-\"}{importance})')\n            else:\n                probas = model.classify(bug, probabilities=True, importances=False)\n\n            if np.argmax(probas) == 1:\n                print(f'Positive! {probas}')\n            else:\n                print(f'Negative! {probas}')\n            input()\n\n    if args.generate_sheet:\n        today = datetime.utcnow()\n        a_week_ago = today - timedelta(7)\n        bugs = bugzilla.download_bugs_between(a_week_ago, today)\n\n        print(f'Classifying {len(bugs)} bugs...')\n\n        rows = [\n            ['Bug', f'{args.goal}(model)', args.goal, 'Title']\n        ]\n\n        for bug in bugs:\n            p = model.classify(bug, probabilities=True)\n            rows.append([f'https://bugzilla.mozilla.org/show_bug.cgi?id={bug[\"id\"]}', 'y' if p[0][1] >= 0.7 else 'n', '', bug['summary']])\n\n        os.makedirs('sheets', exist_ok=True)\n        with open(os.path.join('sheets', f'{args.goal}-{datetime.utcnow().strftime(\"%Y-%m-%d\")}-labels.csv'), 'w') as f:\n            writer = csv.writer(f)\n            writer.writerows(rows)\n", "path": "run.py"}], "after_files": [{"content": "# -*- coding: utf-8 -*-\n# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not distributed with this file,\n# You can obtain one at http://mozilla.org/MPL/2.0/.\n\nimport argparse\nimport csv\nimport os\nfrom datetime import datetime\nfrom datetime import timedelta\n\nimport numpy as np\n\nfrom bugbug import bugzilla\nfrom bugbug import db\nfrom bugbug import repository  # noqa\n\nif __name__ == '__main__':\n    parser = argparse.ArgumentParser()\n    parser.add_argument('--lemmatization', help='Perform lemmatization (using spaCy)', action='store_true')\n    parser.add_argument('--train', help='Perform training', action='store_true')\n    parser.add_argument('--goal',\n                        help='Goal of the classifier',\n                        choices=['bug', 'regression', 'tracking', 'qaneeded', 'uplift', 'component', 'devdocneeded', 'defectfeaturetask', 'assignee'],\n                        default='bug')\n    parser.add_argument('--classifier', help='Type of the classifier', choices=['default', 'nn'], default='default')\n    parser.add_argument('--classify', help='Perform evaluation', action='store_true')\n    parser.add_argument('--generate-sheet', help='Perform evaluation on bugs from last week and generate a csv file', action='store_true')\n    args = parser.parse_args()\n\n    model_file_name = '{}{}model'.format(\n        args.goal,\n        '' if args.classifier == 'default' else args.classifier\n    )\n\n    if args.goal == 'bug':\n        from bugbug.models.bug import BugModel\n        model_class = BugModel\n    elif args.goal == 'defectfeaturetask':\n        from bugbug.models.defect_feature_task import DefectFeatureTaskModel\n        model_class = DefectFeatureTaskModel\n    elif args.goal == 'regression':\n        from bugbug.models.regression import RegressionModel\n        model_class = RegressionModel\n    elif args.goal == 'tracking':\n        from bugbug.models.tracking import TrackingModel\n        model_class = TrackingModel\n    elif args.goal == 'qaneeded':\n        from bugbug.models.qaneeded import QANeededModel\n        model_class = QANeededModel\n    elif args.goal == 'uplift':\n        from bugbug.models.uplift import UpliftModel\n        model_class = UpliftModel\n    elif args.goal == 'component':\n        if args.classifier == 'default':\n            from bugbug.models.component import ComponentModel\n            model_class = ComponentModel\n        elif args.classifier == 'nn':\n            from bugbug.models.component_nn import ComponentNNModel\n            model_class = ComponentNNModel\n    elif args.goal == 'devdocneeded':\n        from bugbug.models.devdocneeded import DevDocNeededModel\n        model_class = DevDocNeededModel\n    elif args.goal == 'assignee':\n        from bugbug.models.assignee import AssigneeModel\n        model_class = AssigneeModel\n\n    if args.train:\n        db.download()\n\n        model = model_class(args.lemmatization)\n        model.train()\n    else:\n        model = model_class.load(model_file_name)\n\n    if args.classify:\n        for bug in bugzilla.get_bugs():\n            print(f'https://bugzilla.mozilla.org/show_bug.cgi?id={ bug[\"id\"] } - { bug[\"summary\"]} ')\n\n            if model.calculate_importance:\n                probas, importances = model.classify(bug, probabilities=True, importances=True)\n\n                feature_names = model.get_feature_names()\n                for i, (importance, index, is_positive) in enumerate(importances):\n                    print(f'{i + 1}. \\'{feature_names[int(index)]}\\' ({\"+\" if (is_positive) else \"-\"}{importance})')\n            else:\n                probas = model.classify(bug, probabilities=True, importances=False)\n\n            if np.argmax(probas) == 1:\n                print(f'Positive! {probas}')\n            else:\n                print(f'Negative! {probas}')\n            input()\n\n    if args.generate_sheet:\n        today = datetime.utcnow()\n        a_week_ago = today - timedelta(7)\n        bugs = bugzilla.download_bugs_between(a_week_ago, today)\n\n        print(f'Classifying {len(bugs)} bugs...')\n\n        rows = [\n            ['Bug', f'{args.goal}(model)', args.goal, 'Title']\n        ]\n\n        for bug in bugs:\n            p = model.classify(bug, probabilities=True)\n            rows.append([f'https://bugzilla.mozilla.org/show_bug.cgi?id={bug[\"id\"]}', 'y' if p[0][1] >= 0.7 else 'n', '', bug['summary']])\n\n        os.makedirs('sheets', exist_ok=True)\n        with open(os.path.join('sheets', f'{args.goal}-{datetime.utcnow().strftime(\"%Y-%m-%d\")}-labels.csv'), 'w') as f:\n            writer = csv.writer(f)\n            writer.writerows(rows)\n", "path": "run.py"}]}