Skip to content

Commit 671b0c5

Browse files
nkphysicsbsipocz
authored andcommitted
Refactor: Made splatalogue kwargs keyword only
1 parent 016df55 commit 671b0c5

File tree

7 files changed

+51
-38
lines changed

7 files changed

+51
-38
lines changed

astroquery/splatalogue/build_species_table.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def data_path(filename: str):
3232
return os.path.join(data_dir, filename)
3333

3434

35-
def get_json_species_ids(outfile='splat-species.json', base_url=conf.base_url):
35+
def get_json_species_ids(*, outfile='splat-species.json', base_url=conf.base_url):
3636
"""
3737
Uses BeautifulSoup to scrape the NRAO Splatalogue species
3838
selector form, and caches the result as JSON. The file

astroquery/splatalogue/core.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def set_default_options(self, **kwargs):
7676
"""
7777
self.data.update(self._parse_kwargs(**kwargs))
7878

79-
def get_species_ids(self, restr=None, reflags=0, recache=False):
79+
def get_species_ids(self, *, restr=None, reflags=0, recache=False):
8080
"""
8181
Get a dictionary of "species" IDs, where species refers to the molecule
8282
name, mass, and chemical composition.
@@ -95,7 +95,7 @@ def get_species_ids(self, restr=None, reflags=0, recache=False):
9595
--------
9696
>>> import re
9797
>>> import pprint # unfortunate hack required for documentation testing
98-
>>> rslt = Splatalogue.get_species_ids('Formaldehyde')
98+
>>> rslt = Splatalogue.get_species_ids(restr='Formaldehyde')
9999
>>> pprint.pprint(rslt)
100100
{'03023 H2CO - Formaldehyde': '194',
101101
'03106 H213CO - Formaldehyde': '324',
@@ -107,7 +107,7 @@ def get_species_ids(self, restr=None, reflags=0, recache=False):
107107
'03301 D213CO - Formaldehyde': '1220',
108108
'03315 HDC18O - Formaldehyde': '21141',
109109
'0348 D2C18O - Formaldehyde': '21140'}
110-
>>> rslt = Splatalogue.get_species_ids('H2CO')
110+
>>> rslt = Splatalogue.get_species_ids(restr='H2CO')
111111
>>> pprint.pprint(rslt)
112112
{'03023 H2CO - Formaldehyde': '194',
113113
'03109 H2COH+ - Hydroxymethylium ion': '224',
@@ -125,9 +125,9 @@ def get_species_ids(self, restr=None, reflags=0, recache=False):
125125
'08903 CH3CHNH2COOH - II - α-Alanine': '1322'}
126126
>>> # note the whitespace, preventing H2CO within other
127127
>>> # more complex molecules
128-
>>> Splatalogue.get_species_ids(' H2CO ')
128+
>>> Splatalogue.get_species_ids(restr=' H2CO ')
129129
{'03023 H2CO - Formaldehyde': '194'}
130-
>>> Splatalogue.get_species_ids(' h2co ', re.IGNORECASE)
130+
>>> Splatalogue.get_species_ids(restr=' h2co ', reflags=re.IGNORECASE)
131131
{'03023 H2CO - Formaldehyde': '194'}
132132
133133
"""
@@ -137,7 +137,7 @@ def get_species_ids(self, restr=None, reflags=0, recache=False):
137137
self._species_ids = load_species_table.species_lookuptable(recache=recache)
138138

139139
if restr is not None:
140-
return self._species_ids.find(restr, reflags)
140+
return self._species_ids.find(restr, flags=reflags)
141141
else:
142142
return self._species_ids
143143

@@ -160,7 +160,7 @@ def _default_kwargs(self):
160160
show_nrao_recommended=False,)
161161
return self._parse_kwargs(**kwargs)
162162

163-
def _parse_kwargs(self, min_frequency=None, max_frequency=None,
163+
def _parse_kwargs(self, *, min_frequency=None, max_frequency=None,
164164
band='any', top20=None, chemical_name=None,
165165
chem_re_flags=0, energy_min=None, energy_max=None,
166166
energy_type=None, intensity_lower_limit=None,
@@ -319,7 +319,7 @@ def _parse_kwargs(self, min_frequency=None, max_frequency=None,
319319
payload['sid[]'] = []
320320
elif chemical_name is not None:
321321
if parse_chemistry_locally:
322-
species_ids = self.get_species_ids(chemical_name, chem_re_flags)
322+
species_ids = self.get_species_ids(restr=chemical_name, reflags=chem_re_flags)
323323
if len(species_ids) == 0:
324324
raise ValueError("No matching chemical species found.")
325325
payload['sid[]'] = list(species_ids.values())
@@ -408,7 +408,7 @@ def _parse_kwargs(self, min_frequency=None, max_frequency=None,
408408

409409
return payload
410410

411-
def _validate_kwargs(self, min_frequency=None, max_frequency=None,
411+
def _validate_kwargs(self, *, min_frequency=None, max_frequency=None,
412412
band='any', **kwargs):
413413
"""
414414
Check that either min_frequency + max_frequency or band are specified
@@ -419,7 +419,7 @@ def _validate_kwargs(self, min_frequency=None, max_frequency=None,
419419
"a valid Band.")
420420

421421
@prepend_docstr_nosections("\n" + _parse_kwargs.__doc__)
422-
def query_lines_async(self, min_frequency=None, max_frequency=None,
422+
def query_lines_async(self, *, min_frequency=None, max_frequency=None,
423423
cache=True, **kwargs):
424424
"""
425425
@@ -462,7 +462,7 @@ def query_lines_async(self, min_frequency=None, max_frequency=None,
462462

463463
return response
464464

465-
def _parse_result(self, response, verbose=False):
465+
def _parse_result(self, response, *, verbose=False):
466466
"""
467467
Parse a response into an `~astropy.table.Table`
468468
@@ -478,7 +478,7 @@ def _parse_result(self, response, verbose=False):
478478

479479
return result
480480

481-
def get_fixed_table(self, columns=None):
481+
def get_fixed_table(self, *, columns=None):
482482
"""
483483
Convenience function to get the table with html column names made human
484484
readable. It returns only the columns identified with the ``columns``

astroquery/splatalogue/load_species_table.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
class SpeciesLookuptable(dict):
1010

11-
def find(self, s, flags=0, return_dict=True,):
11+
def find(self, s, *, flags=0, return_dict=True,):
1212
"""
1313
Search dictionary keys for a regex match to string s
1414
@@ -38,7 +38,7 @@ def find(self, s, flags=0, return_dict=True,):
3838
return out.values()
3939

4040

41-
def species_lookuptable(filename='splat-species.json', recache=False):
41+
def species_lookuptable(*, filename='splat-species.json', recache=False):
4242
"""
4343
Function to format the species ID results from scraping Splatalogue
4444
into a ``SpeciesLookuptable`` object.

astroquery/splatalogue/slap.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"""
88

99

10-
def slap_default_payload(request='queryData', version='2.0', wavelength='',
10+
def slap_default_payload(*, request='queryData', version='2.0', wavelength='',
1111
chemical_element='', initial_level_energy='',
1212
final_level_energy='', temperature='', einstein_a=''):
1313
"""

astroquery/splatalogue/tests/test_splatalogue.py

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,18 @@ def data_path(filename):
1717

1818

1919
def test_simple(patch_post):
20-
splatalogue.Splatalogue.query_lines(114 * u.GHz, 116 * u.GHz,
20+
splatalogue.Splatalogue.query_lines(min_frequency=114 * u.GHz,
21+
max_frequency=116 * u.GHz,
2122
chemical_name=' CO ')
2223

2324

2425
@pytest.mark.remote_data
2526
def test_init(patch_post):
26-
x = splatalogue.Splatalogue.query_lines(114 * u.GHz, 116 * u.GHz,
27+
x = splatalogue.Splatalogue.query_lines(min_frequency=114 * u.GHz,
28+
max_frequency=116 * u.GHz,
2729
chemical_name=' CO ')
2830
S = splatalogue.Splatalogue(chemical_name=' CO ')
29-
y = S.query_lines(114 * u.GHz, 116 * u.GHz)
31+
y = S.query_lines(min_frequency=114 * u.GHz, max_frequency=116 * u.GHz)
3032
# it is not currently possible to test equality between tables:
3133
# masked arrays fail
3234
# assert y == x
@@ -43,14 +45,16 @@ def test_load_species_table():
4345

4446
# regression test: get_query_payload should work (#308)
4547
def test_get_payload():
46-
q = splatalogue.core.Splatalogue.query_lines_async(1 * u.GHz, 10 * u.GHz,
48+
q = splatalogue.core.Splatalogue.query_lines_async(min_frequency=1 * u.GHz,
49+
max_frequency=10 * u.GHz,
4750
get_query_payload=True)
4851
assert '__utma' in q
4952

5053

5154
# regression test: line lists should ask for only one line list, not all
5255
def test_line_lists():
53-
q = splatalogue.core.Splatalogue.query_lines_async(1 * u.GHz, 10 * u.GHz,
56+
q = splatalogue.core.Splatalogue.query_lines_async(min_frequency=1 * u.GHz,
57+
max_frequency=10 * u.GHz,
5458
line_lists=['JPL'],
5559
get_query_payload=True)
5660
assert q['displayJPL'] == 'displayJPL'
@@ -61,20 +65,23 @@ def test_line_lists():
6165
# uses get_query_payload to avoid having to monkeypatch
6266
def test_linelist_type():
6367
with pytest.raises(TypeError) as exc:
64-
splatalogue.core.Splatalogue.query_lines_async(1 * u.GHz, 10 * u.GHz,
68+
splatalogue.core.Splatalogue.query_lines_async(min_frequency=1 * u.GHz,
69+
max_frequency=10 * u.GHz,
6570
line_lists='JPL',
6671
get_query_payload=True)
6772
assert exc.value.args[0] == ("Line lists should be a list of linelist "
6873
"names. See Splatalogue.ALL_LINE_LISTS")
6974

7075

7176
def test_top20_crashorno():
72-
splatalogue.core.Splatalogue.query_lines_async(114 * u.GHz, 116 * u.GHz,
77+
splatalogue.core.Splatalogue.query_lines_async(min_frequency=114 * u.GHz,
78+
max_frequency=116 * u.GHz,
7379
top20='top20',
7480
get_query_payload=True)
7581
with pytest.raises(ValueError) as exc:
7682
splatalogue.core.Splatalogue.query_lines_async(
77-
114 * u.GHz, 116 * u.GHz, top20='invalid', get_query_payload=True)
83+
min_frequency=114 * u.GHz, max_frequency=116 * u.GHz,
84+
top20='invalid', get_query_payload=True)
7885
assert exc.value.args[0] == "Top20 is not one of the allowed values"
7986

8087

@@ -103,7 +110,8 @@ def test_band_crashorno():
103110

104111
def test_exclude(patch_post):
105112
# regression test for issue 616
106-
d = splatalogue.Splatalogue.query_lines_async(114 * u.GHz, 116 * u.GHz,
113+
d = splatalogue.Splatalogue.query_lines_async(min_frequency=114 * u.GHz,
114+
max_frequency=116 * u.GHz,
107115
chemical_name=' CO ',
108116
exclude=None,
109117
get_query_payload=True)
@@ -115,7 +123,8 @@ def test_exclude(patch_post):
115123
for k, v in exclusions.items():
116124
assert d[k] == v
117125

118-
d = splatalogue.Splatalogue.query_lines_async(114 * u.GHz, 116 * u.GHz,
126+
d = splatalogue.Splatalogue.query_lines_async(min_frequency=114 * u.GHz,
127+
max_frequency=116 * u.GHz,
119128
chemical_name=' CO ',
120129
exclude='none',
121130
get_query_payload=True)

astroquery/splatalogue/tests/test_utils.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,26 @@
88

99

1010
def test_clean(patch_post):
11-
x = splatalogue.Splatalogue.query_lines(114 * u.GHz, 116 * u.GHz,
11+
x = splatalogue.Splatalogue.query_lines(min_frequency=114 * u.GHz,
12+
max_frequency=116 * u.GHz,
1213
chemical_name=' CO ')
1314
c = utils.clean_column_headings(x)
1415
assert 'Resolved QNs' not in c.colnames
1516
assert 'QNs' in c.colnames
1617

1718

1819
def test_merge(patch_post):
19-
x = splatalogue.Splatalogue.query_lines(114 * u.GHz, 116 * u.GHz,
20+
x = splatalogue.Splatalogue.query_lines(min_frequency=114 * u.GHz,
21+
max_frequency=116 * u.GHz,
2022
chemical_name=' CO ')
2123
c = utils.merge_frequencies(x)
2224
assert 'Freq' in c.colnames
2325
assert np.all(c['Freq'] > 0)
2426

2527

2628
def test_minimize(patch_post):
27-
x = splatalogue.Splatalogue.query_lines(114 * u.GHz, 116 * u.GHz,
29+
x = splatalogue.Splatalogue.query_lines(min_frequency=114 * u.GHz,
30+
max_frequency=116 * u.GHz,
2831
chemical_name=' CO ')
2932
c = utils.minimize_table(x)
3033

@@ -36,7 +39,8 @@ def test_minimize(patch_post):
3639

3740
@pytest.mark.remote_data
3841
def test_minimize_issue2135():
39-
rslt = splatalogue.Splatalogue.query_lines(100*u.GHz, 200*u.GHz,
42+
rslt = splatalogue.Splatalogue.query_lines(min_frequency=100*u.GHz,
43+
max_frequency=200*u.GHz,
4044
chemical_name=' SiO ',
4145
energy_max=1840,
4246
energy_type='eu_k',

astroquery/splatalogue/utils.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
}
2828

2929

30-
def clean_column_headings(table, renaming_dict=column_headings_map):
30+
def clean_column_headings(table, *, renaming_dict=column_headings_map):
3131
"""
3232
Rename column headings to shorter version that are easier for display
3333
on-screen / at the terminal
@@ -40,7 +40,7 @@ def clean_column_headings(table, renaming_dict=column_headings_map):
4040
return table
4141

4242

43-
def merge_frequencies(table, prefer='measured',
43+
def merge_frequencies(table, *, prefer='measured',
4444
theor_kwd='Freq-GHz(rest frame,redshifted)',
4545
meas_kwd='Meas Freq-GHz(rest frame,redshifted)'):
4646
"""
@@ -79,12 +79,12 @@ def merge_frequencies(table, prefer='measured',
7979
return table
8080

8181

82-
def minimize_table(table, columns=['Species', 'Chemical Name',
83-
'Resolved QNs',
84-
'Freq-GHz(rest frame,redshifted)',
85-
'Meas Freq-GHz(rest frame,redshifted)',
86-
'Log<sub>10</sub> (A<sub>ij</sub>)',
87-
'E_U (K)'],
82+
def minimize_table(table, *, columns=['Species', 'Chemical Name',
83+
'Resolved QNs',
84+
'Freq-GHz(rest frame,redshifted)',
85+
'Meas Freq-GHz(rest frame,redshifted)',
86+
'Log<sub>10</sub> (A<sub>ij</sub>)',
87+
'E_U (K)'],
8888
merge=True,
8989
clean=True):
9090
"""

0 commit comments

Comments
 (0)