Skip to content

Commit d703ad0

Browse files
authored
FL: activate 2026F and move session id metadata to init file (#5686)
1 parent 6cfa321 commit d703ad0

2 files changed

Lines changed: 63 additions & 36 deletions

File tree

scrapers/fl/__init__.py

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,15 @@ class Florida(State):
2323
"classification": "primary",
2424
"start_date": "2011-03-08",
2525
"end_date": "2011-05-06",
26+
"extras": {"session_number": "66"},
2627
},
2728
{
2829
"name": "2012 Regular Session",
2930
"identifier": "2012",
3031
"classification": "primary",
3132
"start_date": "2012-01-10",
3233
"end_date": "2012-03-09",
34+
"extras": {"session_number": "70"},
3335
},
3436
{
3537
"name": "2012 Extraordinary Apportionment Session",
@@ -44,20 +46,23 @@ class Florida(State):
4446
"classification": "primary",
4547
"start_date": "2013-03-05",
4648
"end_date": "2013-05-03",
49+
"extras": {"session_number": "73"},
4750
},
4851
{
4952
"name": "2014 Regular Session",
5053
"identifier": "2014",
5154
"classification": "primary",
5255
"start_date": "2014-03-03",
5356
"end_date": "2014-05-05",
57+
"extras": {"session_number": "75"},
5458
},
5559
{
5660
"name": "2014 Special Session A",
5761
"identifier": "2014A",
5862
"classification": "special",
5963
"start_date": "2014-08-07",
6064
"end_date": "2014-08-15",
65+
"extras": {"session_number": "77"},
6166
},
6267
# data for the below
6368
{
@@ -66,69 +71,79 @@ class Florida(State):
6671
"classification": "primary",
6772
"start_date": "2015-03-03",
6873
"end_date": "2015-05-01",
74+
"extras": {"session_number": "76"},
6975
},
7076
{
7177
"name": "2015 Special Session A",
7278
"identifier": "2015A",
7379
"classification": "special",
7480
"start_date": "2015-06-01",
7581
"end_date": "2015-06-20",
82+
"extras": {"session_number": "79"},
7683
},
7784
{
7885
"name": "2015 Special Session B",
7986
"identifier": "2015B",
8087
"classification": "special",
8188
"start_date": "2015-08-10",
8289
"end_date": "2015-08-21",
90+
"extras": {"session_number": "81"},
8391
},
8492
{
8593
"name": "2015 Special Session C",
8694
"identifier": "2015C",
8795
"classification": "special",
8896
"start_date": "2015-10-19",
8997
"end_date": "2015-11-06",
98+
"extras": {"session_number": "82"},
9099
},
91100
{
92101
"name": "2016 Regular Session",
93102
"identifier": "2016",
94103
"classification": "primary",
95104
"start_date": "2016-01-12",
96105
"end_date": "2016-03-11",
106+
"extras": {"session_number": "80"},
97107
},
98108
{
99109
"name": "2017 Regular Session",
100110
"identifier": "2017",
101111
"classification": "primary",
102112
"start_date": "2017-03-07",
103113
"end_date": "2017-05-08",
114+
"extras": {"session_number": "83"},
104115
},
105116
{
106117
"name": "2017 Special Session A",
107118
"identifier": "2017A",
108119
"classification": "special",
109120
"start_date": "2017-06-07",
110121
"end_date": "2017-06-09",
122+
"extras": {"session_number": "85"},
111123
},
112124
{
113125
"name": "2018 Regular Session",
114126
"identifier": "2018",
115127
"classification": "primary",
116128
"start_date": "2018-01-09",
117129
"end_date": "2018-03-11",
130+
"extras": {"session_number": "86"},
118131
},
119132
{
120133
"name": "2019 Regular Session",
121134
"identifier": "2019",
122135
"classification": "primary",
123136
"start_date": "2019-03-05",
124137
"end_date": "2019-05-03",
138+
"extras": {"session_number": "87"},
125139
},
126140
{
127141
"name": "2020 Regular Session",
128142
"identifier": "2020",
129143
"classification": "primary",
130144
"start_date": "2020-01-14",
131145
"end_date": "2020-03-19",
146+
"extras": {"session_number": "89"},
132147
},
133148
{
134149
"name": "2021 Regular Session",
@@ -137,13 +152,15 @@ class Florida(State):
137152
"start_date": "2021-03-02",
138153
"end_date": "2021-04-30",
139154
"active": False,
155+
"extras": {"session_number": "90"},
140156
},
141157
{
142158
"name": "2021 Special Session A",
143159
"identifier": "2021A",
144160
"classification": "primary",
145161
"start_date": "2021-05-12",
146162
"end_date": "2021-05-17",
163+
"extras": {"session_number": "92"},
147164
},
148165
{
149166
"name": "2021 Special Session B",
@@ -152,6 +169,7 @@ class Florida(State):
152169
"start_date": "2021-11-15",
153170
"end_date": "2021-11-19",
154171
"active": False,
172+
"extras": {"session_number": "94"},
155173
},
156174
{
157175
"name": "2022 Regular Session",
@@ -160,6 +178,7 @@ class Florida(State):
160178
"start_date": "2022-01-11",
161179
"end_date": "2022-03-14",
162180
"active": False,
181+
"extras": {"session_number": "93"},
163182
},
164183
{
165184
"name": "2022 Special Session C",
@@ -168,6 +187,7 @@ class Florida(State):
168187
"start_date": "2022-04-19",
169188
"end_date": "2022-04-22",
170189
"active": False,
190+
"extras": {"session_number": "95"},
171191
},
172192
{
173193
"name": "2022 Special Session D",
@@ -176,6 +196,7 @@ class Florida(State):
176196
"start_date": "2022-05-23",
177197
"end_date": "2022-05-27",
178198
"active": False,
199+
"extras": {"session_number": "96"},
179200
},
180201
# Yes, 2022 Special Session A
181202
# occurred after B,C, and D
@@ -186,6 +207,7 @@ class Florida(State):
186207
"start_date": "2022-12-12",
187208
"end_date": "2022-12-16",
188209
"active": False,
210+
"extras": {"session_number": "101"},
189211
},
190212
{
191213
"name": "2023 Regular Session",
@@ -194,6 +216,7 @@ class Florida(State):
194216
"start_date": "2023-03-07",
195217
"end_date": "2023-05-05",
196218
"active": False,
219+
"extras": {"session_number": "99"},
197220
},
198221
{
199222
"name": "2023 Special Session B",
@@ -202,6 +225,7 @@ class Florida(State):
202225
"start_date": "2023-02-06",
203226
"end_date": "2023-02-10",
204227
"active": False,
228+
"extras": {"session_number": "102"},
205229
},
206230
{
207231
"name": "2023 Special Session C",
@@ -210,6 +234,7 @@ class Florida(State):
210234
"start_date": "2023-11-06",
211235
"end_date": "2023-11-09",
212236
"active": False,
237+
"extras": {"session_number": "104"},
213238
},
214239
{
215240
"name": "2024 Regular Session",
@@ -218,6 +243,7 @@ class Florida(State):
218243
"start_date": "2024-01-09",
219244
"end_date": "2024-03-08",
220245
"active": False,
246+
"extras": {"session_number": "103"},
221247
},
222248
{
223249
"name": "2025 Regular Session",
@@ -226,6 +252,7 @@ class Florida(State):
226252
"start_date": "2025-03-04",
227253
"end_date": "2025-05-02",
228254
"active": False,
255+
"extras": {"session_number": "105"},
229256
},
230257
{
231258
"name": "2025 Special Session A",
@@ -234,6 +261,7 @@ class Florida(State):
234261
"start_date": "2025-01-27",
235262
"end_date": "2025-12-31", # est
236263
"active": False,
264+
"extras": {"session_number": "107"},
237265
},
238266
{
239267
"name": "2025 Special Session B",
@@ -242,6 +270,7 @@ class Florida(State):
242270
"start_date": "2025-01-27",
243271
"end_date": "2025-12-31", # est
244272
"active": False,
273+
"extras": {"session_number": "109"},
245274
},
246275
{
247276
"name": "2025 Special Session C",
@@ -250,6 +279,7 @@ class Florida(State):
250279
"start_date": "2025-02-11",
251280
"end_date": "2025-12-31", # est
252281
"active": False,
282+
"extras": {"session_number": "111"},
253283
},
254284
{
255285
"name": "2026 Regular Session",
@@ -258,14 +288,16 @@ class Florida(State):
258288
"start_date": "2026-01-13",
259289
"end_date": "2026-03-13",
260290
"active": False,
291+
"extras": {"session_number": "113"},
261292
},
262293
{
263294
"name": "2026 Special Session D",
264295
"identifier": "2026D",
265296
"classification": "special",
266297
"start_date": "2026-04-28",
267298
"end_date": "2026-05-01",
268-
"active": True,
299+
"active": False,
300+
"extras": {"session_number": "116"},
269301
},
270302
{
271303
"name": "2026 Special Session E",
@@ -274,14 +306,16 @@ class Florida(State):
274306
"start_date": "2026-05-12",
275307
"end_date": "2026-05-29",
276308
"active": False,
309+
"extras": {"session_number": "119"},
277310
},
278311
{
279312
"name": "2026 Special Session F",
280313
"identifier": "2026F",
281314
"classification": "special",
282315
"start_date": "2026-06-01",
283316
"end_date": "2026-06-05",
284-
"active": False,
317+
"active": True,
318+
"extras": {"session_number": "122"},
285319
},
286320
]
287321
ignored_scraped_sessions = [

scrapers/fl/bills.py

Lines changed: 27 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ def process_item(self, item):
188188
chamber="lower" if bill_id[0] == "H" else "upper",
189189
classification=bill_type,
190190
)
191+
bill._fl_house_session_number = self.input["house_session_number"]
191192
bill.add_source(bill_url)
192193

193194
# normalize id from HB 0004 to H4
@@ -710,39 +711,14 @@ def get_source_from_input(self):
710711
# eg entering "1A" into https://flhouse.gov/Sections/Bills/bills.aspx results in
711712
# a URL param that looks like billNumber=1
712713
bill_number = re.search(r"^\w+\s(\d+)\w*$", self.input.identifier).group(1)
713-
session_number = {
714-
"2026E": "119",
715-
"2026D": "116",
716-
"2025C": "111",
717-
"2025B": "109",
718-
"2025A": "107",
719-
"2025": "105",
720-
"2024": "103",
721-
"2023C": "104",
722-
"2023B": "102",
723-
"2022A": "101",
724-
"2023": "99",
725-
"2022D": "96",
726-
"2022C": "95",
727-
"2022": "93",
728-
"2021B": "94",
729-
"2021A": "92",
730-
"2021": "90",
731-
"2020": "89",
732-
"2019": "87",
733-
"2018": "86",
734-
"2017A": "85",
735-
"2017": "83",
736-
"2016": "80",
737-
"2015C": "82",
738-
"2015B": "81",
739-
"2015A": "79",
740-
"2015": "76",
741-
"2014O": "78",
742-
"2014A": "77",
743-
"2016O": "84",
744-
"2026": "113",
745-
}[self.input.legislative_session]
714+
try:
715+
session_number = self.input._fl_house_session_number
716+
except AttributeError as e:
717+
raise ValueError(
718+
"Missing Florida House session number for "
719+
f"{self.input.legislative_session}; add extras.session_number to "
720+
"the session metadata in scrapers/fl/__init__.py"
721+
) from e
746722

747723
form = {"Chamber": "B", "SessionId": session_number, "BillNumber": bill_number}
748724
return URL(
@@ -897,10 +873,25 @@ def process_page(self):
897873

898874

899875
class FlBillScraper(Scraper):
876+
def get_house_session_number(self, session):
877+
for metadata in self.jurisdiction.legislative_sessions:
878+
if metadata["identifier"] == session:
879+
session_number = metadata.get("extras", {}).get("session_number")
880+
if session_number:
881+
return session_number
882+
break
883+
884+
raise ValueError(
885+
"Missing Florida House session number for "
886+
f"{session}; add extras.session_number to the session metadata in "
887+
"scrapers/fl/__init__.py"
888+
)
889+
900890
def scrape(self, session=None):
901891
self.raise_errors = False
902892
self.retry_attempts = 5
903893
self.retry_wait_seconds = 5
894+
house_session_number = self.get_house_session_number(session)
904895

905896
# Set up a circuit breaker to track consecutive failures
906897
self._consecutive_failures = 0
@@ -920,7 +911,9 @@ def scrape(self, session=None):
920911
logging.getLogger("scrapelib").setLevel(logging.WARNING)
921912

922913
def do_scrape_with_retry():
923-
bill_list = BillList({"session": session})
914+
bill_list = BillList(
915+
{"session": session, "house_session_number": house_session_number}
916+
)
924917
yield from self._process_bill_list(bill_list)
925918

926919
yield from retry_on_connection_error(

0 commit comments

Comments
 (0)