Your comments

To be honest, the Python decorator example is just not how it is done in Python at all. This is all you need:

import functools
from typing import Callable

def custom_decorator(func: Callable):
    @functools.wraps(func)
    def _decorator(*args, **kwargs):
        # pre-call decorating functionality
        value = func(*args, **kwargs)
        # post-call decorating functionality
        return value
    return _decorator

@custom_decorator
def decorated_function():
    # do something
    ...