diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 7eb613f0..49fb0a8d 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,6 +1,7 @@ Unreleased ========== +- Change the behavior of ``backtrace`` argument so it only extends the stacktrace upward, the display of variables values is now controlled with the new ``diagnose`` argument (`#49 `_) - The ``record["exception"]`` attribute is now unpackable as a ``(type, value, traceback)`` tuple diff --git a/README.rst b/README.rst index 1d5d4b24..f4112a64 100644 --- a/README.rst +++ b/README.rst @@ -218,7 +218,7 @@ Logging exceptions that occur in your code is important to track bugs, but it's The code:: - logger.add("output.log", backtrace=True) # Set 'False' to avoid leaking sensitive data in prod + logger.add("output.log", backtrace=True, diagnose=True) # Set 'False' to not leak sensitive data in prod def func(a, b): return a / b diff --git a/docs/resources/migration.rst b/docs/resources/migration.rst index fb45a74a..331f9e00 100644 --- a/docs/resources/migration.rst +++ b/docs/resources/migration.rst @@ -129,7 +129,7 @@ Replacing ``exc_info`` argument While calling standard logging function, you can pass ``exc_info`` as an argument to add stacktrace to the message. Instead of that, you should use the |opt| method with ``exception`` parameter, replacing ``logger.debug("Debug error:", exc_info=True)`` with ``logger.opt(exception=True).debug("Debug error:")``. -The formatted exception will include the whole stacktrace and variables. To prevent that, make sure to use ``backtrace=False`` while adding your sink. +The formatted exception will include the whole stacktrace and variables. To prevent that, make sure to use ``backtrace=False`` and ``diagnose=False`` while adding your sink. Replacing ``extra`` argument and ``LoggerAdapter`` objects diff --git a/loguru/_defaults.py b/loguru/_defaults.py index b8b763b0..893c03ce 100644 --- a/loguru/_defaults.py +++ b/loguru/_defaults.py @@ -40,6 +40,7 @@ def env(key, type_, default=None): LOGURU_COLORIZE = env("LOGURU_COLORIZE", bool, None) LOGURU_SERIALIZE = env("LOGURU_SERIALIZE", bool, False) LOGURU_BACKTRACE = env("LOGURU_BACKTRACE", bool, True) +LOGURU_DIAGNOSE = env("LOGURU_DIAGNOSE", bool, True) LOGURU_ENQUEUE = env("LOGURU_ENQUEUE", bool, False) LOGURU_CATCH = env("LOGURU_CATCH", bool, True) diff --git a/loguru/_handler.py b/loguru/_handler.py index 90dd8c33..a149fcb7 100644 --- a/loguru/_handler.py +++ b/loguru/_handler.py @@ -27,6 +27,7 @@ def __init__( colorize, serialize, backtrace, + diagnose, catch, enqueue, encoding, @@ -42,6 +43,7 @@ def __init__( self._colorize = colorize self._serialize = serialize self._backtrace = backtrace + self._diagnose = diagnose self._catch = catch self._enqueue = enqueue self._encoding = encoding @@ -102,17 +104,23 @@ def emit(self, record, level_color, ansi_message, raw, decorated): exception = record["exception"] - if exception: + if not exception: + error = "" + else: type_, value, tb = exception + if self._backtrace: tb = self._exception_extender.extend_traceback(tb, decorated=decorated) + + if self._diagnose: lines = self._exception_formatter.format_exception(type_, value, tb) - error = self._exception_extender.reformat("".join(lines)) else: lines = traceback.format_exception(type_, value, tb) - error = "".join(lines) - else: - error = "" + + error = "".join(lines) + + if self._backtrace: + error = self._exception_extender.reformat(error) formatter_record = {**record, **{"exception": error}} diff --git a/loguru/_logger.py b/loguru/_logger.py index e8606ea3..fd51581a 100644 --- a/loguru/_logger.py +++ b/loguru/_logger.py @@ -158,6 +158,7 @@ def add( colorize=_defaults.LOGURU_COLORIZE, serialize=_defaults.LOGURU_SERIALIZE, backtrace=_defaults.LOGURU_BACKTRACE, + diagnose=_defaults.LOGURU_DIAGNOSE, enqueue=_defaults.LOGURU_ENQUEUE, catch=_defaults.LOGURU_CATCH, **kwargs @@ -184,9 +185,12 @@ def add( Whether or not the logged message and its records should be first converted to a JSON string before being sent to the sink. backtrace : |bool|, optional - Whether or not the formatted exception should use stack trace to display local variables - values and be extended upward beyond the caught frame. This probably should be set to - ``False`` in production to avoid leaking sensitive data. + Whether or not the exception trace formatted should be extended upward, beyond the + catching point, to show the full stacktrace which generated the error. + diagnose : |bool|, optional + Whether or not the exception trace should display the variables values to eases the + debugging. This should be set to ``False`` in production to avoid leaking sensitive + data. enqueue : |bool|, optional Whether or not the messages to be logged should first pass through a multiprocess-safe queue before reaching the sink. This is useful while logging to a file through multiple @@ -540,7 +544,7 @@ def add( Each of the |add| default parameter can be modified by setting the ``LOGURU_[PARAM]`` environment variable. For example on Linux: ``export LOGURU_FORMAT="{time} - {message}"`` - or ``export LOGURU_BACKTRACE=NO``. + or ``export LOGURU_DIAGNOSE=NO``. The default levels' attributes can also be modified by setting the ``LOGURU_[LEVEL]_[ATTR]`` environment variable. For example, on Windows: ``setx LOGURU_DEBUG_COLOR ""`` @@ -592,6 +596,7 @@ def add( colorize=colorize, serialize=serialize, backtrace=backtrace, + diagnose=diagnose, enqueue=enqueue, catch=catch, ) @@ -606,6 +611,7 @@ def add( colorize=colorize, serialize=serialize, backtrace=backtrace, + diagnose=diagnose, enqueue=enqueue, catch=catch, ) @@ -764,6 +770,7 @@ def filter_func(r): colorize=colorize, serialize=serialize, backtrace=backtrace, + diagnose=diagnose, catch=catch, enqueue=enqueue, encoding=encoding, @@ -836,7 +843,7 @@ def catch( using threads to propagate errors to the main logger thread. Note that the visibility of variables values (which uses the cool `better_exceptions`_ - library from `@Qix-`_) depends on the ``backtrace`` option of each configured sink. + library from `@Qix-`_) depends on the ``diagnose`` option of each configured sink. The returned object can also be used as a context manager. diff --git a/tests/exceptions/backtrace/chained_expression_direct.py b/tests/exceptions/backtrace/chained_expression_direct.py index 8a8498cc..0cbcacf9 100644 --- a/tests/exceptions/backtrace/chained_expression_direct.py +++ b/tests/exceptions/backtrace/chained_expression_direct.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=False, backtrace=True) +logger.add(sys.stderr, format="", colorize=False, backtrace=True, diagnose=False) @logger.catch() diff --git a/tests/exceptions/backtrace/chained_expression_indirect.py b/tests/exceptions/backtrace/chained_expression_indirect.py index e3a4df32..9b9071a7 100644 --- a/tests/exceptions/backtrace/chained_expression_indirect.py +++ b/tests/exceptions/backtrace/chained_expression_indirect.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=False, backtrace=True) +logger.add(sys.stderr, format="", colorize=False, backtrace=True, diagnose=False) def a(): diff --git a/tests/exceptions/backtrace/chaining_first.py b/tests/exceptions/backtrace/chaining_first.py index 6f7c7406..50bbdfc2 100644 --- a/tests/exceptions/backtrace/chaining_first.py +++ b/tests/exceptions/backtrace/chaining_first.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=False, backtrace=True) +logger.add(sys.stderr, format="", colorize=False, backtrace=True, diagnose=False) @logger.catch diff --git a/tests/exceptions/backtrace/chaining_second.py b/tests/exceptions/backtrace/chaining_second.py index 9f6c452f..7b7e4644 100644 --- a/tests/exceptions/backtrace/chaining_second.py +++ b/tests/exceptions/backtrace/chaining_second.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=False, backtrace=True) +logger.add(sys.stderr, format="", colorize=False, backtrace=True, diagnose=False) def a_decorator(): diff --git a/tests/exceptions/backtrace/chaining_third.py b/tests/exceptions/backtrace/chaining_third.py index 4b85f293..046795b5 100644 --- a/tests/exceptions/backtrace/chaining_third.py +++ b/tests/exceptions/backtrace/chaining_third.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=False, backtrace=True) +logger.add(sys.stderr, format="", colorize=False, backtrace=True, diagnose=False) def a_decorator(): diff --git a/tests/exceptions/backtrace/enqueue.py b/tests/exceptions/backtrace/enqueue.py index 6262afb5..5051e7da 100644 --- a/tests/exceptions/backtrace/enqueue.py +++ b/tests/exceptions/backtrace/enqueue.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, enqueue=True, format="", colorize=False, backtrace=True) +logger.add(sys.stderr, enqueue=True, format="", colorize=False, backtrace=True, diagnose=False) try: 1 / 0 diff --git a/tests/exceptions/backtrace/enqueue_with_others_handlers.py b/tests/exceptions/backtrace/enqueue_with_others_handlers.py index d28ac9f0..4aad5d83 100644 --- a/tests/exceptions/backtrace/enqueue_with_others_handlers.py +++ b/tests/exceptions/backtrace/enqueue_with_others_handlers.py @@ -11,9 +11,9 @@ def check_tb_sink(message): logger.remove() -logger.add(check_tb_sink, enqueue=False, catch=False) -logger.add(sys.stderr, enqueue=True, catch=False, format="") -logger.add(check_tb_sink, enqueue=False, catch=False) +logger.add(check_tb_sink, enqueue=False, catch=False, backtrace=True, diagnose=False) +logger.add(sys.stderr, format="", enqueue=True, catch=False, backtrace=True, diagnose=False) +logger.add(check_tb_sink, enqueue=False, catch=False, backtrace=True, diagnose=False) try: 1 / 0 diff --git a/tests/exceptions/backtrace/frame_values_backward.py b/tests/exceptions/backtrace/frame_values_backward.py index af3e78e9..e6ab128c 100644 --- a/tests/exceptions/backtrace/frame_values_backward.py +++ b/tests/exceptions/backtrace/frame_values_backward.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=False, backtrace=True) +logger.add(sys.stderr, format="", colorize=False, backtrace=True, diagnose=False) k = 2 diff --git a/tests/exceptions/backtrace/frame_values_forward.py b/tests/exceptions/backtrace/frame_values_forward.py index 0912a8c4..7bd4d9f9 100644 --- a/tests/exceptions/backtrace/frame_values_forward.py +++ b/tests/exceptions/backtrace/frame_values_forward.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=False, backtrace=True) +logger.add(sys.stderr, format="", colorize=False, backtrace=True, diagnose=False) k = 2 diff --git a/tests/exceptions/backtrace/function.py b/tests/exceptions/backtrace/function.py index 9bad0493..0f5a8eb9 100644 --- a/tests/exceptions/backtrace/function.py +++ b/tests/exceptions/backtrace/function.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=False, backtrace=True) +logger.add(sys.stderr, format="", colorize=False, backtrace=True, diagnose=False) @logger.catch() diff --git a/tests/exceptions/backtrace/head_recursion.py b/tests/exceptions/backtrace/head_recursion.py index 893fff8b..d6417163 100644 --- a/tests/exceptions/backtrace/head_recursion.py +++ b/tests/exceptions/backtrace/head_recursion.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=False, backtrace=True) +logger.add(sys.stderr, format="", colorize=False, backtrace=True, diagnose=False) @logger.catch() diff --git a/tests/exceptions/backtrace/nested.py b/tests/exceptions/backtrace/nested.py index 862c45bd..c0bbf5cf 100644 --- a/tests/exceptions/backtrace/nested.py +++ b/tests/exceptions/backtrace/nested.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=False, backtrace=True) +logger.add(sys.stderr, format="", colorize=False, backtrace=True, diagnose=False) def a(x): diff --git a/tests/exceptions/backtrace/nested_wrapping.py b/tests/exceptions/backtrace/nested_wrapping.py index f97b7001..12d9ea31 100644 --- a/tests/exceptions/backtrace/nested_wrapping.py +++ b/tests/exceptions/backtrace/nested_wrapping.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=False, backtrace=True) +logger.add(sys.stderr, format="", colorize=False, backtrace=True, diagnose=False) def f(i): diff --git a/tests/exceptions/backtrace/no_tb.py b/tests/exceptions/backtrace/no_tb.py index 4753fd3c..bf8e5264 100644 --- a/tests/exceptions/backtrace/no_tb.py +++ b/tests/exceptions/backtrace/no_tb.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="{message}", colorize=False, backtrace=True) +logger.add(sys.stderr, format="{message}", colorize=False, backtrace=True, diagnose=False) def f(): diff --git a/tests/exceptions/backtrace/not_enough_arguments.py b/tests/exceptions/backtrace/not_enough_arguments.py index 007e39d5..61442255 100644 --- a/tests/exceptions/backtrace/not_enough_arguments.py +++ b/tests/exceptions/backtrace/not_enough_arguments.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=False, backtrace=True) +logger.add(sys.stderr, format="", colorize=False, backtrace=True, diagnose=False) @logger.catch diff --git a/tests/exceptions/backtrace/raising_recursion.py b/tests/exceptions/backtrace/raising_recursion.py index f28d2b10..33acbebd 100644 --- a/tests/exceptions/backtrace/raising_recursion.py +++ b/tests/exceptions/backtrace/raising_recursion.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=False, backtrace=True) +logger.add(sys.stderr, format="", colorize=False, backtrace=True, diagnose=False) @logger.catch diff --git a/tests/exceptions/backtrace/suppressed_expression_direct.py b/tests/exceptions/backtrace/suppressed_expression_direct.py index faa70e72..98f21e46 100644 --- a/tests/exceptions/backtrace/suppressed_expression_direct.py +++ b/tests/exceptions/backtrace/suppressed_expression_direct.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=False, backtrace=True) +logger.add(sys.stderr, format="", colorize=False, backtrace=True, diagnose=False) def a(x, y): diff --git a/tests/exceptions/backtrace/suppressed_expression_indirect.py b/tests/exceptions/backtrace/suppressed_expression_indirect.py index 6806a058..cddcee56 100644 --- a/tests/exceptions/backtrace/suppressed_expression_indirect.py +++ b/tests/exceptions/backtrace/suppressed_expression_indirect.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=False, backtrace=True) +logger.add(sys.stderr, format="", colorize=False, backtrace=True, diagnose=False) def a(x, y): diff --git a/tests/exceptions/backtrace/tail_recursion.py b/tests/exceptions/backtrace/tail_recursion.py index aaccacd4..4123a281 100644 --- a/tests/exceptions/backtrace/tail_recursion.py +++ b/tests/exceptions/backtrace/tail_recursion.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=False, backtrace=True) +logger.add(sys.stderr, format="", colorize=False, backtrace=True, diagnose=False) @logger.catch() diff --git a/tests/exceptions/backtrace/too_many_arguments.py b/tests/exceptions/backtrace/too_many_arguments.py index 93d90828..2bf0a9f9 100644 --- a/tests/exceptions/backtrace/too_many_arguments.py +++ b/tests/exceptions/backtrace/too_many_arguments.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=False, backtrace=True) +logger.add(sys.stderr, format="", colorize=False, backtrace=True, diagnose=False) @logger.catch diff --git a/tests/exceptions/better_exceptions/assertion_error.py b/tests/exceptions/diagnose/assertion_error.py similarity index 68% rename from tests/exceptions/better_exceptions/assertion_error.py rename to tests/exceptions/diagnose/assertion_error.py index 12877048..5fc8ecb7 100644 --- a/tests/exceptions/better_exceptions/assertion_error.py +++ b/tests/exceptions/diagnose/assertion_error.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=True, backtrace=True) +logger.add(sys.stderr, format="", colorize=True, backtrace=False, diagnose=True) def foo(abc, xyz): diff --git a/tests/exceptions/better_exceptions/attributes.py b/tests/exceptions/diagnose/attributes.py similarity index 80% rename from tests/exceptions/better_exceptions/attributes.py rename to tests/exceptions/diagnose/attributes.py index 268beaf4..a3fb1982 100644 --- a/tests/exceptions/better_exceptions/attributes.py +++ b/tests/exceptions/diagnose/attributes.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=True, backtrace=True) +logger.add(sys.stderr, format="", colorize=True, backtrace=False, diagnose=True) class Obj: diff --git a/tests/exceptions/better_exceptions/chained_both.py b/tests/exceptions/diagnose/chained_both.py similarity index 82% rename from tests/exceptions/better_exceptions/chained_both.py rename to tests/exceptions/diagnose/chained_both.py index 183f33c5..da45a3fa 100644 --- a/tests/exceptions/better_exceptions/chained_both.py +++ b/tests/exceptions/diagnose/chained_both.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=True, backtrace=True) +logger.add(sys.stderr, format="", colorize=True, backtrace=False, diagnose=True) def div(x, y): diff --git a/tests/exceptions/better_exceptions/encoding.py b/tests/exceptions/diagnose/encoding.py similarity index 69% rename from tests/exceptions/better_exceptions/encoding.py rename to tests/exceptions/diagnose/encoding.py index 450abebb..85fa8ec3 100644 --- a/tests/exceptions/better_exceptions/encoding.py +++ b/tests/exceptions/diagnose/encoding.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=True, backtrace=True) +logger.add(sys.stderr, format="", colorize=True, backtrace=False, diagnose=True) def _deep(val): diff --git a/tests/exceptions/better_exceptions/global_variable.py b/tests/exceptions/diagnose/global_variable.py similarity index 72% rename from tests/exceptions/better_exceptions/global_variable.py rename to tests/exceptions/diagnose/global_variable.py index cb009183..6697d8c5 100644 --- a/tests/exceptions/better_exceptions/global_variable.py +++ b/tests/exceptions/diagnose/global_variable.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=True, backtrace=True) +logger.add(sys.stderr, format="", colorize=True, backtrace=False, diagnose=True) foo = True diff --git a/tests/exceptions/better_exceptions/indentation_error.py b/tests/exceptions/diagnose/indentation_error.py similarity index 74% rename from tests/exceptions/better_exceptions/indentation_error.py rename to tests/exceptions/diagnose/indentation_error.py index df017ecc..9af4647d 100644 --- a/tests/exceptions/better_exceptions/indentation_error.py +++ b/tests/exceptions/diagnose/indentation_error.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=True, backtrace=True) +logger.add(sys.stderr, format="", colorize=True, backtrace=False, diagnose=True) code = """ diff --git a/tests/exceptions/better_exceptions/multilines_repr.py b/tests/exceptions/diagnose/multilines_repr.py similarity index 76% rename from tests/exceptions/better_exceptions/multilines_repr.py rename to tests/exceptions/diagnose/multilines_repr.py index 35523244..1871a995 100644 --- a/tests/exceptions/better_exceptions/multilines_repr.py +++ b/tests/exceptions/diagnose/multilines_repr.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=True, backtrace=True) +logger.add(sys.stderr, format="", colorize=True, backtrace=False, diagnose=True) class A: diff --git a/tests/exceptions/better_exceptions/no_error_message.py b/tests/exceptions/diagnose/no_error_message.py similarity index 68% rename from tests/exceptions/better_exceptions/no_error_message.py rename to tests/exceptions/diagnose/no_error_message.py index e255d5e4..7d25e7cb 100644 --- a/tests/exceptions/better_exceptions/no_error_message.py +++ b/tests/exceptions/diagnose/no_error_message.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=True, backtrace=True) +logger.add(sys.stderr, format="", colorize=True, backtrace=False, diagnose=True) def foo(): diff --git a/tests/exceptions/better_exceptions/source_multilines.py b/tests/exceptions/diagnose/source_multilines.py similarity index 89% rename from tests/exceptions/better_exceptions/source_multilines.py rename to tests/exceptions/diagnose/source_multilines.py index 433415e4..65c4dc8e 100644 --- a/tests/exceptions/better_exceptions/source_multilines.py +++ b/tests/exceptions/diagnose/source_multilines.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=True, backtrace=True) +logger.add(sys.stderr, format="", colorize=True, backtrace=False, diagnose=True) def bug_1(n): diff --git a/tests/exceptions/better_exceptions/source_strings.py b/tests/exceptions/diagnose/source_strings.py similarity index 67% rename from tests/exceptions/better_exceptions/source_strings.py rename to tests/exceptions/diagnose/source_strings.py index 6f7f17bc..cea446e7 100644 --- a/tests/exceptions/better_exceptions/source_strings.py +++ b/tests/exceptions/diagnose/source_strings.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=True, backtrace=True) +logger.add(sys.stderr, format="", colorize=True, backtrace=False, diagnose=True) a = b = 0 diff --git a/tests/exceptions/better_exceptions/syntax_error.py b/tests/exceptions/diagnose/syntax_error.py similarity index 67% rename from tests/exceptions/better_exceptions/syntax_error.py rename to tests/exceptions/diagnose/syntax_error.py index e96b2185..c3906890 100644 --- a/tests/exceptions/better_exceptions/syntax_error.py +++ b/tests/exceptions/diagnose/syntax_error.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=True, backtrace=True) +logger.add(sys.stderr, format="", colorize=True, backtrace=False, diagnose=True) code = """ diff --git a/tests/exceptions/better_exceptions/truncating.py b/tests/exceptions/diagnose/truncating.py similarity index 67% rename from tests/exceptions/better_exceptions/truncating.py rename to tests/exceptions/diagnose/truncating.py index f8ad6d42..61390ce8 100644 --- a/tests/exceptions/better_exceptions/truncating.py +++ b/tests/exceptions/diagnose/truncating.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=True, backtrace=True) +logger.add(sys.stderr, format="", colorize=True, backtrace=False, diagnose=True) def div(): diff --git a/tests/exceptions/better_exceptions/unprintable_object.py b/tests/exceptions/diagnose/unprintable_object.py similarity index 73% rename from tests/exceptions/better_exceptions/unprintable_object.py rename to tests/exceptions/diagnose/unprintable_object.py index c9df9a73..b2d7f1a2 100644 --- a/tests/exceptions/better_exceptions/unprintable_object.py +++ b/tests/exceptions/diagnose/unprintable_object.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=True, backtrace=True) +logger.add(sys.stderr, format="", colorize=True, backtrace=False, diagnose=True) class Object: diff --git a/tests/exceptions/output/backtrace/chained_expression_direct.txt b/tests/exceptions/output/backtrace/chained_expression_direct.txt index d0274d48..598d9c82 100644 --- a/tests/exceptions/output/backtrace/chained_expression_direct.txt +++ b/tests/exceptions/output/backtrace/chained_expression_direct.txt @@ -1,81 +1,48 @@ Traceback (most recent call last): - File "tests/exceptions/backtrace/chained_expression_direct.py", line 11, in a_decorated 1 / 0 - ZeroDivisionError: division by zero - During handling of the above exception, another exception occurred: - Traceback (most recent call last): - File "tests/exceptions/backtrace/chained_expression_direct.py", line 39, in b_decorator() - └ - > File "tests/exceptions/backtrace/chained_expression_direct.py", line 24, in b_decorator a_decorated() - └ - File "tests/exceptions/backtrace/chained_expression_direct.py", line 13, in a_decorated raise ValueError("NOK") - └ - ValueError: NOK Traceback (most recent call last): - File "tests/exceptions/backtrace/chained_expression_direct.py", line 18, in a_not_decorated 1 / 0 - ZeroDivisionError: division by zero - During handling of the above exception, another exception occurred: - Traceback (most recent call last): - File "tests/exceptions/backtrace/chained_expression_direct.py", line 40, in b_context_manager() - └ - > File "tests/exceptions/backtrace/chained_expression_direct.py", line 29, in b_context_manager a_not_decorated() - └ - File "tests/exceptions/backtrace/chained_expression_direct.py", line 20, in a_not_decorated raise ValueError("NOK") - └ - ValueError: NOK Traceback (most recent call last): - File "tests/exceptions/backtrace/chained_expression_direct.py", line 18, in a_not_decorated 1 / 0 - ZeroDivisionError: division by zero - During handling of the above exception, another exception occurred: - Traceback (most recent call last): - File "tests/exceptions/backtrace/chained_expression_direct.py", line 41, in b_explicit() - └ - > File "tests/exceptions/backtrace/chained_expression_direct.py", line 34, in b_explicit a_not_decorated() - └ - File "tests/exceptions/backtrace/chained_expression_direct.py", line 20, in a_not_decorated raise ValueError("NOK") - └ - ValueError: NOK diff --git a/tests/exceptions/output/backtrace/chained_expression_indirect.txt b/tests/exceptions/output/backtrace/chained_expression_indirect.txt index 9e037a03..34d8450f 100644 --- a/tests/exceptions/output/backtrace/chained_expression_indirect.txt +++ b/tests/exceptions/output/backtrace/chained_expression_indirect.txt @@ -1,73 +1,44 @@ Traceback (most recent call last): - File "tests/exceptions/backtrace/chained_expression_indirect.py", line 10, in a 1 / 0 - ZeroDivisionError: division by zero - During handling of the above exception, another exception occurred: - Traceback (most recent call last): - > File "tests/exceptions/backtrace/chained_expression_indirect.py", line 20, in b() - └ - File "tests/exceptions/backtrace/chained_expression_indirect.py", line 17, in b a() - └ - File "tests/exceptions/backtrace/chained_expression_indirect.py", line 12, in a raise ValueError("NOK") - └ - ValueError: NOK Traceback (most recent call last): - File "tests/exceptions/backtrace/chained_expression_indirect.py", line 10, in a 1 / 0 - ZeroDivisionError: division by zero - During handling of the above exception, another exception occurred: - Traceback (most recent call last): - > File "tests/exceptions/backtrace/chained_expression_indirect.py", line 23, in a() - └ - File "tests/exceptions/backtrace/chained_expression_indirect.py", line 12, in a raise ValueError("NOK") - └ - ValueError: NOK Traceback (most recent call last): - File "tests/exceptions/backtrace/chained_expression_indirect.py", line 10, in a 1 / 0 - ZeroDivisionError: division by zero - During handling of the above exception, another exception occurred: - Traceback (most recent call last): - > File "tests/exceptions/backtrace/chained_expression_indirect.py", line 26, in a() - └ - File "tests/exceptions/backtrace/chained_expression_indirect.py", line 12, in a raise ValueError("NOK") - └ - ValueError: NOK diff --git a/tests/exceptions/output/backtrace/chaining_first.txt b/tests/exceptions/output/backtrace/chaining_first.txt index 45c9dd80..47730f51 100644 --- a/tests/exceptions/output/backtrace/chaining_first.txt +++ b/tests/exceptions/output/backtrace/chaining_first.txt @@ -1,57 +1,33 @@ Traceback (most recent call last): - > File "tests/exceptions/backtrace/chaining_first.py", line 25, in a_decorated() - └ - File "tests/exceptions/backtrace/chaining_first.py", line 10, in a_decorated b() - └ - File "tests/exceptions/backtrace/chaining_first.py", line 18, in b c() - └ - File "tests/exceptions/backtrace/chaining_first.py", line 22, in c 1 / 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - > File "tests/exceptions/backtrace/chaining_first.py", line 29, in a_not_decorated() - └ - File "tests/exceptions/backtrace/chaining_first.py", line 14, in a_not_decorated b() - └ - File "tests/exceptions/backtrace/chaining_first.py", line 18, in b c() - └ - File "tests/exceptions/backtrace/chaining_first.py", line 22, in c 1 / 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - > File "tests/exceptions/backtrace/chaining_first.py", line 32, in a_not_decorated() - └ - File "tests/exceptions/backtrace/chaining_first.py", line 14, in a_not_decorated b() - └ - File "tests/exceptions/backtrace/chaining_first.py", line 18, in b c() - └ - File "tests/exceptions/backtrace/chaining_first.py", line 22, in c 1 / 0 - ZeroDivisionError: division by zero diff --git a/tests/exceptions/output/backtrace/chaining_second.txt b/tests/exceptions/output/backtrace/chaining_second.txt index 32513d37..cd894e77 100644 --- a/tests/exceptions/output/backtrace/chaining_second.txt +++ b/tests/exceptions/output/backtrace/chaining_second.txt @@ -1,57 +1,33 @@ Traceback (most recent call last): - File "tests/exceptions/backtrace/chaining_second.py", line 37, in a_decorator() - └ - > File "tests/exceptions/backtrace/chaining_second.py", line 9, in a_decorator b_decorated() - └ - File "tests/exceptions/backtrace/chaining_second.py", line 26, in b_decorated c() - └ - File "tests/exceptions/backtrace/chaining_second.py", line 34, in c 1 / 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/chaining_second.py", line 38, in a_context_manager() - └ - > File "tests/exceptions/backtrace/chaining_second.py", line 14, in a_context_manager b_not_decorated() - └ - File "tests/exceptions/backtrace/chaining_second.py", line 30, in b_not_decorated c() - └ - File "tests/exceptions/backtrace/chaining_second.py", line 34, in c 1 / 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/chaining_second.py", line 39, in a_explicit() - └ - > File "tests/exceptions/backtrace/chaining_second.py", line 19, in a_explicit b_not_decorated() - └ - File "tests/exceptions/backtrace/chaining_second.py", line 30, in b_not_decorated c() - └ - File "tests/exceptions/backtrace/chaining_second.py", line 34, in c 1 / 0 - ZeroDivisionError: division by zero diff --git a/tests/exceptions/output/backtrace/chaining_third.txt b/tests/exceptions/output/backtrace/chaining_third.txt index cb5671d9..2f8a23c8 100644 --- a/tests/exceptions/output/backtrace/chaining_third.txt +++ b/tests/exceptions/output/backtrace/chaining_third.txt @@ -1,57 +1,33 @@ Traceback (most recent call last): - File "tests/exceptions/backtrace/chaining_third.py", line 45, in a_decorator() - └ - File "tests/exceptions/backtrace/chaining_third.py", line 9, in a_decorator b_decorator() - └ - > File "tests/exceptions/backtrace/chaining_third.py", line 21, in b_decorator c_decorated() - └ - File "tests/exceptions/backtrace/chaining_third.py", line 38, in c_decorated 1 / 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/chaining_third.py", line 46, in a_context_manager() - └ - File "tests/exceptions/backtrace/chaining_third.py", line 13, in a_context_manager b_context_manager() - └ - > File "tests/exceptions/backtrace/chaining_third.py", line 26, in b_context_manager c_not_decorated() - └ - File "tests/exceptions/backtrace/chaining_third.py", line 42, in c_not_decorated 1 / 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/chaining_third.py", line 47, in a_explicit() - └ - File "tests/exceptions/backtrace/chaining_third.py", line 17, in a_explicit b_explicit() - └ - > File "tests/exceptions/backtrace/chaining_third.py", line 31, in b_explicit c_not_decorated() - └ - File "tests/exceptions/backtrace/chaining_third.py", line 42, in c_not_decorated 1 / 0 - ZeroDivisionError: division by zero diff --git a/tests/exceptions/output/backtrace/enqueue.txt b/tests/exceptions/output/backtrace/enqueue.txt index 8715219e..56c8efb0 100644 --- a/tests/exceptions/output/backtrace/enqueue.txt +++ b/tests/exceptions/output/backtrace/enqueue.txt @@ -1,7 +1,5 @@ Traceback (most recent call last): - > File "tests/exceptions/backtrace/enqueue.py", line 8, in 1 / 0 - ZeroDivisionError: division by zero diff --git a/tests/exceptions/output/backtrace/enqueue_with_others_handlers.txt b/tests/exceptions/output/backtrace/enqueue_with_others_handlers.txt index bd4b3463..06556e48 100644 --- a/tests/exceptions/output/backtrace/enqueue_with_others_handlers.txt +++ b/tests/exceptions/output/backtrace/enqueue_with_others_handlers.txt @@ -1,7 +1,5 @@ Traceback (most recent call last): - > File "tests/exceptions/backtrace/enqueue_with_others_handlers.py", line 19, in 1 / 0 - ZeroDivisionError: division by zero diff --git a/tests/exceptions/output/backtrace/frame_values_backward.txt b/tests/exceptions/output/backtrace/frame_values_backward.txt index 44a8f186..02643dfa 100644 --- a/tests/exceptions/output/backtrace/frame_values_backward.txt +++ b/tests/exceptions/output/backtrace/frame_values_backward.txt @@ -1,23 +1,11 @@ Traceback (most recent call last): - File "tests/exceptions/backtrace/frame_values_backward.py", line 23, in c(k) - │ └ 2 - └ - File "tests/exceptions/backtrace/frame_values_backward.py", line 20, in c b(n - 1) - │ └ 2 - └ - > File "tests/exceptions/backtrace/frame_values_backward.py", line 16, in b a(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/frame_values_backward.py", line 12, in a 1 / n - └ 0 - ZeroDivisionError: division by zero diff --git a/tests/exceptions/output/backtrace/frame_values_forward.txt b/tests/exceptions/output/backtrace/frame_values_forward.txt index b98a287b..d2af5224 100644 --- a/tests/exceptions/output/backtrace/frame_values_forward.txt +++ b/tests/exceptions/output/backtrace/frame_values_forward.txt @@ -1,23 +1,11 @@ Traceback (most recent call last): - > File "tests/exceptions/backtrace/frame_values_forward.py", line 23, in c(k) - │ └ 2 - └ - File "tests/exceptions/backtrace/frame_values_forward.py", line 20, in c b(n - 1) - │ └ 2 - └ - File "tests/exceptions/backtrace/frame_values_forward.py", line 15, in b a(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/frame_values_forward.py", line 11, in a 1 / n - └ 0 - ZeroDivisionError: division by zero diff --git a/tests/exceptions/output/backtrace/function.txt b/tests/exceptions/output/backtrace/function.txt index ae98ce8f..b31607bb 100644 --- a/tests/exceptions/output/backtrace/function.txt +++ b/tests/exceptions/output/backtrace/function.txt @@ -1,33 +1,21 @@ Traceback (most recent call last): - > File "tests/exceptions/backtrace/function.py", line 21, in a() - └ - File "tests/exceptions/backtrace/function.py", line 10, in a 1 / 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - > File "tests/exceptions/backtrace/function.py", line 24, in b() - └ - File "tests/exceptions/backtrace/function.py", line 14, in b 2 / 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - > File "tests/exceptions/backtrace/function.py", line 27, in c() - └ - File "tests/exceptions/backtrace/function.py", line 18, in c 3 / 0 - ZeroDivisionError: division by zero diff --git a/tests/exceptions/output/backtrace/head_recursion.txt b/tests/exceptions/output/backtrace/head_recursion.txt index c17f7f2a..2a13bd09 100644 --- a/tests/exceptions/output/backtrace/head_recursion.txt +++ b/tests/exceptions/output/backtrace/head_recursion.txt @@ -1,198 +1,99 @@ Traceback (most recent call last): - File "tests/exceptions/backtrace/head_recursion.py", line 31, in a(1) - └ - > File "tests/exceptions/backtrace/head_recursion.py", line 11, in a a(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/head_recursion.py", line 12, in a 1 / n - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/head_recursion.py", line 32, in a(2) - └ - File "tests/exceptions/backtrace/head_recursion.py", line 11, in a a(n - 1) - │ └ 2 - └ - > File "tests/exceptions/backtrace/head_recursion.py", line 11, in a a(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/head_recursion.py", line 12, in a 1 / n - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/head_recursion.py", line 33, in a(3) - └ - File "tests/exceptions/backtrace/head_recursion.py", line 11, in a a(n - 1) - │ └ 3 - └ - File "tests/exceptions/backtrace/head_recursion.py", line 11, in a a(n - 1) - │ └ 2 - └ - > File "tests/exceptions/backtrace/head_recursion.py", line 11, in a a(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/head_recursion.py", line 12, in a 1 / n - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/head_recursion.py", line 35, in b(1) - └ - > File "tests/exceptions/backtrace/head_recursion.py", line 18, in b b(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/head_recursion.py", line 19, in b 1 / n - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/head_recursion.py", line 36, in b(2) - └ - File "tests/exceptions/backtrace/head_recursion.py", line 18, in b b(n - 1) - │ └ 2 - └ - > File "tests/exceptions/backtrace/head_recursion.py", line 18, in b b(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/head_recursion.py", line 19, in b 1 / n - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/head_recursion.py", line 37, in b(3) - └ - File "tests/exceptions/backtrace/head_recursion.py", line 18, in b b(n - 1) - │ └ 3 - └ - File "tests/exceptions/backtrace/head_recursion.py", line 18, in b b(n - 1) - │ └ 2 - └ - > File "tests/exceptions/backtrace/head_recursion.py", line 18, in b b(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/head_recursion.py", line 19, in b 1 / n - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/head_recursion.py", line 39, in c(1) - └ - > File "tests/exceptions/backtrace/head_recursion.py", line 25, in c c(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/head_recursion.py", line 28, in c 1 / n - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/head_recursion.py", line 40, in c(2) - └ - File "tests/exceptions/backtrace/head_recursion.py", line 25, in c c(n - 1) - │ └ 2 - └ - > File "tests/exceptions/backtrace/head_recursion.py", line 25, in c c(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/head_recursion.py", line 28, in c 1 / n - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/head_recursion.py", line 41, in c(3) - └ - File "tests/exceptions/backtrace/head_recursion.py", line 25, in c c(n - 1) - │ └ 3 - └ - File "tests/exceptions/backtrace/head_recursion.py", line 25, in c c(n - 1) - │ └ 2 - └ - > File "tests/exceptions/backtrace/head_recursion.py", line 25, in c c(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/head_recursion.py", line 28, in c 1 / n - └ 0 - ZeroDivisionError: division by zero diff --git a/tests/exceptions/output/backtrace/nested.txt b/tests/exceptions/output/backtrace/nested.txt index 18b3ab23..7f0698c1 100644 --- a/tests/exceptions/output/backtrace/nested.txt +++ b/tests/exceptions/output/backtrace/nested.txt @@ -1,51 +1,27 @@ Traceback (most recent call last): - File "tests/exceptions/backtrace/nested.py", line 16, in a(0) - └ - > File "tests/exceptions/backtrace/nested.py", line 13, in a nested(x) - │ └ 0 - └ .nested at 0xDEADBEEF> - File "tests/exceptions/backtrace/nested.py", line 11, in nested 1 / i - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/nested.py", line 27, in b(0) - └ - > File "tests/exceptions/backtrace/nested.py", line 24, in b nested(x) - │ └ 0 - └ .nested at 0xDEADBEEF> - File "tests/exceptions/backtrace/nested.py", line 21, in nested 1 / i - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/nested.py", line 40, in c(0) - └ - > File "tests/exceptions/backtrace/nested.py", line 35, in c nested(x) - │ └ 0 - └ .nested at 0xDEADBEEF> - File "tests/exceptions/backtrace/nested.py", line 32, in nested 1 / i - └ 0 - ZeroDivisionError: division by zero diff --git a/tests/exceptions/output/backtrace/nested_wrapping.txt b/tests/exceptions/output/backtrace/nested_wrapping.txt index 3d8e5370..2b0b1ec0 100644 --- a/tests/exceptions/output/backtrace/nested_wrapping.txt +++ b/tests/exceptions/output/backtrace/nested_wrapping.txt @@ -1,41 +1,23 @@ Traceback (most recent call last): - > File "tests/exceptions/backtrace/nested_wrapping.py", line 18, in a(0) - └ - File "tests/exceptions/backtrace/nested_wrapping.py", line 15, in a f(x) - │ └ 0 - └ - File "tests/exceptions/backtrace/nested_wrapping.py", line 9, in f 1 / i - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - > File "tests/exceptions/backtrace/nested_wrapping.py", line 23, in f(0) - └ - File "tests/exceptions/backtrace/nested_wrapping.py", line 9, in f 1 / i - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - > File "tests/exceptions/backtrace/nested_wrapping.py", line 28, in f(0) - └ - File "tests/exceptions/backtrace/nested_wrapping.py", line 9, in f 1 / i - └ 0 - ZeroDivisionError: division by zero diff --git a/tests/exceptions/output/backtrace/not_enough_arguments.txt b/tests/exceptions/output/backtrace/not_enough_arguments.txt index 14633b3e..aadc4f4c 100644 --- a/tests/exceptions/output/backtrace/not_enough_arguments.txt +++ b/tests/exceptions/output/backtrace/not_enough_arguments.txt @@ -1,24 +1,15 @@ Traceback (most recent call last): - > File "tests/exceptions/backtrace/not_enough_arguments.py", line 17, in decorated(1) - └ - TypeError: decorated() missing 2 required positional arguments: 'y' and 'z' Traceback (most recent call last): - > File "tests/exceptions/backtrace/not_enough_arguments.py", line 20, in not_decorated(2) - └ - TypeError: not_decorated() missing 2 required positional arguments: 'y' and 'z' Traceback (most recent call last): - > File "tests/exceptions/backtrace/not_enough_arguments.py", line 23, in not_decorated(3) - └ - TypeError: not_decorated() missing 2 required positional arguments: 'y' and 'z' diff --git a/tests/exceptions/output/backtrace/raising_recursion.txt b/tests/exceptions/output/backtrace/raising_recursion.txt index 2bc917f9..6420d61e 100644 --- a/tests/exceptions/output/backtrace/raising_recursion.txt +++ b/tests/exceptions/output/backtrace/raising_recursion.txt @@ -1,474 +1,249 @@ Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 31, in a(1) - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 11, in a a(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 12, in a n / 0 - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - > File "tests/exceptions/backtrace/raising_recursion.py", line 31, in a(1) - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 12, in a n / 0 - └ 1 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 32, in a(2) - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 11, in a a(n - 1) - │ └ 2 - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 11, in a a(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 12, in a n / 0 - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 32, in a(2) - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 11, in a a(n - 1) - │ └ 2 - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 12, in a n / 0 - └ 1 - ZeroDivisionError: division by zero Traceback (most recent call last): - > File "tests/exceptions/backtrace/raising_recursion.py", line 32, in a(2) - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 12, in a n / 0 - └ 2 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 33, in a(3) - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 11, in a a(n - 1) - │ └ 3 - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 11, in a a(n - 1) - │ └ 2 - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 11, in a a(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 12, in a n / 0 - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 33, in a(3) - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 11, in a a(n - 1) - │ └ 3 - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 11, in a a(n - 1) - │ └ 2 - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 12, in a n / 0 - └ 1 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 33, in a(3) - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 11, in a a(n - 1) - │ └ 3 - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 12, in a n / 0 - └ 2 - ZeroDivisionError: division by zero Traceback (most recent call last): - > File "tests/exceptions/backtrace/raising_recursion.py", line 33, in a(3) - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 12, in a n / 0 - └ 3 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 35, in b(1) - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 18, in b b(n - 1) - │ └ 1 - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 19, in b n / 0 - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 35, in b(1) - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 19, in b n / 0 - └ 1 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 36, in b(2) - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 18, in b b(n - 1) - │ └ 2 - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 18, in b b(n - 1) - │ └ 1 - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 19, in b n / 0 - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 36, in b(2) - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 18, in b b(n - 1) - │ └ 2 - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 19, in b n / 0 - └ 1 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 36, in b(2) - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 19, in b n / 0 - └ 2 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 37, in b(3) - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 18, in b b(n - 1) - │ └ 3 - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 18, in b b(n - 1) - │ └ 2 - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 18, in b b(n - 1) - │ └ 1 - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 19, in b n / 0 - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 37, in b(3) - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 18, in b b(n - 1) - │ └ 3 - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 18, in b b(n - 1) - │ └ 2 - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 19, in b n / 0 - └ 1 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 37, in b(3) - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 18, in b b(n - 1) - │ └ 3 - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 19, in b n / 0 - └ 2 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 37, in b(3) - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 19, in b n / 0 - └ 3 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 39, in c(1) - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 25, in c c(n - 1) - │ └ 1 - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 26, in c n / 0 - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 39, in c(1) - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 26, in c n / 0 - └ 1 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 40, in c(2) - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 25, in c c(n - 1) - │ └ 2 - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 25, in c c(n - 1) - │ └ 1 - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 26, in c n / 0 - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 40, in c(2) - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 25, in c c(n - 1) - │ └ 2 - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 26, in c n / 0 - └ 1 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 40, in c(2) - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 26, in c n / 0 - └ 2 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 41, in c(3) - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 25, in c c(n - 1) - │ └ 3 - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 25, in c c(n - 1) - │ └ 2 - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 25, in c c(n - 1) - │ └ 1 - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 26, in c n / 0 - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 41, in c(3) - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 25, in c c(n - 1) - │ └ 3 - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 25, in c c(n - 1) - │ └ 2 - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 26, in c n / 0 - └ 1 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 41, in c(3) - └ - File "tests/exceptions/backtrace/raising_recursion.py", line 25, in c c(n - 1) - │ └ 3 - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 26, in c n / 0 - └ 2 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/raising_recursion.py", line 41, in c(3) - └ - > File "tests/exceptions/backtrace/raising_recursion.py", line 26, in c n / 0 - └ 3 - ZeroDivisionError: division by zero diff --git a/tests/exceptions/output/backtrace/suppressed_expression_direct.txt b/tests/exceptions/output/backtrace/suppressed_expression_direct.txt index ef96fd19..e6252ee4 100644 --- a/tests/exceptions/output/backtrace/suppressed_expression_direct.txt +++ b/tests/exceptions/output/backtrace/suppressed_expression_direct.txt @@ -1,99 +1,54 @@ Traceback (most recent call last): - File "tests/exceptions/backtrace/suppressed_expression_direct.py", line 15, in b_decorated a(1, 0) - └ - File "tests/exceptions/backtrace/suppressed_expression_direct.py", line 9, in a x / y - │ └ 0 - └ 1 - ZeroDivisionError: division by zero - The above exception was the direct cause of the following exception: - Traceback (most recent call last): - File "tests/exceptions/backtrace/suppressed_expression_direct.py", line 43, in c_decorator() - └ - > File "tests/exceptions/backtrace/suppressed_expression_direct.py", line 28, in c_decorator b_decorated() - └ - File "tests/exceptions/backtrace/suppressed_expression_direct.py", line 17, in b_decorated raise ValueError("NOK") from e - └ - ValueError: NOK Traceback (most recent call last): - File "tests/exceptions/backtrace/suppressed_expression_direct.py", line 22, in b_not_decorated a(1, 0) - └ - File "tests/exceptions/backtrace/suppressed_expression_direct.py", line 9, in a x / y - │ └ 0 - └ 1 - ZeroDivisionError: division by zero - The above exception was the direct cause of the following exception: - Traceback (most recent call last): - File "tests/exceptions/backtrace/suppressed_expression_direct.py", line 44, in c_context_manager() - └ - > File "tests/exceptions/backtrace/suppressed_expression_direct.py", line 33, in c_context_manager b_not_decorated() - └ - File "tests/exceptions/backtrace/suppressed_expression_direct.py", line 24, in b_not_decorated raise ValueError("NOK") from e - └ - ValueError: NOK Traceback (most recent call last): - File "tests/exceptions/backtrace/suppressed_expression_direct.py", line 22, in b_not_decorated a(1, 0) - └ - File "tests/exceptions/backtrace/suppressed_expression_direct.py", line 9, in a x / y - │ └ 0 - └ 1 - ZeroDivisionError: division by zero - The above exception was the direct cause of the following exception: - Traceback (most recent call last): - File "tests/exceptions/backtrace/suppressed_expression_direct.py", line 45, in c_explicit() - └ - > File "tests/exceptions/backtrace/suppressed_expression_direct.py", line 38, in c_explicit b_not_decorated() - └ - File "tests/exceptions/backtrace/suppressed_expression_direct.py", line 24, in b_not_decorated raise ValueError("NOK") from e - └ - ValueError: NOK diff --git a/tests/exceptions/output/backtrace/suppressed_expression_indirect.txt b/tests/exceptions/output/backtrace/suppressed_expression_indirect.txt index 04c57d89..ca4c33ec 100644 --- a/tests/exceptions/output/backtrace/suppressed_expression_indirect.txt +++ b/tests/exceptions/output/backtrace/suppressed_expression_indirect.txt @@ -1,99 +1,54 @@ Traceback (most recent call last): - File "tests/exceptions/backtrace/suppressed_expression_indirect.py", line 14, in b a(1, 0) - └ - File "tests/exceptions/backtrace/suppressed_expression_indirect.py", line 9, in a x / y - │ └ 0 - └ 1 - ZeroDivisionError: division by zero - The above exception was the direct cause of the following exception: - Traceback (most recent call last): - > File "tests/exceptions/backtrace/suppressed_expression_indirect.py", line 28, in c_decorated() - └ - File "tests/exceptions/backtrace/suppressed_expression_indirect.py", line 21, in c_decorated b() - └ - File "tests/exceptions/backtrace/suppressed_expression_indirect.py", line 16, in b raise ValueError("NOK") from e - └ - ValueError: NOK Traceback (most recent call last): - File "tests/exceptions/backtrace/suppressed_expression_indirect.py", line 14, in b a(1, 0) - └ - File "tests/exceptions/backtrace/suppressed_expression_indirect.py", line 9, in a x / y - │ └ 0 - └ 1 - ZeroDivisionError: division by zero - The above exception was the direct cause of the following exception: - Traceback (most recent call last): - > File "tests/exceptions/backtrace/suppressed_expression_indirect.py", line 31, in c_not_decorated() - └ - File "tests/exceptions/backtrace/suppressed_expression_indirect.py", line 25, in c_not_decorated b() - └ - File "tests/exceptions/backtrace/suppressed_expression_indirect.py", line 16, in b raise ValueError("NOK") from e - └ - ValueError: NOK Traceback (most recent call last): - File "tests/exceptions/backtrace/suppressed_expression_indirect.py", line 14, in b a(1, 0) - └ - File "tests/exceptions/backtrace/suppressed_expression_indirect.py", line 9, in a x / y - │ └ 0 - └ 1 - ZeroDivisionError: division by zero - The above exception was the direct cause of the following exception: - Traceback (most recent call last): - > File "tests/exceptions/backtrace/suppressed_expression_indirect.py", line 34, in c_not_decorated() - └ - File "tests/exceptions/backtrace/suppressed_expression_indirect.py", line 25, in c_not_decorated b() - └ - File "tests/exceptions/backtrace/suppressed_expression_indirect.py", line 16, in b raise ValueError("NOK") from e - └ - ValueError: NOK diff --git a/tests/exceptions/output/backtrace/tail_recursion.txt b/tests/exceptions/output/backtrace/tail_recursion.txt index 4acdaac2..c2dcdd68 100644 --- a/tests/exceptions/output/backtrace/tail_recursion.txt +++ b/tests/exceptions/output/backtrace/tail_recursion.txt @@ -1,198 +1,99 @@ Traceback (most recent call last): - File "tests/exceptions/backtrace/tail_recursion.py", line 28, in a(1) - └ - > File "tests/exceptions/backtrace/tail_recursion.py", line 11, in a a(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/tail_recursion.py", line 10, in a 1 / n - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/tail_recursion.py", line 29, in a(2) - └ - File "tests/exceptions/backtrace/tail_recursion.py", line 11, in a a(n - 1) - │ └ 2 - └ - > File "tests/exceptions/backtrace/tail_recursion.py", line 11, in a a(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/tail_recursion.py", line 10, in a 1 / n - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/tail_recursion.py", line 30, in a(3) - └ - File "tests/exceptions/backtrace/tail_recursion.py", line 11, in a a(n - 1) - │ └ 3 - └ - File "tests/exceptions/backtrace/tail_recursion.py", line 11, in a a(n - 1) - │ └ 2 - └ - > File "tests/exceptions/backtrace/tail_recursion.py", line 11, in a a(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/tail_recursion.py", line 10, in a 1 / n - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/tail_recursion.py", line 32, in b(1) - └ - > File "tests/exceptions/backtrace/tail_recursion.py", line 17, in b b(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/tail_recursion.py", line 15, in b 1 / n - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/tail_recursion.py", line 33, in b(2) - └ - File "tests/exceptions/backtrace/tail_recursion.py", line 17, in b b(n - 1) - │ └ 2 - └ - > File "tests/exceptions/backtrace/tail_recursion.py", line 17, in b b(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/tail_recursion.py", line 15, in b 1 / n - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/tail_recursion.py", line 34, in b(3) - └ - File "tests/exceptions/backtrace/tail_recursion.py", line 17, in b b(n - 1) - │ └ 3 - └ - File "tests/exceptions/backtrace/tail_recursion.py", line 17, in b b(n - 1) - │ └ 2 - └ - > File "tests/exceptions/backtrace/tail_recursion.py", line 17, in b b(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/tail_recursion.py", line 15, in b 1 / n - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/tail_recursion.py", line 36, in c(1) - └ - > File "tests/exceptions/backtrace/tail_recursion.py", line 23, in c c(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/tail_recursion.py", line 21, in c 1 / n - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/tail_recursion.py", line 37, in c(2) - └ - File "tests/exceptions/backtrace/tail_recursion.py", line 23, in c c(n - 1) - │ └ 2 - └ - > File "tests/exceptions/backtrace/tail_recursion.py", line 23, in c c(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/tail_recursion.py", line 21, in c 1 / n - └ 0 - ZeroDivisionError: division by zero Traceback (most recent call last): - File "tests/exceptions/backtrace/tail_recursion.py", line 38, in c(3) - └ - File "tests/exceptions/backtrace/tail_recursion.py", line 23, in c c(n - 1) - │ └ 3 - └ - File "tests/exceptions/backtrace/tail_recursion.py", line 23, in c c(n - 1) - │ └ 2 - └ - > File "tests/exceptions/backtrace/tail_recursion.py", line 23, in c c(n - 1) - │ └ 1 - └ - File "tests/exceptions/backtrace/tail_recursion.py", line 21, in c 1 / n - └ 0 - ZeroDivisionError: division by zero diff --git a/tests/exceptions/output/backtrace/too_many_arguments.txt b/tests/exceptions/output/backtrace/too_many_arguments.txt index 4eeefd2a..294b4082 100644 --- a/tests/exceptions/output/backtrace/too_many_arguments.txt +++ b/tests/exceptions/output/backtrace/too_many_arguments.txt @@ -1,24 +1,15 @@ Traceback (most recent call last): - > File "tests/exceptions/backtrace/too_many_arguments.py", line 17, in decorated(1) - └ - TypeError: decorated() takes 0 positional arguments but 1 was given Traceback (most recent call last): - > File "tests/exceptions/backtrace/too_many_arguments.py", line 20, in not_decorated(2) - └ - TypeError: not_decorated() takes 0 positional arguments but 1 was given Traceback (most recent call last): - > File "tests/exceptions/backtrace/too_many_arguments.py", line 23, in not_decorated(3) - └ - TypeError: not_decorated() takes 0 positional arguments but 1 was given diff --git a/tests/exceptions/output/better_exceptions/assertion_error.txt b/tests/exceptions/output/diagnose/assertion_error.txt similarity index 77% rename from tests/exceptions/output/better_exceptions/assertion_error.txt rename to tests/exceptions/output/diagnose/assertion_error.txt index dffaa164..d1860758 100644 --- a/tests/exceptions/output/better_exceptions/assertion_error.txt +++ b/tests/exceptions/output/diagnose/assertion_error.txt @@ -1,11 +1,11 @@ Traceback (most recent call last): -> File "tests/exceptions/better_exceptions/assertion_error.py", line 13, in  + File "tests/exceptions/diagnose/assertion_error.py", line 13, in  foo(9, 55) └  - File "tests/exceptions/better_exceptions/assertion_error.py", line 9, in foo + File "tests/exceptions/diagnose/assertion_error.py", line 9, in foo assert abc > 10 and xyz == 60  │ └ 55  └ 9 diff --git a/tests/exceptions/output/better_exceptions/attributes.txt b/tests/exceptions/output/diagnose/attributes.txt similarity index 90% rename from tests/exceptions/output/better_exceptions/attributes.txt rename to tests/exceptions/output/diagnose/attributes.txt index 872a1fdd..5202c843 100644 --- a/tests/exceptions/output/better_exceptions/attributes.txt +++ b/tests/exceptions/output/diagnose/attributes.txt @@ -1,11 +1,11 @@ Traceback (most recent call last): -> File "tests/exceptions/better_exceptions/attributes.py", line 24, in  + File "tests/exceptions/diagnose/attributes.py", line 24, in  foo() └  - File "tests/exceptions/better_exceptions/attributes.py", line 21, in foo + File "tests/exceptions/diagnose/attributes.py", line 21, in foo ... + 1 + bar(a).b + a.forbidden + a.nope.a + x.__bool__ or a. b . isdigit() and .3 + ...  │ │ │ │ │ │ │ │ └   │ │ │ │ │ │ │ └ '123' diff --git a/tests/exceptions/output/better_exceptions/chained_both.txt b/tests/exceptions/output/diagnose/chained_both.txt similarity index 72% rename from tests/exceptions/output/better_exceptions/chained_both.txt rename to tests/exceptions/output/diagnose/chained_both.txt index 269aa0e6..4710f82f 100644 --- a/tests/exceptions/output/better_exceptions/chained_both.txt +++ b/tests/exceptions/output/diagnose/chained_both.txt @@ -1,13 +1,13 @@ Traceback (most recent call last): - File "tests/exceptions/better_exceptions/chained_both.py", line 14, in cause + File "tests/exceptions/diagnose/chained_both.py", line 14, in cause div(x, y) │ │ └ 0 │ └ 1 └  - File "tests/exceptions/better_exceptions/chained_both.py", line 9, in div + File "tests/exceptions/diagnose/chained_both.py", line 9, in div x / y │ └ 0 └ 1 @@ -20,13 +20,13 @@ Traceback (most recent call last): - File "tests/exceptions/better_exceptions/chained_both.py", line 21, in context + File "tests/exceptions/diagnose/chained_both.py", line 21, in context cause(x, y) │ │ └ 0 │ └ 1 └  - File "tests/exceptions/better_exceptions/chained_both.py", line 16, in cause + File "tests/exceptions/diagnose/chained_both.py", line 16, in cause raise ValueError("Division error")  └  @@ -38,11 +38,11 @@ Traceback (most recent call last): -> File "tests/exceptions/better_exceptions/chained_both.py", line 27, in  + File "tests/exceptions/diagnose/chained_both.py", line 27, in  context(1, 0) └  - File "tests/exceptions/better_exceptions/chained_both.py", line 23, in context + File "tests/exceptions/diagnose/chained_both.py", line 23, in context raise ValueError("Cause error") from e  └  diff --git a/tests/exceptions/output/better_exceptions/encoding.txt b/tests/exceptions/output/diagnose/encoding.txt similarity index 65% rename from tests/exceptions/output/better_exceptions/encoding.txt rename to tests/exceptions/output/diagnose/encoding.txt index ab1afd08..ea1eb5d2 100644 --- a/tests/exceptions/output/better_exceptions/encoding.txt +++ b/tests/exceptions/output/diagnose/encoding.txt @@ -1,15 +1,15 @@ Traceback (most recent call last): -> File "tests/exceptions/better_exceptions/encoding.py", line 17, in  + File "tests/exceptions/diagnose/encoding.py", line 17, in  div() └  - File "tests/exceptions/better_exceptions/encoding.py", line 13, in div + File "tests/exceptions/diagnose/encoding.py", line 13, in div return _deep("天")  └  - File "tests/exceptions/better_exceptions/encoding.py", line 9, in _deep + File "tests/exceptions/diagnose/encoding.py", line 9, in _deep return 1 / val  └ '天' diff --git a/tests/exceptions/output/better_exceptions/global_variable.txt b/tests/exceptions/output/diagnose/global_variable.txt similarity index 71% rename from tests/exceptions/output/better_exceptions/global_variable.txt rename to tests/exceptions/output/diagnose/global_variable.txt index f0d4c3e3..3a8d828c 100644 --- a/tests/exceptions/output/better_exceptions/global_variable.txt +++ b/tests/exceptions/output/diagnose/global_variable.txt @@ -1,11 +1,11 @@ Traceback (most recent call last): -> File "tests/exceptions/better_exceptions/global_variable.py", line 16, in  + File "tests/exceptions/diagnose/global_variable.py", line 16, in  func() └  - File "tests/exceptions/better_exceptions/global_variable.py", line 13, in func + File "tests/exceptions/diagnose/global_variable.py", line 13, in func return 1 / 0 + foo + bar + False  │ └ False  └ None diff --git a/tests/exceptions/output/better_exceptions/indentation_error.txt b/tests/exceptions/output/diagnose/indentation_error.txt similarity index 83% rename from tests/exceptions/output/better_exceptions/indentation_error.txt rename to tests/exceptions/output/diagnose/indentation_error.txt index e11a263e..d0aade16 100644 --- a/tests/exceptions/output/better_exceptions/indentation_error.txt +++ b/tests/exceptions/output/diagnose/indentation_error.txt @@ -1,7 +1,7 @@ Traceback (most recent call last): -> File "tests/exceptions/better_exceptions/indentation_error.py", line 16, in  + File "tests/exceptions/diagnose/indentation_error.py", line 16, in  exec(code) │ └ '\nif True:\n a = 5\n print("foobar") #intentional faulty indentation here.\n b = 7\n' └  diff --git a/tests/exceptions/output/better_exceptions/multilines_repr.txt b/tests/exceptions/output/diagnose/multilines_repr.txt similarity index 71% rename from tests/exceptions/output/better_exceptions/multilines_repr.txt rename to tests/exceptions/output/diagnose/multilines_repr.txt index 4acc1220..f153ab9a 100644 --- a/tests/exceptions/output/better_exceptions/multilines_repr.txt +++ b/tests/exceptions/output/diagnose/multilines_repr.txt @@ -1,11 +1,11 @@ Traceback (most recent call last): -> File "tests/exceptions/better_exceptions/multilines_repr.py", line 18, in  + File "tests/exceptions/diagnose/multilines_repr.py", line 18, in  multiline() └  - File "tests/exceptions/better_exceptions/multilines_repr.py", line 15, in multiline + File "tests/exceptions/diagnose/multilines_repr.py", line 15, in multiline a + b │ └ [[1, 2, 3] │  [4, 5, 6] diff --git a/tests/exceptions/output/better_exceptions/no_error_message.txt b/tests/exceptions/output/diagnose/no_error_message.txt similarity index 60% rename from tests/exceptions/output/better_exceptions/no_error_message.txt rename to tests/exceptions/output/diagnose/no_error_message.txt index d8a6ce6d..0638be77 100644 --- a/tests/exceptions/output/better_exceptions/no_error_message.txt +++ b/tests/exceptions/output/diagnose/no_error_message.txt @@ -1,15 +1,15 @@ Traceback (most recent call last): -> File "tests/exceptions/better_exceptions/no_error_message.py", line 17, in  + File "tests/exceptions/diagnose/no_error_message.py", line 17, in  bar() └  - File "tests/exceptions/better_exceptions/no_error_message.py", line 13, in bar + File "tests/exceptions/diagnose/no_error_message.py", line 13, in bar foo() └  - File "tests/exceptions/better_exceptions/no_error_message.py", line 9, in foo + File "tests/exceptions/diagnose/no_error_message.py", line 9, in foo raise ValueError("")  └  diff --git a/tests/exceptions/output/better_exceptions/source_multilines.txt b/tests/exceptions/output/diagnose/source_multilines.txt similarity index 68% rename from tests/exceptions/output/better_exceptions/source_multilines.txt rename to tests/exceptions/output/diagnose/source_multilines.txt index 6242e748..c8f01eb9 100644 --- a/tests/exceptions/output/better_exceptions/source_multilines.txt +++ b/tests/exceptions/output/diagnose/source_multilines.txt @@ -1,23 +1,23 @@ Traceback (most recent call last): -> File "tests/exceptions/better_exceptions/source_multilines.py", line 37, in  + File "tests/exceptions/diagnose/source_multilines.py", line 37, in  bug_1(10) └  - File "tests/exceptions/better_exceptions/source_multilines.py", line 10, in bug_1 + File "tests/exceptions/diagnose/source_multilines.py", line 10, in bug_1 """ + n / 0) ZeroDivisionError: division by zero Traceback (most recent call last): -> File "tests/exceptions/better_exceptions/source_multilines.py", line 43, in  + File "tests/exceptions/diagnose/source_multilines.py", line 43, in  bug_2(1, string, 3) │ └ 'multi-lines\n' └  - File "tests/exceptions/better_exceptions/source_multilines.py", line 14, in bug_2 + File "tests/exceptions/diagnose/source_multilines.py", line 14, in bug_2 return (1 / 0 + a + b + \  │ └ 'multi-lines\n'  └ 1 @@ -26,12 +26,12 @@ Traceback (most recent call last): -> File "tests/exceptions/better_exceptions/source_multilines.py", line 49, in  + File "tests/exceptions/diagnose/source_multilines.py", line 49, in  bug_3(string) │ └ 'multi-lines\n' └  - File "tests/exceptions/better_exceptions/source_multilines.py", line 20, in bug_3 + File "tests/exceptions/diagnose/source_multilines.py", line 20, in bug_3 , string, 20 / 0)  └ 'multi-lines\n' @@ -39,11 +39,11 @@ Traceback (most recent call last): -> File "tests/exceptions/better_exceptions/source_multilines.py", line 55, in  + File "tests/exceptions/diagnose/source_multilines.py", line 55, in  bug_4() └  - File "tests/exceptions/better_exceptions/source_multilines.py", line 27, in bug_4 + File "tests/exceptions/diagnose/source_multilines.py", line 27, in bug_4 "bar": a / b,  │ └ 0  └ 1 diff --git a/tests/exceptions/output/better_exceptions/source_strings.txt b/tests/exceptions/output/diagnose/source_strings.txt similarity index 81% rename from tests/exceptions/output/better_exceptions/source_strings.txt rename to tests/exceptions/output/diagnose/source_strings.txt index 1ae4af86..e4fadb72 100644 --- a/tests/exceptions/output/better_exceptions/source_strings.txt +++ b/tests/exceptions/output/diagnose/source_strings.txt @@ -1,7 +1,7 @@ Traceback (most recent call last): -> File "tests/exceptions/better_exceptions/source_strings.py", line 11, in  + File "tests/exceptions/diagnose/source_strings.py", line 11, in  a + b"prefix" + 'single' + """triple""" + 1 + b │ └ 0 └ 0 diff --git a/tests/exceptions/output/better_exceptions/syntax_error.txt b/tests/exceptions/output/diagnose/syntax_error.txt similarity index 80% rename from tests/exceptions/output/better_exceptions/syntax_error.txt rename to tests/exceptions/output/diagnose/syntax_error.txt index 91c6b520..a005c5d2 100644 --- a/tests/exceptions/output/better_exceptions/syntax_error.txt +++ b/tests/exceptions/output/diagnose/syntax_error.txt @@ -1,7 +1,7 @@ Traceback (most recent call last): -> File "tests/exceptions/better_exceptions/syntax_error.py", line 16, in  + File "tests/exceptions/diagnose/syntax_error.py", line 16, in  exec(code) │ └ '\nif True:\n a = 5\n b = 7 *\n' └  diff --git a/tests/exceptions/output/better_exceptions/truncating.txt b/tests/exceptions/output/diagnose/truncating.txt similarity index 70% rename from tests/exceptions/output/better_exceptions/truncating.txt rename to tests/exceptions/output/diagnose/truncating.txt index 6ffbf79e..3c8cb634 100644 --- a/tests/exceptions/output/better_exceptions/truncating.txt +++ b/tests/exceptions/output/diagnose/truncating.txt @@ -1,11 +1,11 @@ Traceback (most recent call last): -> File "tests/exceptions/better_exceptions/truncating.py", line 14, in  + File "tests/exceptions/diagnose/truncating.py", line 14, in  div() └  - File "tests/exceptions/better_exceptions/truncating.py", line 10, in div + File "tests/exceptions/diagnose/truncating.py", line 10, in div return 1 / var  └ '9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999... diff --git a/tests/exceptions/output/better_exceptions/unprintable_object.txt b/tests/exceptions/output/diagnose/unprintable_object.txt similarity index 70% rename from tests/exceptions/output/better_exceptions/unprintable_object.txt rename to tests/exceptions/output/diagnose/unprintable_object.txt index 47316121..54800b7b 100644 --- a/tests/exceptions/output/better_exceptions/unprintable_object.txt +++ b/tests/exceptions/output/diagnose/unprintable_object.txt @@ -1,7 +1,7 @@ Traceback (most recent call last): -> File "tests/exceptions/better_exceptions/unprintable_object.py", line 14, in  + File "tests/exceptions/diagnose/unprintable_object.py", line 14, in  obj + 1 / 0 └  diff --git a/tests/exceptions/ownership/callback.py b/tests/exceptions/ownership/callback.py index 77bb41d9..94768d18 100644 --- a/tests/exceptions/ownership/callback.py +++ b/tests/exceptions/ownership/callback.py @@ -4,7 +4,7 @@ site.USER_SITE = os.path.abspath(os.path.join(os.path.dirname(__file__), "usersite")) logger.remove() -logger.add(sys.stderr, format="", colorize=True, backtrace=True) +logger.add(sys.stderr, format="", colorize=True, backtrace=True, diagnose=True) def callback(): divide(1, 0) diff --git a/tests/exceptions/ownership/direct.py b/tests/exceptions/ownership/direct.py index 29a6a9bb..688f020f 100644 --- a/tests/exceptions/ownership/direct.py +++ b/tests/exceptions/ownership/direct.py @@ -4,7 +4,7 @@ site.USER_SITE = os.path.abspath(os.path.join(os.path.dirname(__file__), "usersite")) logger.remove() -logger.add(sys.stderr, format="", colorize=True, backtrace=True) +logger.add(sys.stderr, format="", colorize=True, backtrace=True, diagnose=True) try: divide(10, 0) diff --git a/tests/exceptions/ownership/indirect.py b/tests/exceptions/ownership/indirect.py index 849cc2ed..9814426b 100644 --- a/tests/exceptions/ownership/indirect.py +++ b/tests/exceptions/ownership/indirect.py @@ -4,7 +4,7 @@ site.USER_SITE = os.path.abspath(os.path.join(os.path.dirname(__file__), "usersite")) logger.remove() -logger.add(sys.stderr, format="", colorize=True, backtrace=True) +logger.add(sys.stderr, format="", colorize=True, backtrace=True, diagnose=True) try: divide_indirect(10, 0) diff --git a/tests/exceptions/ownership/string_lib.py b/tests/exceptions/ownership/string_lib.py index bcddd310..18a3ab27 100644 --- a/tests/exceptions/ownership/string_lib.py +++ b/tests/exceptions/ownership/string_lib.py @@ -4,7 +4,7 @@ site.USER_SITE = os.path.abspath(os.path.join(os.path.dirname(__file__), "usersite")) logger.remove() -logger.add(sys.stderr, format="", colorize=True, backtrace=True) +logger.add(sys.stderr, format="", colorize=True, backtrace=True, diagnose=True) try: execute() diff --git a/tests/exceptions/ownership/string_source.py b/tests/exceptions/ownership/string_source.py index 6b18ccd4..8a010a52 100644 --- a/tests/exceptions/ownership/string_source.py +++ b/tests/exceptions/ownership/string_source.py @@ -2,7 +2,7 @@ from loguru import logger logger.remove() -logger.add(sys.stderr, format="", colorize=True, backtrace=True) +logger.add(sys.stderr, format="", colorize=True, backtrace=True, diagnose=True) def foo(): 1 / 0 diff --git a/tests/test_add_options.py b/tests/test_add_options.py index 35051d7c..a888d08a 100644 --- a/tests/test_add_options.py +++ b/tests/test_add_options.py @@ -212,6 +212,25 @@ def test_backtrace(writer): assert len(result_with) > len(result_without) +def test_diagnose(writer): + logger.add(writer, format="{message}", diagnose=True) + try: + 1 / 0 + except: + logger.exception("") + result_with = writer.read().strip() + + logger.remove() + writer.clear() + + logger.add(writer, format="{message}", diagnose=False) + try: + 1 / 0 + except: + logger.exception("") + result_without = writer.read().strip() + + assert len(result_with) > len(result_without) @pytest.mark.parametrize("with_exception", [False, True]) def test_serialize(with_exception): diff --git a/tests/test_exceptions_formatting.py b/tests/test_exceptions_formatting.py index ef23e60c..294c6b8f 100644 --- a/tests/test_exceptions_formatting.py +++ b/tests/test_exceptions_formatting.py @@ -116,8 +116,8 @@ def test_backtrace(filename): "unprintable_object", ], ) -def test_better_exceptions(filename): - compare_exception("better_exceptions", filename) +def test_diagnose(filename): + compare_exception("diagnose", filename) @pytest.mark.parametrize( @@ -127,8 +127,9 @@ def test_exception_ownership(filename): compare_exception("ownership", filename) -def test_carret_not_masked(writer): - logger.add(writer, backtrace=True, colorize=False, format="") +@pytest.mark.parametrize("diagnose", [False, True]) +def test_carret_not_masked(writer, diagnose): + logger.add(writer, backtrace=True, diagnose=diagnose, colorize=False, format="") @logger.catch def f(n): @@ -139,11 +140,23 @@ def f(n): assert sum(line.startswith("> ") for line in writer.read().splitlines()) == 1 +@pytest.mark.parametrize("diagnose", [False, True]) +def test_no_carret_if_no_backtrace(writer,diagnose): + logger.add(writer, backtrace=False, diagnose=diagnose, colorize=False, format="") + + @logger.catch + def f(n): + 1 / n + f(n - 1) + + f(30) + + assert sum(line.startswith("> ") for line in writer.read().splitlines()) == 0 @pytest.mark.parametrize("encoding", ["ascii", "UTF8", None]) def test_sink_encoding(writer, encoding): writer.encoding = encoding - logger.add(writer, backtrace=True, colorize=False, format="") + logger.add(writer, backtrace=True, diagnose=True, colorize=False, format="") def foo(a, b): a / b @@ -156,53 +169,58 @@ def bar(c): except ZeroDivisionError: logger.exception("") + assert writer.read().endswith("ZeroDivisionError: division by zero\n") def test_has_sys_real_prefix(writer, monkeypatch): monkeypatch.setattr(sys, "real_prefix", "/foo/bar/baz", raising=False) - logger.add(writer, backtrace=True, colorize=False, format="") + logger.add(writer, backtrace=False, diagnose=True, colorize=False, format="") try: 1 / 0 except ZeroDivisionError: logger.exception("") + assert writer.read().endswith("ZeroDivisionError: division by zero\n") def test_has_site_getsitepackages(writer, monkeypatch): monkeypatch.setattr(site, "getsitepackages", lambda: ["foo", "bar", "baz"], raising=False) - logger.add(writer, backtrace=True, colorize=False, format="") + logger.add(writer, backtrace=False, diagnose=True, colorize=False, format="") try: 1 / 0 except ZeroDivisionError: logger.exception("") + assert writer.read().endswith("ZeroDivisionError: division by zero\n") def test_no_sys_real_prefix(writer, monkeypatch): monkeypatch.delattr(sys, "real_prefix", raising=False) - logger.add(writer, backtrace=True, colorize=False, format="") + logger.add(writer, backtrace=False, diagnose=True, colorize=False, format="") try: 1 / 0 except ZeroDivisionError: logger.exception("") + assert writer.read().endswith("ZeroDivisionError: division by zero\n") def test_no_site_getsitepackages(writer, monkeypatch): monkeypatch.delattr(site, "getsitepackages", raising=False) - logger.add(writer, backtrace=True, colorize=False, format="") + logger.add(writer, backtrace=False, diagnose=True, colorize=False, format="") try: 1 / 0 except ZeroDivisionError: logger.exception("") + assert writer.read().endswith("ZeroDivisionError: division by zero\n") def test_no_exception(writer): - logger.add(writer, backtrace=False, colorize=False, format="{message}") + logger.add(writer, backtrace=False, diagnose=False, colorize=False, format="{message}") logger.exception("No Error.")