11import datetime as dt
22from inspect import getmembers , ismethod
3- from typing import Any , Dict , List , Optional , Tuple , Type
3+ from typing import Any , Dict , List , Optional , Tuple , Type , Union
44
55import dateutil .parser as parser # type: ignore
66from cmr import CollectionQuery , GranuleQuery # type: ignore
@@ -312,31 +312,36 @@ def get(self, limit: int = 2000) -> list:
312312 return results
313313
314314 def temporal (
315- self , date_from : str , date_to : str , exclude_boundary : bool = False
315+ self ,
316+ date_from : Optional [Union [str , dt .datetime ]] = None ,
317+ date_to : Optional [Union [str , dt .datetime ]] = None ,
318+ exclude_boundary : bool = False ,
316319 ) -> Type [CollectionQuery ]:
317320 """Filter by an open or closed date range. Dates can be provided as datetime objects
318321 or ISO 8601 formatted strings. Multiple ranges can be provided by successive calls
319322 to this method before calling execute().
320323
321324 Parameters:
322- date_from: earliest date of temporal range
323- date_to: latest date of temporal range
324- exclude_boundary: whether to exclude the date_from/to in the matched range
325+ date_from (String or Datetime object) : earliest date of temporal range
326+ date_to (String or Datetime object) : latest date of temporal range
327+ exclude_boundary (Boolean) : whether or not to exclude the date_from/to in the matched range.
325328 """
326329 DEFAULT = dt .datetime (1979 , 1 , 1 )
327- if date_from is not None :
330+ if date_from is not None and not isinstance ( date_from , dt . datetime ) :
328331 try :
329- parsed_from = parser .parse (date_from , default = DEFAULT ).isoformat () + "Z"
332+ date_from = parser .parse (date_from , default = DEFAULT ).isoformat () + "Z"
330333 except Exception :
331334 print ("The provided start date was not recognized" )
332- parsed_from = ""
333- if date_to is not None :
335+ date_from = ""
336+
337+ if date_to is not None and not isinstance (date_to , dt .datetime ):
334338 try :
335- parsed_to = parser .parse (date_to , default = DEFAULT ).isoformat () + "Z"
339+ date_to = parser .parse (date_to , default = DEFAULT ).isoformat () + "Z"
336340 except Exception :
337341 print ("The provided end date was not recognized" )
338- parsed_to = ""
339- super ().temporal (parsed_from , parsed_to , exclude_boundary )
342+ date_to = ""
343+
344+ super ().temporal (date_from , date_to , exclude_boundary )
340345 return self
341346
342347
@@ -675,8 +680,8 @@ def debug(self, debug: bool = True) -> Type[GranuleQuery]:
675680
676681 def temporal (
677682 self ,
678- date_from : Optional [str ] = None ,
679- date_to : Optional [str ] = None ,
683+ date_from : Optional [Union [ str , dt . datetime ] ] = None ,
684+ date_to : Optional [Union [ str , dt . datetime ] ] = None ,
680685 exclude_boundary : bool = False ,
681686 ) -> Type [GranuleQuery ]:
682687 """Filter by an open or closed date range.
@@ -689,19 +694,21 @@ def temporal(
689694 exclude_boundary: whether to exclude the date_from/to in the matched range
690695 """
691696 DEFAULT = dt .datetime (1979 , 1 , 1 )
692- if date_from is not None :
697+ if date_from is not None and not isinstance ( date_from , dt . datetime ) :
693698 try :
694- parsed_from = parser .parse (date_from , default = DEFAULT ).isoformat () + "Z"
699+ date_from = parser .parse (date_from , default = DEFAULT ).isoformat () + "Z"
695700 except Exception :
696701 print ("The provided start date was not recognized" )
697- parsed_from = ""
698- if date_to is not None :
702+ date_from = ""
703+
704+ if date_to is not None and not isinstance (date_to , dt .datetime ):
699705 try :
700- parsed_to = parser .parse (date_to , default = DEFAULT ).isoformat () + "Z"
706+ date_to = parser .parse (date_to , default = DEFAULT ).isoformat () + "Z"
701707 except Exception :
702708 print ("The provided end date was not recognized" )
703- parsed_to = ""
704- super ().temporal (parsed_from , parsed_to , exclude_boundary )
709+ date_to = ""
710+
711+ super ().temporal (date_from , date_to , exclude_boundary )
705712 return self
706713
707714 def version (self , version : str = "" ) -> Type [GranuleQuery ]:
0 commit comments