def get_point_as_seconds(self): """Compute and store my cycle point as seconds since epoch.""" if self.point_as_seconds is None: iso_timepoint = cylc.cycling.iso8601.point_parse(str(self.point)) self.point_as_seconds = int( iso_timepoint.get('seconds_since_unix_epoch')) if iso_timepoint.time_zone.unknown: utc_offset_hours, utc_offset_minutes = (get_local_time_zone()) utc_offset_in_seconds = (3600 * utc_offset_hours + 60 * utc_offset_minutes) self.point_as_seconds += utc_offset_in_seconds return self.point_as_seconds
def get_point_as_seconds(self): """Compute and store my cycle point as seconds.""" if self.point_as_seconds is None: iso_timepoint = cylc.cycling.iso8601.point_parse(str(self.point)) self.point_as_seconds = int(iso_timepoint.get( "seconds_since_unix_epoch")) if iso_timepoint.time_zone.unknown: utc_offset_hours, utc_offset_minutes = ( get_local_time_zone()) utc_offset_in_seconds = ( 3600 * utc_offset_hours + 60 * utc_offset_minutes) self.point_as_seconds += utc_offset_in_seconds return self.point_as_seconds
def init(num_expanded_year_digits=0, custom_dump_format=None, time_zone=None, assume_utc=False, cycling_mode=None): """Initialise suite-setup-specific information.""" SuiteSpecifics.interval_parser = DurationParser() if cycling_mode in Calendar.default().MODES: Calendar.default().set_mode(cycling_mode) if time_zone is None: if assume_utc: time_zone = "Z" time_zone_hours_minutes = (0, 0) else: time_zone = get_local_time_zone_format(reduced_mode=True) time_zone_hours_minutes = get_local_time_zone() else: time_zone_hours_minutes = TimePointDumper().get_time_zone(time_zone) SuiteSpecifics.ASSUMED_TIME_ZONE = time_zone_hours_minutes SuiteSpecifics.NUM_EXPANDED_YEAR_DIGITS = num_expanded_year_digits if custom_dump_format is None: if num_expanded_year_digits > 0: SuiteSpecifics.DUMP_FORMAT = EXPANDED_DATE_TIME_FORMAT + time_zone else: SuiteSpecifics.DUMP_FORMAT = DATE_TIME_FORMAT + time_zone else: SuiteSpecifics.DUMP_FORMAT = custom_dump_format if u"+X" not in custom_dump_format and num_expanded_year_digits: raise IllegalValueError( 'cycle point format', ('cylc', 'cycle point format'), SuiteSpecifics.DUMP_FORMAT ) SuiteSpecifics.point_parser = TimePointParser( allow_only_basic=False, allow_truncated=True, num_expanded_year_digits=SuiteSpecifics.NUM_EXPANDED_YEAR_DIGITS, dump_format=SuiteSpecifics.DUMP_FORMAT, assumed_time_zone=time_zone_hours_minutes ) custom_point_parse_function = None if SuiteSpecifics.DUMP_FORMAT == PREV_DATE_TIME_FORMAT: custom_point_parse_function = point_parse SuiteSpecifics.abbrev_util = CylcTimeParser( None, None, num_expanded_year_digits=SuiteSpecifics.NUM_EXPANDED_YEAR_DIGITS, dump_format=SuiteSpecifics.DUMP_FORMAT, custom_point_parse_function=custom_point_parse_function, assumed_time_zone=SuiteSpecifics.ASSUMED_TIME_ZONE )
def init(num_expanded_year_digits=0, custom_dump_format=None, time_zone=None, assume_utc=False, cycling_mode=None): """Initialise suite-setup-specific information.""" SuiteSpecifics.interval_parser = DurationParser() if cycling_mode in Calendar.default().MODES: Calendar.default().set_mode(cycling_mode) if time_zone is None: if assume_utc: time_zone = "Z" time_zone_hours_minutes = (0, 0) else: time_zone = get_local_time_zone_format(reduced_mode=True) time_zone_hours_minutes = get_local_time_zone() else: time_zone_hours_minutes = TimePointDumper().get_time_zone(time_zone) SuiteSpecifics.ASSUMED_TIME_ZONE = time_zone_hours_minutes SuiteSpecifics.NUM_EXPANDED_YEAR_DIGITS = num_expanded_year_digits if custom_dump_format is None: if num_expanded_year_digits > 0: SuiteSpecifics.DUMP_FORMAT = EXPANDED_DATE_TIME_FORMAT + time_zone else: SuiteSpecifics.DUMP_FORMAT = DATE_TIME_FORMAT + time_zone else: SuiteSpecifics.DUMP_FORMAT = custom_dump_format if u"+X" not in custom_dump_format and num_expanded_year_digits: raise IllegalValueError('cycle point format', ('cylc', 'cycle point format'), SuiteSpecifics.DUMP_FORMAT) SuiteSpecifics.point_parser = TimePointParser( allow_only_basic=False, allow_truncated=True, num_expanded_year_digits=SuiteSpecifics.NUM_EXPANDED_YEAR_DIGITS, dump_format=SuiteSpecifics.DUMP_FORMAT, assumed_time_zone=time_zone_hours_minutes) custom_point_parse_function = None if SuiteSpecifics.DUMP_FORMAT == PREV_DATE_TIME_FORMAT: custom_point_parse_function = point_parse SuiteSpecifics.abbrev_util = CylcTimeParser( None, None, num_expanded_year_digits=SuiteSpecifics.NUM_EXPANDED_YEAR_DIGITS, dump_format=SuiteSpecifics.DUMP_FORMAT, custom_point_parse_function=custom_point_parse_function, assumed_time_zone=SuiteSpecifics.ASSUMED_TIME_ZONE)
def init(num_expanded_year_digits=0, custom_dump_format=None, time_zone=None, assume_utc=False, cycling_mode=None): """Initialise suite-setup-specific information.""" if cycling_mode in Calendar.default().MODES: Calendar.default().set_mode(cycling_mode) if time_zone is None: if assume_utc: time_zone = "Z" time_zone_hours_minutes = (0, 0) else: time_zone = get_local_time_zone_format(TimeZoneFormatMode.reduced) time_zone_hours_minutes = get_local_time_zone() else: time_zone_hours_minutes = TimePointDumper().get_time_zone(time_zone) SuiteSpecifics.ASSUMED_TIME_ZONE = time_zone_hours_minutes SuiteSpecifics.NUM_EXPANDED_YEAR_DIGITS = num_expanded_year_digits if custom_dump_format is None: if num_expanded_year_digits > 0: SuiteSpecifics.DUMP_FORMAT = EXPANDED_DATE_TIME_FORMAT + time_zone else: SuiteSpecifics.DUMP_FORMAT = DATE_TIME_FORMAT + time_zone else: SuiteSpecifics.DUMP_FORMAT = custom_dump_format if u"+X" not in custom_dump_format and num_expanded_year_digits: raise IllegalValueError( 'cycle point format', ('cylc', 'cycle point format'), SuiteSpecifics.DUMP_FORMAT ) SuiteSpecifics.iso8601_parsers = CylcTimeParser.initiate_parsers( dump_format=SuiteSpecifics.DUMP_FORMAT, num_expanded_year_digits=num_expanded_year_digits, assumed_time_zone=SuiteSpecifics.ASSUMED_TIME_ZONE ) (SuiteSpecifics.point_parser, SuiteSpecifics.interval_parser, SuiteSpecifics.recurrence_parser) = SuiteSpecifics.iso8601_parsers SuiteSpecifics.abbrev_util = CylcTimeParser( None, None, SuiteSpecifics.iso8601_parsers )
def init(num_expanded_year_digits=0, custom_dump_format=None, time_zone=None, assume_utc=False, cycling_mode=None): """Initialise suite-setup-specific information.""" if cycling_mode in Calendar.default().MODES: Calendar.default().set_mode(cycling_mode) if time_zone is None: if assume_utc: time_zone = "Z" time_zone_hours_minutes = (0, 0) else: time_zone = get_local_time_zone_format(TimeZoneFormatMode.reduced) time_zone_hours_minutes = get_local_time_zone() else: time_zone_hours_minutes = TimePointDumper().get_time_zone(time_zone) SuiteSpecifics.ASSUMED_TIME_ZONE = time_zone_hours_minutes SuiteSpecifics.NUM_EXPANDED_YEAR_DIGITS = num_expanded_year_digits if custom_dump_format is None: if num_expanded_year_digits > 0: SuiteSpecifics.DUMP_FORMAT = EXPANDED_DATE_TIME_FORMAT + time_zone else: SuiteSpecifics.DUMP_FORMAT = DATE_TIME_FORMAT + time_zone else: SuiteSpecifics.DUMP_FORMAT = custom_dump_format if "+X" not in custom_dump_format and num_expanded_year_digits: raise IllegalValueError( 'cycle point format', ('cylc', 'cycle point format'), SuiteSpecifics.DUMP_FORMAT ) SuiteSpecifics.iso8601_parsers = CylcTimeParser.initiate_parsers( dump_format=SuiteSpecifics.DUMP_FORMAT, num_expanded_year_digits=num_expanded_year_digits, assumed_time_zone=SuiteSpecifics.ASSUMED_TIME_ZONE ) (SuiteSpecifics.point_parser, SuiteSpecifics.interval_parser, SuiteSpecifics.recurrence_parser) = SuiteSpecifics.iso8601_parsers SuiteSpecifics.abbrev_util = CylcTimeParser( None, None, SuiteSpecifics.iso8601_parsers )
def start_time_reached( self ): reached = False if not hasattr(self, "point_as_seconds"): iso_timepoint = cylc.cycling.iso8601.point_parse(str(self.point)) iso_clocktrigger_offset = cylc.cycling.iso8601.interval_parse( str(self.clocktrigger_offset)) self.point_as_seconds = int(iso_timepoint.get( "seconds_since_unix_epoch")) self.clocktrigger_offset_as_seconds = int( iso_clocktrigger_offset.get_seconds()) if iso_timepoint.time_zone.unknown: utc_offset_hours, utc_offset_minutes = ( get_local_time_zone()) utc_offset_in_seconds = ( 3600 * utc_offset_hours + 60 * utc_offset_minutes) self.point_as_seconds += utc_offset_in_seconds self.delayed_start = (self.point_as_seconds + self.clocktrigger_offset_as_seconds) self.delayed_start_str = str(self.point + self.clocktrigger_offset) return time.time() > self.delayed_start
DATE_TIME_FORMAT_EXTENDED_SUB_SECOND = "%Y-%m-%dT%H:%M:%S.%f" RE_DATE_TIME_FORMAT_EXTENDED = ( "\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:Z|[+-][\d:]+)?") TIME_FORMAT_BASIC = "%H%M%S" TIME_FORMAT_BASIC_SUB_SECOND = "%H%M%S.%f" TIME_FORMAT_EXTENDED = "%H:%M:%S" TIME_FORMAT_EXTENDED_SUB_SECOND = "%H:%M:%S.%f" TIME_ZONE_STRING_LOCAL_BASIC = get_local_time_zone_format(reduced_mode=True) TIME_ZONE_STRING_LOCAL_EXTENDED = get_local_time_zone_format( extended_mode=True, reduced_mode=True) TIME_ZONE_STRING_UTC = "Z" TIME_ZONE_UTC_UTC_OFFSET = (0, 0) TIME_ZONE_LOCAL_UTC_OFFSET = get_local_time_zone() TIME_ZONE_LOCAL_UTC_OFFSET_HOURS = TIME_ZONE_LOCAL_UTC_OFFSET[0] TIME_ZONE_LOCAL_UTC_OFFSET_MINUTES = TIME_ZONE_LOCAL_UTC_OFFSET[1] TIME_ZONE_LOCAL_INFO = { "hours": TIME_ZONE_LOCAL_UTC_OFFSET[0], "minutes": TIME_ZONE_LOCAL_UTC_OFFSET[1], "string_basic": TIME_ZONE_STRING_LOCAL_BASIC, "string_extended": TIME_ZONE_STRING_LOCAL_EXTENDED } TIME_ZONE_UTC_INFO = { "hours": TIME_ZONE_UTC_UTC_OFFSET[0], "minutes": TIME_ZONE_UTC_UTC_OFFSET[1], "string_basic": TIME_ZONE_STRING_UTC, "string_extended": TIME_ZONE_STRING_UTC