Code Monkey home page Code Monkey logo

Comments (6)

anniecherk avatar anniecherk commented on May 29, 2024 1

Ah, perfect, yes that's exactly what I was looking for! I didn't realize I could use the argparse keyword but that makes a lot sense. Thanks very much!

from typed-argument-parser.

ethanabrooks avatar ethanabrooks commented on May 29, 2024 1

@mo22 could you define those Command and Subcommands classes for us? Trying to come up with something that plays a little better with the Pyright linter.

from typed-argument-parser.

martinjm97 avatar martinjm97 commented on May 29, 2024

Hi @anniecherk,

Thank you for the carefully worked example. If I understand it correctly, this has been solved for argparse and as a wrapper for argparse, Tap supports the same functionality. Here's a worked example:

class SubparserA(Tap):
     bar: int  # bar help
 
class SubparserB(Tap):
     baz: Literal['X', 'Y', 'Z']  # baz help
 
class Args(Tap):
     foo: bool = False  # foo help

     def configure(self):
         self.add_subparsers(help='sub-command help', dest="subparser_name")
         self.add_subparser('a', SubparserA, help='a help')
         self.add_subparser('b', SubparserB, help='b help')
         
args = Args().parse_args(['a', '--bar', '1'])

print(args.subparser_name)  # The result is "a"

Let me know if this resolves the issue :).

from typed-argument-parser.

martinjm97 avatar martinjm97 commented on May 29, 2024

Glad it worked out! Happy tapping!

from typed-argument-parser.

mo22 avatar mo22 commented on May 29, 2024

Hey, great project! I did something similar a while back and solved the subparser issue by using something like this:

    class Args(Command):
        verbose = Argument(bool)
        cmd = Subcommands(Union[
            ArgsListZones,
            ArgsGetNameservers,
            ArgsDeleteZone,
            ArgsExportZone,
            ArgsImportZone,
            ArgsImportYml,
            ArgsPurgeYml,
        ])

this way the selected command could be checked by python idioms and would also have the correct typings

from typed-argument-parser.

mo22 avatar mo22 commented on May 29, 2024

also a @tap.Positional decorator might make configure not needed so often

from typed-argument-parser.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.