mirror of
				https://github.com/python/cpython.git
				synced 2025-10-26 11:14:33 +00:00 
			
		
		
		
	 8c77b8cb91
			
		
	
	
		8c77b8cb91
		
			
		
	
	
	
	
		
			
			This commit contains the implementation of PEP570: Python positional-only parameters. * Update Grammar/Grammar with new typedarglist and varargslist * Regenerate grammar files * Update and regenerate AST related files * Update code object * Update marshal.c * Update compiler and symtable * Regenerate importlib files * Update callable objects * Implement positional-only args logic in ceval.c * Regenerate frozen data * Update standard library to account for positional-only args * Add test file for positional-only args * Update other test files to account for positional-only args * Add News entry * Update inspect module and related tests
		
			
				
	
	
		
			93 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # line 1
 | |
| 'A module docstring.'
 | |
| 
 | |
| import sys, inspect
 | |
| # line 5
 | |
| 
 | |
| # line 7
 | |
| def spam(a, /, b, c, d=3, e=4, f=5, *g, **h):
 | |
|     eggs(b + d, c + f)
 | |
| 
 | |
| # line 11
 | |
| def eggs(x, y):
 | |
|     "A docstring."
 | |
|     global fr, st
 | |
|     fr = inspect.currentframe()
 | |
|     st = inspect.stack()
 | |
|     p = x
 | |
|     q = y / 0
 | |
| 
 | |
| # line 20
 | |
| class StupidGit:
 | |
|     """A longer,
 | |
| 
 | |
|     indented
 | |
| 
 | |
|     docstring."""
 | |
| # line 27
 | |
| 
 | |
|     def abuse(self, a, b, c):
 | |
|         """Another
 | |
| 
 | |
| \tdocstring
 | |
| 
 | |
|         containing
 | |
| 
 | |
| \ttabs
 | |
| \t
 | |
|         """
 | |
|         self.argue(a, b, c)
 | |
| # line 40
 | |
|     def argue(self, a, b, c):
 | |
|         try:
 | |
|             spam(a, b, c)
 | |
|         except:
 | |
|             self.ex = sys.exc_info()
 | |
|             self.tr = inspect.trace()
 | |
| 
 | |
|     @property
 | |
|     def contradiction(self):
 | |
|         'The automatic gainsaying.'
 | |
|         pass
 | |
| 
 | |
| # line 53
 | |
| class MalodorousPervert(StupidGit):
 | |
|     def abuse(self, a, b, c):
 | |
|         pass
 | |
| 
 | |
|     @property
 | |
|     def contradiction(self):
 | |
|         pass
 | |
| 
 | |
| Tit = MalodorousPervert
 | |
| 
 | |
| class ParrotDroppings:
 | |
|     pass
 | |
| 
 | |
| class FesteringGob(MalodorousPervert, ParrotDroppings):
 | |
|     def abuse(self, a, b, c):
 | |
|         pass
 | |
| 
 | |
|     @property
 | |
|     def contradiction(self):
 | |
|         pass
 | |
| 
 | |
| async def lobbest(grenade):
 | |
|     pass
 | |
| 
 | |
| currentframe = inspect.currentframe()
 | |
| try:
 | |
|     raise Exception()
 | |
| except:
 | |
|     tb = sys.exc_info()[2]
 | |
| 
 | |
| class Callable:
 | |
|     def __call__(self, *args):
 | |
|         return args
 | |
| 
 | |
|     def as_method_of(self, obj):
 | |
|         from types import MethodType
 | |
|         return MethodType(self, obj)
 | |
| 
 | |
| custom_method = Callable().as_method_of(42)
 | |
| del Callable
 |