Example #1
0
    def random(cls: Type[T], length: Optional[int] = None) -> T:
        """
        Generates a random sequence of trytes.

        :param Optional[int] length:
            Number of trytes to generate.

        :return:
            :py:class:`TryteString` object.

        :raises TypeError:
            - if ``length`` is negative,
            - if ``length`` is not defined, and the class doesn't have ``LEN`` attribute.
        """
        alphabet = [chr(x) for x in AsciiTrytesCodec.alphabet.values()]
        generator = SystemRandom()
        try:
            if length is None:
                length = cls.LEN

            if length <= 0:
                raise TypeError("length parameter needs to be greater than zero")
        except AttributeError:  # class has no LEN attribute
            if length is None:
                raise TypeError("{class_name} does not define a length property".format(class_name=cls.__name__))

        return cls(
            ''.join(
                generator.choices(population=alphabet, k=length)
            ).encode('ascii')
        )
Example #2
0
    def generate_random(max_length=20) -> 'VigenereCipherKey':
        """Generate a random key.
        For the Vigenere cipher only keys up to a given length are generated.

        :param max_length: The longest key to generate.
        :return: A randomly generated key.
        """
        r = SystemRandom()
        return r.choices(list(ascii_uppercase), k=r.randint(1, max_length))
Example #3
0
def get_email_key() -> str:
    """
    Get a E-Mail Key
    """
    random = SystemRandom()
    return ''.join(random.choices(ascii_letters + digits + '$=^', k=250))
Example #4
0
def get_key(length=18):
    random = SystemRandom()

    return ''.join(
        random.choices(string.ascii_letters + string.digits, k=length))
Example #5
0
def _generate_seed(count=15, allow_dups=True):
    wordList = (
        'abandon', 'ability', 'able', 'about', 'above', 'absent', 'absorb',
        'abstract', 'absurd', 'abuse', 'access', 'accident', 'account',
        'accuse', 'achieve', 'acid', 'acoustic', 'acquire', 'across', 'act',
        'action', 'actor', 'actress', 'actual', 'adapt', 'add', 'addict',
        'address', 'adjust', 'admit', 'adult', 'advance', 'advice', 'aerobic',
        'affair', 'afford', 'afraid', 'again', 'age', 'agent', 'agree',
        'ahead', 'aim', 'air', 'airport', 'aisle', 'alarm', 'album', 'alcohol',
        'alert', 'alien', 'all', 'alley', 'allow', 'almost', 'alone', 'alpha',
        'already', 'also', 'alter', 'always', 'amateur', 'amazing', 'among',
        'amount', 'amused', 'analyst', 'anchor', 'ancient', 'anger', 'angle',
        'angry', 'animal', 'ankle', 'announce', 'annual', 'another', 'answer',
        'antenna', 'antique', 'anxiety', 'any', 'apart', 'apology', 'appear',
        'apple', 'approve', 'april', 'arch', 'arctic', 'area', 'arena',
        'argue', 'arm', 'armed', 'armor', 'army', 'around', 'arrange',
        'arrest', 'arrive', 'arrow', 'art', 'artefact', 'artist', 'artwork',
        'ask', 'aspect', 'assault', 'asset', 'assist', 'assume', 'asthma',
        'athlete', 'atom', 'attack', 'attend', 'attitude', 'attract',
        'auction', 'audit', 'august', 'aunt', 'author', 'auto', 'autumn',
        'average', 'avocado', 'avoid', 'awake', 'aware', 'away', 'awesome',
        'awful', 'awkward', 'axis', 'baby', 'bachelor', 'bacon', 'badge',
        'bag', 'balance', 'balcony', 'ball', 'bamboo', 'banana', 'banner',
        'bar', 'barely', 'bargain', 'barrel', 'base', 'basic', 'basket',
        'battle', 'beach', 'bean', 'beauty', 'because', 'become', 'beef',
        'before', 'begin', 'behave', 'behind', 'believe', 'below', 'belt',
        'bench', 'benefit', 'best', 'betray', 'better', 'between', 'beyond',
        'bicycle', 'bid', 'bike', 'bind', 'biology', 'bird', 'birth', 'bitter',
        'black', 'blade', 'blame', 'blanket', 'blast', 'bleak', 'bless',
        'blind', 'blood', 'blossom', 'blouse', 'blue', 'blur', 'blush',
        'board', 'boat', 'body', 'boil', 'bomb', 'bone', 'bonus', 'book',
        'boost', 'border', 'boring', 'borrow', 'boss', 'bottom', 'bounce',
        'box', 'boy', 'bracket', 'brain', 'brand', 'brass', 'brave', 'bread',
        'breeze', 'brick', 'bridge', 'brief', 'bright', 'bring', 'brisk',
        'broccoli', 'broken', 'bronze', 'broom', 'brother', 'brown', 'brush',
        'bubble', 'buddy', 'budget', 'buffalo', 'build', 'bulb', 'bulk',
        'bullet', 'bundle', 'bunker', 'burden', 'burger', 'burst', 'bus',
        'business', 'busy', 'butter', 'buyer', 'buzz', 'cabbage', 'cabin',
        'cable', 'cactus', 'cage', 'cake', 'call', 'calm', 'camera', 'camp',
        'can', 'canal', 'cancel', 'candy', 'cannon', 'canoe', 'canvas',
        'canyon', 'capable', 'capital', 'captain', 'car', 'carbon', 'card',
        'cargo', 'carpet', 'carry', 'cart', 'case', 'cash', 'casino', 'castle',
        'casual', 'cat', 'catalog', 'catch', 'category', 'cattle', 'caught',
        'cause', 'caution', 'cave', 'ceiling', 'celery', 'cement', 'census',
        'century', 'cereal', 'certain', 'chair', 'chalk', 'champion', 'change',
        'chaos', 'chapter', 'charge', 'chase', 'chat', 'cheap', 'check',
        'cheese', 'chef', 'cherry', 'chest', 'chicken', 'chief', 'child',
        'chimney', 'choice', 'choose', 'chronic', 'chuckle', 'chunk', 'churn',
        'cigar', 'cinnamon', 'circle', 'citizen', 'city', 'civil', 'claim',
        'clap', 'clarify', 'claw', 'clay', 'clean', 'clerk', 'clever', 'click',
        'client', 'cliff', 'climb', 'clinic', 'clip', 'clock', 'clog', 'close',
        'cloth', 'cloud', 'clown', 'club', 'clump', 'cluster', 'clutch',
        'coach', 'coast', 'coconut', 'code', 'coffee', 'coil', 'coin',
        'collect', 'color', 'column', 'combine', 'come', 'comfort', 'comic',
        'common', 'company', 'concert', 'conduct', 'confirm', 'congress',
        'connect', 'consider', 'control', 'convince', 'cook', 'cool', 'copper',
        'copy', 'coral', 'core', 'corn', 'correct', 'cost', 'cotton', 'couch',
        'country', 'couple', 'course', 'cousin', 'cover', 'coyote', 'crack',
        'cradle', 'craft', 'cram', 'crane', 'crash', 'crater', 'crawl',
        'crazy', 'cream', 'credit', 'creek', 'crew', 'cricket', 'crime',
        'crisp', 'critic', 'crop', 'cross', 'crouch', 'crowd', 'crucial',
        'cruel', 'cruise', 'crumble', 'crunch', 'crush', 'cry', 'crystal',
        'cube', 'culture', 'cup', 'cupboard', 'curious', 'current', 'curtain',
        'curve', 'cushion', 'custom', 'cute', 'cycle', 'dad', 'damage', 'damp',
        'dance', 'danger', 'daring', 'dash', 'daughter', 'dawn', 'day', 'deal',
        'debate', 'debris', 'decade', 'december', 'decide', 'decline',
        'decorate', 'decrease', 'deer', 'defense', 'define', 'defy', 'degree',
        'delay', 'deliver', 'demand', 'demise', 'denial', 'dentist', 'deny',
        'depart', 'depend', 'deposit', 'depth', 'deputy', 'derive', 'describe',
        'desert', 'design', 'desk', 'despair', 'destroy', 'detail', 'detect',
        'develop', 'device', 'devote', 'diagram', 'dial', 'diamond', 'diary',
        'dice', 'diesel', 'diet', 'differ', 'digital', 'dignity', 'dilemma',
        'dinner', 'dinosaur', 'direct', 'dirt', 'disagree', 'discover',
        'disease', 'dish', 'dismiss', 'disorder', 'display', 'distance',
        'divert', 'divide', 'divorce', 'dizzy', 'doctor', 'document', 'dog',
        'doll', 'dolphin', 'domain', 'donate', 'donkey', 'donor', 'door',
        'dose', 'double', 'dove', 'draft', 'dragon', 'drama', 'drastic',
        'draw', 'dream', 'dress', 'drift', 'drill', 'drink', 'drip', 'drive',
        'drop', 'drum', 'dry', 'duck', 'dumb', 'dune', 'during', 'dust',
        'dutch', 'duty', 'dwarf', 'dynamic', 'eager', 'eagle', 'early', 'earn',
        'earth', 'easily', 'east', 'easy', 'echo', 'ecology', 'economy',
        'edge', 'edit', 'educate', 'effort', 'egg', 'eight', 'either', 'elbow',
        'elder', 'electric', 'elegant', 'element', 'elephant', 'elevator',
        'elite', 'else', 'embark', 'embody', 'embrace', 'emerge', 'emotion',
        'employ', 'empower', 'empty', 'enable', 'enact', 'end', 'endless',
        'endorse', 'enemy', 'energy', 'enforce', 'engage', 'engine', 'enhance',
        'enjoy', 'enlist', 'enough', 'enrich', 'enroll', 'ensure', 'enter',
        'entire', 'entry', 'envelope', 'episode', 'equal', 'equip', 'era',
        'erase', 'erode', 'erosion', 'error', 'erupt', 'escape', 'essay',
        'essence', 'estate', 'eternal', 'ethics', 'evidence', 'evil', 'evoke',
        'evolve', 'exact', 'example', 'excess', 'exchange', 'excite',
        'exclude', 'excuse', 'execute', 'exercise', 'exhaust', 'exhibit',
        'exile', 'exist', 'exit', 'exotic', 'expand', 'expect', 'expire',
        'explain', 'expose', 'express', 'extend', 'extra', 'eye', 'eyebrow',
        'fabric', 'face', 'faculty', 'fade', 'faint', 'faith', 'fall', 'false',
        'fame', 'family', 'famous', 'fan', 'fancy', 'fantasy', 'farm',
        'fashion', 'fat', 'fatal', 'father', 'fatigue', 'fault', 'favorite',
        'feature', 'february', 'federal', 'fee', 'feed', 'feel', 'female',
        'fence', 'festival', 'fetch', 'fever', 'few', 'fiber', 'fiction',
        'field', 'figure', 'file', 'film', 'filter', 'final', 'find', 'fine',
        'finger', 'finish', 'fire', 'firm', 'first', 'fiscal', 'fish', 'fit',
        'fitness', 'fix', 'flag', 'flame', 'flash', 'flat', 'flavor', 'flee',
        'flight', 'flip', 'float', 'flock', 'floor', 'flower', 'fluid',
        'flush', 'fly', 'foam', 'focus', 'fog', 'foil', 'fold', 'follow',
        'food', 'foot', 'force', 'forest', 'forget', 'fork', 'fortune',
        'forum', 'forward', 'fossil', 'foster', 'found', 'fox', 'fragile',
        'frame', 'frequent', 'fresh', 'friend', 'fringe', 'frog', 'front',
        'frost', 'frown', 'frozen', 'fruit', 'fuel', 'fun', 'funny', 'furnace',
        'fury', 'future', 'gadget', 'gain', 'galaxy', 'gallery', 'game', 'gap',
        'garage', 'garbage', 'garden', 'garlic', 'garment', 'gas', 'gasp',
        'gate', 'gather', 'gauge', 'gaze', 'general', 'genius', 'genre',
        'gentle', 'genuine', 'gesture', 'ghost', 'giant', 'gift', 'giggle',
        'ginger', 'giraffe', 'girl', 'give', 'glad', 'glance', 'glare',
        'glass', 'glide', 'glimpse', 'globe', 'gloom', 'glory', 'glove',
        'glow', 'glue', 'goat', 'goddess', 'gold', 'good', 'goose', 'gorilla',
        'gospel', 'gossip', 'govern', 'gown', 'grab', 'grace', 'grain',
        'grant', 'grape', 'grass', 'gravity', 'great', 'green', 'grid',
        'grief', 'grit', 'grocery', 'group', 'grow', 'grunt', 'guard', 'guess',
        'guide', 'guilt', 'guitar', 'gun', 'gym', 'habit', 'hair', 'half',
        'hammer', 'hamster', 'hand', 'happy', 'harbor', 'hard', 'harsh',
        'harvest', 'hat', 'have', 'hawk', 'hazard', 'head', 'health', 'heart',
        'heavy', 'hedgehog', 'height', 'hello', 'helmet', 'help', 'hen',
        'hero', 'hidden', 'high', 'hill', 'hint', 'hip', 'hire', 'history',
        'hobby', 'hockey', 'hold', 'hole', 'holiday', 'hollow', 'home',
        'honey', 'hood', 'hope', 'horn', 'horror', 'horse', 'hospital', 'host',
        'hotel', 'hour', 'hover', 'hub', 'huge', 'human', 'humble', 'humor',
        'hundred', 'hungry', 'hunt', 'hurdle', 'hurry', 'hurt', 'husband',
        'hybrid', 'ice', 'icon', 'idea', 'identify', 'idle', 'ignore', 'ill',
        'illegal', 'illness', 'image', 'imitate', 'immense', 'immune',
        'impact', 'impose', 'improve', 'impulse', 'inch', 'include', 'income',
        'increase', 'index', 'indicate', 'indoor', 'industry', 'infant',
        'inflict', 'inform', 'inhale', 'inherit', 'initial', 'inject',
        'injury', 'inmate', 'inner', 'innocent', 'input', 'inquiry', 'insane',
        'insect', 'inside', 'inspire', 'install', 'intact', 'interest', 'into',
        'invest', 'invite', 'involve', 'iron', 'island', 'isolate', 'issue',
        'item', 'ivory', 'jacket', 'jaguar', 'jar', 'jazz', 'jealous', 'jeans',
        'jelly', 'jewel', 'job', 'join', 'joke', 'journey', 'joy', 'judge',
        'juice', 'jump', 'jungle', 'junior', 'junk', 'just', 'kangaroo',
        'keen', 'keep', 'ketchup', 'key', 'kick', 'kid', 'kidney', 'kind',
        'kingdom', 'kiss', 'kit', 'kitchen', 'kite', 'kitten', 'kiwi', 'knee',
        'knife', 'knock', 'know', 'lab', 'label', 'labor', 'ladder', 'lady',
        'lake', 'lamp', 'language', 'laptop', 'large', 'later', 'latin',
        'laugh', 'laundry', 'lava', 'law', 'lawn', 'lawsuit', 'layer', 'lazy',
        'leader', 'leaf', 'learn', 'leave', 'lecture', 'left', 'leg', 'legal',
        'legend', 'leisure', 'lemon', 'lend', 'length', 'lens', 'leopard',
        'lesson', 'letter', 'level', 'liar', 'liberty', 'library', 'license',
        'life', 'lift', 'light', 'like', 'limb', 'limit', 'link', 'lion',
        'liquid', 'list', 'little', 'live', 'lizard', 'load', 'loan',
        'lobster', 'local', 'lock', 'logic', 'lonely', 'long', 'loop',
        'lottery', 'loud', 'lounge', 'love', 'loyal', 'lucky', 'luggage',
        'lumber', 'lunar', 'lunch', 'luxury', 'lyrics', 'machine', 'mad',
        'magic', 'magnet', 'maid', 'mail', 'main', 'major', 'make', 'mammal',
        'man', 'manage', 'mandate', 'mango', 'mansion', 'manual', 'maple',
        'marble', 'march', 'margin', 'marine', 'market', 'marriage', 'mask',
        'mass', 'master', 'match', 'material', 'math', 'matrix', 'matter',
        'maximum', 'maze', 'meadow', 'mean', 'measure', 'meat', 'mechanic',
        'medal', 'media', 'melody', 'melt', 'member', 'memory', 'mention',
        'menu', 'mercy', 'merge', 'merit', 'merry', 'mesh', 'message', 'metal',
        'method', 'middle', 'midnight', 'milk', 'million', 'mimic', 'mind',
        'minimum', 'minor', 'minute', 'miracle', 'mirror', 'misery', 'miss',
        'mistake', 'mix', 'mixed', 'mixture', 'mobile', 'model', 'modify',
        'mom', 'moment', 'monitor', 'monkey', 'monster', 'month', 'moon',
        'moral', 'more', 'morning', 'mosquito', 'mother', 'motion', 'motor',
        'mountain', 'mouse', 'move', 'movie', 'much', 'muffin', 'mule',
        'multiply', 'muscle', 'museum', 'mushroom', 'music', 'must', 'mutual',
        'myself', 'mystery', 'myth', 'naive', 'name', 'napkin', 'narrow',
        'nasty', 'nation', 'nature', 'near', 'neck', 'need', 'negative',
        'neglect', 'neither', 'nephew', 'nerve', 'nest', 'net', 'network',
        'neutral', 'never', 'news', 'next', 'nice', 'night', 'noble', 'noise',
        'nominee', 'noodle', 'normal', 'north', 'nose', 'notable', 'note',
        'nothing', 'notice', 'novel', 'now', 'nuclear', 'number', 'nurse',
        'nut', 'oak', 'obey', 'object', 'oblige', 'obscure', 'observe',
        'obtain', 'obvious', 'occur', 'ocean', 'october', 'odor', 'off',
        'offer', 'office', 'often', 'oil', 'okay', 'old', 'olive', 'olympic',
        'omit', 'once', 'one', 'onion', 'online', 'only', 'open', 'opera',
        'opinion', 'oppose', 'option', 'orange', 'orbit', 'orchard', 'order',
        'ordinary', 'organ', 'orient', 'original', 'orphan', 'ostrich',
        'other', 'outdoor', 'outer', 'output', 'outside', 'oval', 'oven',
        'over', 'own', 'owner', 'oxygen', 'oyster', 'ozone', 'pact', 'paddle',
        'page', 'pair', 'palace', 'palm', 'panda', 'panel', 'panic', 'panther',
        'paper', 'parade', 'parent', 'park', 'parrot', 'party', 'pass',
        'patch', 'path', 'patient', 'patrol', 'pattern', 'pause', 'pave',
        'payment', 'peace', 'peanut', 'pear', 'peasant', 'pelican', 'pen',
        'penalty', 'pencil', 'people', 'pepper', 'perfect', 'permit', 'person',
        'pet', 'phone', 'photo', 'phrase', 'physical', 'piano', 'picnic',
        'picture', 'piece', 'pig', 'pigeon', 'pill', 'pilot', 'pink',
        'pioneer', 'pipe', 'pistol', 'pitch', 'pizza', 'place', 'planet',
        'plastic', 'plate', 'play', 'please', 'pledge', 'pluck', 'plug',
        'plunge', 'poem', 'poet', 'point', 'polar', 'pole', 'police', 'pond',
        'pony', 'pool', 'popular', 'portion', 'position', 'possible', 'post',
        'potato', 'pottery', 'poverty', 'powder', 'power', 'practice',
        'praise', 'predict', 'prefer', 'prepare', 'present', 'pretty',
        'prevent', 'price', 'pride', 'primary', 'print', 'priority', 'prison',
        'private', 'prize', 'problem', 'process', 'produce', 'profit',
        'program', 'project', 'promote', 'proof', 'property', 'prosper',
        'protect', 'proud', 'provide', 'public', 'pudding', 'pull', 'pulp',
        'pulse', 'pumpkin', 'punch', 'pupil', 'puppy', 'purchase', 'purity',
        'purpose', 'purse', 'push', 'put', 'puzzle', 'pyramid', 'quality',
        'quantum', 'quarter', 'question', 'quick', 'quit', 'quiz', 'quote',
        'rabbit', 'raccoon', 'race', 'rack', 'radar', 'radio', 'rail', 'rain',
        'raise', 'rally', 'ramp', 'ranch', 'random', 'range', 'rapid', 'rare',
        'rate', 'rather', 'raven', 'raw', 'razor', 'ready', 'real', 'reason',
        'rebel', 'rebuild', 'recall', 'receive', 'recipe', 'record', 'recycle',
        'reduce', 'reflect', 'reform', 'refuse', 'region', 'regret', 'regular',
        'reject', 'relax', 'release', 'relief', 'rely', 'remain', 'remember',
        'remind', 'remove', 'render', 'renew', 'rent', 'reopen', 'repair',
        'repeat', 'replace', 'report', 'require', 'rescue', 'resemble',
        'resist', 'resource', 'response', 'result', 'retire', 'retreat',
        'return', 'reunion', 'reveal', 'review', 'reward', 'rhythm', 'rib',
        'ribbon', 'rice', 'rich', 'ride', 'ridge', 'rifle', 'right', 'rigid',
        'ring', 'riot', 'ripple', 'risk', 'ritual', 'rival', 'river', 'road',
        'roast', 'robot', 'robust', 'rocket', 'romance', 'roof', 'rookie',
        'room', 'rose', 'rotate', 'rough', 'round', 'route', 'royal', 'rubber',
        'rude', 'rug', 'rule', 'run', 'runway', 'rural', 'sad', 'saddle',
        'sadness', 'safe', 'sail', 'salad', 'salmon', 'salon', 'salt',
        'salute', 'same', 'sample', 'sand', 'satisfy', 'satoshi', 'sauce',
        'sausage', 'save', 'say', 'scale', 'scan', 'scare', 'scatter', 'scene',
        'scheme', 'school', 'science', 'scissors', 'scorpion', 'scout',
        'scrap', 'screen', 'script', 'scrub', 'sea', 'search', 'season',
        'seat', 'second', 'secret', 'section', 'security', 'seed', 'seek',
        'segment', 'select', 'sell', 'seminar', 'senior', 'sense', 'sentence',
        'series', 'service', 'session', 'settle', 'setup', 'seven', 'shadow',
        'shaft', 'shallow', 'share', 'shed', 'shell', 'sheriff', 'shield',
        'shift', 'shine', 'ship', 'shiver', 'shock', 'shoe', 'shoot', 'shop',
        'short', 'shoulder', 'shove', 'shrimp', 'shrug', 'shuffle', 'shy',
        'sibling', 'sick', 'side', 'siege', 'sight', 'sign', 'silent', 'silk',
        'silly', 'silver', 'similar', 'simple', 'since', 'sing', 'siren',
        'sister', 'situate', 'six', 'size', 'skate', 'sketch', 'ski', 'skill',
        'skin', 'skirt', 'skull', 'slab', 'slam', 'sleep', 'slender', 'slice',
        'slide', 'slight', 'slim', 'slogan', 'slot', 'slow', 'slush', 'small',
        'smart', 'smile', 'smoke', 'smooth', 'snack', 'snake', 'snap', 'sniff',
        'snow', 'soap', 'soccer', 'social', 'sock', 'soda', 'soft', 'solar',
        'soldier', 'solid', 'solution', 'solve', 'someone', 'song', 'soon',
        'sorry', 'sort', 'soul', 'sound', 'soup', 'source', 'south', 'space',
        'spare', 'spatial', 'spawn', 'speak', 'special', 'speed', 'spell',
        'spend', 'sphere', 'spice', 'spider', 'spike', 'spin', 'spirit',
        'split', 'spoil', 'sponsor', 'spoon', 'sport', 'spot', 'spray',
        'spread', 'spring', 'spy', 'square', 'squeeze', 'squirrel', 'stable',
        'stadium', 'staff', 'stage', 'stairs', 'stamp', 'stand', 'start',
        'state', 'stay', 'steak', 'steel', 'stem', 'step', 'stereo', 'stick',
        'still', 'sting', 'stock', 'stomach', 'stone', 'stool', 'story',
        'stove', 'strategy', 'street', 'strike', 'strong', 'struggle',
        'student', 'stuff', 'stumble', 'style', 'subject', 'submit', 'subway',
        'success', 'such', 'sudden', 'suffer', 'sugar', 'suggest', 'suit',
        'summer', 'sun', 'sunny', 'sunset', 'super', 'supply', 'supreme',
        'sure', 'surface', 'surge', 'surprise', 'surround', 'survey',
        'suspect', 'sustain', 'swallow', 'swamp', 'swap', 'swarm', 'swear',
        'sweet', 'swift', 'swim', 'swing', 'switch', 'sword', 'symbol',
        'symptom', 'syrup', 'system', 'table', 'tackle', 'tag', 'tail',
        'talent', 'talk', 'tank', 'tape', 'target', 'task', 'taste', 'tattoo',
        'taxi', 'teach', 'team', 'tell', 'ten', 'tenant', 'tennis', 'tent',
        'term', 'test', 'text', 'thank', 'that', 'theme', 'then', 'theory',
        'there', 'they', 'thing', 'this', 'thought', 'three', 'thrive',
        'throw', 'thumb', 'thunder', 'ticket', 'tide', 'tiger', 'tilt',
        'timber', 'time', 'tiny', 'tip', 'tired', 'tissue', 'title', 'toast',
        'tobacco', 'today', 'toddler', 'toe', 'together', 'toilet', 'token',
        'tomato', 'tomorrow', 'tone', 'tongue', 'tonight', 'tool', 'tooth',
        'top', 'topic', 'topple', 'torch', 'tornado', 'tortoise', 'toss',
        'total', 'tourist', 'toward', 'tower', 'town', 'toy', 'track', 'trade',
        'traffic', 'tragic', 'train', 'transfer', 'trap', 'trash', 'travel',
        'tray', 'treat', 'tree', 'trend', 'trial', 'tribe', 'trick', 'trigger',
        'trim', 'trip', 'trophy', 'trouble', 'truck', 'true', 'truly',
        'trumpet', 'trust', 'truth', 'try', 'tube', 'tuition', 'tumble',
        'tuna', 'tunnel', 'turkey', 'turn', 'turtle', 'twelve', 'twenty',
        'twice', 'twin', 'twist', 'two', 'type', 'typical', 'ugly', 'umbrella',
        'unable', 'unaware', 'uncle', 'uncover', 'under', 'undo', 'unfair',
        'unfold', 'unhappy', 'uniform', 'unique', 'unit', 'universe',
        'unknown', 'unlock', 'until', 'unusual', 'unveil', 'update', 'upgrade',
        'uphold', 'upon', 'upper', 'upset', 'urban', 'urge', 'usage', 'use',
        'used', 'useful', 'useless', 'usual', 'utility', 'vacant', 'vacuum',
        'vague', 'valid', 'valley', 'valve', 'van', 'vanish', 'vapor',
        'various', 'vast', 'vault', 'vehicle', 'velvet', 'vendor', 'venture',
        'venue', 'verb', 'verify', 'version', 'very', 'vessel', 'veteran',
        'viable', 'vibrant', 'vicious', 'victory', 'video', 'view', 'village',
        'vintage', 'violin', 'virtual', 'virus', 'visa', 'visit', 'visual',
        'vital', 'vivid', 'vocal', 'voice', 'void', 'volcano', 'volume',
        'vote', 'voyage', 'wage', 'wagon', 'wait', 'walk', 'wall', 'walnut',
        'want', 'warfare', 'warm', 'warrior', 'wash', 'wasp', 'waste', 'water',
        'wave', 'way', 'wealth', 'weapon', 'wear', 'weasel', 'weather', 'web',
        'wedding', 'weekend', 'weird', 'welcome', 'west', 'wet', 'whale',
        'what', 'wheat', 'wheel', 'when', 'where', 'whip', 'whisper', 'wide',
        'width', 'wife', 'wild', 'will', 'win', 'window', 'wine', 'wing',
        'wink', 'winner', 'winter', 'wire', 'wisdom', 'wise', 'wish',
        'witness', 'wolf', 'woman', 'wonder', 'wood', 'wool', 'word', 'work',
        'world', 'worry', 'worth', 'wrap', 'wreck', 'wrestle', 'wrist',
        'write', 'wrong', 'yard', 'year', 'yellow', 'you', 'young', 'youth',
        'zebra', 'zero', 'zone', 'zoo')

    from random import SystemRandom
    sysrandom = SystemRandom()
    if not allow_dups:
        return sysrandom.sample(wordList, count)
    try:
        return sysrandom.choices(wordList, count)  # available from python3.6
    except:
        pass
    return [sysrandom.choice(wordList) for i in range(count)]
def get_recovery_key():
    """
    Get a recovery key
    """
    random = SystemRandom()
    return ''.join(random.choices(ascii_letters + digits + '$/:;,', k=250))
Example #7
0
def get_registration_key() -> str:
    """
    Get a Registration Key
    """
    random = SystemRandom()
    return ''.join(random.choices(ascii_letters + digits + '-_.~', k=250))
Example #8
0
class TestThreadedApi(TestCase):
    def setUp(self):
        self.rng = SystemRandom()
        self.api = ThreadedApi()
        self.fake_last_status = None
        # just silence the config check
        # pylint: disable=protected-access
        self.api._config = True

    def test_single_tweet(self):
        msg = 'This is a short message'
        with patch.object(self.api, 'PostUpdate') as mock_post_update:
            self.api.PostUpdates(msg)
            mock_post_update.assert_called_once_with(status=msg)

    def test_long_tweet(self):

        words = [
            ''.join(self.rng.choices(ascii_lowercase, k=25))
            for dummy in range(25)
        ]
        msg = ' '.join(words)

        def get_fake_id(status, in_reply_to_status_id=None):
            if not self.fake_last_status:
                self.assertIsNone(in_reply_to_status_id)
            else:
                self.assertEqual(in_reply_to_status_id,
                                 self.fake_last_status.id)

            self.assertIn(status, msg)
            next_status = FakeStatus()
            self.fake_last_status = next_status
            return next_status

        with patch.object(self.api, 'PostUpdate') as mock_post_update:
            mock_post_update.side_effect = get_fake_id
            self.api.PostUpdates(msg, threaded=True)
            calls = mock_post_update.call_args_list
        # 625 chars + 50 spaces ==> 3 tweets
        self.assertEqual(len(calls), 3)

    def test_long_tweet_no_thread(self):
        words = [
            ''.join(self.rng.choices(ascii_lowercase, k=25))
            for dummy in range(25)
        ]
        msg = ' '.join(words)

        def get_fake_id(status):
            self.assertIn(status, msg)
            next_status = FakeStatus()
            self.fake_last_status = next_status
            return next_status

        with patch.object(self.api, 'PostUpdate') as mock_post_update:
            mock_post_update.side_effect = get_fake_id
            self.api.PostUpdates(msg, threaded=False)
            calls = mock_post_update.call_args_list
        # 625 chars + 50 spaces ==> 3 tweets
        self.assertEqual(len(calls), 3)

    def test_break_tweet_up_by_lines(self):
        tweet = '\r\n'.join([
            'Line 1',
            'Line 2',
            'Line 3',
            # line 4 is 301 chars. Yay.
            'This is an absurdly long line that will become the basis for what'
            ' should be preserved as line 4 but who knows what Twitter will '
            'do. This needs even more filler since Twitter decided to double'
            ' its tweet character limit. I have no idea what else to put in'
            ' here because everything is awful. Enjoy Arby\'s.',
            'Line 5',
        ])
        tweets = self.api.split_tweet_by_lines(
            tweet, character_limit=CHARACTER_LIMIT - len('…'))
        self.assertEqual(len(tweets), 3, tweets)
        self.assertEqual(
            tweets[0],
            'Line 1\r\nLine 2\r\nLine 3',
        )
        self.assertEqual(
            tweets[1], 'This is an absurdly long line that '
            'will become the basis for what'
            ' should be preserved as line 4 but who knows what Twitter will '
            'do. This needs even more filler since Twitter decided to double'
            ' its tweet character limit. I have no idea what else to put in '
            'here because everything')
        self.assertEqual(
            tweets[2],
            'is awful. Enjoy Arby\'s.\r\nLine 5',
        )
class TestThreadedApi(TestCase):
    def setUp(self):
        self.rng = SystemRandom()
        self.api = ThreadedApi()
        self.fake_last_status = None
        # just silence the config check
        # pylint: disable=protected-access
        self.api._config = True

    def test_single_tweet(self):
        msg = "This is a short message"
        with patch.object(self.api, "PostUpdate") as mock_post_update:
            self.api.PostUpdates(msg)
            mock_post_update.assert_called_once_with(status=msg)

    def test_chandlers_ford(self):
        """Test that the Chandlers Ford beers don't cause breakage"""
        split_tweets = self.api.split_tweet_by_lines(REAL_BREAKAGE,
                                                     CHARACTER_LIMIT - 1)
        self.assertEqual(len(split_tweets), 4)
        for tweet in split_tweets:
            self.assertLess(len(tweet), CHARACTER_LIMIT, tweet)

    def test_long_tweet(self):

        words = [
            "".join(self.rng.choices(ascii_lowercase, k=25))
            for dummy in range(25)
        ]
        msg = " ".join(words)

        def get_fake_id(status, in_reply_to_status_id=None):
            if not self.fake_last_status:
                self.assertIsNone(in_reply_to_status_id)
            else:
                self.assertEqual(in_reply_to_status_id,
                                 self.fake_last_status.id)

            self.assertIn(status, msg)
            next_status = FakeStatus()
            self.fake_last_status = next_status
            return next_status

        with patch.object(self.api, "PostUpdate") as mock_post_update:
            mock_post_update.side_effect = get_fake_id
            self.api.PostUpdates(msg, threaded=True)
            calls = mock_post_update.call_args_list
        # 625 chars + 50 spaces ==> 3 tweets
        self.assertEqual(len(calls), 3)

    def test_long_tweet_no_thread(self):
        words = [
            "".join(self.rng.choices(ascii_lowercase, k=25))
            for dummy in range(25)
        ]
        msg = " ".join(words)

        def get_fake_id(status):
            self.assertIn(status, msg)
            next_status = FakeStatus()
            self.fake_last_status = next_status
            return next_status

        with patch.object(self.api, "PostUpdate") as mock_post_update:
            mock_post_update.side_effect = get_fake_id
            self.api.PostUpdates(msg, threaded=False)
            calls = mock_post_update.call_args_list
        # 625 chars + 50 spaces ==> 3 tweets
        self.assertEqual(len(calls), 3)

    def test_break_tweet_up_by_lines(self):
        tweet = "\r\n".join([
            "Line 1",
            "Line 2",
            "Line 3",
            # line 4 is 301 chars. Yay.
            "This is an absurdly long line that will become the basis for what"
            " should be preserved as line 4 but who knows what Twitter will "
            "do. This needs even more filler since Twitter decided to double"
            " its tweet character limit. I have no idea what else to put in"
            " here because everything is awful. Enjoy Arby's.",
            "Line 5",
        ])
        tweets = self.api.split_tweet_by_lines(
            tweet, character_limit=CHARACTER_LIMIT - len("…"))
        self.assertEqual(len(tweets), 3, tweets)
        self.assertEqual(
            tweets[0],
            "Line 1\r\nLine 2\r\nLine 3",
        )
        self.assertEqual(
            tweets[1],
            "This is an absurdly long line that "
            "will become the basis for what"
            " should be preserved as line 4 but who knows what Twitter will "
            "do. This needs even more filler since Twitter decided to double"
            " its tweet character limit. I have no idea what else to put in "
            "here because everything",
        )
        self.assertEqual(
            tweets[2],
            "is awful. Enjoy Arby's.\r\nLine 5",
        )
def signup():
    register_fields = [
        "Mother's first name",
        "Father's first name",
        "BMI",
        "Number of EXs",
        "Number of Bar Soaps stuck\nin your mouth before",
        "Have you tried eating rubber ducks? If so, describe your experience",
        "Sometimes, life hits you hard.\nWhat motivated you to commit to act\nof terrorism using this client?",
        "Are you ready to fat shame\nyour coworker or family member?",
    ]
    layout_register = [
        [
            sg.Text("Sign Up / Register", font=(None, 20)),
            sg.Text("Make sure you read the Terms and Agreements and the"
                    " Privacy Policy ;)")
        ],
        [
            sg.Text(
                "We require a lots of information in order for you to truly understand the potential of this client"
            )
        ],
        [sg.Text("Username"),
         sg.InputText(key="Username", do_not_clear=True)],
        [
            sg.Text("Host Server Address / Website Address"),
            sg.InputText(key="Address", do_not_clear=False)
        ],
        [
            sg.Text("Password"),
            sg.InputText("",
                         password_char="*",
                         key="Password",
                         do_not_clear=False)
        ],
        [
            sg.Text("Confirm Password"),
            sg.InputText("",
                         password_char="*",
                         key="Confirm",
                         do_not_clear=False)
        ]
    ]
    from random import SystemRandom
    rand = SystemRandom()
    additionals = rand.choices(register_fields, k=rand.randint(25, 49))
    for i, x in enumerate(additionals):
        layout_register += [[
            sg.Text(
                text=str(bytes(x, encoding="UTF-8").decode(encoding="UTF-8"))),
            sg.Multiline(auto_size_text=True, autoscroll=True)
        ]]
    layout_register += [
        [sg.Button("Terms and Agreements"),
         sg.Button("Privacy Policy")],
        [
            sg.Checkbox(
                "By marking this checkbox with a Verizon Wireless check mark that has a funky shape that is\n"
                "somehow looking like a hockey stick, you agree to the aforementioned Terms and Agreements and\n"
                "Privacy Policy and acknowledge and agree to everything I said before. If you simply didn't read\n"
                "those terms and agreements or privacy policy, you'll wish you did and heeded my advice. Anyhow,\n"
                "take care and enjoy, if you check the Verizon Wireless check-mark which has the odd formulaic\n"
                "shape of a defunct cat.",
                default=False,
                key='Agreements')
        ],
        [
            sg.Cancel(tooltip='Click to exit. Your data will be lost.'),
            sg.Submit(tooltip='Click to submit')
        ],
        [
            sg.Text(text="Copyright 2019 YoomamaFTW",
                    pad=(0, (((22.5 * len(additionals)) - 13.0357), 0)))
        ]
    ]
    return layout_register