mirror of
				https://github.com/explosion/spaCy.git
				synced 2025-10-30 23:47:31 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from typing import Optional, Tuple
 | |
| 
 | |
| 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: Optional[str] = Opt(None, "--registry", "-r", 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 (Optional[str]): Name of the catalogue registry.
 | |
| 
 | |
|     DOCS: https://spacy.io/api/cli#find-function
 | |
|     """
 | |
|     if not registry_name:
 | |
|         registry_names = registry.get_registry_names()
 | |
|         for name in registry_names:
 | |
|             if registry.has(name, func_name):
 | |
|                 registry_name = name
 | |
|                 break
 | |
| 
 | |
|     if not registry_name:
 | |
|         msg.fail(
 | |
|             f"Couldn't find registered function: {func_name}",
 | |
|             exits=1,
 | |
|         )
 | |
| 
 | |
|     assert registry_name is not None
 | |
|     find_function(func_name, registry_name)
 | |
| 
 | |
| 
 | |
| def find_function(func_name: str, registry_name: str) -> Tuple[str, int]:
 | |
|     registry_desc = None
 | |
|     try:
 | |
|         registry_desc = registry.find(registry_name, func_name)
 | |
| 
 | |
|     except RegistryError as e:
 | |
|         msg.fail(
 | |
|             f"Couldn't find registered function: '{func_name}' in registry '{registry_name}'",
 | |
|         )
 | |
|         msg.fail(f"{e}", exits=1)
 | |
| 
 | |
|     assert registry_desc is not None
 | |
|     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}' in registry '{registry_name}'",
 | |
|             exits=1,
 | |
|         )
 | |
| 
 | |
|     msg.good(f"Found registered function at {registry_path}:{line_no}")
 | |
|     return registry_path, line_no
 |