Comments (2)
Just stumbled on the same issue. And yes it seems foo: Optional[Tuple[str, str]]
is broken, while foo:Tuple[str, str]
works fine. Same thing for Lists like foo: Optional[List[str]]
.
Shouldn't it be something like:
foo: Optional[Tuple[str, str]]
=>nargs=2
, required=Falsefoo: Tuple[str, str]
=>nargs=2
, required=Truefoo: Optional[List[str]]
=>nargs=*
, required=False, const=[]foo:List[str]
=>nargs=2
, required=True
This would even allow specifying (and differentiating) between []
and None
for optional lists, like:
- [argument not given on command line] =>
None
--foo
=>[]
--foo abc
=>["abc"]
--foo abc def
=>["abc", "def"]
from simpleparsing.
Thanks for posting @PleasantD!
Indeed, this seems related to #42, it appears like the parsing of Tuple
fields is bugged.
Additionally there should be parse error if the number of items for a fixed-length tuple does not match the definition.
IE, specifying too few or too many values should generate an error if the tuple is of a fixed length.
The problem here seems to me more related to the Optional
annotation, as it's not easy to determine the right value to pass to the nargs
argument of add_argument
in this case.. Would you have an opinion on which value of 'nargs' would be appropriate in this case?
I'm fairly certain that the parsing of fixed length tuples (a.k.a fields annotated with Tuple[int, str, float]
etc.) works correctly, at least based on the following tests: https://github.com/lebrice/SimpleParsing/blob/master/test/test_tuples.py
Would you mind taking a quick glance at these tests, and letting me know what you think?
Thanks again for posting!
from simpleparsing.
Related Issues (20)
- Make `simple-parsing` faster HOT 4
- Clean up display of help message HOT 2
- Unintuitive inconsistent behavior for `Optional` between builtin classes and `dataclass`es
- Export args to a schema file so that YAML language servers can understand config files HOT 3
- adding yaml config interpolation HOT 5
- Bug: unexpected keyword argument not detected when nesting dataclasses HOT 3
- Is it possible to model a list of configs using inheritance? HOT 1
- Union of singular type with list of types not behaving as expected. HOT 6
- scientific notation in dict values doesn't get converted to float HOT 2
- Allow only a single cli argument for multiple different dataclasses. HOT 2
- Bug with subgroups and None HOT 1
- Excessive logging at the INFO level HOT 1
- Parse list object from both "--a_list 1 2 3" and from "--a_list '1 2 3' " HOT 4
- Subparsers overwrite kwargs of original parser HOT 1
- Postprocessing wraps defaults during postprocessing HOT 2
- Reaching `ConflictResolutionError` on too big/nested and shared configs with more than 50 parameters. HOT 3
- decoding_fn never gets called HOT 2
- Dataclass arguments added after `parse_known_args` call don't get added to help HOT 2
- `Type | None` or `Optional[Type]` don't work when default value is `None`
- `Type | None` or `Optional[Type]` don't work when default value is `None`
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 simpleparsing.