# -*- coding: utf-8 -*-
import re
import logging
import logging.config
GROUPS_REGEX = re.compile(r'(?<=\\)(\d+|g<\d+>)')
G_REGEX = re.compile(r'g<(\d+)>')
[docs]def wrap_replacement_for_regex(replacement, regex):
# prepend group to replacement
replacement = r"\g<1>%s" % increase_regex_replacements_group_positions(replacement, increment=1)
# append group to replacement
used_groups = re.compile(regex).groups
new_group = used_groups + 2 # Consider that we already prepended replacement with one group
replacement = "%s\\g<%d>" % (replacement, new_group)
return replacement
[docs]def increase_regex_replacements_group_positions(replacement, increment):
splitted = GROUPS_REGEX.split(replacement)
for i in range(1, len(splitted), 2):
group = splitted[i]
if group.isdigit():
splitted[i] = str(int(group) + increment)
else:
splitted[i] = "g<{}>".format(int(G_REGEX.match(group).group(1)) + increment)
return u"".join(splitted)
[docs]def setup_logging():
if len(logging.root.handlers):
return
config = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'console': {
'format': "%(asctime)s %(levelname)s: [%(name)s] %(message)s",
},
},
'handlers': {
'console': {
'level': logging.DEBUG,
'class': "logging.StreamHandler",
'formatter': "console",
'stream': "ext://sys.stdout",
},
},
'root': {
'level': logging.DEBUG,
'handlers': ["console"],
},
}
logging.config.dictConfig(config)
[docs]def get_logger():
setup_logging()
return logging.getLogger('dateparser')