Source code for pontoon.mocking

# -*- coding: utf-8 -*-

import re
import sys
import contextlib
from random import randrange
from datetime import datetime, timedelta

# Python 2/3 compatibility for capture_stdout
try:
    from StringIO import StringIO
except ImportError:
    from io import StringIO


[docs]class Data(object): pass
[docs]def timestamp(hours=0): """Mocked Digital Ocean timestamp""" return (datetime.utcnow() + timedelta( hours=hours)).strftime("%Y-%m-%dT%H:%M:%SZ")
[docs]def get_builtins(): """Python 2.x and 3.x have different names for accessing builtins""" try: __import__('builtins') return 'builtins' except ImportError: return '__builtin__'
[docs]def _raise(ex=None): """Wrapper for exceptions so they can be thrown from inside lambdas""" exception = [] if ex: exception.append(ex) if len(exception): raise exception.pop()
[docs]def event_response(): return { 'event_id': randrange(9999), 'status': 'OK', }
@contextlib.contextmanager
[docs]def capture_stdout(): """Captures STDOUT and turns it into an object""" old = sys.stdout capturer = StringIO() sys.stdout = capturer data = Data() yield data sys.stdout = old data.result = capturer.getvalue()