| { |
| "meta_a": { |
| "name": "test_file_1.py", |
| "content_type": "text/x-python", |
| "lines": 43 |
| }, |
| "meta_b": { |
| "name": "test_file_1.py", |
| "content_type": "text/x-python", |
| "lines": 43 |
| }, |
| "change_type": "MODIFIED", |
| "diff_header": [ |
| "diff --git a/test_file_1.py b/test_file_1.py", |
| "index 95ab5e7..e368bb0 100644", |
| "--- a/test_file_1.py", |
| "+++ b/test_file_1.py" |
| ], |
| "content": [ |
| { |
| "ab": [ |
| "from types import Any, Callable, Type, Union", |
| "", |
| "__all__ = [\"importclass\", \"preprocess_classes\", \"TypeClassOrPath\"]", |
| "", |
| "TypeClassOrPath = Union[Type, str]", |
| "", |
| "", |
| "def importclass(", |
| " module_name: str,", |
| " class_name: Union[str, None] = None", |
| ") -> Type:", |
| " \"\"\"", |
| " Dynamically import a class from a specified module.", |
| "", |
| " :param module_name: The name of the module to import.", |
| " :param class_name: The name of the class in the module to import. Defaults to None.", |
| " :return: The dynamically imported class.", |
| " \"\"\"", |
| " if not class_name:" |
| ] |
| }, |
| { |
| "a": [ |
| " module_name, class_name = module_name.rsplit('.', 1)" |
| ], |
| "b": [ |
| " module_name, class_name = module_name.rsplit('.', 2)" |
| ], |
| "common": true |
| }, |
| { |
| "ab": [ |
| " loaded_module = importclass(module_name, fromlist=[class_name])", |
| " return getattr(loaded_module, class_name)", |
| "", |
| "", |
| "def preprocess_classes(func: Callable) -> Callable:", |
| " \"\"\"Decorator to convert dot-notated class paths into strings from positional arguments.\"\"\"", |
| " def __preprocess_classes_wrapper(*all_classes: TypeClassOrPath, **kwargs: Any) -> Any:", |
| " \"\"\"", |
| " Dynamically import classes if they are passed as strings.", |
| "", |
| " :param all_classes: A variable number of class paths (strings or actual types).", |
| " :param kwargs: Any keyword arguments to pass to the decorated function.", |
| " :return: The result of the decorated function.", |
| " \"\"\"", |
| " classes_processed = (", |
| " class_id if isinstance(class_id, type)", |
| " else importclass(class_id)", |
| " for class_id in all_classes", |
| " )", |
| " return func(*classes_processed, *kwargs),", |
| " return __preprocess_classes_wrapper" |
| ] |
| } |
| ] |
| } |