name = ''.join(rand.choice(charset) for _ in xrange(length))
yield name
-def files_varied(groups):
+def files_varied(groups, unlimited=False):
""" Yields a weighted-random selection of file-like objects. """
# Quick data type sanity.
assert groups and isinstance(groups, (list, tuple))
num -= file_set.num
continue
- total_num -= 1
- file_set.num -= 1
+ if not unlimited:
+ total_num -= 1
+ file_set.num -= 1
- # None left in this set!
- if file_set.num == 0:
- file_sets.remove(file_set)
+ # None left in this set!
+ if file_set.num == 0:
+ file_sets.remove(file_set)
ok = 1
yield next(file_set.files)