mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	 37e0c7850d
			
		
	
	
		37e0c7850d
		
			
		
	
	
	
	
		
			
			* bpo-43926: Cleaner metadata with PEP 566 JSON support. * Add blurb * Add versionchanged and versionadded declarations for changes to metadata. * Use descriptor for PEP 566
		
			
				
	
	
		
			30 lines
		
	
	
	
		
			743 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
	
		
			743 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| import collections
 | |
| 
 | |
| 
 | |
| # from jaraco.collections 3.3
 | |
| class FreezableDefaultDict(collections.defaultdict):
 | |
|     """
 | |
|     Often it is desirable to prevent the mutation of
 | |
|     a default dict after its initial construction, such
 | |
|     as to prevent mutation during iteration.
 | |
| 
 | |
|     >>> dd = FreezableDefaultDict(list)
 | |
|     >>> dd[0].append('1')
 | |
|     >>> dd.freeze()
 | |
|     >>> dd[1]
 | |
|     []
 | |
|     >>> len(dd)
 | |
|     1
 | |
|     """
 | |
| 
 | |
|     def __missing__(self, key):
 | |
|         return getattr(self, '_frozen', super().__missing__)(key)
 | |
| 
 | |
|     def freeze(self):
 | |
|         self._frozen = lambda key: self.default_factory()
 | |
| 
 | |
| 
 | |
| class Pair(collections.namedtuple('Pair', 'name value')):
 | |
|     @classmethod
 | |
|     def parse(cls, text):
 | |
|         return cls(*map(str.strip, text.split("=", 1)))
 |