Repository: openstates/openstates-scrapers

Issue:
MS failing since at least 2017-12-06
MS has been failing since 2017-12-06

Based on automated runs it appears that MS has not run successfully in 7 days (2017-12-06).


```
  00:01:47 INFO scrapelib: GET - http://billstatus.ls.state.ms.us/members/house/mims.xml
00:01:48 INFO pupa: save person Sam C. Mims, V as person_f0ca1196-df01-11e7-b400-0242ac110005.json
00:01:48 INFO pupa: save membership f0ca1196-df01-11e7-b400-0242ac110005 membership in ~{"classification": "lower"} as membership_f0ca1574-df01-11e7-b400-0242ac110005.json
00:01:48 INFO pupa: save membership f0ca1196-df01-11e7-b400-0242ac110005 membership in ~{"classification": "party", "name": "Republican"} as membership_f0ca17a4-df01-11e7-b400-0242ac110005.json
00:01:48 INFO scrapelib: GET - http://billstatus.ls.state.ms.us/members/house/sykes.xml
00:01:49 INFO pupa: save person Kathy Sykes as person_f162f780-df01-11e7-b400-0242ac110005.json
00:01:49 INFO pupa: save membership f162f780-df01-11e7-b400-0242ac110005 membership in ~{"classification": "lower"} as membership_f162fb54-df01-11e7-b400-0242ac110005.json
00:01:49 INFO pupa: save membership f162f780-df01-11e7-b400-0242ac110005 membership in ~{"classification": "party", "name": "Democratic"} as membership_f162fd98-df01-11e7-b400-0242ac110005.json
00:01:49 INFO scrapelib: GET - http://billstatus.ls.state.ms.us/members/house/williams-barnes.xml
00:01:50 INFO pupa: save person Sonya Williams-Barnes as person_f1fc6550-df01-11e7-b400-0242ac110005.json
00:01:50 INFO pupa: save membership f1fc6550-df01-11e7-b400-0242ac110005 membership in ~{"classification": "lower"} as membership_f1fc6960-df01-11e7-b400-0242ac110005.json
00:01:50 INFO pupa: save membership f1fc6550-df01-11e7-b400-0242ac110005 membership in ~{"classification": "party", "name": "Democratic"} as membership_f1fc6ba4-df01-11e7-b400-0242ac110005.json
00:01:50 INFO scrapelib: GET - http://billstatus.ls.state.ms.us/members/house/currie.xml
00:01:51 INFO pupa: save person Becky Currie as person_f2947f3e-df01-11e7-b400-0242ac110005.json
00:01:51 INFO pupa: save membership f2947f3e-df01-11e7-b400-0242ac110005 membership in ~{"classification": "lower"} as membership_f2948326-df01-11e7-b400-0242ac110005.json
00:01:51 INFO pupa: save membership f2947f3e-df01-11e7-b400-0242ac110005 membership in ~{"classification": "party", "name": "Republican"} as membership_f2948560-df01-11e7-b400-0242ac110005.json
00:01:51 INFO scrapelib: GET - http://billstatus.ls.state.ms.us/members/house/hopkins.xml
00:01:52 INFO pupa: save person Steve Hopkins as person_f32d5614-df01-11e7-b400-0242ac110005.json
00:01:52 INFO pupa: save membership f32d5614-df01-11e7-b400-0242ac110005 membership in ~{"classification": "lower"} as membership_f32d59f2-df01-11e7-b400-0242ac110005.json
00:01:52 INFO pupa: save membership f32d5614-df01-11e7-b400-0242ac110005 membership in ~{"classification": "party", "name": "Republican"} as membership_f32d5c2c-df01-11e7-b400-0242ac110005.json
00:01:52 INFO scrapelib: GET - http://billstatus.ls.state.ms.us/members/house/morgan.xml
00:01:53 INFO pupa: save person Ken Morgan as person_f3c53c22-df01-11e7-b400-0242ac110005.json
00:01:53 INFO pupa: save membership f3c53c22-df01-11e7-b400-0242ac110005 membership in ~{"classification": "lower"} as membership_f3c54032-df01-11e7-b400-0242ac110005.json
00:01:53 INFO pupa: save membership f3c53c22-df01-11e7-b400-0242ac110005 membership in ~{"classification": "party", "name": "Republican"} as membership_f3c54280-df01-11e7-b400-0242ac110005.json
00:01:53 INFO scrapelib: GET - http://billstatus.ls.state.ms.us/members/house/taylor.xml
no pupa_settings on path, using defaults
ms (scrape, import)
  people: {}
  bills: {}
  committee: {}
Traceback (most recent call last):
  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)
  File "/opt/openstates/venv-pupa/src/pupa/pupa/cli/commands/update.py", line 260, in handle
    return self.do_handle(args, other, juris)
  File "/opt/openstates/venv-pupa/src/pupa/pupa/cli/commands/update.py", line 305, in do_handle
    report['scrape'] = self.do_scrape(juris, args, scrapers)
  File "/opt/openstates/venv-pupa/src/pupa/pupa/cli/commands/update.py", line 173, in do_scrape
    report[scraper_name] = scraper.do_scrape(**scrape_args)
  File "/opt/openstates/venv-pupa/src/pupa/pupa/scrape/base.py", line 111, in do_scrape
    for obj in self.scrape(**kwargs) or []:
  File "/opt/openstates/openstates/openstates/ms/people.py", line 20, in scrape
    yield from self.scrape_legs('lower')
  File "/opt/openstates/openstates/openstates/ms/people.py", line 39, in scrape_legs
    yield from self.scrape_details(chamber, leg, leg_link, role)
  File "/opt/openstates/openstates/openstates/ms/people.py", line 119, in scrape_details
    "A member with no identifiable party was found: {}".format(leg_name))
AssertionError: A member with no identifiable party was found: Cheikh Taylor
```

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



Discussion:

Resolving patch:
diff --git a/openstates/ms/people.py b/openstates/ms/people.py
--- a/openstates/ms/people.py
+++ b/openstates/ms/people.py
@@ -99,14 +99,15 @@ def scrape_details(self, chamber, leg_name, leg_link, role):
             email_name = root.xpath('string(//EMAIL_ADDRESS)').strip()
             cap_room = root.xpath('string(//CAP_ROOM)')
 
-            if leg_name in ('Lataisha Jackson', 'John G. Faulkner'):
+            if leg_name in ('Lataisha Jackson', 'John G. Faulkner', 'Cheikh Taylor'):
                 assert not party, ("Remove special-casing for this Democrat without a "
                                    "listed party: {}").format(leg_name)
                 party = 'Democratic'
             elif leg_name in ('James W. Mathis',
                               'John Glen Corley',
                               'Missy McGee',
-                              'Shane Barnett'):
+                              'Shane Barnett',
+                              'Kevin Ford'):
                 assert not party, ("Remove special-casing for this Republican without"
                                    " a listed party: {}").format(leg_name)
                 party = 'Republican'


Test patch: