Skip to content

Commit 5852a45

Browse files
authored
v0.4.1 (#22)
* working tests and fix to industryLevel
1 parent 630fbe1 commit 5852a45

3 files changed

Lines changed: 71 additions & 48 deletions

File tree

regcensus/api.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ def get_values(series, jurisdiction, date, documentType=None, summary=True,
9191
url_call += f'&label={industry}'
9292
# Specify level of industry (NAICS only)
9393
if industryLevel:
94-
url_call += f'&industryLevel={industryLevel}'
94+
url_call += f'&labelLevel={industryLevel}'
9595

9696
# If multiple dates are given, parses the list into a string
9797
if type(date) == list:
@@ -109,7 +109,7 @@ def get_values(series, jurisdiction, date, documentType=None, summary=True,
109109
# and function returns empty.
110110
else:
111111
print("Valid date is required. Select from the following list:")
112-
dates = list_dates(jurisdiction)
112+
dates = list_dates(jurisdiction, verbose=verbose)
113113
pp.pprint(dates)
114114
return
115115

@@ -305,17 +305,19 @@ def get_versions(jurisdictionID, documentType=1, verbose=0):
305305
return clean_columns(json_normalize(requests.get(url_call).json()))
306306

307307

308-
def list_document_types(jurisdictionID=None):
308+
def list_document_types(jurisdictionID=None, verbose=0):
309309
"""
310310
Args: jurisdictionID (optional): ID for the jurisdiction
311311
312312
Returns: a dictionary containing names of documenttypes and associated IDs
313313
"""
314314
if jurisdictionID:
315-
json = requests.get(
316-
URL + f'/documenttypes?jurisdiction={jurisdictionID}').json()
315+
url_call = URL + f'/documenttypes?jurisdiction={jurisdictionID}'
317316
else:
318-
json = requests.get(URL + '/documenttypes').json()
317+
url_call = URL + '/documenttypes'
318+
if verbose:
319+
print(f'API call: {url_call}')
320+
json = requests.get(url_call).json()
319321
return dict(sorted({
320322
d["subtypeName"]: d["documentSubtypeID"]
321323
for d in json if d["subtypeName"]}.items()))
@@ -334,13 +336,14 @@ def list_series(jurisdictionID=None, documentType=None):
334336
for s in json}.items()))
335337

336338

337-
def list_dates(jurisdictionID):
339+
def list_dates(jurisdictionID, verbose=0):
338340
"""
339341
Args: jurisdictionID: ID for the jurisdiction
340342
341343
Returns: list of dates available for the jurisdiction
342344
"""
343-
return sorted(get_periods(jurisdictionID)['periodCode'].unique())
345+
return sorted(get_periods(
346+
jurisdictionID, verbose=verbose)['periodCode'].unique())
344347

345348

346349
def list_agencies(jurisdictionID=None, keyword=None):

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
setup(
66
name='regcensus',
7-
version='0.4.0',
7+
version='0.4.1',
88
description='Python package for accessing data from the QuantGov API',
99
url='https://github.com/QuantGov/regcensus-api-python',
1010
author='QuantGov',

tests/test_api.py

Lines changed: 59 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,21 @@ def order_results(results, column, descending=False):
1616
def test_get_series():
1717
results = rc.get_series(verbose=1)
1818
assert order_results(results, 'seriesID') == [
19-
1, 2, 3, 4, 5, 6, 7, 9, 10, 11
19+
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
2020
]
2121

2222

2323
def test_get_agencies():
2424
results = rc.get_agencies(jurisdictionID=38, verbose=1)
2525
assert order_results(results, 'agencyID') == [
26-
0, 3, 5, 6, 7, 8, 9, 11, 12, 13
26+
0, 9519, 9520, 9521, 9522, 9523, 9524, 9525, 9526, 9527
2727
]
2828

2929

3030
def test_get_agencies_keyword():
3131
results = rc.get_agencies(keyword='Education', verbose=1)
3232
assert order_results(results, 'agencyID') == [
33-
52, 216, 225, 226, 238, 267, 285, 296, 356, 358
33+
46, 47, 48, 263, 264, 270, 271, 286, 394, 403
3434
]
3535

3636

@@ -68,6 +68,14 @@ def test_get_documents_jurisdiction():
6868
]
6969

7070

71+
def test_get_documents_missing_jurisdiction(capsys):
72+
results = rc.get_documents(date=2020, jurisdictionID=None, verbose=1)
73+
assert not results
74+
assert capsys.readouterr().out == (
75+
'Must include either "jurisdictionID and date" or "documentID."\n'
76+
)
77+
78+
7179
def test_get_documents_document_id():
7280
results = rc.get_documents(date=2020, documentID=3800000001, verbose=1)
7381
assert results['documentReference'].values[0] == (
@@ -96,13 +104,12 @@ def test_get_document_values():
96104

97105
def test_get_reading_time():
98106
results = rc.get_reading_time(
99-
jurisdiction=38, date=2021, documentType=2, country=True)
107+
jurisdiction=20, date=[2015, 2021], documentType=1, verbose=1
108+
)
100109
assert order_results(results, 'seriesValue') == [
101-
'10 weeks, 2 days', '10 weeks, 3 days, 2 hours',
102-
'10 weeks, 3 days, 6 hours', '10 weeks, 4 days',
103-
'10 weeks, 4 days, 6 hours', '11 weeks',
104-
'11 weeks, 1 day, 3 hours', '11 weeks, 1 day, 7 hours',
105-
'11 weeks, 3 days, 7 hours', '11 weeks, 4 days, 2 hours'
110+
'23 weeks, 4 days',
111+
'23 weeks, 7 hours',
112+
'31 weeks, 2 days, 2 hours'
106113
]
107114

108115

@@ -134,7 +141,7 @@ def test_get_values_multiple_jurisdiction_names():
134141

135142
def test_get_values_all_industries():
136143
results = rc.get_values(
137-
series=9, jurisdiction=58, date=2019, filtered=False
144+
series=28, jurisdiction=58, date=2019, filtered=False
138145
)
139146
assert order_results(results, 'seriesValue', descending=True) == [
140147
2399.6540837686553, 2346.9849032768325,
@@ -147,7 +154,7 @@ def test_get_values_all_industries():
147154

148155
def test_get_values_multiple_industries():
149156
results = rc.get_values(
150-
series=9, jurisdiction=58, date=2019, industry=['22', '49', '50']
157+
series=28, jurisdiction=58, date=2019, industry=['22', '49', '50']
151158
)
152159
assert order_results(results, 'seriesValue') == [
153160
50.07550010907289, 649.0292048707197, 811.9319063696239
@@ -156,14 +163,32 @@ def test_get_values_multiple_industries():
156163

157164
def test_get_values_one_industry():
158165
results = rc.get_document_values(
159-
series=9, jurisdiction=20, date='2021-06-02', industry='42'
166+
series=28, jurisdiction=58, date='2019-05-15', industry='22'
167+
)
168+
assert order_results(results, 'seriesValue', descending=True) == [
169+
0.9902999997138977, 0.9789999723434448,
170+
0.9735000133514404, 0.9034000039100647,
171+
0.847599983215332, 0.6302000284194946,
172+
0.5533000230789185, 0.3864000141620636,
173+
0.3547999858856201, 0.3547999858856201
174+
]
175+
176+
177+
def test_get_values_4digit_industries():
178+
results = rc.get_values(
179+
series=28, jurisdiction=38, date=2019, filtered=False, industryLevel=4
160180
)
161181
assert order_results(results, 'seriesValue', descending=True) == [
162-
0.9973999857902527, 0.9355999827384949,
163-
0.906499981880188, 0.7311000227928162,
164-
0.6862999796867371, 0.49320000410079956,
165-
0.2345000058412552, 0.21660000085830688,
166-
0.21389999985694885, 0.14239999651908875
182+
48819.60270605631,
183+
19666.03264030083,
184+
18530.05033682113,
185+
15972.102057352553,
186+
15476.846815471901,
187+
15132.83348125431,
188+
6506.98745361498,
189+
6490.635489263841,
190+
6228.529536121532,
191+
5282.724979804712
167192
]
168193

169194

@@ -191,40 +216,39 @@ def test_get_values_multiple_dates():
191216

192217

193218
def test_get_values_incorrect_dates(capsys):
194-
results = rc.get_values(series=1, jurisdiction=38, date=None)
219+
results = rc.get_values(series=1, jurisdiction=38, date=None, verbose=1)
195220
assert not results
196221
assert capsys.readouterr().out == (
197-
'Valid date is required. Select from the following list:\n')
222+
'Valid date is required. Select from the following list:\n'
223+
'API call: https://api.quantgov.org/seriesperiod?jurisdiction=38\n')
198224

199225

200226
def test_get_values_country():
201227
results = rc.get_values(series=1, jurisdiction=38, date=2019, country=True)
202228
assert order_results(results, 'seriesValue') == [
203-
43940.0, 51925.0, 52569.0, 60086.0, 63735.0,
204-
70969.0, 78676.0, 92522.0, 104562.0, 107063.0
229+
43940.0, 50646.0, 51925.0, 52569.0, 60086.0,
230+
63735.0, 70969.0, 78004.0, 82706.0, 92522.0
205231
]
206232

207233

208234
def test_get_values_agency():
209-
results = rc.get_values(series=13, jurisdiction=66, date=2021, agency=3112)
210-
assert order_results(results, 'seriesValue') == [40141.0]
235+
results = rc.get_values(series=13, jurisdiction=66, date=2021, agency=8777)
236+
assert order_results(results, 'seriesValue') == [4305.0]
211237

212238

213239
def test_get_values_all_agencies():
214240
results = rc.get_values(
215241
series=13, jurisdiction=66, date=2021
216242
)
217243
assert order_results(results, 'seriesValue') == [
218-
555.0, 2025.0, 2035.0, 3085.0, 3849.0,
219-
4771.0, 5235.0, 5399.0, 6119.0, 6783.0
220-
]
244+
0.0, 1.0, 1.0, 2.0, 2.0, 2.0, 4.0, 4.0, 5.0, 5.0
221245

222246

223247
def test_get_values_multiple_agencies():
224248
results = rc.get_values(
225-
series=13, jurisdiction=66, date=2021, agency=[3112, 3113]
249+
series=13, jurisdiction=66, date=2021, agency=[8777, 8813]
226250
)
227-
assert order_results(results, 'seriesValue') == [17304.0, 40141.0]
251+
assert order_results(results, 'seriesValue') == [3311.0, 4305.0]
228252

229253

230254
def test_get_values_version():
@@ -236,7 +260,7 @@ def test_get_values_version():
236260

237261
def test_get_values_download():
238262
results = rc.get_values(
239-
series=13, jurisdiction=66, date=2021, agency=3112, download='test.csv'
263+
series=13, jurisdiction=66, date=2021, agency=8777, download='test.csv'
240264
)
241265
assert not results
242266
assert os.path.exists('test.csv')
@@ -245,7 +269,7 @@ def test_get_values_download():
245269

246270
def test_get_values_incorrect_download(capsys):
247271
results = rc.get_values(
248-
series=13, jurisdiction=66, date=2021, agency=3112, download=True
272+
series=13, jurisdiction=66, date=2021, agency=8777, download=True
249273
)
250274
assert not results
251275
assert capsys.readouterr().out == 'Valid outpath required to download.\n'
@@ -274,8 +298,7 @@ def test_list_document_types():
274298

275299
def test_list_document_types_jurisdiction():
276300
results = rc.list_document_types(jurisdictionID=38)
277-
assert results[
278-
'Regulation text US Electronic Code of Federal Regulations'] == 5
301+
assert results['Regulation text All regulations'] == 1
279302

280303

281304
def test_list_series():
@@ -288,22 +311,19 @@ def test_list_dates():
288311
assert list(reversed(results))[:12] == [
289312
'2021-05-11', '2021',
290313
'2020-04-28', '2020',
291-
'2018-05-23', '2018',
292-
'2017-01-01', '2017',
293-
'2016-01-01', '2016',
294-
'2015-01-01', '2015'
314+
'2019-07-01', '2019',
315+
'2018-05-23', '2018'
295316
]
296317

297318

298319
def test_list_agencies():
299320
results = rc.list_agencies(jurisdictionID=66)
300-
assert results['department of health'] == 3112
321+
assert results['wild animals'] == 8867
301322

302323

303324
def test_list_agencies_keyword():
304325
results = rc.list_agencies(keyword='Education')
305-
assert results[
306-
'california educational facilities authority (California)'] == 2094
326+
assert results['california department of education (California)'] == 3576
307327

308328

309329
def test_list_agencies_error(capsys):

0 commit comments

Comments
 (0)