Source code for zot.fuzzy

# zot/fuzzy.py
#
#

__copyright__ = "Copyright 2015, B.H.J Thate"

""" generate fuzzy objects used for testing. """

## IMPORTS

from zot.object import Object
from zot.utils import error

import random
import string

## DEFINES

kinds = Object()
kinds.register("int", int)
kinds.register("float", float)
kinds.register("complex", complex)
kinds.register("list", list)
kinds.register("tuple", tuple)
kinds.register("range", range)
kinds.register("str", str)
kinds.register("bytes", bytes)
kinds.register("bytearray", bytearray)
kinds.register("memoryview", memoryview)
kinds.register("set", set)
kinds.register("frozenset", frozenset)
kinds.register("dict", dict)

[docs]def printables(*args, **kwargs): return [a for a in string.printable]
[docs]def random_int(*args, **kwargs): if args: return random.randint(0, int(random.random()*args[0])) else: return random.randint(0, int(random.random() * 1000))
[docs]def random_float(*args, **kwargs): return random.random() * 1000
[docs]def random_complex(*args, **kwargs): return complex(random_int(1), random_int(1))
[docs]def random_list(*args, **kwargs): return [a for a in random.sample(printables(), random_int(len(string.printable)-1))]
[docs]def random_tuple(*args, **kwargs): return tuple([a for a in random.sample(printables(), random_int(len(string.printable)-1))])
[docs]def random_range(*args, **kwargs): return range(random_int(1), random_int(random.random()*1000))
[docs]def random_str(*args, **kwargs): return "".join(random.sample(printables(), random_int(len(string.printable)-1)))
[docs]def random_bytes(*args, **kwargs): return bytes(random_str(), "utf-8")
[docs]def random_bytearray(*args, **kwargs): return bytearray(random_str(), "utf-8")
[docs]def random_memoryview(*args, **kwargs): return memoryview(bytes(random_str(), "utf-8"))
[docs]def random_set(*args, **kwargs): return set(random_str())
[docs]def random_frozenset(*args, **kwargs): return frozenset(random_str())
[docs]def random_dict(*args, **kwargs): return {}
rand = Object() rand.define("int", random_int) rand.define("float", random_float) rand.define("complex", random_complex) rand.define("list", random_list) rand.define("tuple", random_tuple) rand.define("range", random_range) rand.define("str", random_str) rand.define("bytes", random_bytes) rand.define("bytearray", random_bytearray) rand.define("memoryview", random_memoryview) rand.define("set", random_set) rand.define("frozenset", random_frozenset) rand.define("dict", random_dict) kind_list =["int", "float", "complex", "list", "tuple", "range", "str", "bytes", "bytearray", "memoryview", "set", "frozenset", "dict"] types_list = [int, float, complex, list, tuple, range, str, bytes, bytearray, memoryview, set, frozenset, dict] objects_list = [Object, ] ## FUNCTIONS
[docs]def fuzzy(kind, *args, **kwargs): try: return rand[kind]() except: error()
[docs]def random_fuzz(*args, **kwargs): kind = random.choice(kind_list) return fuzzy(kind)