56 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """collections_extended contains a few extra basic data structures."""
 | |
| from ._compat import Collection
 | |
| from .bags import bag, frozenbag
 | |
| from .setlists import setlist, frozensetlist
 | |
| from .bijection import bijection
 | |
| from .range_map import RangeMap, MappedRange
 | |
| 
 | |
| __version__ = '1.0.2'
 | |
| 
 | |
| __all__ = (
 | |
| 	'collection',
 | |
| 	'setlist',
 | |
| 	'frozensetlist',
 | |
| 	'bag',
 | |
| 	'frozenbag',
 | |
| 	'bijection',
 | |
| 	'RangeMap',
 | |
| 	'MappedRange',
 | |
| 	'Collection',
 | |
| 	)
 | |
| 
 | |
| 
 | |
| def collection(iterable=None, mutable=True, ordered=False, unique=False):
 | |
| 	"""Return a Collection with the specified properties.
 | |
| 
 | |
| 	Args:
 | |
| 		iterable (Iterable): collection to instantiate new collection from.
 | |
| 		mutable (bool): Whether or not the new collection is mutable.
 | |
| 		ordered (bool): Whether or not the new collection is ordered.
 | |
| 		unique (bool): Whether or not the new collection contains only unique values.
 | |
| 	"""
 | |
| 	if iterable is None:
 | |
| 		iterable = tuple()
 | |
| 	if unique:
 | |
| 		if ordered:
 | |
| 			if mutable:
 | |
| 				return setlist(iterable)
 | |
| 			else:
 | |
| 				return frozensetlist(iterable)
 | |
| 		else:
 | |
| 			if mutable:
 | |
| 				return set(iterable)
 | |
| 			else:
 | |
| 				return frozenset(iterable)
 | |
| 	else:
 | |
| 		if ordered:
 | |
| 			if mutable:
 | |
| 				return list(iterable)
 | |
| 			else:
 | |
| 				return tuple(iterable)
 | |
| 		else:
 | |
| 			if mutable:
 | |
| 				return bag(iterable)
 | |
| 			else:
 | |
| 				return frozenbag(iterable)
 | 
