mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	gh-92445 Improve interaction between nargs="*" and choices() (GH-92565)
This commit is contained in:
		
							parent
							
								
									cd492d43a2
								
							
						
					
					
						commit
						ad7340e8c5
					
				
					 3 changed files with 13 additions and 1 deletions
				
			
		|  | @ -2477,9 +2477,11 @@ def _get_values(self, action, arg_strings): | |||
|               not action.option_strings): | ||||
|             if action.default is not None: | ||||
|                 value = action.default | ||||
|                 self._check_value(action, value) | ||||
|             else: | ||||
|                 # since arg_strings is always [] at this point | ||||
|                 # there is no need to use self._check_value(action, value) | ||||
|                 value = arg_strings | ||||
|             self._check_value(action, value) | ||||
| 
 | ||||
|         # single argument or optional argument produces a single value | ||||
|         elif len(arg_strings) == 1 and action.nargs in [None, OPTIONAL]: | ||||
|  |  | |||
|  | @ -5230,6 +5230,13 @@ def test_mixed(self): | |||
|         self.assertEqual(NS(v=3, spam=True, badger="B"), args) | ||||
|         self.assertEqual(["C", "--foo", "4"], extras) | ||||
| 
 | ||||
|     def test_zero_or_more_optional(self): | ||||
|         parser = argparse.ArgumentParser() | ||||
|         parser.add_argument('x', nargs='*', choices=('x', 'y')) | ||||
|         args = parser.parse_args([]) | ||||
|         self.assertEqual(NS(x=[]), args) | ||||
| 
 | ||||
| 
 | ||||
| # =========================== | ||||
| # parse_intermixed_args tests | ||||
| # =========================== | ||||
|  |  | |||
|  | @ -0,0 +1,3 @@ | |||
| Fix a bug in :mod:`argparse` where `nargs="*"` would raise an error instead of returning | ||||
| an empty list when 0 arguments were supplied if choice was also defined in | ||||
| ``parser.add_argument``. | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Harry
						Harry