We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
VT failing since at least 2017-12-02
VT has been failing since 2017-12-02

Based on automated runs it appears that VT has not run successfully in 2 days (2017-12-02).


```
  00:02:03 INFO scrapelib: GET - http://legislature.vermont.gov/bill/status/2018/S.C.R.13
00:02:06 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillDetailedStatus/2018/1388
00:02:06 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillRollCalls/2018/1388
00:02:07 INFO pupa: save bill S.C.R.13 in 2017-2018 as bill_7bf9480a-d7ef-11e7-8049-0242ac110003.json
00:02:07 INFO scrapelib: GET - http://legislature.vermont.gov/bill/status/2018/S.C.R.14
00:02:10 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillDetailedStatus/2018/1435
00:02:10 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillRollCalls/2018/1435
00:02:11 INFO pupa: save bill S.C.R.14 in 2017-2018 as bill_7e45aab8-d7ef-11e7-8049-0242ac110003.json
00:02:11 INFO scrapelib: GET - http://legislature.vermont.gov/bill/status/2018/S.C.R.15
00:02:13 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillDetailedStatus/2018/1427
00:02:14 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillRollCalls/2018/1427
00:02:15 INFO pupa: save bill S.C.R.15 in 2017-2018 as bill_8098e870-d7ef-11e7-8049-0242ac110003.json
00:02:15 INFO scrapelib: GET - http://legislature.vermont.gov/bill/status/2018/S.C.R.16
00:02:17 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillDetailedStatus/2018/1458
00:02:17 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillRollCalls/2018/1458
00:02:18 INFO pupa: save bill S.C.R.16 in 2017-2018 as bill_82e76e62-d7ef-11e7-8049-0242ac110003.json
00:02:18 INFO scrapelib: GET - http://legislature.vermont.gov/bill/status/2018/S.C.R.17
00:02:21 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillDetailedStatus/2018/1459
00:02:21 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillRollCalls/2018/1459
00:02:22 INFO pupa: save bill S.C.R.17 in 2017-2018 as bill_8532428c-d7ef-11e7-8049-0242ac110003.json
00:02:22 INFO scrapelib: GET - http://legislature.vermont.gov/bill/status/2018/S.C.R.18
00:02:24 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillDetailedStatus/2018/1473
00:02:24 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillRollCalls/2018/1473
00:02:25 INFO pupa: save bill S.C.R.18 in 2017-2018 as bill_872c1a4a-d7ef-11e7-8049-0242ac110003.json
no pupa_settings on path, using defaults
vt (scrape, import)
  people: {}
  committees: {}
  bills: {}
import jurisdictions...
import organizations...
import people...
  File "/opt/openstates/venv-pupa/src/pupa/pupa/cli/commands/update.py", line 260, in handle
  File "/opt/openstates/venv-pupa//bin/pupa", line 11, in <module>
    load_entry_point('pupa', 'console_scripts', 'pupa')()
  File "/opt/openstates/venv-pupa/src/pupa/pupa/cli/__main__.py", line 67, in main
    subcommands[args.subcommand].handle(args, other)
Traceback (most recent call last):
    return self.do_handle(args, other, juris)
  File "/opt/openstates/venv-pupa/src/pupa/pupa/cli/commands/update.py", line 307, in do_handle
    report['import'] = self.do_import(juris, args)
  File "/opt/openstates/venv-pupa/src/pupa/pupa/cli/commands/update.py", line 207, in do_import
    report.update(person_importer.import_directory(datadir))
  File "/opt/openstates/venv-pupa/src/pupa/pupa/importers/base.py", line 190, in import_directory
    return self.import_data(json_stream())
  File "/opt/openstates/venv-pupa/src/pupa/pupa/importers/base.py", line 226, in import_data
    for json_id, data in self._prepare_imports(data_items):
  File "/opt/openstates/venv-pupa/src/pupa/pupa/importers/people.py", line 33, in _prepare_imports
    raise SameNameError(name)
pupa.exceptions.SameNameError: multiple people with same name "Christopher Mattos" in Jurisdiction - must provide birth_date to disambiguate
```

Visit http://bobsled.openstates.org for more info.


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `openstates/vt/people.py`
Content:
```
1 import json
2 
3 from pupa.scrape import Person, Scraper
4 from openstates.utils import LXMLMixin
5 
6 
7 class VTPersonScraper(Scraper, LXMLMixin):
8     CHAMBERS = {'Senator': 'upper', 'Representative': 'lower'}
9 
10     def scrape(self, session=None):
11         if session is None:
12             session = self.latest_session()
13         year_slug = session[5:]
14 
15         # Load all members via the private API
16         legislator_dump_url = (
17             'http://legislature.vermont.gov/people/loadAll/{}'.
18             format(year_slug))
19         json_data = self.get(legislator_dump_url).text
20         legislators = json.loads(json_data)['data']
21 
22         # Parse the information from each legislator
23         for info in legislators:
24             # Strip whitespace from strings
25             info = {k: v.strip() for k, v in info.items()}
26 
27             # Gather photo URL from the member's page
28             member_url = ('http://legislature.vermont.gov/people/single/{}/{}'.
29                           format(year_slug, info['PersonID']))
30             page = self.lxmlize(member_url)
31             (photo_url, ) = page.xpath('//img[@class="profile-photo"]/@src')
32 
33             # Also grab their state email address
34             state_email = page.xpath(
35                 '//dl[@class="summary-table profile-summary"]/'
36                 'dt[text()="Email"]/following-sibling::dd[1]/a/text()')
37             if state_email:
38                 (state_email, ) = state_email
39             else:
40                 state_email = None
41 
42             district = info['District'].replace(" District", "")
43             if district == 'Grand Isle':
44                 district = 'Chittenden-Grand Isle'
45 
46             leg = Person(
47                 primary_org=self.CHAMBERS[info['Title']],
48                 district=district,
49                 party=info['Party'].replace("Democrat", "Democratic"),
50                 name="{0} {1}".format(info['FirstName'], info['LastName']),
51                 image=photo_url
52             )
53 
54             leg.add_contact_detail(
55                 note="Capitol Office",
56                 type='address',
57                 value='Vermont State House\n115 State Street\nMontpelier, VT 05633'
58             )
59             if state_email:
60                 leg.add_contact_detail(note="Capitol Office", type='email', value=state_email)
61 
62             leg.add_contact_detail(
63                 note="District Office",
64                 type='address',
65                 value="{0}{1}\n{2}, {3} {4}".format(
66                     info['MailingAddress1'],
67                     ("\n" + info['MailingAddress2']
68                         if info['MailingAddress2'].strip()
69                         else ""),
70                     info['MailingCity'],
71                     info['MailingState'],
72                     info['MailingZIP']
73                 )
74             )
75             if info['HomePhone']:
76                 leg.add_contact_detail(note="District Office", type='voice',
77                                        value=info['HomePhone'])
78             district_email = info['Email'] or info['HomeEmail'] or info['WorkEmail']
79             if district_email:
80                 leg.add_contact_detail(note="District Office", type='email', value=district_email)
81 
82             leg.add_link(member_url)
83 
84             leg.add_source(legislator_dump_url)
85             leg.add_source(member_url)
86 
87             yield leg
88
```
--- 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/openstates/vt/people.py b/openstates/vt/people.py
--- a/openstates/vt/people.py
+++ b/openstates/vt/people.py
@@ -24,6 +24,11 @@
             # Strip whitespace from strings
             info = {k: v.strip() for k, v in info.items()}
 
+            # Skip duplicate record for Christopher Mattos (appointed Rep September 2017)
+            if info['PersonID'] == "29034":
+                self.info("skipping first Christopher Mattos record")
+                continue
+
             # Gather photo URL from the member's page
             member_url = ('http://legislature.vermont.gov/people/single/{}/{}'.
                           format(year_slug, info['PersonID']))

{"golden_diff": "diff --git a/openstates/vt/people.py b/openstates/vt/people.py\n--- a/openstates/vt/people.py\n+++ b/openstates/vt/people.py\n@@ -24,6 +24,11 @@\n             # Strip whitespace from strings\n             info = {k: v.strip() for k, v in info.items()}\n \n+            # Skip duplicate record for Christopher Mattos (appointed Rep September 2017)\n+            if info['PersonID'] == \"29034\":\n+                self.info(\"skipping first Christopher Mattos record\")\n+                continue\n+\n             # Gather photo URL from the member's page\n             member_url = ('http://legislature.vermont.gov/people/single/{}/{}'.\n                           format(year_slug, info['PersonID']))\n", "issue": "VT failing since at least 2017-12-02\nVT has been failing since 2017-12-02\n\nBased on automated runs it appears that VT has not run successfully in 2 days (2017-12-02).\n\n\n```\n  00:02:03 INFO scrapelib: GET - http://legislature.vermont.gov/bill/status/2018/S.C.R.13\n00:02:06 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillDetailedStatus/2018/1388\n00:02:06 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillRollCalls/2018/1388\n00:02:07 INFO pupa: save bill S.C.R.13 in 2017-2018 as bill_7bf9480a-d7ef-11e7-8049-0242ac110003.json\n00:02:07 INFO scrapelib: GET - http://legislature.vermont.gov/bill/status/2018/S.C.R.14\n00:02:10 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillDetailedStatus/2018/1435\n00:02:10 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillRollCalls/2018/1435\n00:02:11 INFO pupa: save bill S.C.R.14 in 2017-2018 as bill_7e45aab8-d7ef-11e7-8049-0242ac110003.json\n00:02:11 INFO scrapelib: GET - http://legislature.vermont.gov/bill/status/2018/S.C.R.15\n00:02:13 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillDetailedStatus/2018/1427\n00:02:14 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillRollCalls/2018/1427\n00:02:15 INFO pupa: save bill S.C.R.15 in 2017-2018 as bill_8098e870-d7ef-11e7-8049-0242ac110003.json\n00:02:15 INFO scrapelib: GET - http://legislature.vermont.gov/bill/status/2018/S.C.R.16\n00:02:17 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillDetailedStatus/2018/1458\n00:02:17 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillRollCalls/2018/1458\n00:02:18 INFO pupa: save bill S.C.R.16 in 2017-2018 as bill_82e76e62-d7ef-11e7-8049-0242ac110003.json\n00:02:18 INFO scrapelib: GET - http://legislature.vermont.gov/bill/status/2018/S.C.R.17\n00:02:21 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillDetailedStatus/2018/1459\n00:02:21 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillRollCalls/2018/1459\n00:02:22 INFO pupa: save bill S.C.R.17 in 2017-2018 as bill_8532428c-d7ef-11e7-8049-0242ac110003.json\n00:02:22 INFO scrapelib: GET - http://legislature.vermont.gov/bill/status/2018/S.C.R.18\n00:02:24 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillDetailedStatus/2018/1473\n00:02:24 INFO scrapelib: GET - http://legislature.vermont.gov/bill/loadBillRollCalls/2018/1473\n00:02:25 INFO pupa: save bill S.C.R.18 in 2017-2018 as bill_872c1a4a-d7ef-11e7-8049-0242ac110003.json\nno pupa_settings on path, using defaults\nvt (scrape, import)\n  people: {}\n  committees: {}\n  bills: {}\nimport jurisdictions...\nimport organizations...\nimport people...\n  File \"/opt/openstates/venv-pupa/src/pupa/pupa/cli/commands/update.py\", line 260, in handle\n  File \"/opt/openstates/venv-pupa//bin/pupa\", line 11, in <module>\n    load_entry_point('pupa', 'console_scripts', 'pupa')()\n  File \"/opt/openstates/venv-pupa/src/pupa/pupa/cli/__main__.py\", line 67, in main\n    subcommands[args.subcommand].handle(args, other)\nTraceback (most recent call last):\n    return self.do_handle(args, other, juris)\n  File \"/opt/openstates/venv-pupa/src/pupa/pupa/cli/commands/update.py\", line 307, in do_handle\n    report['import'] = self.do_import(juris, args)\n  File \"/opt/openstates/venv-pupa/src/pupa/pupa/cli/commands/update.py\", line 207, in do_import\n    report.update(person_importer.import_directory(datadir))\n  File \"/opt/openstates/venv-pupa/src/pupa/pupa/importers/base.py\", line 190, in import_directory\n    return self.import_data(json_stream())\n  File \"/opt/openstates/venv-pupa/src/pupa/pupa/importers/base.py\", line 226, in import_data\n    for json_id, data in self._prepare_imports(data_items):\n  File \"/opt/openstates/venv-pupa/src/pupa/pupa/importers/people.py\", line 33, in _prepare_imports\n    raise SameNameError(name)\npupa.exceptions.SameNameError: multiple people with same name \"Christopher Mattos\" in Jurisdiction - must provide birth_date to disambiguate\n```\n\nVisit http://bobsled.openstates.org for more info.\n\n", "before_files": [{"content": "import json\n\nfrom pupa.scrape import Person, Scraper\nfrom openstates.utils import LXMLMixin\n\n\nclass VTPersonScraper(Scraper, LXMLMixin):\n    CHAMBERS = {'Senator': 'upper', 'Representative': 'lower'}\n\n    def scrape(self, session=None):\n        if session is None:\n            session = self.latest_session()\n        year_slug = session[5:]\n\n        # Load all members via the private API\n        legislator_dump_url = (\n            'http://legislature.vermont.gov/people/loadAll/{}'.\n            format(year_slug))\n        json_data = self.get(legislator_dump_url).text\n        legislators = json.loads(json_data)['data']\n\n        # Parse the information from each legislator\n        for info in legislators:\n            # Strip whitespace from strings\n            info = {k: v.strip() for k, v in info.items()}\n\n            # Gather photo URL from the member's page\n            member_url = ('http://legislature.vermont.gov/people/single/{}/{}'.\n                          format(year_slug, info['PersonID']))\n            page = self.lxmlize(member_url)\n            (photo_url, ) = page.xpath('//img[@class=\"profile-photo\"]/@src')\n\n            # Also grab their state email address\n            state_email = page.xpath(\n                '//dl[@class=\"summary-table profile-summary\"]/'\n                'dt[text()=\"Email\"]/following-sibling::dd[1]/a/text()')\n            if state_email:\n                (state_email, ) = state_email\n            else:\n                state_email = None\n\n            district = info['District'].replace(\" District\", \"\")\n            if district == 'Grand Isle':\n                district = 'Chittenden-Grand Isle'\n\n            leg = Person(\n                primary_org=self.CHAMBERS[info['Title']],\n                district=district,\n                party=info['Party'].replace(\"Democrat\", \"Democratic\"),\n                name=\"{0} {1}\".format(info['FirstName'], info['LastName']),\n                image=photo_url\n            )\n\n            leg.add_contact_detail(\n                note=\"Capitol Office\",\n                type='address',\n                value='Vermont State House\\n115 State Street\\nMontpelier, VT 05633'\n            )\n            if state_email:\n                leg.add_contact_detail(note=\"Capitol Office\", type='email', value=state_email)\n\n            leg.add_contact_detail(\n                note=\"District Office\",\n                type='address',\n                value=\"{0}{1}\\n{2}, {3} {4}\".format(\n                    info['MailingAddress1'],\n                    (\"\\n\" + info['MailingAddress2']\n                        if info['MailingAddress2'].strip()\n                        else \"\"),\n                    info['MailingCity'],\n                    info['MailingState'],\n                    info['MailingZIP']\n                )\n            )\n            if info['HomePhone']:\n                leg.add_contact_detail(note=\"District Office\", type='voice',\n                                       value=info['HomePhone'])\n            district_email = info['Email'] or info['HomeEmail'] or info['WorkEmail']\n            if district_email:\n                leg.add_contact_detail(note=\"District Office\", type='email', value=district_email)\n\n            leg.add_link(member_url)\n\n            leg.add_source(legislator_dump_url)\n            leg.add_source(member_url)\n\n            yield leg\n", "path": "openstates/vt/people.py"}], "after_files": [{"content": "import json\n\nfrom pupa.scrape import Person, Scraper\nfrom openstates.utils import LXMLMixin\n\n\nclass VTPersonScraper(Scraper, LXMLMixin):\n    CHAMBERS = {'Senator': 'upper', 'Representative': 'lower'}\n\n    def scrape(self, session=None):\n        if session is None:\n            session = self.latest_session()\n        year_slug = session[5:]\n\n        # Load all members via the private API\n        legislator_dump_url = (\n            'http://legislature.vermont.gov/people/loadAll/{}'.\n            format(year_slug))\n        json_data = self.get(legislator_dump_url).text\n        legislators = json.loads(json_data)['data']\n\n        # Parse the information from each legislator\n        for info in legislators:\n            # Strip whitespace from strings\n            info = {k: v.strip() for k, v in info.items()}\n\n            # Skip duplicate record for Christopher Mattos (appointed Rep September 2017)\n            if info['PersonID'] == \"29034\":\n                self.info(\"skipping first Christopher Mattos record\")\n                continue\n\n            # Gather photo URL from the member's page\n            member_url = ('http://legislature.vermont.gov/people/single/{}/{}'.\n                          format(year_slug, info['PersonID']))\n            page = self.lxmlize(member_url)\n            (photo_url, ) = page.xpath('//img[@class=\"profile-photo\"]/@src')\n\n            # Also grab their state email address\n            state_email = page.xpath(\n                '//dl[@class=\"summary-table profile-summary\"]/'\n                'dt[text()=\"Email\"]/following-sibling::dd[1]/a/text()')\n            if state_email:\n                (state_email, ) = state_email\n            else:\n                state_email = None\n\n            district = info['District'].replace(\" District\", \"\")\n            if district == 'Grand Isle':\n                district = 'Chittenden-Grand Isle'\n\n            leg = Person(\n                primary_org=self.CHAMBERS[info['Title']],\n                district=district,\n                party=info['Party'].replace(\"Democrat\", \"Democratic\"),\n                name=\"{0} {1}\".format(info['FirstName'], info['LastName']),\n                image=photo_url\n            )\n\n            leg.add_contact_detail(\n                note=\"Capitol Office\",\n                type='address',\n                value='Vermont State House\\n115 State Street\\nMontpelier, VT 05633'\n            )\n            if state_email:\n                leg.add_contact_detail(note=\"Capitol Office\", type='email', value=state_email)\n\n            leg.add_contact_detail(\n                note=\"District Office\",\n                type='address',\n                value=\"{0}{1}\\n{2}, {3} {4}\".format(\n                    info['MailingAddress1'],\n                    (\"\\n\" + info['MailingAddress2']\n                        if info['MailingAddress2'].strip()\n                        else \"\"),\n                    info['MailingCity'],\n                    info['MailingState'],\n                    info['MailingZIP']\n                )\n            )\n            if info['HomePhone']:\n                leg.add_contact_detail(note=\"District Office\", type='voice',\n                                       value=info['HomePhone'])\n            district_email = info['Email'] or info['HomeEmail'] or info['WorkEmail']\n            if district_email:\n                leg.add_contact_detail(note=\"District Office\", type='email', value=district_email)\n\n            leg.add_link(member_url)\n\n            leg.add_source(legislator_dump_url)\n            leg.add_source(member_url)\n\n            yield leg\n", "path": "openstates/vt/people.py"}]}