|
1 | | -from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser |
| 1 | +from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser, Namespace |
2 | 2 | from collections.abc import Sequence |
3 | 3 | from dataclasses import dataclass, field |
| 4 | +from typing import Any |
4 | 5 |
|
5 | 6 | from taskiq.acks import AcknowledgeType |
6 | 7 | from taskiq.cli.common_args import LogLevel |
@@ -58,11 +59,13 @@ class WorkerArgs: |
58 | 59 | def from_cli( |
59 | 60 | cls, |
60 | 61 | args: Sequence[str] | None = None, |
| 62 | + defaults: dict[str, Any] | None = None, |
61 | 63 | ) -> "WorkerArgs": |
62 | 64 | """ |
63 | 65 | Construct TaskiqArgs instanc from CLI arguments. |
64 | 66 |
|
65 | 67 | :param args: list of args as for cli. |
| 68 | + :param defaults: default worker arguments. |
66 | 69 | :return: TaskiqArgs instance. |
67 | 70 | """ |
68 | 71 | parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter) |
@@ -267,7 +270,10 @@ def from_cli( |
267 | 270 | help="Maximum number of processes in process pool.", |
268 | 271 | ) |
269 | 272 |
|
270 | | - namespace = parser.parse_args(args) |
| 273 | + namespace = parser.parse_args( |
| 274 | + args, |
| 275 | + namespace=None if defaults is None else Namespace(**defaults), |
| 276 | + ) |
271 | 277 | # If there are any patterns specified, remove default. |
272 | 278 | # This is an argparse limitation. |
273 | 279 | if len(namespace.tasks_pattern) > 1: |
|
0 commit comments