python - Should we use options to get information that is not optional but we do that to make it look more intuitive? -


i trying write python program provide github features in cli creating issues, creating repos, creating prs, etc.

i came github create issue --title <title> --description <description> --user <user> --repo <repo>

i used argparse purpose

import argparse parser = argparse.parser() parser.add_argument('create',                      options=['issue', 'repo', 'pull')                     action='store') parser.add_argument('--title', action="store", type=str) parser.add_argument('--description', action="store", type=str) parser.add_argument('--user', action="store") parser.add_argument('--repo')  parser.parse_args('create issue --title title --description desc --user user --repo repo') 

i used options --title , --descriptions information in keyword form.

while options meant optional, according style of parsing:

  • if create issue --title, --description, --user, --repo required.

what right approach of parsing command github create issue --title title --description desc --user user --repo repo ?

first couple of tweaks:

parser.add_argument('--title', action="store", type=str) 

can simplified to

parser.add_argument('--title') 

since action , type defaults. --repo.

args = parser.parse_args() 

reads commandline , puts values in args namespace.

args = parser.parse_args(['issue --title title --description desc --user user --repo repo'].split()) 

can used test parser simulated list of strings.

note dropped create.

parser.add_argument('create', choices=['issue', 'repo', 'pull')) 

defines positional put in args args.create. strings accepts choices (not options). alternative use --create; in case behaves other arguments, limit in accepted values.

if want require arguments specific value, need testing after parsing, e.g.

if args.create in ['issue']:     if args.title none or args.user none:        parser.error('title , user required issue') 

this duplicate of recent how can make python argparse have dependency closed duplicate.

an alternative use subparsers. can read in docs , previous [argparse] questions.

try these ideas , come new question.

you'll have write custom usage and/or help paragraphs describe constrains users.


Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -