Example #1
0
    def __init__(self, load_data, temp_data=None, forecast_temp_data=None,
                 timezone=None, temp_units='F', sq_ft=None,
                 tariff=None, log_level=logging.INFO):
        """load_data, temp_data, and forecast_temp_data may be:
                - List of Tuples containing timestamps and values
                - filename of a csv containing timestamps and values
                - Series object
        """
        logging.basicConfig(level=log_level)
        self.logger = logging.getLogger(__name__)

        if timezone == None: self.logger.warn("Assuming timezone is OS default")

        self.timezone   = utils.get_timezone(timezone)
        self.model_dir  = path.join(path.dirname(path.abspath(__file__)), 'r')
        self.temp_units = temp_units
        self.sq_ft      = sq_ft
        self.tariff     = tariff

        self.training_load_series           = self._get_series(load_data)
        self.training_temperature_series    = self._get_series(temp_data)
        self.forecast_temperature_series    = self._get_series(forecast_temp_data)
        
        self._stderr = None
        self._stdout = None

        self._reset_derivative_data()
Example #2
0
def get_next_event_text(calendar, after=None, include_current=None, tz=None, verbose=True):
	"""
	Build the actual human-readable response to the !next command.

	The tz parameter can override the timezone used to display the event times.
	This can be an actual timezone object, or a string timezone name.
	Defaults to moonbase time.
	"""
	if after is None:
		after = datetime.datetime.now(datetime.timezone.utc)
	if not tz:
		tz = config['timezone']
	elif isinstance(tz, str):
		tz = tz.strip()
		try:
			tz = utils.get_timezone(tz)
		except pytz.exceptions.UnknownTimeZoneError:
			return "Unknown timezone: %s" % tz

	events = get_next_event(calendar, after=after, include_current=include_current)
	if not events:
		return "There don't seem to be any upcoming scheduled streams"

	strs = []
	for i, ev in enumerate(events):
		# If several events are at the same time, just show the time once after all of them
		if i == len(events) - 1 or ev['start'] != events[i+1]['start']:
			if verbose:
				if ev['location'] is not None:
					title = "%(title)s (%(location)s)" % ev
				else:
					title = ev['title']
				if ev['start'] < after:
					nice_duration = utils.nice_duration(after - ev['start'], 1) + " ago"
				else:
					nice_duration = utils.nice_duration(ev['start'] - after, 1) + " from now"
				strs.append("%s at %s (%s)" % (title, ev['start'].astimezone(tz).strftime(DISPLAY_FORMAT), nice_duration))
			else:
				strs.append("%s at %s" % (ev['title'], ev['start'].astimezone(tz).strftime(DISPLAY_FORMAT)))
		else:
			strs.append(ev['title'])
	response = ', '.join(strs)

	if verbose:
		if calendar == CALENDAR_LRL:
			response = "Next scheduled stream: " + response
		elif calendar == CALENDAR_FAN:
			response = "Next scheduled fan stream: " + response

	return utils.shorten(response, 450) # For safety
Example #3
0
    def __init__(self, tariff_file=None, timezone=None, log_level=logging.INFO):
        """load_data, temp_data, and forecast_temp_data may be:
                - List of Tuples containing timestamps and values
                - filename of a csv containing timestamps and values
                - Series object
        """
        logging.basicConfig(level=log_level)
        self.logger = logging.getLogger(__name__)

        if timezone == None: self.logger.warn("Assuming timezone is OS default")
        self.timezone           = utils.get_timezone(timezone)

        self.tariff_file        = None
        self.tariff_json        = None
        self.rate_structure     = None
        self.rate_schedule      = None
        self.dr_periods          = []

        if tariff_file != None: self.parse(tariff_file)
def init_localized_datetime(instance, **kwargs):
    for field in instance.__class__._meta.fields:
        if not isinstance(field, LocalizedDateTimeField):
            continue

        attname = field.attname
        dt = getattr(instance, attname, None)
        if dt is not None:
            tzone = get_timezone()
            if isinstance(tzone, basestring):
                tzone = smart_str(tzone)
                if tzone in pytz.all_timezones_set:
                    tzone = pytz.timezone(tzone)                

            if dt.tzinfo is None:
                dt = default_tz.localize(dt)

            dt = dt.astimezone(tzone)
            setattr(instance, attname, dt)
Example #5
0
def init_localized_datetime(instance, **kwargs):
    for field in instance.__class__._meta.fields:
        if not isinstance(field, LocalizedDateTimeField):
            continue

        attname = field.attname
        dt = getattr(instance, attname, None)
        if dt is not None:
            tzone = get_timezone()
            if isinstance(tzone, basestring):
                tzone = smart_str(tzone)
                if tzone in pytz.all_timezones_set:
                    tzone = pytz.timezone(tzone)

            if dt.tzinfo is None:
                dt = default_tz.localize(dt)

            dt = dt.astimezone(tzone)
            setattr(instance, attname, dt)
Example #6
0
    def get_context(self):

        # get the timezone from the GET params (default to UTC)
        tz = self.request.get('tz', default_value='UTC')

        # attempt to parse timezone
        try:
            timezone = get_timezone(tz)
        # return error if invalid timezone
        except pytz.UnknownTimeZoneError:
            # set HTTP status and return error msg
            self.response.set_status(400)
            return {'error': 'Unknown timezone "%s"' % tz}

        # add timezone name to response
        response = {'tz_name': timezone.zone}
        # add utc offset to response
        response['tz_offset'] = get_utcoffset_as_string(timezone)
        # add current time to response
        response['datetime'] = get_current_time(tz)
        return response
Example #7
0
    def __init__(self, series=[], timezone=None, temp_units='F', data_column=1):
        '''series argument may be:
                - List of Tuples containing timestamps and values
                - filename of a csv containing timestamps and values
            kwargs are stored as Series metadata
        '''
        self.errors = []
        self.exclusions = []
        self.data_column = data_column
        
        self.temp_units = temp_units.upper()

        if isinstance(timezone, str) | (timezone == None):
            self.timezone = utils.get_timezone(timezone)
        else:
            self.timezone = timezone
        
        if isinstance(series, list):
            self.series = self.load_list(series)
        elif isinstance(series, str):
            self.series = self.load_list_from_csv(series)

        self._validate_series()
        self._sort_series()
Example #8
0
    def __init__(self, series=[], timezone=None, temp_units="F", data_column=1):
        """series argument may be:
                - List of Tuples containing timestamps and values
                - filename of a csv containing timestamps and values
            kwargs are stored as Series metadata
        """
        self.errors = []
        self.exclusions = []
        self.data_column = data_column

        self.temp_units = temp_units.upper()

        if isinstance(timezone, str) | (timezone == None):
            self.timezone = utils.get_timezone(timezone)
        else:
            self.timezone = timezone

        if isinstance(series, list):
            self.series = self.load_list(series)
        elif isinstance(series, str):
            self.series = self.load_list_from_csv(series)

        self._validate_series()
        self._sort_series()