Source code for PseudoNetCDF.camxfiles.timetuple

__all__ = ['timerange', 'timediff', 'timeadd', 'cmp_time']

__doc__ = """
.. _timetuple
:mod:`timetuple` -- CAMx simple time functions
==============================================

.. module:: timetuple
   :platform: Unix, Windows
   :synopsis: Time tuple provided a simple interface for handling
              CAMx time representations.  It has been deprecated
              and all reliance should be removed
.. moduleauthor:: Adam Hupp and Barron Henderson <barronh@unc.edu>
"""

import unittest


[docs] def timerange(datetime1, datetime2, step=100, eod=2400.0): """Iterater of time tuples between start and end (not end inclusive) Should probably remove the != and use < if step + and > if step - """ (date1, time1) = datetime1 (date2, time2) = datetime2 date1, time1 = timeadd((date1, time1), (0, 0), eod) date2, time2 = timeadd((date2, time2), (0, 0), eod) while (date1, time1) != (date2, time2): yield date1, time1 date1, time1 = timeadd((date1, time1), (0, step), eod)
[docs] def timediff(datetime1, datetime2, eod=2400.0): """Compares date tuples and returns difference in a time tuple """ (date1, time1) = datetime1 (date2, time2) = datetime2 date3 = date2 - date1 time3 = time2 - time1 return date3 * eod + time3
[docs] def timeadd(datetime1, datetime2, eod=2400.0): """Adds time tuple 1 to time tuple 2. Time values greater than eod (dflt 2400) are converted to days Big question is hr 24 day 1 """ (date1, time1) = datetime1 (date2, time2) = datetime2 time1 = time1 + time2 date1 = date1 + date2 if time1 >= eod: time1 %= eod date1 += 1 if time1 < 0: time1 %= eod date1 -= 1 return date1, time1
[docs] def cmp_time(lhs, rhs): """Compare two time tuples. Each arg is a 2-tuple, the first element being the hour of the day * 100, the second being the date """ ltime, ldate = lhs rtime, rdate = rhs if ldate == rdate: return ltime - rtime else: return ldate - rdate
# # Test cases # class CompareTime(unittest.TestCase): def testCompare(self): assert cmp_time((1.0, 2), (2.0, 2)) < 0 assert cmp_time((2.0, 2), (2.0, 2)) == 0 assert cmp_time((3.0, 2), (2.0, 3)) < 0 assert cmp_time((3.0, 3), (2.0, 3)) > 0