I have a decorator that is supposed to use a parameter that's passed in from the commandline e.g
@deco(name)
def handle(self, *_args, **options):
name = options["name"]
def deco(name):
// The name should come from commandline
pass
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument(
"--name",
type=str,
required=True,
)
@deco(//How can I pass the name here?)
def handle(self, *_args, **options):
name = options["name"]
any suggestions on this?
You can make a "meta-decorator", something like:
from functool import wraps
def metadeco(function):
@wraps(function)
def func(*args, **kwargs):
name = kwargs['name']
return deco(name)(function)(*args, **kwargs)
return func
and then work with that meta-decorator:
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument(
"--name",
type=str,
required=True,
)
@metadeco
def handle(self, *_args, **options):
name = options['name']
# …