Server : Apache System : Linux indy02.toastserver.com 3.10.0-962.3.2.lve1.5.85.el7.x86_64 #1 SMP Thu Apr 18 15:18:36 UTC 2024 x86_64 User : palandch ( 1163) PHP Version : 7.1.33 Disable Function : NONE Directory : /opt/alt/python27/lib64/python2.7/site-packages/matplotlib/testing/jpl_units/ |
#=========================================================================== # # 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 ) #===========================================================================