Fake data generator for district42 schema
Project description
blahblah
Fake data generator for district42 schema
(!) Work in progress, breaking changes are possible until v2.0 is released
Installation
pip3 install blahblah
Usage
from blahblah import fake
from district42 import schema
UserSchema = schema.dict({
'id': schema.int.min(1),
'name': schema.str.regex(r"[a-z0-9_]+"),
'is_deleted': schema.bool,
})
print(fake(UserSchema))
Documentation
None
schema.none
sch = schema.none
assert fake(sch) is None
Bool
schema.bool
sch = schema.bool
assert fake(sch) in (True, False)
schema.bool(value
)
sch = schema.bool(True)
assert fake(sch) is True
Int
schema.int
INT_MIN = -(2 ** 63)
INT_MAX = 2 ** 63 - 1
sch = schema.int
assert INT_MIN <= fake(sch) <= INT_MAX
schema.int(value
)
sch = schema.int(42)
assert fake(sch) == 42
schema.int.min(value
)
sch = schema.int.min(0)
assert 0 <= fake(sch) <= INT_MAX
schema.int.max(value
)
sch = schema.int.max(0)
assert INT_MIN <= fake(sch) <= 0
Float
schema.float
sch = schema.float
assert isinstance(fake(sch), float)
schema.float(value
)
sch = schema.float(3.14)
assert fake(sch) == 3.14
schema.float.min(value
)
sch = schema.float.min(0.0)
assert fake(sch) >= 0.0
schema.float.max(value
)
sch = schema.float.max(0.0)
assert fake(sch) <= 0.0
Str
schema.str
sch = schema.str
generated = fake(sch)
assert isinstance(generated, str)
schema.str.len(length
)
sch = schema.str.len(10)
generated = fake(sch)
assert len(generated) == 10
schema.str.len(min_length
, max_length
)
sch = schema.str.len(1, ...)
generated = fake(sch)
assert len(generated) >= 1
sch = schema.str.len(..., 32)
generated = fake(sch)
assert len(generated) <= 32
sch = schema.str.len(1, 32)
generated = fake(sch)
assert 1 <= len(generated) <= 32
schema.str.alphabet(letters
)
digits = "01234567890"
sch = schema.str.alphabet(digits)
generated = fake(sch)
assert all(x in digits for x in generated)
schema.str.contains(substr
)
sch = schema.str.contains("@")
generated = fake(sch)
assert "@" in generated
schema.str.regex(pattern
)
import re
sch = schema.str.regex(r"[a-z]+")
generated = fake(sch)
assert re.match(r"[a-z]+", generated)
List
schema.list
sch = schema.list
generated = fake(sch)
assert isinstance(generated, list)
schema.list(elements
)
sch = schema.list([schema.int(1), schema.int(2)])
generated = fake(sch)
assert generated = [1, 2]
schema.list(type
)
sch = schema.list(schema.int)
generated = fake(sch)
assert all(isinstance(x) for x in generated)
schema.list(type
).len(length
)
sch = schema.list(schema.int).len(3)
generated = fake(sch)
assert len(generated) == 3
schema.list(type
).len(min_length
, max_length
)
sch = schema.list(schema.int).len(1, ...)
generated = fake(sch)
assert len(generated) >= 1
sch = schema.list(schema.int).len(..., 10)
generated = fake(sch)
assert len(generated) <= 10
sch = schema.list(schema.int).len(1, 10)
generated = fake(sch)
assert 1 <= len(generated) <= 10
Dict
schema.dict
sch = schema.dict
generated = fake(sch)
assert isinstance(generated, dict)
schema.dict(keys
)
sch = schema.dict({
"id": schema.int,
"name": schema.str | schema.none,
optional("platform"): schema.str,
})
generated = fake(sch)
assert isinstance(generated["id"], int)
assert isinstance(generated["name"], (str, type(None))
assert generated.keys() == {"id", "name"}
Any
schema.any
sch = schema.any
generated = fake(sch)
assert isinstance(generated, object)
schema.any(*types
)
sch = schema.any(schema.str, schema.int)
generated = fake(sch)
assert isinstance(generated, (str, int))
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
blahblah-1.3.1.tar.gz
(14.6 kB
view hashes)
Built Distribution
blahblah-1.3.1-py3-none-any.whl
(17.8 kB
view hashes)