Comments (6)
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.
@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.
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.
Glad it worked out! Happy tapping!
from typed-argument-parser.
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.
also a @tap.Positional
decorator might make configure
not needed so often
from typed-argument-parser.
Related Issues (20)
- [Feature request] Easy transition from existing code using argparse HOT 1
- How to use argparse.FileType? HOT 1
- What is the right way to call `set_defaults` HOT 4
- Add useful type hints to `Tap.add_subparsers` HOT 1
- Add useful type hints to `Tap.add_subparser` HOT 5
- Refactor `tapify` to enable subparsers HOT 1
- Type safe way to access subparser arguments? HOT 2
- Fix `tapify` to correctly handle **kwargs HOT 1
- [Suggestion] Allow to reference previous arguments as default values HOT 1
- Allow for multi-line documentation of the function HOT 1
- Tuple parsing with literals HOT 1
- [help] Adding `version` arg to print version but bypassing required args HOT 3
- tapify help string order is random HOT 1
- More convenient syntax for subparsers
- ImportError: cannot import name 'Tap' from 'tap' HOT 3
- What's the best way to create a parser from a Pydantic model? HOT 3
- Human readable JSON for saved Python object HOT 1
- Add support for using the `Annotated` type to provide comments for the help string HOT 1
- Tapify, docstrings and typing.NamedTuples
- [suggestion] Class variable arguments with multiline defaults do not respect help comments HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from typed-argument-parser.