|  | @@ -234,11 +234,25 @@ def _argsfromspec(spec, replace_defaults=True):
 | 
	
		
			
				|  |  |          optional = list(zip(spec.args[-split:], defaults))
 | 
	
		
			
				|  |  |      else:
 | 
	
		
			
				|  |  |          positional, optional = spec.args, []
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if spec.kwonlydefaults:
 | 
	
		
			
				|  |  | +        split = len(spec.kwonlydefaults)
 | 
	
		
			
				|  |  | +        kwonlyargs = spec.kwonlyargs[:-split]
 | 
	
		
			
				|  |  | +        if replace_defaults:
 | 
	
		
			
				|  |  | +            kwonlyargs_optional = [(kw, i) for i, kw in enumerate(spec.kwonlyargs[-split:])]
 | 
	
		
			
				|  |  | +        else:
 | 
	
		
			
				|  |  | +            kwonlyargs_optional = list(spec.kwonlydefaults.items())
 | 
	
		
			
				|  |  | +    else:
 | 
	
		
			
				|  |  | +        kwonlyargs, kwonlyargs_optional = spec.kwonlyargs, []
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      return ', '.join(filter(None, [
 | 
	
		
			
				|  |  |          ', '.join(positional),
 | 
	
		
			
				|  |  |          ', '.join('{0}={1}'.format(k, v) for k, v in optional),
 | 
	
		
			
				|  |  |          '*{0}'.format(spec.varargs) if spec.varargs else None,
 | 
	
		
			
				|  |  |          '**{0}'.format(spec.varkw) if spec.varkw else None,
 | 
	
		
			
				|  |  | +        '*' if kwonlyargs or kwonlyargs_optional else None,
 | 
	
		
			
				|  |  | +        ', '.join(kwonlyargs),
 | 
	
		
			
				|  |  | +        ', '.join('{0}="{1}"'.format(k, v) for k, v in kwonlyargs_optional),
 | 
	
		
			
				|  |  |      ]))
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 |