ó
å§dRc           @   sF   d  d l  Td  d l Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   *Nt   eon_datec           B   sÚ   e  Z d d d e e d d e d d d d d d d d d d d d d d d d  „ Z d d d e d d „ Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d d „ Z d d „ Z d d	 „ Z d
 „  Z d „  Z d „  Z RS(   c         C   sÊ  t  r |  j Gd Gt ƒ  GHn  | |  _ d | } | t } | d k r | d k rZ d } n  | |  _ t | ƒ ru | n t t	 | ƒ ƒ |  _
 n/| d k rù t | | ƒ } t | d t ƒ \ } } t t | ƒ |  _ t t	 | | | d ƒ ƒ |  _
 nÃ| d k rXt t | ƒ d ƒ \ } } t t | ƒ |  _ | d t t	 | | ƒ ƒ |  _
 nd| d k r·t t | ƒ d ƒ \ } } t t | ƒ |  _ | d t t	 | | ƒ ƒ |  _
 n| d k rt t | ƒ d ƒ \ } } t t | ƒ |  _ | d t t	 | | ƒ ƒ |  _
 n¦| d k r|t t | ƒ d t d ƒ \ } } d t | ƒ |  _ | d t t	 | | ƒ ƒ |  _
 n@| d k rçt t t | ƒ d t d ƒ \ } } d t | ƒ |  _ | d t t	 | | ƒ ƒ |  _
 nÕt | ƒ r| d k r| d k rMt | d	 | d
 | d | d | ƒ\	 }	 }
 } } } } } } } qàt | d | d
 | d | d | ƒ\	 }	 }
 } } } } } } } nQ t |	 |
 | | | | | | | d
 | d | d | ƒ	\	 }	 }
 } } } } } } } t |	 ƒ rS|	 d k r=t |
 t ƒ \ } } t t | ƒ |  _ t t	 | | ƒ ƒ |  _
 q¼d |	 GHt j ƒ  ni t | ƒ re| n t t	 | ƒ ƒ } t |	 |
 d | ƒ| t |  _ | t | t | d | | |  _
 |  j ƒ  d S(   sV  
		#+
		# NAME:
		#	eon_date.__init__
		# PURPOSE:
		#	Creates eon_date object
		# CALLING SEQUENCE:
		#	tt = eon_date()
		# INPUTS:
		# OPTIONAL INPUTS:
		#	exponent    defines units in which time of day is specified as
		#	            10^(-exponent).
		#				Default: g_EXPONENT (defined in eon_helper.py)
		# OUTPUTS:
		#	tt          eon_date object
		#	            tt.exponent     integer
		#								set from optional input 'exponent'
		#	                            (i.e. defaults to g_EXPONENT)
		# PROCEDURE:
		#	The __init__ procedure MUST set tt.ticday and tt.tictac:
		#	  tt.ticday     number of whole days since 2000 January 1, 0 UTC
		#	  tt.tictac		time of days in units of 10^(-tt.exponent)
		#	  tt.exponent   defines units of tt.tictac
		#	As a side effect a number of attributes may get set, but this
		#	is not really necessary.
		#-
		t   ini
   i    i   i   iÐ  il  t    t   formatt   exponentt   juliant   nowt   regext   posixs   oops: option not implemented: %N(    t   g_EON_DEBUGt	   __class__t   whoamiR   t   g_SECONDS_PER_DAYt   Nonet   ticdayt
   is_integert   longt   roundt   tictact   disassemble_numbert   divmodt   g_JD2000_POSIXt   best_guess_for_numbert	   g_NJD_NJDt	   g_NJD_MJDt   g_NJD_JDt   g_JULIAN_YEARt   g_JD2000_B1900t   g_BESSEL_YEARt	   is_stringt   split_date_formatt   split_date_regext   fill_date_fieldst   syst   exitt   days_since_2000t   g_GREG2JULIANt   g_MINUTES_PER_HOURt   g_SECONDS_PER_MINUTEt	   normalize(   t   selft   ctimeR   R   R   R   R   R   R   t   yeart   doyt   montht   dayt   hourt   minutet   secondt   chipsect   timezonet   jdt   mjdt   njdR	   t   jepocht   bepocht   tictacs_per_secondt   tictacs_per_dayt   tict   cmonth(    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyt   __init__   sh    : 	

 		*$$$$#$($BBQ	$ %
c         C   st  | d: k r™t r- d |  j t ƒ  | f GHn  | } d | k r] | j d t |  j ƒ ƒ } n  d | k r‡ | j d t |  j ƒ ƒ } n  d | k r± | j d t |  j ƒ ƒ } n  d | k rÛ | j d t |  j	 ƒ ƒ } n  d | k r| j d t |  j
 ƒ ƒ } n  d | k rG|  j } t | d d | d	 | d
 d |  j ƒ} n  d | k r–|  j } t | d d t | d	 d ƒ d
 | d
 d |  j ƒ} n  d | k rùt | ƒ \ } }	 d d g | d	 k  d t | ƒ t |	 ƒ f }
 | j d |
 ƒ } n  xH d | k rC| |  j d <| j d d | r0|  j n |  j d
 ƒ } qüWd | k r·| |  j d <| rl|  j n |  j } | d | d k  | d | d k } | j d d | d
 ƒ } n  d | k rþ| |  j d <| j d d | rë|  j n |  j d
 ƒ } n  d | k rI| |  j d <| j d d | r2|  j n |  j d	 d
 ƒ } n  d | k r¡| |  j d <| j d d | r}|  j n |  j d
 d	 d !j ƒ  d
 ƒ } n  d | k rì| |  j d <| j d d  | rÕ|  j n |  j d
 d
 ƒ } n  d! | k r>| |  j d <| j d! d  | r |  j n |  j d
 d	 d !d
 ƒ } n  d" | k r…| |  j d <| j d" d | rr|  j n |  j d
 ƒ } n  d# | k r½| |  j d <| j d# d |  j d
 ƒ } n  d$ | k rõ| |  j d <| j d$ d |  j d
 ƒ } n  d% | k r7| |  j d <| j d% |  j d
 d	 d !j ƒ  ƒ } n  d& | k rl| |  j d <| j d& |  j d
 ƒ } n  | | k rpt t ƒ  d' | d( ƒ ‚ qpn× | d: k rÉt rpd) |  j t ƒ  | f GHqpn§ t rêd* |  j t ƒ  | f GHn  t | t  ƒ rEg  } xn | D]8 } | d; k r(| |  j d <n  | j! |  j" | ƒ ƒ qWn+ | d< k ra| |  j d <n  |  j" | ƒ } | S(=   sH  
		#+
		# NAME:
		#	eon_date.get
		# PURPOSE:
		#	Retrieve attribute from eon_date object
		# CALLING SEQUENCE:
		#	attr = tt.get( format=format, regex=regex, attr=attr, julian=True/False )
		# INPUTS
		#	tt   eon_date object
		# OPTIONAL INPUTS:
		#	Specify one of these to define the attribute required
		#	format      string defining the format for the attribute
		#	            The string can contain a number of identifiers which are
		#	            replaced by the corresponding time properties.
		#	            YYYY    4-digit year
		#	            YY      2-digit year:
		#	                    YYYY-1900 if YYYY less than 2000
		#	                    YYYY-2000 if YYYY if greater/equal 2000
		#	            DOY     day of year as 3-char string between 001 and 366
		#	            MM      month as 2-char string between 01 and 12
		#	            MON     month as 3-char uppercase string: JAN, FEB, .., DEC
		#				Mon		month as 3-char string: Jan, Feb, .., Dec
		#				Month	full name of month: January, February, .., December
		#	            DD      day of month as 2-char string between 01 and 31
		#	            hh      hour of the day as 2-char string between 01 and 23
		#				mm      minute in the the hour as 2-char string between
		#	                    01 and 59
		#	            ss, ss.d#, ss.d, ss.dd, ss.ddd, etc.
		#	                    integer part of second in the minute as 2-char
		#	                    string between 01 and 59, with optional the fraction
		#	                    indicated by .d#, .d, etc. (see below)
		#	            posix, posix.d#, posix.d, posix.dd, posix.ddd, etc.
		#	                    integer part of posix (unix) time with optional the
		#	                    fraction indicated by .d#, .d, etc. (see below)
		#
		#				For ss and posix the fraction of the second is specified as:
		#	                    The fractional second is added with the indicated
		#	                    number digits:
		#	                      .d#   # digits matches the internal time precision
		#	                      .d    one digit
		#	                      .dd   two digits, etc.
		#
		#	            DOW     day of week as 3-char uppercase string: MON, TUE, ..
		#				weekday full day of week: Monday, Tuesday, ..
		#				njd     'new' Julian day: days since 2000 Jan 1, 12:00:00 UTC
		#	            mjd     modified Julian day
		#	            jd      Julian day
		#	            jepoch  Julian epoch
		#	            bepoch	Besselian epoch
		#
		#	regex       not yet implemented
		#
		#	attr		single attribute of time:
		#	            year
		#	            julian_year
		#	            doy
		#	            julian_doy
		#	            month
		#	            julian_month
		#	            day
		#	            julian_day
		#	            dow
		#	            hour
		#	            minute
		#	            second
		#	            chipsec
		#	            njd
		#	            mjd
		#	            jd
		#	            jepoch
		#	            bepoch
		#	            posix
		#
		#	julian		True/False, default: False
		#	              False: return attributes for Gregorian date
		#	              True : return attributes for Julian date
		s   %s in "%s" with format "%s"R6   R5   R4   R7   R8   R	   s   %di    i   R   t   sss   %02di<   t   TZt   +t   -s   %02d%02dt   YYYYR3   s   %04dt   YYil  iÐ  t   DOYs   %03dt   MMt   MONs   %3si   t   Months   %st   Mont   DDt   hht   mmt   DOWt   weekdays   , unrecognized format, 't   's   %s in "%s" with regex "%s"s   %s in "%s" with attr "%s"R+   t   julian_yearR,   t
   julian_doyR-   t   julian_montht   imonthR<   R.   t
   julian_dayt   dowR/   R0   R1   R2   N(   s   years   julian_years   doys
   julian_doys   months   julian_months   imonths   cmonths   days
   julian_days   dows   hours   minutes   seconds   chipsec(   s   years   julian_years   doys
   julian_doys   months   julian_months   imonths   cmonths   days
   julian_days   dows   hours   minutes   seconds   chipsec(#   R   R
   R   R   t   replacet   strR6   R5   R4   R7   R8   t   posix2t   fill_fractionR   R   t   disassemble_timezonet   abst   __dict__RO   R+   RP   R,   RQ   R-   t   upperRS   R.   R/   R0   RT   t   EonErrort
   isinstancet   listt   appendt   __getattr__(   R)   R   R   t   attrR   R3   t   resultRW   t   tz_hourt	   tz_minutet   tzR+   t   a(    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyt   getŸ   s¼    V 	-	:0
/&.2?29.)!        	      	c         C   sÀ   i d d 6d d 6d d 6d d 6d	 d
 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d |  j  d 6d d |  j  d 6d  d |  j  d! 6d" |  j  d# d |  j  d$ 6d% d$ 6d& d' 6S((   Ns   days since 2000/01/01 12:00 UTR6   s   modified Julian dayR5   s
   Julian dayR4   s   Besselian epochR8   s   Julian epochR7   s   atom: year, <YYYY>-MM-DDR+   s   atom: day of year, <YYYY>-DOYR,   s   atom: month, YYYY-<MM>-DDR-   s    atom: day of month, YYYY-MM-<DD>R.   s   atom: year (Julian)RO   s   atom: day of year (Julian)RP   s   atom: month (Julian)RQ   s   atom: day of month (Julian)RS   s   atom: hour, <hh>:mm:ss.%st   dR/   s   atom: minute, hh:<mm>:ss.%sR0   s   atom: second, hh:mm:<ss>.%sR1   s+   atom: fraction of second in units of 10^-%ds   , hh:mm:ss.<%s>R2   s   fraction of seconds   day of weekRT   (   R   (   R)   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyt   all_attr}  s(    c         C   sÚ  t  r! d |  j t ƒ  | f GHn  | |  j k r@ |  j | } n–| d k r® t d |  j } |  j | d } t |  j | d k rŠ d n t	 | ƒ | |  _
 |  j | } n(| d k rt d |  j } |  j | d } t |  j | d k rø d n t	 | ƒ | |  _ |  j | } nº| d k rƒt d |  j } |  j | d } t |  j t	 |  j | d ƒ | |  _ |  j | } nS| d k rõt d |  j } |  j | d } d	 |  j | d k rÌd n t	 | ƒ | t |  _ |  j | } ná| d
 k rkt d |  j } |  j | d } d t |  j | d k rAd n t	 | ƒ | t |  _ |  j | } nk| d k rÐd |  j } t |  j | ƒ \ } } | t |  j t 7} | | f |  _ |  j | } n| d k rUd |  j } t |  j | ƒ \ } } | d k rd n t	 | ƒ | } | t |  j t 7} | | |  _ |  j | } n| d k r¬d |  j } t |  j | ƒ \ } } t | d ƒ d |  _ |  j | } n*| d k röd |  j } t |  j | ƒ \ } } | |  _ |  j | } nà| d k r:|  j ƒ  t |  j d t ƒ\ } }	 |  j ƒ  | } nœ| d k r‚|  j ƒ  t |  j t d t ƒ\ } }	 |  j ƒ  | } nT| d k rÆ|  j ƒ  t |  j d t ƒ\ } }	 |  j ƒ  |	 } n| d k r|  j ƒ  t |  j t d t ƒ\ } }	 |  j ƒ  |	 } nÈ| d! k r¯|  j ƒ  t |  j d t ƒ\ } }	 |  j ƒ  t | |	 d t ƒ\ } }
 } } | d k r‚|
 | f n' | d k r”|
 n | d k r¦| n | } n'| d" k r0|  j ƒ  t |  j t d t ƒ\ } }	 |  j ƒ  t | |	 d t ƒ\ } }
 } } | d k r'|
 | f n | } n¦ | d k rh|  j ƒ  t  |  j ƒ } |  j ƒ  | } nn | d# k rÖ|  j ƒ  t! d d d d |  j d  |  j ƒ\ } } } } } |  j ƒ  | d k rÍ| n | } n  | S($   Ns   %s in %s for "%s"R6   i
   i   i    R5   R4   R7   iÐ  R8   il  RW   R	   R1   i<   i   R2   R+   R   RO   R,   RP   R-   RR   R<   R.   RQ   RS   RT   R/   R0   R   (   s   months   imonths   cmonths   day(   s   julian_months
   julian_day(   s   hours   minute("   R
   R   R   R[   R   R   R   R   R   t   floatR6   R   R5   R   R4   R   R7   R   R   R8   R   R   RW   R	   R1   R2   t   adjust_for_timezonet   year_doyt   FalseR%   t   Truet   doy2month_dayRM   t   fix_dhms(   R)   t   nameRc   R:   R2   R9   t   iposixt   rposixR+   R,   R-   R<   R.   RT   R/   R0   R1   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyRa   ”  s¾     00)48"	


	

	

	

	

!E

!!

	
3
c         C   sW   t  r |  j Gd Gt ƒ  GHn  t | t ƒ r/ t S|  j | d d d t |  j | j ƒ ƒS(   Ns   in eon_datet   factori   R   (   i   i   (	   R
   R   R   R^   R   t   NotImplementedt   linear_transformt   maxR   (   R)   t   tt(    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyt   __radd__  s     c         C   sW   t  r |  j Gd Gt ƒ  GHn  t | t ƒ rS |  j | d d d t |  j | j ƒ ƒSt S(   Ns   in eon_dateRu   iÿÿÿÿi   R   (   iÿÿÿÿi   (	   R
   R   R   R^   R   Rw   Rx   R   Rv   (   R)   Ry   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyt   __rsub__!  s     c         C   so   t  r |  j Gd Gt ƒ  GHn  | d k rF t d | d | d | ƒ } n t d | d | d | ƒ } | j ƒ  | S(   NR   R   R   R   R   (   R
   R   R   R   t	   eon_deltaR(   (   R)   t   eon_typeR   R   R   t   u(    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyt   make_instance(  s     	
c         C   sm   t  | ƒ t  d  ƒ k r$ t ƒ  } n  |  | } t  | ƒ t  t ƒ k r\ t t ƒ  d ƒ ‚ n  | | j | ƒ S(   Ns   , t.bot(dt), t must be date(   t   typeR   R   Rv   R]   R   t   bot(   R)   t   dtt   t0t   du(    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyR   <  s    
c         C   sm   t  | ƒ t  d  ƒ k r$ t ƒ  } n  |  | } t  | ƒ t  t ƒ k r\ t t ƒ  d ƒ ‚ n  | | j | ƒ S(   Ns   , t.eot(dt), t must be date(   R€   R   R   Rv   R]   R   t   eot(   R)   R‚   Rƒ   R„   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyR…   G  s    
c         C   sm   t  | ƒ t  d ƒ k r$ t ƒ  } n  |  | } t  | ƒ t  t ƒ k r\ t t ƒ  d ƒ ‚ n  | | j | ƒ S(   sç  
		#+
		# NAME:
		#	eon_delta.round
		# PURPOSE:
		#	Rounds to nearest multiple of a specified delta time
		# CALLING SEQUENCE:
		#	tt_rounded = tt.round(dt)
		# INPUTS:
		#	dt		date object
		# OPTIONAL INPUT:
		#	t0		date object to be used as time origin
		#			default: 2000/01/01 0 UTC
		# OUTPUTS:
		#	tt_rounded	date object, rounded to nearest dt
		# PROCEDURE:
		#	The time difference tt-t0 is rounded to the nearest
		#	dt. The rounded difference is then added to t0 again.
		#-
		s   , t.round(dt), t must be dateN(   R€   R   R   Rv   R]   R   R   (   R)   R‚   Rƒ   R„   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyR   Q  s    
c         C   s›  d d d d d d d d d	 d
 d d g } | | k rC | d 7} n  xQ| D]0} t  j | d | ƒ } | rJ |  } t | j d ƒ ƒ } | d k rÂ t d | j d d ƒ | d d d d ƒ } Pqz| d k r!t d | j d d ƒ d | j d d ƒ d d d d d | d d d ƒ } Pqz| d k rlt d | j d d ƒ d | j d d ƒ d | d d ƒ } Pqz| d k rßt d | j d d ƒ d | j d d ƒ d d | j d d ƒ | j d d ƒ d d | d ƒ } Pqz| d k r6t d | j d d ƒ d | j d d ƒ d d | j d d ƒ | ƒ } Pqz| d k r­t d | j d d ƒ d | j d d ƒ d d | j d d ƒ | j d d ƒ d d d | d ƒ } Pqz| d k r$t d | j d d ƒ d | j d d ƒ d d | j d d ƒ | j d d ƒ d d d | d ƒ } Pqz| d k r›t d | j d d ƒ d | j d d ƒ d d | j d d ƒ | j d d ƒ d d d | d ƒ } Pqz| d	 k rt d | j d d ƒ d | j d d ƒ d d | j d d ƒ | j d d ƒ d d d | d ƒ } Pqz| d
 k r‰t d | j d d ƒ d | j d d ƒ d d | j d d ƒ | j d d ƒ d d d | d ƒ } Pqz| d k r t d | j d d ƒ d | j d d ƒ d d | j d d ƒ | j d d ƒ d d d | d ƒ } Pqz| d k rzt d | j d d ƒ d | j d d ƒ d d | j d d ƒ | j d d ƒ d d d | d ƒ } PqzqJ qJ Wt d t ƒ  | f ƒ ‚ | S(   NR+   t   quarterR-   t   weekR.   t   mondayt   tuesdayt	   wednesdayt   thursdayt   fridayt   saturdayt   sundays   +0s
   ([-,+]\d+)i   Rb   i    i   RT   i   i   i   i   i   s*   %s, t.bop(deadline), invalid deadline '%s'(   t   ret   searchR   t   groupR   Rh   R]   R   (   R)   t   deadlinet   casest   caset   mt   uut   nRy   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyt   bopp  s\    *+O;cGgggggggc         C   sÐ  d d d d d d d d d	 d
 d d g } | | k rC | d 7} n  x†| D]e} t  j | d | ƒ } | rJ |  } | | j | ƒ } t | j d ƒ ƒ } | | j | ƒ k r¼ | d 7} n  | d k r÷ t d | j d d ƒ | d d d d ƒ } Pq¯| d k rVt d | j d d ƒ d | j d d ƒ d d d d d | d d d ƒ } Pq¯| d k r¡t d | j d d ƒ d | j d d ƒ d | d d ƒ } Pq¯| d k rt d | j d d ƒ d | j d d ƒ d d | j d d ƒ | j d d ƒ d d | d ƒ } Pq¯| d k rkt d | j d d ƒ d | j d d ƒ d d | j d d ƒ | ƒ } Pq¯| d k rât d | j d d ƒ d | j d d ƒ d d | j d d ƒ | j d d ƒ d d d | d ƒ } Pq¯| d k rYt d | j d d ƒ d | j d d ƒ d d | j d d ƒ | j d d ƒ d d d | d ƒ } Pq¯| d k rÐt d | j d d ƒ d | j d d ƒ d d | j d d ƒ | j d d ƒ d d d | d ƒ } Pq¯| d	 k rGt d | j d d ƒ d | j d d ƒ d d | j d d ƒ | j d d ƒ d d d | d ƒ } Pq¯| d
 k r¾t d | j d d ƒ d | j d d ƒ d d | j d d ƒ | j d d ƒ d d d | d ƒ } Pq¯| d k r5t d | j d d ƒ d | j d d ƒ d d | j d d ƒ | j d d ƒ d d d | d ƒ } Pq¯| d k r¯t d | j d d ƒ d | j d d ƒ d d | j d d ƒ | j d d ƒ d d d | d ƒ } Pq¯qJ qJ Wt d t ƒ  | f ƒ ‚ | S(   NR+   R†   R-   R‡   R.   Rˆ   R‰   RŠ   R‹   RŒ   R   RŽ   s   +0s
   ([-,+]\d+)i   Rb   i    i   RT   i   i   i   i   i   s*   %s, t.bop(deadline), invalid deadline '%s'(	   R   R   R˜   R   R‘   R   Rh   R]   R   (   R)   R’   R“   R”   R•   R–   Ry   R—   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyt   eop©  sb    *+O;cGgggggggc         C   sÚ   |  } | d d k r˜ x½ | j  d ƒ D]k } | d d k rR | j | d ƒ } q& | d d k rx | j | d ƒ } q& t d t ƒ  | f ƒ ‚ q& Wn> | j d | ƒ } | j d | ƒ } | | k  rÐ | n | } | S(   Ni    R@   RA   t   ,i   s2   %s, t.set_deadline(deadline), missing sign in '%s'(   R@   RA   (   t   splitR™   R˜   R]   R   t   set_deadline(   R)   R’   Ry   t   fragmentt   t1t   t2(    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyRœ   ä  s     N(   t   __name__t
   __module__R   Rn   t
   g_EXPONENTR=   Rh   Rj   Ra   Rz   R{   R   R   R…   R   R˜   R™   Rœ   (    (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyR      sN   ~Ù		†			
	9	;R|   c           B   sé   e  Z d d e d d d d d d d d d d  „ Z d d d d „ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c      
   C   s¶  t  r |  j Gd Gt ƒ  GHn  | |  _ d | } | t } | d  k r | d  k rZ d } n  | |  _ t | ƒ ru | n t t	 | ƒ ƒ |  _
 nt |
 ƒ r|
 d k r| d  k rÛ t |
 d | d | ƒ\ } } } } }	 q5t |
 d | d | ƒ\ } } } } }	 n0 t | | | | | |	 d | ƒ\ } } } } }	 | |  _ | |  _ | |  _ | |  _ t |	 ƒ rk|	 n t t	 |	 ƒ ƒ |  _ | t | t | d | |  j |  _
 |  j ƒ  d  S(   NR   i
   i    R   R   R   R   (   R
   R   R   R   R   R   R   R   R   R   R   R   t   split_delta_formatt   split_delta_regext   fill_delta_fieldsR/   R0   R1   R2   R&   R'   R(   (   R)   R   R   R   R+   R.   R/   R0   R1   R2   R*   R   R   R9   R:   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyR=   ø  s.     	

 		***0				'(
c   
   
   C   sÿ  | d  k rÝ| } d |  j } d  } d | k r: d } nD d } x" d | d | k rd | d 7} qC W| d k r~ d | } n  | d  k sè |  j \ } }	 | d k r« d n d t | ƒ d | } t | | | |	 | d	 |  j ƒ} n  d
 | k s d | k r€d | k rd n d
 } |  j \ } }	 d | k r?|  j } n  | d k rQd n d | } t | | | |	 | d	 |  j ƒ} n  d | k s˜d | k rd | k rªd n d } |  j \ } }	 d | k r×|  j } n  | d k réd n d | } t | | | |	 | d	 |  j ƒ} n  d | k s0d | k r°d | k rBd n d } d | k r]|  j	 n
 |  j
 d } |  j }	 | d k r…d n d | } t | | | |	 d	 |  j ƒ} n  | | k rût t ƒ  d | d ƒ ‚ qûn | d  k rìn |  j | ƒ } | S(   Ni
   s   D#i    t   Di   s   %ss   %0Ri   R   s   h#RJ   s   %02ds   m#RK   s   s#R>   s   , unrecognized format, 'RN   (   R   R   t   days2RV   RX   t   hours2R/   t   minutes2R0   R1   t   secondsR2   R]   R   Ra   (
   R)   R   R   Rb   Rc   R9   t   keyR—   t   wholet   fraction(    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyRh   :  sR    	*% % %"	!!c         C   s¶   i d d |  j  d 6d d |  j  d 6d d |  j  d 6d d |  j  d	 6d
 |  j  d d |  j  d 6d d 6d d 6d d 6d d 6d d 6d |  j  d 6d d 6d d 6d d 6d d  6S(!   Ns   atom: days, <DD>:hh:mm:ss.%sRi   R.   s   aton: hours, DD:<hh>:mm:ss.%sR/   s   atom: minutes, DD:hh:<mm>:ss.%sR0   s   atom: seconds, DD:hh:mm:<ss>.%sR1   s+   atom: fraction of second in units of 10^-%ds   , DD:hh:mm:ss.<%s>R2   s   duration in Julian yearst   yearss   duration in dayst   dayss   duration in hourst   hourss   duration in minutest   minutess   duration in secondsRª   s#   duration in units of 10^-%s secondst   chipsecss,   duration in days as (integer,fraction) tupleR§   s-   duration in hours as (integer,fraction) tupleR¨   s/   duration in minutes as (integer,fraction) tupleR©   s/   duration in seconds as (integer,fraction) tuplet   seconds2(   R   (   R)   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyRj     s     c         C   s(  t  r |  j Gd Gt ƒ  GHn  | |  j k r6 |  j | Sd |  j } | d k rz t | } |  j t |  j ƒ | t	 } nª| d k r­ t | } |  j t |  j ƒ | } nw| d k rä t
 | } |  j t t |  j ƒ | } n@| d k rt | } |  j t t |  j ƒ | } n	| d k rH|  j t t |  j ƒ | } nÜ| d k rut | } |  j | |  j } n¯d	 |  j k rÌt |  j d
 d
 d
 |  j d |  j ƒ\ |  _ |  _ |  _ |  _ |  _ n  | d k rÛn<| d k rt | } |  j t |  j ƒ | f |  _ n| d k rb|  j t |  j |  j |  j t |  j ƒ | t t f |  _ nµ | d k r±|  j t |  j t |  j |  j t |  j ƒ | t f |  _ nf | d k r |  j t |  j t |  j t |  j t |  j ƒ | f |  _ n t t ƒ  d | ƒ ‚ |  j | } | S(   NR   i
   R®   R¯   R°   R±   Rª   R²   R.   i    R   R/   R0   R1   R2   R§   R¨   R©   R³   s#   , unknown eon_delta attribute, '%s'(   s   days   hours   minutes   seconds   chipsec(   R
   R   R   R[   R   R   R   Rk   R   R   t   g_SECONDS_PER_HOURt   g_HOURS_PER_DAYR'   t   g_MINUTES_PER_DAYRq   R.   R/   R0   R1   R2   R§   R&   R¨   R©   R³   R]   (   R)   Rr   R9   R:   Rc   t   tictacs_per_hourt   tictacs_per_minute(    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyRa   •  sR     
!

!
!!
H
"2''c         C   sD   t  r |  j Gd Gt ƒ  GHn  |  j | d d d t |  j | j ƒ ƒS(   Ns   in eon_deltaRu   i   R   (   i   i   (   R
   R   R   Rw   Rx   R   (   R)   Ry   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyRz   Ù  s     c         C   sD   t  r |  j Gd Gt ƒ  GHn  |  j | d d d t |  j | j ƒ ƒS(   Ns   in eon_deltaRu   iÿÿÿÿi   R   (   iÿÿÿÿi   (   R
   R   R   Rw   Rx   R   (   R)   Ry   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyR{   Ý  s     c         C   s5   t  r |  j Gd Gt ƒ  GHn  |  j d d d |  j ƒ S(   Ns   in eon_deltaRu   iÿÿÿÿR   (   R
   R   R   Rw   R   (   R)   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyt   __neg__á  s     c         C   s)   t  r |  j Gd Gt ƒ  GHn  |  j | ƒ S(   Ns   in eon_delta(   R
   R   R   t   multiply(   R)   t
   multiplier(    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyt   __mul__å  s     c         C   s)   t  r |  j Gd Gt ƒ  GHn  |  j | ƒ S(   Ns   in eon_delta(   R
   R   R   Rº   (   R)   R»   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyt   __rmul__é  s     c         C   s)   t  r |  j Gd Gt ƒ  GHn  |  j | ƒ S(   Ns   in eon_delta(   R
   R   R   t   divide(   R)   t   divider(    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyt   __div__í  s     c         C   s-   t  r |  j Gd Gt ƒ  GHn  |  j | ƒ d S(   Ns   in eon_deltai    (   R
   R   R   R   (   R)   R¿   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyt   __floordiv__ñ  s     c         C   s)   t  r |  j Gd Gt ƒ  GHn  |  j | ƒ S(   Ns   in eon_delta(   R
   R   R   R   (   R)   R¿   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyt
   __divmod__õ  s     c         C   sA   t  r |  j Gd Gt ƒ  GHn  t d t |  j ƒ d t |  j ƒ ƒ S(   Ns   in eon_deltaR   R   (   R
   R   R   R|   RZ   R   R   (   R)   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyt   __abs__ù  s     c         C   s<   t  r |  j Gd Gt ƒ  GHn  t | ƒ r8 |  j d | ƒ St S(   Ns   in eon_deltaRu   (   R
   R   R   t	   is_numberRw   Rv   (   R)   R»   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyRº   ý  s     c         C   s    t  r |  j Gd Gt ƒ  GHn  t | ƒ rA |  j d d | ƒ } n[ t | t ƒ r– t d |  j } t	 |  j
 | |  j ƒ t	 | j
 | | j ƒ } n t } | S(   Ns   in eon_deltaRu   g      ð?i
   (   R
   R   R   RÄ   Rw   R^   R|   R   R   Rk   R   R   Rv   (   R)   R¿   R~   R:   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyR¾     s     5c   
      C   s
  t  r |  j Gd Gt ƒ  GHn  t | t ƒ r t |  j | j ƒ } t d | } |  j | |  j	 d | |  j } | j | | j	 d | | j } t
 | | ƒ \ } } t | ƒ } t d d d d | d | ƒ\ } } |  j d | | | ƒ }	 | |	 f }	 n t }	 |	 S(   NR   i
   i    R   R|   (   R
   R   R   R^   R|   Rx   R   R   R   R   R   R   t   fix_dsR   Rv   (
   R)   Ry   R   R:   R„   R‚   t   nnR   R   R~   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyR     s     ##$c         C   so   t  r |  j Gd Gt ƒ  GHn  | d k rF t d | d | d | ƒ } n t d | d | d | ƒ } | j ƒ  | S(   NR   R   R   R   R   (   R
   R   R   R   R|   R(   (   R)   R}   R   R   R   R~   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyR   -  s     	
c         C   sO   |  j  t | ƒ ƒ } t | ƒ t t ƒ k rC t t ƒ  d ƒ ‚ n  | | d S(   Ns"   , t.bot(dt), dt must be delta timei    (   R   RZ   R€   Rv   R]   R   (   R)   R‚   R~   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyR   A  s    c         C   sS   |  j  t | ƒ ƒ } t | ƒ t t ƒ k rC t t ƒ  d ƒ ‚ n  | | d d S(   Ns"   , t.eot(dt), dt must be delta timei    i   (   R   RZ   R€   Rv   R]   R   (   R)   R‚   R~   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyR…   I  s    c         C   sy   |  j  t | ƒ ƒ } t | ƒ t t ƒ k rC t t ƒ  d ƒ ‚ n  | d t | ƒ d k  ri | | d S| | d d S(   s  
		#+
		# NAME:
		#	eon_delta.round
		# PURPOSE:
		#	Rounds to nearest multiple of a specified delta time
		# CALLING SEQUENCE:
		#	dt_rounded = dt.round(du)
		# INPUTS:
		#	du			delta time object
		# OUTPUTS:
		#	dt_rounded	delta time object, rounded to nearest du
		#-
		s$   , t.round(dt), dt must be delta timei   g      à?i    (   R   RZ   R€   Rv   R]   R   (   R)   R‚   R~   (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyR   Q  s    N(   R    R¡   R   R¢   R=   Rh   Rj   Ra   Rz   R{   R¹   R¼   R½   RÀ   RÁ   RÂ   RÃ   Rº   R¾   R   R   R   R…   R   (    (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyR|   ö  sB   4D		D															(   t	   eon_classR   t   eonR   R|   (    (    (    s+   /home/soft/smei/ucsd/gen/python/eon_date.pyt   <module>   s
   
ÿ ÿ ô