Skip to content

Commit 337ff87

Browse files
committed
feat(cli): add top-level Options router with --dataset passthrough
Introduce Options that forwards args after --dataset to DataOptions via argparse.REMAINDER. Attaches parsed DatasetOptions namespace at opts.dataset. Includes seed/run-name flags and supports programmatic argv. Minor polish: import REMAINDER and types, handle None -> [] for ds_argv.
1 parent eb60d72 commit 337ff87

File tree

1 file changed

+47
-1
lines changed
  • recognition/TimeLOB_TimeGAN_49088276/src/helpers

1 file changed

+47
-1
lines changed

recognition/TimeLOB_TimeGAN_49088276/src/helpers/args.py

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"""
44
from __future__ import annotations
55

6-
from argparse import ArgumentParser, Namespace
6+
from argparse import ArgumentParser, Namespace, REMAINDER
77
from typing import Optional
88

99
import numpy as np
@@ -67,3 +67,49 @@ def parse(self, argv: Optional[list | str]) -> Namespace:
6767
)
6868

6969
return ns
70+
71+
class Options:
72+
"""
73+
Top-level options that *route* anything after `--dataset` to DatasetOptions.
74+
75+
Example:
76+
opts = Options().parse()
77+
ds = opts.dataset # Namespace from DatasetOptions
78+
"""
79+
def __init__(self) -> None:
80+
parser = ArgumentParser(
81+
prog="timeganlob",
82+
description="TimeGAN-LOB entrypoint with nested dataset options."
83+
)
84+
parser.add_argument("--seed", type=int, default=42, help="Global random seed")
85+
parser.add_argument("--run-name", type=str, default="exp1", help="Run name")
86+
87+
parser.add_argument(
88+
"--dataset",
89+
nargs=REMAINDER,
90+
help=(
91+
"All arguments following this flag are parsed by DatasetOptions. "
92+
"Example: --dataset --seq-len 256 --no-shuffle"
93+
),
94+
)
95+
self._parser = parser
96+
97+
def parse(self, argv: Optional[list | str] = None) -> Namespace:
98+
top = self._parser.parse_args(argv)
99+
100+
ds_argv = top.dataset if top.dataset is not None else []
101+
dataset_ns = DataOptions().parse(ds_argv)
102+
103+
# attach nested namespace to the top-level namespace
104+
out = Namespace(
105+
seed=top.seed,
106+
run_name=top.run_name,
107+
dataset=dataset_ns,
108+
)
109+
110+
return out
111+
112+
if __name__ == "__main__":
113+
opts = Options().parse()
114+
115+
print(opts)

0 commit comments

Comments
 (0)