George Fischhof <geo...@fischhof.hu> ezt írta (időpont: 2021. aug. 29., V, 21:27):
> > > Loris Bennett <loris.benn...@fu-berlin.de> ezt írta (időpont: 2021. aug. > 26., Cs, 16:02): > >> George Fischhof <geo...@fischhof.hu> writes: >> >> [snip (79 lines)] >> >> >> > Hi, >> >> > >> >> > Also you can give a try to click and / or typer packages. >> >> > Putting args into environment variables can be a solution too >> >> > All of these depends on several things: personal preferences, >> colleagues >> >> / >> >> > firm standards, the program, readability, variable accessibility (IDE >> >> > support, auto completition) (env vars not supported by IDEs as they >> are >> >> not >> >> > part of code) >> >> >> >> Thanks for the pointers, although I have only just got my head around >> >> argparse/configargparse, so click is something I might have a look at >> >> for future project. >> >> >> >> However, the question of how to parse the arguments is somewhat >> separate >> >> from that of how to pass (or not pass) the arguments around within a >> >> program. >> >> [snip (16 lines)] >> > >> > Hi, >> > I thought not just parsing, but the usage method: you add a decorator to >> > the function where you want to use the parameters. This way you do not >> have >> > to pass the value through the calling hierarchy. >> > >> > Note: typer is a newer package, it contains click and leverages command >> > line parsing even more. >> >> Do you have an example of how this is done? From a cursory reading of >> the documentation, it didn't seem obvious to me how to do this, but then >> I don't have much understanding of how decorators work. >> >> Cheers, >> >> Loris >> >> >> -- >> This signature is currently under construction. >> -- >> https://mail.python.org/mailman/listinfo/python-list > > > Hi, > > will create a sample code on Monday - Tuesday > > BR, > George > Hi, here is the program ;-) (see below) typer does not uses decorators, to solve this problem they advice to use click's decorators, mixing typer and click. Practically I prefer not to mix them, also the parts for easiest way to do this just available in latest click, which is not supported in typer. So I created all the stuff in click, 8.x should be used BR, George import click # read command line parameters @click.command() @click.option('--level_1', help='Level 1') @click.option('--level_2', help='Level 2') def main(level_1, level_2): # put command line parameters into global context ctx = click.get_current_context() ctx.meta['level_1'] = level_1 ctx.meta['level_2'] = level_2 level_1_function() # pass / inject level_1 parameter to this function @click.decorators.pass_meta_key('level_1') def level_1_function(level_1): print(f'level 1 variable: {level_1}') level_2_function() # pass / inject level_2 parameter to this function @click.decorators.pass_meta_key('level_2') def level_2_function(level_2): print(f'level 2 variable: {level_2}') if __name__ == "__main__": main() -- https://mail.python.org/mailman/listinfo/python-list