Source code for solar_utils.exceptions
# -*- coding: utf-8 -*-
"""
Exceptions for solar utilities.
2013 SunPower Corp.
"""
[docs]class SolarUtilsException(Exception):
"""
Base exception class for solar_utils.
"""
pass
[docs]class SOLPOS_Error(SolarUtilsException):
"""
SOLPOS Errors
"""
S_CODE = ['S_YEAR_ERROR',
'S_MONTH_ERROR',
'S_DAY_ERROR',
'S_DOY_ERROR',
'S_HOUR_ERROR',
'S_MINUTE_ERROR',
'S_SECOND_ERROR',
'S_TZONE_ERROR',
'S_INTRVL_ERROR',
'S_LAT_ERROR',
'S_LON_ERROR',
'S_TEMP_ERROR',
'S_PRESS_ERROR',
'S_TILT_ERROR',
'S_ASPECT_ERROR',
'S_SBWID_ERROR',
'S_SBRAD_ERROR',
'S_SBSKY_ERROR']
def __init__(self, code, data):
self.args = SOLPOS_Error.S_CODE[code], data
self.message = str(self)
def __str__(self):
if self.args[0] == 'S_YEAR_ERROR':
errmsg = "S_decode ==> Please fix the year: %d [1950-2050]\n"
message = errmsg % self.args[1]['datetime'][0]
if self.args[0] == 'S_MONTH_ERROR':
errmsg = "S_decode ==> Please fix the month: %d\n"
message = errmsg % self.args[1]['datetime'][1]
if self.args[0] == 'S_DAY_ERROR':
errmsg = "S_decode ==> Please fix the day-of-month: %d\n"
message = errmsg % self.args[1]['datetime'][2]
if self.args[0] == 'S_HOUR_ERROR':
errmsg = "S_decode ==> Please fix the hour: %d\n"
message = errmsg % self.args[1]['datetime'][3]
if self.args[0] == 'S_MINUTE_ERROR':
errmsg = "S_decode ==> Please fix the minute: %d\n"
message = errmsg % self.args[1]['datetime'][4]
if self.args[0] == 'S_SECOND_ERROR':
errmsg = "S_decode ==> Please fix the second: %d\n"
message = errmsg % self.args[1]['datetime'][5]
if self.args[0] == 'S_DOY_ERROR':
errmsg = "S_decode ==> Please fix the day-of-year: %d\n"
message = errmsg % self.args[1]['settings'][0]
if self.args[0] == 'S_INTRVL_ERROR':
errmsg = "S_decode ==> Please fix the interval: %d\n"
message = errmsg % self.args[1]['settings'][1]
if self.args[0] == 'S_LAT_ERROR':
errmsg = "S_decode ==> Please fix the latitude: %f\n"
message = errmsg % self.args[1]['location'][0]
if self.args[0] == 'S_LON_ERROR':
errmsg = "S_decode ==> Please fix the longitude: %f\n"
message = errmsg % self.args[1]['location'][1]
if self.args[0] == 'S_TZONE_ERROR':
errmsg = "S_decode ==> Please fix the time zone: %f\n"
message = errmsg % self.args[1]['location'][2]
if self.args[0] == 'S_PRESS_ERROR':
errmsg = "S_decode ==> Please fix the pressure: %f\n"
message = errmsg % self.args[1]['weather'][0]
if self.args[0] == 'S_TEMP_ERROR':
errmsg = "S_decode ==> Please fix the temperature: %f\n"
message = errmsg % self.args[1]['weather'][1]
if self.args[0] == 'S_TILT_ERROR':
errmsg = "S_decode ==> Please fix the tilt: %f\n"
message = errmsg % self.args[1]['orientation'][0]
if self.args[0] == 'S_ASPECT_ERROR':
errmsg = "S_decode ==> Please fix the aspect: %f\n"
message = errmsg % self.args[1]['orientation'][1]
if self.args[0] == 'S_SBWID_ERROR':
errmsg = "S_decode ==> Please fix the shadowband width: %f\n"
message = errmsg % self.args[1]['shadowband'][0]
if self.args[0] == 'S_SBRAD_ERROR':
errmsg = "S_decode ==> Please fix the shadowband radius: %f\n"
message = errmsg % self.args[1]['shadowband'][1]
if self.args[0] == 'S_SBSKY_ERROR':
errmsg = "S_decode ==> Please fix the shadowband sky factor: %f\n"
message = errmsg % self.args[1]['shadowband'][2]
return message
[docs]class SPECTRL2_Error(SolarUtilsException):
"""
SPECTRL2 Errors
"""
def __init__(self, code, data):
self.args = code, data
self.message = str(self)
def __str__(self):
if self.args[0] == -1:
errmsg = "*** S_spectral2 -> units should be 1 to 3, not %d\n"
message = errmsg % self.args[1]['units']
if self.args[0] == -2:
errmsg = "*** S_spectral2 -> tau500 should not be %f\n"
message = errmsg % self.args[1]['tau500']
if self.args[0] == -3:
errmsg = "*** S_spectral2 -> watvap should not be %f\n"
message = errmsg % self.args[1]['watvap']
if self.args[0] == -4:
errmsg = "*** S_spectral2 -> assym should not be %f\n"
message = errmsg % self.args[1]['assym']
return message