Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def when_offset_popped_from_string(self):
self.datetime_string, timezone_offset = pop_tz_offset_from_string(self.initial_string)
if timezone_offset:
self.timezone_offset = timezone_offset.utcoffset('')
else:
self.timezone_offset = timezone_offset
def is_applicable(self, date_string, strip_timezone=False, settings=None):
"""
Check if the locale is applicable to translate date string.
:param date_string:
A string representing date and/or time in a recognizably valid format.
:type date_string: str|unicode
:param strip_timezone:
If True, timezone is stripped from date string.
:type strip_timezone: bool
:return: boolean value representing if the locale is applicable for the date string or not.
"""
if strip_timezone:
date_string, _ = pop_tz_offset_from_string(date_string, as_offset=False)
date_string = self._translate_numerals(date_string)
if settings.NORMALIZE:
date_string = normalize_unicode(date_string)
date_string = self._simplify(date_string, settings=settings)
dictionary = self._get_dictionary(settings)
date_tokens = dictionary.split(date_string)
return dictionary.are_tokens_valid(date_tokens)
def is_applicable(self, date_string, strip_timezone=False, settings=None):
if strip_timezone:
date_string, _ = pop_tz_offset_from_string(date_string, as_offset=False)
date_string = self._simplify(date_string)
tokens = self._split(date_string, keep_formatting=False, settings=settings)
if self._is_date_consists_of_digits_only(tokens):
return True
else:
return self._are_all_words_in_the_dictionary(tokens, settings)
def count_applicability(self, text, strip_timezone=False, settings=None):
if strip_timezone:
text, _ = pop_tz_offset_from_string(text, as_offset=False)
text = self._simplify(text, settings=settings)
sentences = self._sentence_split(text, settings=settings)
tokens = []
for sent in sentences:
tokens.extend(self._split(sent, keep_formatting=False, settings=settings))
return self._count_words_present_in_the_dictionary(tokens, settings)
def date_strings():
""" A generator instead of a static list to avoid calling
pop_tz_offset_from_string if the first locale matches on unmodified
date_string.
"""
yield date_string
if not pop_tz_cache:
stripped_date_string, _ = pop_tz_offset_from_string(
date_string, as_offset=False)
if stripped_date_string == date_string:
stripped_date_string = None
pop_tz_cache[:] = [stripped_date_string]
stripped_date_string, = pop_tz_cache
if stripped_date_string is not None:
yield stripped_date_string
def parse(self, date_string, settings=None):
date_string = six.text_type(date_string)
if not date_string.strip():
raise ValueError("Empty string")
date_string = strip_braces(date_string)
date_string, ptz = pop_tz_offset_from_string(date_string)
date_obj, period = parse(date_string, settings=settings)
_settings_tz = settings.TIMEZONE.lower()
if ptz:
date_obj = ptz.localize(date_obj)
if 'local' not in _settings_tz:
date_obj = apply_timezone(date_obj, settings.TIMEZONE)
else:
if 'local' in _settings_tz:
stz = get_localzone()
date_obj = stz.localize(date_obj)
else:
date_obj = localize_timezone(date_obj, settings.TIMEZONE)
def parse(self, date_string, settings):
_time = self._parse_time(date_string, settings)
date_string = strip_braces(date_string)
date_string, ptz = pop_tz_offset_from_string(date_string)
_settings_tz = settings.TIMEZONE.lower()
def apply_time(dateobj, timeobj):
if not isinstance(_time, time):
return dateobj
return dateobj.replace(
hour=timeobj.hour, minute=timeobj.minute,
second=timeobj.second, microsecond=timeobj.microsecond
)
if settings.RELATIVE_BASE:
self.now = settings.RELATIVE_BASE
if 'local' not in _settings_tz: