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