1313
1414from astroquery .esa .neocc import lists , tabs
1515
16- __all__ = ['neocc' , 'ESAneoccClass ' ]
16+ __all__ = ['neocc' , 'NEOCCClass ' ]
1717
1818
1919@async_to_sync
20- class ESAneoccClass (BaseQuery ):
20+ class NEOCCClass (BaseQuery ):
2121 """
2222 Class to init ESA NEOCC Python interface library
2323 """
@@ -130,7 +130,9 @@ def query_list(list_name):
130130 return neocc_list
131131
132132 @staticmethod
133- def query_object (name , tab , ** kwargs ):
133+ def query_object (name , tab , * ,
134+ orbital_elements = None , orbit_epoch = None ,
135+ observatory = None , start = None , stop = None , step = None , step_unit = None ):
134136 """Get requested object data from ESA NEOCC.
135137
136138 Parameters
@@ -141,22 +143,27 @@ def query_object(name, tab, **kwargs):
141143 Name of the request tab. Valid names are: summary,
142144 orbit_properties, physical_properties, observations,
143145 ephemerides, close_approaches and impacts.
144- **kwargs : str
145- Tabs orbit_properties and ephemerides tabs required additional
146- arguments to work:
147-
148- * *orbit_properties*: the required additional arguments are:
149-
150- * *orbital_elements* : str (keplerian or equinoctial)
151- * *orbit_epoch* : str (present or middle)
152-
153- * *ephemerides*: the required additional arguments are:
154-
155- * *observatory* : str (observatory code, e.g. '500', 'J04', etc.)
156- * *start* : str (start date in YYYY-MM-DD HH:MM)
157- * *stop* : str (end date in YYYY-MM-DD HH:MM)
158- * *step* : str (time step, e.g. '2', '15', etc.)
159- * *step_unit* : str (e.g. 'days', 'minutes', etc.)
146+ orbital_elements : str
147+ Additional required argument for "orbit_properties" table.
148+ Valid arguments are: keplerian, equinoctial
149+ orbit_epoch : str
150+ Additional required argument for "orbit_properties" table.
151+ Valid arguments are: present, middle
152+ observatory : str
153+ Additional required argument for "ephemerides" table.
154+ Observatory code, e.g. '500', 'J04', etc.
155+ start : str
156+ Additional required argument for "ephemerides" table.
157+ Start date in YYYY-MM-DD HH:MM
158+ stop : str
159+ Additional required argument for "ephemerides" table.
160+ End date in YYYY-MM-DD HH:MM
161+ step : str
162+ Additional required argument for "ephemerides" table.
163+ Time step, e.g. '2', '15', etc.
164+ step_unit : str
165+ Additional required argument for "ephemerides" table.
166+ Unit for time step e.g. 'days', 'minutes', etc.
160167
161168 Returns
162169 -------
@@ -387,22 +394,14 @@ def query_object(name, tab, **kwargs):
387394
388395 # Orbit properties
389396 elif tab == 'orbit_properties' :
390- # Raise error if no elements are provided
391- if 'orbital_elements' not in kwargs :
392- raise KeyError ('Please specify type of orbital_elements: '
393- 'keplerian or equinoctial '
394- '(e.g., orbital_elements="keplerian")' )
395-
396- # Raise error if no epoch is provided
397- if 'orbit_epoch' not in kwargs :
398- raise KeyError ('Please specify type of orbit_epoch: '
399- 'present or middle '
400- '(e.g., orbit_epoch="middle")' )
397+
398+ # Raise error if elements or epoch are not provided
399+ if not all ([orbital_elements , orbit_epoch ]):
400+ raise KeyError (("orbital_elements and orbit_epoch must be specified"
401+ "for an orbit_properties query." ))
401402
402403 # Get URL to obtain the data from NEOCC
403- url = tabs .get_object_url (name , tab ,
404- orbital_elements = kwargs ['orbital_elements' ],
405- orbit_epoch = kwargs ['orbit_epoch' ])
404+ url = tabs .get_object_url (name , tab , orbital_elements = orbital_elements , orbit_epoch = orbit_epoch )
406405
407406 # Request data two times if the first attempt fails
408407 try :
@@ -423,21 +422,13 @@ def query_object(name, tab, **kwargs):
423422
424423 # Ephemerides
425424 elif tab == 'ephemerides' :
426- # Create dictionary for kwargs
427- args_dict = {'observatory' : 'observatory (e.g., observatory="500")' ,
428- 'start' : 'start date (e.g., start="2021-05-17 00:00")' ,
429- 'stop' : 'end date (e.g., stop="2021-05-18 00:00")' ,
430- 'step' : 'time step (e.g., step="1")' ,
431- 'step_unit' : 'step unit (e.g., step_unit="days")' }
432-
433- # Check if any kwargs is missing
434- for element in args_dict :
435- if element not in kwargs :
436- raise KeyError (f'Please specify { args_dict [element ]} for ephemerides.' )
437-
438- resp_str = tabs .get_ephemerides_data (name , observatory = kwargs ['observatory' ],
439- start = kwargs ['start' ], stop = kwargs ['stop' ],
440- step = kwargs ['step' ], step_unit = kwargs ['step_unit' ])
425+
426+ if not all ([observatory , start , stop , step , step_unit ]):
427+ raise KeyError (("Ephemerides queries require the following arguments:"
428+ "observatory, start, stop, step, and step_unit" ))
429+
430+ resp_str = tabs .get_ephemerides_data (name , observatory = observatory , start = start , stop = stop ,
431+ step = step , step_unit = step_unit )
441432 neocc_obj = tabs .parse_ephemerides (resp_str )
442433
443434 elif tab == 'summary' :
@@ -450,4 +441,4 @@ def query_object(name, tab, **kwargs):
450441 return neocc_obj
451442
452443
453- neocc = ESAneoccClass ()
444+ neocc = NEOCCClass ()
0 commit comments