merlin.dates

merlin.dates.enddate(acquired)[source]

Returns the enddate from an acquired date string

Parameters:acquired (str) – / separated date range in iso8601 format
Returns:End date
Return type:str
merlin.dates.is_acquired(acquired)[source]

Is the date string a / separated date range in iso8601 format?

Parameters:acquired – A date string
Returns:True or False
Return type:bool
merlin.dates.mapped(chipmap)[source]

Transform a dict of chips into a dict of datestrings

Parameters:chipmap (dict) – {k: [chips]}
Returns:{k: [datestring2, datestring1, datestring3]}
Return type:dict
merlin.dates.minmax(dates)[source]
Returns an iso8601 daterange string that represents the
min and max datemap.values().
Parameters:datestrings – [d1, d2, d3,]
Returns:[‘min_date/max_date’,]

Example

>>> minmax(['2008-01-01', '2010-01-01', '2009-01-01'])
"2008-01-01/2010-01-01"
merlin.dates.rsort(dateseq)[source]

Reverse sorts a sequence of dates.

Parameters:dateseq – sequence of dates
Returns:reverse sorted sequence of dates
Return type:sequence
merlin.dates.single(datemap)[source]
Returns a sequence of iso8601 daterange strings
if each datemap.values() is length <= 1, else Exception.
Parameters:datemap – {key: [datestring,], key2: [datestring,], …}
Returns:[‘ds2’, ‘ds3’, ‘ds1’] or Exception

Example

>>> single({"nlcd": [ds3,],
            "dem":  [ds2,]})
[ds3, ds2]
>>>
>>> single({"nlcd":  [ds3, ds1],
            "dem":   [ds2,]})
Exception: assymetric dates detected - {'nlcd':[ds3, ds1], 'dem':[ds2]}
merlin.dates.startdate(acquired)[source]

Returns the startdate from an acquired date string

Parameters:acquired (str) – / separated date range in iso8601 format
Returns:Start date
Return type:str
merlin.dates.symmetric(datemap)[source]

Returns a sequence of dates that are common to all map values if all datemap values are represented, else Exception.

Parameters:datemap – {key: [datestrings,]}
Returns:Sequence of date strings or Exception

Example

>>> symmetric({"reds":  [ds3, ds1, ds2],
               "blues": [ds2, ds3, ds1]})
[ds2, ds3, ds1]
>>>
>>> symmetric({"reds":  [ds3, ds1],
               "blues": [ds2, ds3, ds1]})
Exception: assymetric dates detected - {'reds':[ds3, ds1]} != {'blues':[ds2, ds3, ds1]}
merlin.dates.to_ordinal(datestring)[source]

Extract an ordinal date from a date string

Parameters:datestring (str) – date value
Returns:ordinal date
Return type:int