From a05419b116822e22c502b797146b88ac1e7c5810 Mon Sep 17 00:00:00 2001 From: Jesse Mortenson Date: Thu, 29 Aug 2024 11:43:58 -0600 Subject: [PATCH 1/2] Use incoming Chamber in resolve_person() to improve sponsorship matches --- openstates/importers/base.py | 6 ++++++ openstates/scrape/bill.py | 7 +++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/openstates/importers/base.py b/openstates/importers/base.py index a9778aa8..7ef83961 100644 --- a/openstates/importers/base.py +++ b/openstates/importers/base.py @@ -536,6 +536,12 @@ def resolve_person( # turn spec into DB query spec = get_pseudo_id(psuedo_person_id) + + # if chamber is included in pseudo_person_id, use that as org_classification + if "chamber" in spec and org_classification is None: + org_classification = spec["chamber"] + del spec["chamber"] + if list(spec.keys()) == ["name"]: # if we're just resolving on name, include other names and family name name = spec["name"] diff --git a/openstates/scrape/bill.py b/openstates/scrape/bill.py index d1e40d7d..8f7242eb 100644 --- a/openstates/scrape/bill.py +++ b/openstates/scrape/bill.py @@ -109,7 +109,7 @@ def add_sponsorship( entity_type, primary, *, - chamber=None, + chamber=None, # upper, lower or legislature entity_id=None, ): sp = { @@ -124,7 +124,10 @@ def add_sponsorship( # overwrite the id that exists if entity_type: if not entity_id: - entity_id = _make_pseudo_id(name=name) + if chamber is not None: + entity_id = _make_pseudo_id(name=name, chamber=chamber) + else: + entity_id = _make_pseudo_id(name=name) sp[entity_type + "_id"] = entity_id if sp in self.sponsorships: warnings.warn(f"duplicate sponsor {sp}", RuntimeWarning) From ee86245e9fd44e99ff7e410c441f1629fd77688e Mon Sep 17 00:00:00 2001 From: Jesse Mortenson Date: Tue, 10 Sep 2024 12:25:27 -0500 Subject: [PATCH 2/2] Update test to match new chamber-inclusive sponsor match logic --- openstates/scrape/tests/test_bill_scrape.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openstates/scrape/tests/test_bill_scrape.py b/openstates/scrape/tests/test_bill_scrape.py index f50b042c..3d4794e4 100644 --- a/openstates/scrape/tests/test_bill_scrape.py +++ b/openstates/scrape/tests/test_bill_scrape.py @@ -124,7 +124,7 @@ def test_add_sponsor(): ) assert len(b.sponsorships) == 1 assert b.sponsorships[0] == { - "person_id": '~{"name": "Joe Bleu"}', + "person_id": '~{"chamber": "upper", "name": "Joe Bleu"}', "name": "Joe Bleu", "classification": "Author", "entity_type": "person",