def setUp(self): self._start_point = "19991226T0930Z" # Note: the following timezone will be Z-ified *after* truncation # or offsets are applied. self._end_point = "20010506T1200+0200" self._parsers = { 0: CylcTimeParser( self._start_point, self._end_point, CylcTimeParser.initiate_parsers( assumed_time_zone=UTC_UTC_OFFSET_HOURS_MINUTES)), 2: CylcTimeParser( self._start_point, self._end_point, CylcTimeParser.initiate_parsers( num_expanded_year_digits=2, assumed_time_zone=UTC_UTC_OFFSET_HOURS_MINUTES)) }
def __init__(self, dep_section, context_start_point=None, context_end_point=None): self.dep_section = dep_section if context_start_point is None: self.context_start_point = context_start_point else: self.context_start_point = ISO8601Point.from_nonstandard_string( context_start_point) if context_end_point is None: self.context_end_point = None else: self.context_end_point = ISO8601Point.from_nonstandard_string( context_end_point) self.offset = ISO8601Interval.get_null() recurrence_syntax = convert_old_cycler_syntax( dep_section, start_point=self.context_start_point) if not recurrence_syntax: raise ValueError("ERROR: bad cycling sequence syntax: %s" % dep_section) self._cached_first_point_values = {} self._cached_next_point_values = {} self._cached_valid_point_booleans = {} self._cached_recent_valid_points = [] self.spec = recurrence_syntax self.custom_point_parse_function = None if SuiteSpecifics.DUMP_FORMAT == PREV_DATE_TIME_FORMAT: self.custom_point_parse_function = point_parse self.abbrev_util = CylcTimeParser( self.context_start_point, self.context_end_point, num_expanded_year_digits=SuiteSpecifics.NUM_EXPANDED_YEAR_DIGITS, dump_format=SuiteSpecifics.DUMP_FORMAT, custom_point_parse_function=self.custom_point_parse_function, assumed_time_zone=SuiteSpecifics.ASSUMED_TIME_ZONE) self.recurrence, excl_point = self.abbrev_util.parse_recurrence( recurrence_syntax) self.exclusion = ISO8601Point.from_nonstandard_string( str(excl_point)) if excl_point else None self.step = ISO8601Interval(str(self.recurrence.duration)) self.value = str(self.recurrence) if self.exclusion: self.value += '!' + str(self.exclusion)
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__(self, dep_section, context_start_point=None, context_end_point=None): self.dep_section = dep_section if context_start_point is None: self.context_start_point = context_start_point else: self.context_start_point = ISO8601Point.from_nonstandard_string( context_start_point) if context_end_point is None: self.context_end_point = None else: self.context_end_point = ISO8601Point.from_nonstandard_string( context_end_point) self.offset = ISO8601Interval.get_null() self._cached_first_point_values = {} self._cached_next_point_values = {} self._cached_valid_point_booleans = {} self._cached_recent_valid_points = [] self.spec = dep_section self.abbrev_util = CylcTimeParser( self.context_start_point, self.context_end_point, num_expanded_year_digits=SuiteSpecifics.NUM_EXPANDED_YEAR_DIGITS, dump_format=SuiteSpecifics.DUMP_FORMAT, assumed_time_zone=SuiteSpecifics.ASSUMED_TIME_ZONE) self.recurrence, excl_point = self.abbrev_util.parse_recurrence( dep_section) self.exclusion = ISO8601Point.from_nonstandard_string( str(excl_point)) if excl_point else None self.step = ISO8601Interval(str(self.recurrence.duration)) self.value = str(self.recurrence) if self.exclusion: self.value += '!' + str(self.exclusion)
def __init__(self, dep_section, context_start_point=None, context_end_point=None): SequenceBase.__init__(self, dep_section, context_start_point, context_end_point) self.dep_section = dep_section if context_start_point is None: self.context_start_point = context_start_point elif isinstance(context_start_point, ISO8601Point): self.context_start_point = context_start_point else: self.context_start_point = ISO8601Point.from_nonstandard_string( context_start_point) if context_end_point is None: self.context_end_point = None elif isinstance(context_end_point, ISO8601Point): self.context_end_point = context_end_point else: self.context_end_point = ISO8601Point.from_nonstandard_string( context_end_point) self.offset = ISO8601Interval.get_null() self._cached_first_point_values = {} self._cached_next_point_values = {} self._cached_valid_point_booleans = {} self._cached_recent_valid_points = [] self.spec = dep_section self.abbrev_util = CylcTimeParser(self.context_start_point, self.context_end_point, SuiteSpecifics.iso8601_parsers) # Parse_recurrence returns an isodatetime TimeRecurrence object # and a list of exclusion strings. self.recurrence, excl_points = self.abbrev_util.parse_recurrence( dep_section) # Determine the exclusion start point and end point try: exclusion_start_point = ISO8601Point.from_nonstandard_string( str(self.recurrence.start_point)) except ValueError: exclusion_start_point = self.context_start_point try: exclusion_end_point = ISO8601Point.from_nonstandard_string( str(self.recurrence.end_point)) except ValueError: exclusion_end_point = self.context_end_point self.exclusions = [] # Creating an exclusions object instead if excl_points: try: self.exclusions = ISO8601Exclusions(excl_points, exclusion_start_point, exclusion_end_point) except AttributeError: pass self.step = ISO8601Interval(str(self.recurrence.duration)) self.value = str(self.recurrence) # Concatenate the strings in exclusion list if self.exclusions: self.value += '!' + str(self.exclusions)