mirror of
https://github.com/aykhans/AzSuicideDataVisualization.git
synced 2025-04-22 10:28:02 +00:00
46 lines
1.0 KiB
Python
46 lines
1.0 KiB
Python
from __future__ import annotations
|
|
|
|
import contextlib
|
|
import inspect
|
|
import os
|
|
|
|
|
|
@contextlib.contextmanager
|
|
def rewrite_exception(old_name: str, new_name: str):
|
|
"""
|
|
Rewrite the message of an exception.
|
|
"""
|
|
try:
|
|
yield
|
|
except Exception as err:
|
|
if not err.args:
|
|
raise
|
|
msg = str(err.args[0])
|
|
msg = msg.replace(old_name, new_name)
|
|
args: tuple[str, ...] = (msg,)
|
|
if len(err.args) > 1:
|
|
args = args + err.args[1:]
|
|
err.args = args
|
|
raise
|
|
|
|
|
|
def find_stack_level() -> int:
|
|
"""
|
|
Find the first place in the stack that is not inside pandas
|
|
(tests notwithstanding).
|
|
"""
|
|
stack = inspect.stack()
|
|
|
|
import pandas as pd
|
|
|
|
pkg_dir = os.path.dirname(pd.__file__)
|
|
test_dir = os.path.join(pkg_dir, "tests")
|
|
|
|
for n in range(len(stack)):
|
|
fname = stack[n].filename
|
|
if fname.startswith(pkg_dir) and not fname.startswith(test_dir):
|
|
continue
|
|
else:
|
|
break
|
|
return n
|