# coding: utf-8

import random
import string

_branchtemplate = 'z9hG4bK_{}'
_prefix = 'SIPandLove'
_shortprefix = 'SNL'
_suffix = ''

vowels = 'aeiouyAEIOUY'
consonants = ''.join(set(string.ascii_lowercase) - set(vowels))
CV = tuple([c+v for c in consonants for v in vowels])

def randomstr():
    return ''.join((_prefix, '_', random.choice(CV),random.choice(CV),random.choice(CV), _suffix))

def branch(tag=None):
    return _branchtemplate.format(tag or randomstr())

def fromto():
    return randomstr()
    
callnum = 0
def callid():
    global callnum
    callnum += 1
    num = str(callnum)
    return '_'.join((_shortprefix, random.choice(colors), random.choice(vehicles), num))

colors=(
    "accented",
    "achromatic",
    "ashen",
    "ashy",
    "atomic",
    "bicolor",
    "bicolor",
    "black",
    "blazing",
    "bleached",
    "bleak",
    "blended",
    "blinding",
    "blonde",
    "blotchy",
    "blue",
    "bold",
    "braided",
    "brash",
    "bright",
    "brilliant",
    "brown",
    "burnt",
    "cataclysmic-colored",
    "cerise",
    "cerulean",
    "chartreuse",
    "checkered",
    "chintzy",
    "chromatic",
    "classic",
    "clean",
    "cold",
    "color-coded",
    "colored",
    "colorless",
    "complementing",
    "compound",
    "contrasting",
    "cool",
    "coordinating",
    "creamy",
    "crisp",
    "crisscrossed",
    "cyan",
    "dappled",
    "dark",
    "dayglow",
    "dazzling",
    "deep",
    "delicate",
    "digital",
    "dim",
    "dirty",
    "discolored",
    "disparate",
    "dotted",
    "Dotted",
    "drab",
    "dreary",
    "dull",
    "dusted",
    "dusty",
    "earthy",
    "electric",
    "energetic",
    "evergreen",
    "eye-catching",
    "faded",
    "faint",
    "fast",
    "festive",
    "fiery",
    "flamboyant",
    "flaming",
    "flashy",
    "flattering",
    "flecked",
    "fluorescent",
    "freckled",
    "fresh",
    "frosty",
    "fuchsia",
    "full-toned",
    "fused",
    "gaily",
    "gaudy",
    "gay",
    "glistening",
    "glittering",
    "glossy",
    "glowing",
    "goldenrod",
    "green",
    "grey",
    "harmonious",
    "harsh",
    "Harsh",
    "hazy",
    "hot",
    "icy",
    "illuminated",
    "incandescent",
    "intense",
    "intermixed",
    "interwoven",
    "iridescent",
    "jazzy",
    "jumbled",
    "kaleidoscopic",
    "knockout",
    "lambent",
    "lavender",
    "light",
    "lime",
    "lined",
    "loud",
    "luminous",
    "lusterless",
    "lustrous",
    "majestic",
    "many-hued",
    "marbled",
    "matching",
    "matte",
    "mauve",
    "medium",
    "mellow",
    "milky",
    "mingled",
    "mixed",
    "monochromatic",
    "monochrome",
    "monotone",
    "motley",
    "mottled",
    "muddy",
    "multicolored",
    "multihued",
    "murky",
    "muted",
    "natural",
    "neon",
    "neutral",
    "opalescent",
    "opaque",
    "orange",
    "pale",
    "particolored",
    "pastel",
    "patchy",
    "patterned",
    "pearly",
    "peppered",
    "perfect",
    "picturesque",
    "piebald",
    "pied",
    "pink",
    "plain",
    "polka-Dotted",
    "polychromatic",
    "primary",
    "prismatic",
    "psychedelic",
    "pure",
    "purple",
    "radiant",
    "rainbow",
    "red",
    "reflective",
    "restrained",
    "rich",
    "royal",
    "ruddy",
    "rustic",
    "salted",
    "satiny",
    "saturated",
    "scarlet",
    "sepia",
    "shaded",
    "sheer",
    "shining",
    "shiny",
    "shocking",
    "showy",
    "sickly",
    "smoky",
    "sober",
    "soft",
    "solid",
    "somber",
    "soothing",
    "sooty",
    "sparkling",
    "speckled",
    "splashy",
    "splotched",
    "stained",
    "stippled",
    "streaked",
    "streaky",
    "striking",
    "strong",
    "subdued",
    "subtle",
    "sunny",
    "swirling",
    "tacky",
    "teal",
    "tinged",
    "tinted",
    "tonal",
    "toned",
    "traditional",
    "translucent",
    "transparent",
    "tricolor",
    "tricolor",
    "two-tone",
    "undiluted",
    "uneven",
    "uniform",
    "varied",
    "variegated",
    "veined",
    "vibrant",
    "violent",
    "violet",
    "vivid",
    "wan",
    "warm",
    "washed-out",
    "watery",
    "waxen",
    "white",
    "wild",
    "yellow"
)

vehicles=(
    "aerial-tramway",
    "aircraft",
    "aircraft-carrier",
    "airplane",
    "ambulance",
    "amphibious-vehicle",
    "armored-car",
    "auto",
    "automobile",
    "baby-carriage",
    "balloon",
    "bathyscaphe",
    "barge",
    "barrow",
    "battleship",
    "bicycle",
    "bike",
    "biplane",
    "blimp",
    "boat",
    "bobsled",
    "bomber",
    "boxcar",
    "broomstick",
    "buggy",
    "bulldozer",
    "bullet-train",
    "bus",
    "cab",
    "cabin-cruiser",
    "cable-car",
    "caboose",
    "camper",
    "canoe",
    "car",
    "caravan",
    "caravel",
    "cargo-ship",
    "carriage",
    "carrier",
    "cart",
    "catamaran",
    "chairlift",
    "chariot",
    "chopper",
    "clipper-ship",
    "clunker",
    "coach",
    "combine",
    "compact-car",
    "conestoga-wagon",
    "container-ship",
    "convertible",
    "conveyance",
    "conveyor-belt",
    "convoy",
    "coupe",
    "covered-wagon",
    "crane",
    "crop-duster",
    "cruise-ship",
    "cruiser",
    "cutter",
    "cycle",
    "delivery-truck",
    "delivery-van",
    "destroyer",
    "diesel-truck",
    "dinghy",
    "dirigible",
    "dirt-bike",
    "diving-bell",
    "dog-cart",
    "dogsled",
    "donkey-cart",
    "dray",
    "driver",
    "dugout-canoe",
    "dump-truck",
    "earth-mover",
    "eighteen-wheeler",
    "electric-car",
    "elevated-railroad",
    "elevator",
    "engine",
    "escalator",
    "express-train",
    "ferry",
    "fireboat",
    "fire-engine",
    "fishing-boat",
    "flatbed-truck",
    "forklift",
    "four-door",
    "four-wheel-drive",
    "four-by-four",
    "freighter",
    "freight-train",
    "frigate",
    "funicular-railway",
    "galleon",
    "garbage-truck",
    "glider",
    "go-cart",
    "golf-cart",
    "gondola",
    "gondola-lift",
    "gridlock",
    "handcar",
    "hang-glider",
    "hansom-cab",
    "hardtop",
    "harvester",
    "hatchback",
    "haul",
    "hay-wagon",
    "hearse",
    "helicopter",
    "hook-and-ladder-truck",
    "hovercraft",
    "hot-air-balloon",
    "hot-rod",
    "houseboat",
    "hull",
    "humvee",
    "hybrid",
    "hydrofoil",
    "hydroplane",
    "ice-boat",
    "ice-breaker",
    "jalopy",
    "jeep",
    "jet",
    "jet-boat",
    "jetliner",
    "journey",
    "jet-pack",
    "jet-ski",
    "jumbo-jet",
    "junk",
    "kayak",
    "ketch",
    "landing-craft",
    "lifeboat",
    "life-raft",
    "light-rail",
    "limo",
    "limousine",
    "litter",
    "locomotive",
    "lorry",
    "low-rider",
    "magic-carpet",
    "maglev",
    "mast",
    "minesweeper",
    "minibus",
    "minivan",
    "model-T",
    "monorail",
    "moped",
    "motor",
    "motorcar",
    "motorboat",
    "motorcycle",
    "motor-home",
    "mountain-bike",
    "narrowboat",
    "oar",
    "ocean-liner",
    "off-road-vehicle",
    "oil-tanker",
    "outboard-motor",
    "outrigger-canoe",
    "oxcart",
    "paddle",
    "paddlewheeler",
    "parachute",
    "passenger",
    "patrol-car",
    "pedal-boat",
    "pickup-truck",
    "pilot",
    "plane",
    "police-car",
    "power-boat",
    "prairie-schooner",
    "propeller",
    "PT-boat",
    "pumper-truck",
    "punt",
    "push-cart",
    "racecar",
    "racing-car",
    "raft",
    "ragtop",
    "railroad",
    "railway",
    "rapid-transit",
    "recreational-vehicle",
    "rickshaw",
    "ride",
    "riverboat",
    "roadster",
    "rocket",
    "rover",
    "rowboat",
    "rudder",
    "runabout",
    "RV",
    "sail",
    "sailboat",
    "satellite",
    "school-bus",
    "schooner",
    "scooter",
    "scull",
    "seaplane",
    "sedan",
    "sedan-chair",
    "Segway",
    "semi",
    "ship",
    "shuttle",
    "side-wheeler",
    "skiff",
    "ski-lift",
    "ski-tow",
    "sled",
    "sledge",
    "sleigh",
    "snow-cat",
    "snowmobile",
    "snowplow",
    "spaceship",
    "space-shuttle",
    "speedboat",
    "sports-car",
    "SUV",
    "squad-car",
    "SST",
    "stagecoach",
    "station-wagon",
    "steamboat",
    "steamship",
    "stretch-limo",
    "stock-car",
    "stroller",
    "subcompact",
    "submarine",
    "submersible",
    "subway",
    "surrey",
    "SUV",
    "tank",
    "tanker",
    "taxi",
    "taxicab",
    "T-bar-lift",
    "thresher",
    "tire",
    "toboggan",
    "town-car",
    "tow-truck",
    "tracks",
    "tractor",
    "tractor-trailer",
    "trail-bike",
    "trailer",
    "train",
    "tram",
    "tramway",
    "transit",
    "trawler",
    "tricycle",
    "trolley",
    "truck",
    "tugboat",
    "two-door",
    "U-boat",
    "ultralight-craft",
    "umiak",
    "unicycle",
    "van",
    "vehicle",
    "vespa",
    "vessel",
    "wagon",
    "warship",
    "wheel",
    "wheelbarrow",
    "wheelchair",
    "windjammer",
    "windshield",
    "wreck",
    "yacht",
    "yawl",
    "Zamboni",
    "zeppelin"
)
