code: def make_decorator(
      serializer_cls: Type[Serializer[T]],
  ) -> SerializerDecoratorConstructor:
      """Create a method decorator based on a serializer using path interpolation."""
  
      def decorator(path: Path, **kwargs: Any) -> SerializerDecorator:
          def path_func(
              f: Callable[..., T], ba: BoundArguments
          ) -> Path:
              path_string = Path(path).as_posix()
              log.debug("Path string: %s", path_string)
              arguments = ba.arguments.copy()
              path_string = eval(
                  'f"""' + path_string + '"""', dict(), arguments
              )
              log.debug("Interpolated string: %s", path_string)
              return Path(path_string)
  
          return serializer_cls(path=path_func, **kwargs).decorate
  
      return decorator
  
file_path: life2vec/src/data_new/decorators.py
imports: import logging
  from inspect import BoundArguments
  from pathlib import Path
  from typing import Any, Callable, Protocol, Type, TypeVar
  from .serialize import ParquetSerializer, PickleSerializer, Serializer, TSVSerializer
label_desc: Use image node_id 1 for calling a global function with example usage: make_decorator(serializer_cls) and returns: decorator, serializer_cls, Path