master use contextmanager for the use_encode_url method
master use functools.wraps on the decorator