Skip to content

Commit

Permalink
Fix github capture console
Browse files Browse the repository at this point in the history
  • Loading branch information
treysp committed Jan 25, 2025
1 parent 0a744d8 commit 14ee633
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 14 deletions.
21 changes: 21 additions & 0 deletions sqlmesh/core/console.py
Original file line number Diff line number Diff line change
Expand Up @@ -1605,6 +1605,27 @@ def log_error(self, message: str) -> None:
self._errors.append(message)
super().log_error(message)

def log_skipped_models(self, message: str) -> None:
self._errors.append(f"Skipped models\n\n{message}")
super().log_skipped_models(message)

def log_failed_models(self, msg_dict: t.Dict[str, str]) -> None:
out = "\nFailed models\n"

num_fails = len(msg_dict)
for i, (name, msg) in enumerate(msg_dict.items()):
for delim in ["'", '"', "[", "]", "`"]:
name = name.replace(delim, "")

msg = " " + msg.replace("\n", "\n ")
if i == (num_fails - 1):
msg = msg if msg.rstrip(" ").endswith("\n") else msg + "\n"

out += f" {name}\n\n{msg}"

self._errors.append(out)
super().log_failed_models(msg_dict)

def _print(self, value: t.Any, **kwargs: t.Any) -> None:
with self.console.capture() as capture:
self.console.print(value, **kwargs)
Expand Down
8 changes: 2 additions & 6 deletions sqlmesh/core/scheduler.py
Original file line number Diff line number Diff line change
Expand Up @@ -343,14 +343,10 @@ def run(
if isinstance(error.__cause__, CircuitBreakerError):
raise error.__cause__

msg = []
msg.append(str(error))
err_msg_dict[error.node_name] = "\n".join(msg)
err_msg_dict[error.node_name] = str(error)

exception_msg = (
"\n".join(format_exception(error.__cause__))
if error.__cause__
else "\n".join(msg)
"\n".join(format_exception(error.__cause__)) if error.__cause__ else str(error)
)
logger.info(f"EXECUTION ERROR\n{exception_msg}\n")

Expand Down
3 changes: 2 additions & 1 deletion sqlmesh/utils/concurrency.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ def __init__(self, ex: Exception, node: H):
node_name = node[0]
self.node_name = node_name

# some engines return a tuple(int error code, [str|bytes] message)
# MSSQL returns a `tuple([int] error code, [bytes] error message)`.
# TODO: verify return types of other engines
error_msg = None
for arg in ex.args:
if not error_msg and isinstance(arg, (str, bytes)):
Expand Down
14 changes: 7 additions & 7 deletions tests/utils/test_metaprogramming.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from contextlib import contextmanager
from dataclasses import dataclass
from pathlib import Path

import re
import pandas as pd
import pytest
import sqlglot
Expand Down Expand Up @@ -44,17 +44,17 @@ def test_print_exception(mocker: MockerFixture):
except Exception as ex:
print_exception(ex, test_env, out_mock)

expected_message = """ File "/Users/trey/tobiko/sqlmesh/tests/utils/test_metaprogramming.py", line 43, in test_print_exception
eval("test_fun()", env)
expected_message = """ File ".*?/tests/utils/test_metaprogramming\.py", line 43, in test_print_exception
eval\("test_fun\(\)", env\)
File "<string>", line 1, in <module>
File '/test/path.py' (or imported file), line 2, in test_fun
def test_fun():
raise RuntimeError("error")
File '/test/path.py' \(or imported file\), line 2, in test_fun
def test_fun\(\):
raise RuntimeError\("error"\)
RuntimeError: error
"""
out_mock.write.assert_called_once_with(expected_message)
assert re.match(expected_message, out_mock.write.call_args_list[0][0][0])


X = 1
Expand Down

0 comments on commit 14ee633

Please sign in to comment.