Skip to content

Commit ce027d2

Browse files
authored
added example for how to use the flag helper (#256)
1 parent 9289b00 commit ce027d2

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

examples/simple/flag.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
from dataclasses import dataclass
2+
3+
from simple_parsing import ArgumentParser
4+
from simple_parsing.helpers import flag
5+
6+
7+
def parse(cls, args: str = ""):
8+
"""Removes some boilerplate code from the examples."""
9+
parser = ArgumentParser() # Create an argument parser
10+
parser.add_arguments(cls, dest="hparams") # add arguments for the dataclass
11+
ns = parser.parse_args(args.split()) # parse the given `args`
12+
return ns.hparams
13+
14+
15+
@dataclass
16+
class HParams:
17+
"""Set of options for the training of a Model."""
18+
19+
num_layers: int = 4
20+
num_units: int = 64
21+
optimizer: str = "ADAM"
22+
learning_rate: float = 0.001
23+
train: bool = flag(default=True, negative_prefix="--no-")
24+
25+
26+
# Example 1 using default flag, i.e. train set to True
27+
args = parse(HParams)
28+
29+
print(args)
30+
expected = """
31+
HParams(num_layers=4, num_units=64, optimizer='ADAM', learning_rate=0.001, train=True)
32+
"""
33+
34+
# Example 2 using the flags negative prefix
35+
assert parse(HParams, "--no-train") == HParams(train=False)
36+
37+
38+
# showing what --help outputs
39+
parser = ArgumentParser() # Create an argument parser
40+
parser.add_arguments(HParams, dest="hparams") # add arguments for the dataclass
41+
parser.print_help()
42+
expected += """
43+
usage: flag.py [-h] [--num_layers int] [--num_units int] [--optimizer str]
44+
[--learning_rate float] [--train bool]
45+
46+
optional arguments:
47+
-h, --help show this help message and exit
48+
49+
HParams ['hparams']:
50+
Set of options for the training of a Model.
51+
52+
--num_layers int (default: 4)
53+
--num_units int (default: 64)
54+
--optimizer str (default: ADAM)
55+
--learning_rate float
56+
(default: 0.001)
57+
--train bool, --no-train bool
58+
(default: True)
59+
"""

0 commit comments

Comments
 (0)