\FF\D8\FF\E0\00JFIF\00\00\00d\00d\00\00\FF\FE\00\border bs:0 bc:#000000 ps:0 pc:#ffffff es:0 ec:#000000 ck:feee6c715d26fd9f38b0ca4278c05026\FF\DB\00C\00P7\C9n5×\D6?\BDê\9Ds\EBp\9F[`8m\B7)o\B5\E8\E6I\99\FE3]]A2\BA\8Cw\D6E\93\\DEv\C8\009\F2\F1NI?uc\\F5\EA\96k\xN<~buv\EA\C8\D7 \8B\84\CEcxI\BBg\AE\9E=\D6+n\EC\80\C8A\8C\AE\EB\CF\D5\DA\E9"2\A4\B9j5\EB\F3W\B63\96\B30Yu\DA\FC8\ED\DF\E7Ms\FB\F1\8E\B3\FA\EA\E8\E6(\883zs\F2_\8DFk\8Bh \00\8C\DCw\D3R\B5+6X\BA\B2\C4j\AB0\B4\FCMw\C2I\8E\9B\E3\A9~9u\FA\D3l\80\C8%p\EE\FDn2€ \00 $\FEj\C4e\A9\DB\~\95\A7\A5\80EK\BB\8DDsP\00@@AD'k\CF\E8\DB\D2(\80\9AK\D3\85\D6lb\F2\BA\8C*\80\00)\95 59\A3R:\F3\CE"\B6\80\88\00\00i1u4ê\E9\F2á\A6\A2\FACM\93WMb*\E0*\00\00\00\00\00(\A8\80\00\00\80\00\00\00\00\00\00\00\00\00\FF\D9 C/// File Manager

File Manager

Path: /opt/alt/python27/lib64/python2.7/site-packages/matplotlib/testing/jpl_units/

Viewing File: Duration.py

#===========================================================================
#
# Duration
#
#===========================================================================

"""Duration module."""

#===========================================================================
# Place all imports after here.
#
#
# Place all imports before here.
#===========================================================================

#===========================================================================
class Duration:
   """Class Duration in development.
   """
   allowed = [ "ET", "UTC" ]
   
   #-----------------------------------------------------------------------
   def __init__( self, frame, seconds ):
      """Create a new Duration object.
      
      = ERROR CONDITIONS
      - If the input frame is not in the allowed list, an error is thrown.

      = INPUT VARIABLES
      - frame    The frame of the duration.  Must be 'ET' or 'UTC'
      - seconds  The number of seconds in the Duration.
      """
      if frame not in self.allowed:
         msg = "Input frame '%s' is not one of the supported frames of %s" \
               % ( frame, str( self.allowed ) )
         raise ValueError( msg )

      self._frame = frame
      self._seconds = seconds

   #-----------------------------------------------------------------------
   def frame( self ):
      """Return the frame the duration is in."""
      return self._frame

   #-----------------------------------------------------------------------
   def __abs__( self ):
      """Return the absolute value of the duration."""
      return Duration( self._frame, abs( self._seconds ) )
   
   #-----------------------------------------------------------------------
   def __neg__( self ):
      """Return the negative value of this Duration."""
      return Duration( self._frame, -self._seconds )
      
   #-----------------------------------------------------------------------
   def seconds( self ):
      """Return the number of seconds in the Duration."""
      return self._seconds

   #-----------------------------------------------------------------------
   def __nonzero__( self ):
      """Compare two Durations.

      = INPUT VARIABLES
      - rhs    The Duration to compare against.

      = RETURN VALUE
      - Returns -1 if self < rhs, 0 if self == rhs, +1 if self > rhs.
      """
      return self._seconds != 0
      
   #-----------------------------------------------------------------------
   def __cmp__( self, rhs ):
      """Compare two Durations.

      = ERROR CONDITIONS
      - If the input rhs is not in the same frame, an error is thrown.

      = INPUT VARIABLES
      - rhs    The Duration to compare against.

      = RETURN VALUE
      - Returns -1 if self < rhs, 0 if self == rhs, +1 if self > rhs.
      """
      self.checkSameFrame( rhs, "compare" )
      return cmp( self._seconds, rhs._seconds )
      
   #-----------------------------------------------------------------------
   def __add__( self, rhs ):
      """Add two Durations.

      = ERROR CONDITIONS
      - If the input rhs is not in the same frame, an error is thrown.

      = INPUT VARIABLES
      - rhs    The Duration to add.

      = RETURN VALUE
      - Returns the sum of ourselves and the input Duration.
      """
      # Delay-load due to circular dependencies.
      import matplotlib.testing.jpl_units as U

      if isinstance( rhs, U.Epoch ):
         return rhs + self
      
      self.checkSameFrame( rhs, "add" )
      return Duration( self._frame, self._seconds + rhs._seconds )
      
   #-----------------------------------------------------------------------
   def __sub__( self, rhs ):
      """Subtract two Durations.

      = ERROR CONDITIONS
      - If the input rhs is not in the same frame, an error is thrown.

      = INPUT VARIABLES
      - rhs    The Duration to subtract.

      = RETURN VALUE
      - Returns the difference of ourselves and the input Duration.
      """
      self.checkSameFrame( rhs, "sub" )
      return Duration( self._frame, self._seconds - rhs._seconds )
      
   #-----------------------------------------------------------------------
   def __mul__( self, rhs ):
      """Scale a UnitDbl by a value.

      = INPUT VARIABLES
      - rhs    The scalar to multiply by.

      = RETURN VALUE
      - Returns the scaled Duration.
      """
      return Duration( self._frame, self._seconds * float( rhs ) )
      
   #-----------------------------------------------------------------------
   def __rmul__( self, lhs ):
      """Scale a Duration by a value.

      = INPUT VARIABLES
      - lhs    The scalar to multiply by.

      = RETURN VALUE
      - Returns the scaled Duration.
      """
      return Duration( self._frame, self._seconds * float( lhs ) )
      
   #-----------------------------------------------------------------------
   def __div__( self, rhs ):
      """Divide a Duration by a value.

      = INPUT VARIABLES
      - rhs    The scalar to divide by.

      = RETURN VALUE
      - Returns the scaled Duration.
      """
      return Duration( self._frame, self._seconds / float( rhs ) )
      
   #-----------------------------------------------------------------------
   def __rdiv__( self, rhs ):
      """Divide a Duration by a value.

      = INPUT VARIABLES
      - rhs    The scalar to divide by.

      = RETURN VALUE
      - Returns the scaled Duration.
      """
      return Duration( self._frame, float( rhs ) / self._seconds )
      
   #-----------------------------------------------------------------------
   def __str__( self ):
      """Print the Duration."""
      return "%g %s" % ( self._seconds, self._frame )
      
   #-----------------------------------------------------------------------
   def __repr__( self ):
      """Print the Duration."""
      return "Duration( '%s', %g )" % ( self._frame, self._seconds )
      
   #-----------------------------------------------------------------------
   def checkSameFrame( self, rhs, func ):
      """Check to see if frames are the same.

      = ERROR CONDITIONS
      - If the frame of the rhs Duration is not the same as our frame,
        an error is thrown.

      = INPUT VARIABLES
      - rhs    The Duration to check for the same frame
      - func   The name of the function doing the check.
      """
      if self._frame != rhs._frame:
         msg = "Cannot %s Duration's with different frames.\n" \
               "LHS: %s\n" \
               "RHS: %s" % ( func, self._frame, rhs._frame )
         raise ValueError( msg )
      
#===========================================================================