This repository provides User Manual for setting up a Docker environment tailored for testing DGTD code.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

81 lines
2.3 KiB

# Copyright (c) 2006-2019 Andrey Golovigin
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from __future__ import absolute_import, print_function, unicode_literals
from contextlib import contextmanager
import pybtex.io
import six
strict = True
error_code = 0
captured_errors = None
def set_strict_mode(enable=True):
global strict
strict = enable
@contextmanager
def capture():
"""Capture exceptions for debug purposes."""
global captured_errors
captured_errors = []
try:
yield captured_errors
finally:
captured_errors = None
def format_error(exception, prefix='ERROR: '):
lines = []
context = exception.get_context()
if context:
lines += (context.splitlines())
lines.append(u'{0}{1}'.format(prefix, six.text_type(exception)))
filename = exception.get_filename()
if filename:
lines = (
u'{0}: {1}'.format(filename, line)
for line in lines
)
return '\n'.join(lines)
def print_error(exception, prefix='ERROR: '):
print(format_error(exception, prefix), file=pybtex.io.stderr)
def report_error(exception):
global error_code
if captured_errors is not None:
captured_errors.append(exception)
return
if strict:
raise exception
else:
print_error(exception, 'WARNING: ')
error_code = 2