spaCy/spacy/cli/find_function.py
2023-07-26 16:13:30 +02:00

51 lines
1.4 KiB
Python

from catalogue import RegistryError
from wasabi import msg
from ..util import registry
from ._util import Arg, Opt, app
@app.command("find-function")
def find_function_cli(
# fmt: off
func_name: str = Arg(..., help="Name of the registered function."),
registry_name: str = Opt(None, help="Name of the catalogue registry."),
# fmt: on
):
"""
Find the module, path and line number to the file the registered
function is defined in, if available.
func_name (str): Name of the registered function.
registry_name (str): Name of the catalogue registry.
"""
registry_names = registry.get_registry_names()
for name in registry_names:
if registry.has(name, func_name):
registry_name = name
break
find_function(func_name, registry_name)
def find_function(func_name: str, registry_name: str) -> None:
try:
registry_desc = registry.find(registry_name, func_name)
except RegistryError as e:
msg.fail(
f"Couldn't find registered function: {func_name}\n\n{e}",
exits=1,
)
if registry_desc["file"]:
registry_path = registry_desc["file"]
line_no = registry_desc["line_no"]
else:
msg.fail(
f"Couldn't find path to registered function: {func_name}",
exits=1,
)
msg.good(f"Found registered function at file://{registry_path}:{line_no}")