Skip to content

Commit 0003ade

Browse files
committed
rename extension_paths to extension_points and add logging to reflect this change
1 parent f6c3cad commit 0003ade

File tree

1 file changed

+40
-7
lines changed

1 file changed

+40
-7
lines changed

jupyter_server/extension/utils.py

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def get_extension_app_pkg(app_cls):
2424
raise NotAnExtensionApp("The ")
2525

2626

27-
def get_loader(obj):
27+
def get_loader(obj, logger=None):
2828
"""Looks for _load_jupyter_server_extension as an attribute
2929
of the object or module.
3030
@@ -35,25 +35,58 @@ def get_loader(obj):
3535
func = getattr(obj, '_load_jupyter_server_extension')
3636
except AttributeError:
3737
func = getattr(obj, 'load_jupyter_server_extension')
38+
3839
except Exception:
3940
raise ExtensionLoadingError("_load_jupyter_server_extension function was not found.")
4041
return func
4142

4243

43-
def get_metadata(package_name):
44+
def get_metadata(package_name, logger=None):
4445
"""Find the extension metadata from an extension package.
4546
47+
This looks for a `_jupyter_server_extension_points` function
48+
that returns metadata about all extension points within a Jupyter
49+
Server Extension pacakge.
50+
4651
If it doesn't exist, return a basic metadata packet given
4752
the module name.
4853
"""
4954
module = importlib.import_module(package_name)
55+
56+
try:
57+
return module._jupyter_server_extension_points
58+
except AttributeError:
59+
pass
60+
61+
# For backwards compatibility, we temporarily allow
62+
# _jupyter_server_extension_paths. We will remove in
63+
# a later release of Jupyter Server.
5064
try:
51-
return module._jupyter_server_extension_paths()
65+
return module._jupyter_server_extension_paths
5266
except AttributeError:
53-
return [{
54-
"module": package_name,
55-
"name": package_name
56-
}]
67+
if logger:
68+
logger.debug(
69+
"A `_jupyter_server_extension_points` function was not "
70+
"found in {name}. Instead, a `_jupyter_server_extension_paths` "
71+
"function was found and will be used for now. This function "
72+
"name will be deprecated in future releases "
73+
"of Jupyter Server.".format(name=package_name)
74+
)
75+
pass
76+
77+
# Dynamically create metadata if the package doesn't
78+
# provide it.
79+
if logger:
80+
logger.debug(
81+
"A `_jupyter_server_extension_points` function was "
82+
"not found in {name}, so Jupyter Server will look "
83+
"for extension points in the extension pacakge's "
84+
"root.".format(name=package_name)
85+
)
86+
return [{
87+
"module": package_name,
88+
"name": package_name
89+
}]
5790

5891

5992
def validate_extension(name):

0 commit comments

Comments
 (0)