File tree Expand file tree Collapse file tree 2 files changed +19
-2
lines changed Expand file tree Collapse file tree 2 files changed +19
-2
lines changed Original file line number Diff line number Diff line change 14
14
from typer .main import solve_typer_info_defaults , solve_typer_info_help
15
15
from typer .models import ParameterInfo , TyperInfo
16
16
from typer .testing import CliRunner
17
+ from typing_extensions import Annotated
17
18
18
19
from .utils import requires_completion_permission
19
20
@@ -170,6 +171,22 @@ def main(
170
171
assert "Hello World" in result .stdout
171
172
172
173
174
+ def test_empty_list_default_generator ():
175
+ def empty_list () -> typing .List [str ]:
176
+ return []
177
+
178
+ app = typer .Typer ()
179
+
180
+ @app .command ()
181
+ def main (
182
+ names : Annotated [typing .List [str ], typer .Option (default_factory = empty_list )],
183
+ ):
184
+ print (names )
185
+
186
+ result = runner .invoke (app )
187
+ assert "[]" in result .output
188
+
189
+
173
190
def test_completion_argument ():
174
191
file_path = Path (__file__ ).parent / "assets/completion_argument.py"
175
192
result = subprocess .run (
Original file line number Diff line number Diff line change @@ -629,8 +629,8 @@ def generate_list_convertor(
629
629
convertor : Optional [Callable [[Any ], Any ]], default_value : Optional [Any ]
630
630
) -> Callable [[Optional [Sequence [Any ]]], Optional [List [Any ]]]:
631
631
def internal_convertor (value : Optional [Sequence [Any ]]) -> Optional [List [Any ]]:
632
- if value is None or len (value ) == 0 :
633
- return default_value
632
+ if ( value is None ) or ( default_value is None and len (value ) == 0 ) :
633
+ return None
634
634
return [convertor (v ) if convertor else v for v in value ]
635
635
636
636
return internal_convertor
You can’t perform that action at this time.
0 commit comments