You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.0 KiB
39 lines
1.0 KiB
import logging
|
|
from functools import wraps
|
|
from typing import Any, Callable
|
|
|
|
logging.basicConfig(level=logging.INFO)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def block(
|
|
function: Callable[..., Any],
|
|
device: str = None,
|
|
verbose: bool = False,
|
|
) -> Callable[..., Any]:
|
|
"""
|
|
A decorator that transforms a function into a block.
|
|
|
|
Args:
|
|
function (Callable[..., Any]): The function to transform.
|
|
|
|
Returns:
|
|
Callable[..., Any]: The transformed function.
|
|
"""
|
|
|
|
@wraps(function)
|
|
def wrapper(*args, **kwargs):
|
|
# Here you can add code to execute the function on various hardwares
|
|
# For now, we'll just call the function normally
|
|
try:
|
|
return function(*args, **kwargs)
|
|
except Exception as error:
|
|
logger.error(f"Error in {function.__name__}: {error}")
|
|
raise error
|
|
|
|
# Set the wrapper function's name and docstring to those of the original function
|
|
wrapper.__name__ = function.__name__
|
|
wrapper.__doc__ = function.__doc__
|
|
|
|
return wrapper
|