Hello, On Fri, Jan 27, 2023 at 4:22 PM Weatherby,Gerard <gweathe...@uchc.edu> wrote: > > Why not something like: > > > parser.add_argument("-z", "--zone") > > args = parser.parse_args() > if args.zone and args.zone not in ptyz.all_timezones: > > print(“Invalid timezone”,file=sys.stderr) > This is what I use now. I still wonder if I can mold HelpFormatter to do what I want it to do.
> … > > > > > From: Python-list <python-list-bounces+gweatherby=uchc....@python.org> on > behalf of Ivan "Rambius" Ivanov <rambiusparkisan...@gmail.com> > Date: Friday, January 27, 2023 at 3:33 PM > To: Python <python-list@python.org> > Subject: Custom help format for a choice argparse argument > > *** Attention: This is an external email. Use caution responding, opening > attachments or clicking on links. *** > > Hello, > > I am developing a script that accepts a time zone as an option. The > time zone can be any from pytz.all_timezones. I have > > def main(): > parser = argparse.ArgumentParser() > parser.add_argument("-z", "--zone", choices=pytz.all_timezones) > args = parser.parse_args() > print(args) > print(f"Specified timezone: {args.zone}") > > It works, but when I run it with the -h option it dumps all entries in > pytz.all_timezones. I would like to modify the help format for just > -z|--zone option. I read the docs about HelpFormatter and argparse.py > and I ended up with > > class CustomHelpFormatter(argparse.HelpFormatter): > def _metavar_formatter(self, action, default_metavar): > if action.dest == 'zone': > result = 'zone from pytz.all_timezones' > def format(tuple_size): > if isinstance(result, tuple): > return result > else: > return (result, ) * tuple_size > return format > else: > return super(CustomHelpFormatter, > self)._metavar_formatter(action, default_metavar) > > > def main(): > parser = argparse.ArgumentParser(formatter_class=CustomHelpFormatter) > parser.add_argument("-z", "--zone", choices=pytz.all_timezones) > args = parser.parse_args() > print(args) > print(f"Specified timezone: {args.zone}") > > This works, but is there a more elegant way to achieve it? > > Regards > rambius > > -- > Tangra Mega Rock: > https://urldefense.com/v3/__http://www.radiotangra.com__;!!Cn_UX_p3!kiJusdm5pCptP3sOBX85KXqUJkqr2jSa4C_-WAqND7WkL-aw3BYbW50td_AcuzJ1XUPYIVO3JiLMc4gRWS885vTKFsFvaQ$ > -- > https://urldefense.com/v3/__https://mail.python.org/mailman/listinfo/python-list__;!!Cn_UX_p3!kiJusdm5pCptP3sOBX85KXqUJkqr2jSa4C_-WAqND7WkL-aw3BYbW50td_AcuzJ1XUPYIVO3JiLMc4gRWS885vRXq-JKLg$ -- Tangra Mega Rock: http://www.radiotangra.com -- https://mail.python.org/mailman/listinfo/python-list