Skip to content

Commit 350c6c5

Browse files
committed
✨ Support starred variable for varname() (#96)
1 parent 362a8a9 commit 350c6c5

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

tests/test_varname.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -556,3 +556,14 @@ def foo3():
556556
assert "Skipping (0 more to skip) [In 'foo1'" in msgs[6]
557557
assert "Ignored by IgnoreModuleQualname('tests.test_varname', '*.wrapper')" in msgs[7]
558558
assert "Gotcha! [In 'test_internal_debug'" in msgs[8]
559+
560+
561+
def test_star_var():
562+
def func():
563+
v = varname(multi_vars=True)
564+
return 1, 2, 3, v
565+
566+
a, *b, c = func()
567+
assert a == 1
568+
assert b == [2, 3]
569+
assert c == ('a', '*b', 'c')

varname/utils.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,8 @@ def node_name(node: ast.AST) -> Union[str, Tuple[Union[str, Tuple], ...]]:
196196
return node.attr
197197
if isinstance(node, (ast.List, ast.Tuple)):
198198
return tuple(node_name(elem) for elem in node.elts)
199+
if isinstance(node, ast.Starred):
200+
return f"*{node_name(node.value)}"
199201

200202
raise ImproperUseError(
201203
f"Can only get name of a variable or attribute, "

0 commit comments

Comments
 (0)