Skip to content

Commit a83c5b3

Browse files
committed
Get proper name with inspect, remove need for giving __name__.
1 parent cda8706 commit a83c5b3

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

dash/_utils.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import json
1111
import secrets
1212
import string
13+
import inspect
1314
from html import escape
1415
from functools import wraps
1516
from typing import Union
@@ -281,3 +282,12 @@ def hooks_to_js_object(hooks: Union[RendererHooks, None]) -> str:
281282

282283
def parse_version(version):
283284
return tuple(int(s) for s in version.split("."))
285+
286+
287+
def get_caller_name(name: str):
288+
stack = inspect.stack()
289+
for s in stack:
290+
for code in s.code_context:
291+
if f"{name}(" in code:
292+
return s.frame.f_locals.get("__name__", "__main__")
293+
return "__main__"

dash/dash.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
gen_salt,
5656
hooks_to_js_object,
5757
parse_version,
58+
get_caller_name,
5859
)
5960
from . import _callback
6061
from . import _get_paths
@@ -387,14 +388,16 @@ def __init__( # pylint: disable=too-many-statements
387388
):
388389
_validate.check_obsolete(obsolete)
389390

391+
caller_name = get_caller_name(self.__class__.__name__)
392+
390393
# We have 3 cases: server is either True (we create the server), False
391394
# (defer server creation) or a Flask app instance (we use their server)
392395
if isinstance(server, flask.Flask):
393396
self.server = server
394397
if name is None:
395-
name = getattr(server, "name", "__main__")
398+
name = getattr(server, "name", caller_name)
396399
elif isinstance(server, bool):
397-
name = name if name else "__main__"
400+
name = name if name else caller_name
398401
self.server = flask.Flask(name) if server else None
399402
else:
400403
raise ValueError("server must be a Flask app or a boolean")

0 commit comments

Comments
 (0)