Alan Falloon avatar Alan Falloon committed 64edf3c

Add support for * in assignments

For example:
a, *b = range(3)
*a, b = range(3)
a, *b, c = range(4)

Comments (0)

Files changed (2)

pyflakes/checker.py

 
     # "expr" type nodes
     BOOLOP = BINOP = UNARYOP = IFEXP = DICT = SET = YIELD = COMPARE = \
-    CALL = REPR = ATTRIBUTE = SUBSCRIPT = LIST = TUPLE = handleChildren
+    CALL = REPR = ATTRIBUTE = SUBSCRIPT = LIST = TUPLE = STARRED = handleChildren
 
     NUM = STR = BYTES = ELLIPSIS = ignore
 

pyflakes/test/test_undefined_names.py

             print(a, b, c)
         ''')
 
+    def test_definedAsStarUnpack(self):
+        '''star names in unpack are defined'''
+        self.flakes('''
+        a, *b = range(10)
+        print(a, b)
+        ''')
+        self.flakes('''
+        *a, b = range(10)
+        print(a, b)
+        ''')
+        self.flakes('''
+        a, *b, c = range(10)
+        print(a, b, c)
+        ''')
+
     def test_keywordOnlyArgs(self):
         '''kwonly arg names are defined'''
         self.flakes('''
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.