347 lines
5.8 KiB
Python
347 lines
5.8 KiB
Python
import random
|
|
import uuid
|
|
|
|
_EXPERIMENT_ID_FIXED_WIDTH = 18
|
|
|
|
|
|
def _generate_unique_integer_id():
|
|
"""Utility function for generating a random fixed-length integer
|
|
|
|
Args:
|
|
id_length: The target length of the string representation of the integer without
|
|
leading zeros
|
|
|
|
Returns:
|
|
a fixed-width integer
|
|
"""
|
|
|
|
random_int = uuid.uuid4().int
|
|
# Cast to string to get a fixed length
|
|
random_str = str(random_int)[-_EXPERIMENT_ID_FIXED_WIDTH:]
|
|
# append a random int as string to the end of the generated string for as many
|
|
# leading zeros exist in the generated string in order to preserve the total length
|
|
# once cast back to int
|
|
for s in random_str:
|
|
if s == "0":
|
|
random_str = random_str + str(random.randint(0, 9))
|
|
else:
|
|
break
|
|
return int(random_str)
|
|
|
|
|
|
def _generate_string(sep, integer_scale):
|
|
predicate = random.choice(_GENERATOR_PREDICATES).lower()
|
|
noun = random.choice(_GENERATOR_NOUNS).lower()
|
|
num = random.randint(0, 10**integer_scale)
|
|
return f"{predicate}{sep}{noun}{sep}{num}"
|
|
|
|
|
|
def _generate_random_name(sep="-", integer_scale=3, max_length=20):
|
|
"""Helper function for generating a random predicate, noun, and integer combination
|
|
|
|
Args:
|
|
sep: String separator for word spacing.
|
|
integer_scale: Dictates the maximum scale range for random integer sampling (power of 10).
|
|
max_length: Maximum allowable string length.
|
|
|
|
Returns:
|
|
A random string phrase comprised of a predicate, noun, and random integer.
|
|
|
|
"""
|
|
name = None
|
|
for _ in range(10):
|
|
name = _generate_string(sep, integer_scale)
|
|
if len(name) <= max_length:
|
|
return name
|
|
# If the combined length isn't below the threshold after 10 iterations, truncate it.
|
|
return name[:max_length]
|
|
|
|
|
|
_GENERATOR_NOUNS = [
|
|
"ant",
|
|
"ape",
|
|
"asp",
|
|
"auk",
|
|
"bass",
|
|
"bat",
|
|
"bear",
|
|
"bee",
|
|
"bird",
|
|
"boar",
|
|
"bug",
|
|
"calf",
|
|
"carp",
|
|
"cat",
|
|
"chimp",
|
|
"cod",
|
|
"colt",
|
|
"conch",
|
|
"cow",
|
|
"crab",
|
|
"crane",
|
|
"croc",
|
|
"crow",
|
|
"cub",
|
|
"deer",
|
|
"doe",
|
|
"dog",
|
|
"dolphin",
|
|
"donkey",
|
|
"dove",
|
|
"duck",
|
|
"eel",
|
|
"elk",
|
|
"fawn",
|
|
"finch",
|
|
"fish",
|
|
"flea",
|
|
"fly",
|
|
"foal",
|
|
"fowl",
|
|
"fox",
|
|
"frog",
|
|
"gnat",
|
|
"gnu",
|
|
"goat",
|
|
"goose",
|
|
"grouse",
|
|
"grub",
|
|
"gull",
|
|
"hare",
|
|
"hawk",
|
|
"hen",
|
|
"hog",
|
|
"horse",
|
|
"hound",
|
|
"jay",
|
|
"kit",
|
|
"kite",
|
|
"koi",
|
|
"lamb",
|
|
"lark",
|
|
"loon",
|
|
"lynx",
|
|
"mare",
|
|
"midge",
|
|
"mink",
|
|
"mole",
|
|
"moose",
|
|
"moth",
|
|
"mouse",
|
|
"mule",
|
|
"newt",
|
|
"owl",
|
|
"ox",
|
|
"panda",
|
|
"penguin",
|
|
"perch",
|
|
"pig",
|
|
"pug",
|
|
"quail",
|
|
"ram",
|
|
"rat",
|
|
"ray",
|
|
"robin",
|
|
"roo",
|
|
"rook",
|
|
"seal",
|
|
"shad",
|
|
"shark",
|
|
"sheep",
|
|
"shoat",
|
|
"shrew",
|
|
"shrike",
|
|
"shrimp",
|
|
"skink",
|
|
"skunk",
|
|
"sloth",
|
|
"slug",
|
|
"smelt",
|
|
"snail",
|
|
"snake",
|
|
"snipe",
|
|
"sow",
|
|
"sponge",
|
|
"squid",
|
|
"squirrel",
|
|
"stag",
|
|
"steed",
|
|
"stoat",
|
|
"stork",
|
|
"swan",
|
|
"tern",
|
|
"toad",
|
|
"trout",
|
|
"turtle",
|
|
"vole",
|
|
"wasp",
|
|
"whale",
|
|
"wolf",
|
|
"worm",
|
|
"wren",
|
|
"yak",
|
|
"zebra",
|
|
]
|
|
|
|
_GENERATOR_PREDICATES = [
|
|
"abundant",
|
|
"able",
|
|
"abrasive",
|
|
"adorable",
|
|
"adaptable",
|
|
"adventurous",
|
|
"aged",
|
|
"agreeable",
|
|
"ambitious",
|
|
"amazing",
|
|
"amusing",
|
|
"angry",
|
|
"auspicious",
|
|
"awesome",
|
|
"bald",
|
|
"beautiful",
|
|
"bemused",
|
|
"bedecked",
|
|
"big",
|
|
"bittersweet",
|
|
"blushing",
|
|
"bold",
|
|
"bouncy",
|
|
"brawny",
|
|
"bright",
|
|
"burly",
|
|
"bustling",
|
|
"calm",
|
|
"capable",
|
|
"carefree",
|
|
"capricious",
|
|
"caring",
|
|
"casual",
|
|
"charming",
|
|
"chill",
|
|
"classy",
|
|
"clean",
|
|
"clumsy",
|
|
"colorful",
|
|
"crawling",
|
|
"dapper",
|
|
"debonair",
|
|
"dashing",
|
|
"defiant",
|
|
"delicate",
|
|
"delightful",
|
|
"dazzling",
|
|
"efficient",
|
|
"enchanting",
|
|
"entertaining",
|
|
"enthused",
|
|
"exultant",
|
|
"fearless",
|
|
"flawless",
|
|
"fortunate",
|
|
"fun",
|
|
"funny",
|
|
"gaudy",
|
|
"gentle",
|
|
"gifted",
|
|
"glamorous",
|
|
"grandiose",
|
|
"gregarious",
|
|
"handsome",
|
|
"hilarious",
|
|
"honorable",
|
|
"illustrious",
|
|
"incongruous",
|
|
"indecisive",
|
|
"industrious",
|
|
"intelligent",
|
|
"inquisitive",
|
|
"intrigued",
|
|
"invincible",
|
|
"judicious",
|
|
"kindly",
|
|
"languid",
|
|
"learned",
|
|
"legendary",
|
|
"likeable",
|
|
"loud",
|
|
"luminous",
|
|
"luxuriant",
|
|
"lyrical",
|
|
"magnificent",
|
|
"marvelous",
|
|
"masked",
|
|
"melodic",
|
|
"merciful",
|
|
"mercurial",
|
|
"monumental",
|
|
"mysterious",
|
|
"nebulous",
|
|
"nervous",
|
|
"nimble",
|
|
"nosy",
|
|
"omniscient",
|
|
"orderly",
|
|
"overjoyed",
|
|
"peaceful",
|
|
"painted",
|
|
"persistent",
|
|
"placid",
|
|
"polite",
|
|
"popular",
|
|
"powerful",
|
|
"puzzled",
|
|
"rambunctious",
|
|
"rare",
|
|
"rebellious",
|
|
"respected",
|
|
"resilient",
|
|
"righteous",
|
|
"receptive",
|
|
"redolent",
|
|
"resilient",
|
|
"rogue",
|
|
"rumbling",
|
|
"salty",
|
|
"sassy",
|
|
"secretive",
|
|
"selective",
|
|
"sedate",
|
|
"serious",
|
|
"shivering",
|
|
"skillful",
|
|
"sincere",
|
|
"skittish",
|
|
"silent",
|
|
"smiling",
|
|
"sneaky",
|
|
"sophisticated",
|
|
"spiffy",
|
|
"stately",
|
|
"suave",
|
|
"stylish",
|
|
"tasteful",
|
|
"thoughtful",
|
|
"thundering",
|
|
"traveling",
|
|
"treasured",
|
|
"trusting",
|
|
"unequaled",
|
|
"upset",
|
|
"unique",
|
|
"unleashed",
|
|
"useful",
|
|
"upbeat",
|
|
"unruly",
|
|
"valuable",
|
|
"vaunted",
|
|
"victorious",
|
|
"welcoming",
|
|
"whimsical",
|
|
"wistful",
|
|
"wise",
|
|
"worried",
|
|
"youthful",
|
|
"zealous",
|
|
]
|