diff --git a/JPMC-tech-task-1-py3/client3.py b/JPMC-tech-task-1-py3/client3.py index d270710..7920836 100644 --- a/JPMC-tech-task-1-py3/client3.py +++ b/JPMC-tech-task-1-py3/client3.py @@ -59,6 +59,6 @@ def getRatio(price_a, price_b): for quote in quotes: stock, bid_price, ask_price, price = getDataPoint(quote) prices[stock] = price - print ("Quoted %s at (bid:%s, ask:%s, price:%s)" % (stock, bid_price, ask_price, price)) + print(f"Quoted {stock} at (bid:{bid_price}, ask:{ask_price}, price:{price})") - print ("Ratio %s" % getRatio(prices['ABC'], prices['DEF'])) + print(f"Ratio {getRatio(prices['ABC'], prices['DEF'])}") diff --git a/JPMC-tech-task-1-py3/server3.py b/JPMC-tech-task-1-py3/server3.py index 025ee58..e0e62e4 100644 --- a/JPMC-tech-task-1-py3/server3.py +++ b/JPMC-tech-task-1-py3/server3.py @@ -43,7 +43,7 @@ REALTIME = True SIM_LENGTH = timedelta(days = 365 * 5) -MARKET_OPEN = datetime.today().replace(hour = 0, minute = 30, second = 0) +MARKET_OPEN = datetime.now().replace(hour = 0, minute = 30, second = 0) # Market parms # min / max / std @@ -117,8 +117,7 @@ def clear_book(buy = None, sell = None): """ while buy and sell: order, size, _ = buy[0] - new_book = clear_order(order, size, sell) - if new_book: + if new_book := clear_order(order, size, sell): sell = new_book[1] buy = buy[1:] else: @@ -191,16 +190,18 @@ def read_params(path): def get(req_handler, routes): """ Map a request to the appropriate route of a routes instance. """ for name, handler in routes.__class__.__dict__.items(): - if hasattr(handler, "__route__"): - if None != re.search(handler.__route__, req_handler.path): - req_handler.send_response(200) - req_handler.send_header('Content-Type', 'application/json') - req_handler.send_header('Access-Control-Allow-Origin', '*') - req_handler.end_headers() - params = read_params(req_handler.path) - data = json.dumps(handler(routes, params)) + '\n' - req_handler.wfile.write(bytes(data, encoding = 'utf-8')) - return + if ( + hasattr(handler, "__route__") + and re.search(handler.__route__, req_handler.path) != None + ): + req_handler.send_response(200) + req_handler.send_header('Content-Type', 'application/json') + req_handler.send_header('Access-Control-Allow-Origin', '*') + req_handler.end_headers() + params = read_params(req_handler.path) + data = json.dumps(handler(routes, params)) + '\n' + req_handler.wfile.write(bytes(data, encoding = 'utf-8')) + return def run(routes, host = '0.0.0.0', port = 8080): """ Runs a class as a server whose methods have been decorated with @@ -236,8 +237,8 @@ class App(object): """ The trading game server application. """ def __init__(self): - self._book_1 = dict() - self._book_2 = dict() + self._book_1 = {} + self._book_2 = {} self._data_1 = order_book(read_csv(), self._book_1, 'ABC') self._data_2 = order_book(read_csv(), self._book_2, 'DEF') self._rt_start = datetime.now() @@ -281,7 +282,7 @@ def handle_query(self, x): t1, bids1, asks1 = next(self._current_book_1) t2, bids2, asks2 = next(self._current_book_2) t = t1 if t1 > t2 else t2 - print ('Query received @ t%s' % t) + print(f'Query received @ t{t}') return [{ 'id': x and x.get('id', None), 'stock': 'ABC', diff --git a/JPMC-tech-task-2-PY3/datafeed/server3.py b/JPMC-tech-task-2-PY3/datafeed/server3.py index 025ee58..e0e62e4 100644 --- a/JPMC-tech-task-2-PY3/datafeed/server3.py +++ b/JPMC-tech-task-2-PY3/datafeed/server3.py @@ -43,7 +43,7 @@ REALTIME = True SIM_LENGTH = timedelta(days = 365 * 5) -MARKET_OPEN = datetime.today().replace(hour = 0, minute = 30, second = 0) +MARKET_OPEN = datetime.now().replace(hour = 0, minute = 30, second = 0) # Market parms # min / max / std @@ -117,8 +117,7 @@ def clear_book(buy = None, sell = None): """ while buy and sell: order, size, _ = buy[0] - new_book = clear_order(order, size, sell) - if new_book: + if new_book := clear_order(order, size, sell): sell = new_book[1] buy = buy[1:] else: @@ -191,16 +190,18 @@ def read_params(path): def get(req_handler, routes): """ Map a request to the appropriate route of a routes instance. """ for name, handler in routes.__class__.__dict__.items(): - if hasattr(handler, "__route__"): - if None != re.search(handler.__route__, req_handler.path): - req_handler.send_response(200) - req_handler.send_header('Content-Type', 'application/json') - req_handler.send_header('Access-Control-Allow-Origin', '*') - req_handler.end_headers() - params = read_params(req_handler.path) - data = json.dumps(handler(routes, params)) + '\n' - req_handler.wfile.write(bytes(data, encoding = 'utf-8')) - return + if ( + hasattr(handler, "__route__") + and re.search(handler.__route__, req_handler.path) != None + ): + req_handler.send_response(200) + req_handler.send_header('Content-Type', 'application/json') + req_handler.send_header('Access-Control-Allow-Origin', '*') + req_handler.end_headers() + params = read_params(req_handler.path) + data = json.dumps(handler(routes, params)) + '\n' + req_handler.wfile.write(bytes(data, encoding = 'utf-8')) + return def run(routes, host = '0.0.0.0', port = 8080): """ Runs a class as a server whose methods have been decorated with @@ -236,8 +237,8 @@ class App(object): """ The trading game server application. """ def __init__(self): - self._book_1 = dict() - self._book_2 = dict() + self._book_1 = {} + self._book_2 = {} self._data_1 = order_book(read_csv(), self._book_1, 'ABC') self._data_2 = order_book(read_csv(), self._book_2, 'DEF') self._rt_start = datetime.now() @@ -281,7 +282,7 @@ def handle_query(self, x): t1, bids1, asks1 = next(self._current_book_1) t2, bids2, asks2 = next(self._current_book_2) t = t1 if t1 > t2 else t2 - print ('Query received @ t%s' % t) + print(f'Query received @ t{t}') return [{ 'id': x and x.get('id', None), 'stock': 'ABC', diff --git a/JPMC-tech-task-3-PY3/datafeed/server3.py b/JPMC-tech-task-3-PY3/datafeed/server3.py index 025ee58..e0e62e4 100644 --- a/JPMC-tech-task-3-PY3/datafeed/server3.py +++ b/JPMC-tech-task-3-PY3/datafeed/server3.py @@ -43,7 +43,7 @@ REALTIME = True SIM_LENGTH = timedelta(days = 365 * 5) -MARKET_OPEN = datetime.today().replace(hour = 0, minute = 30, second = 0) +MARKET_OPEN = datetime.now().replace(hour = 0, minute = 30, second = 0) # Market parms # min / max / std @@ -117,8 +117,7 @@ def clear_book(buy = None, sell = None): """ while buy and sell: order, size, _ = buy[0] - new_book = clear_order(order, size, sell) - if new_book: + if new_book := clear_order(order, size, sell): sell = new_book[1] buy = buy[1:] else: @@ -191,16 +190,18 @@ def read_params(path): def get(req_handler, routes): """ Map a request to the appropriate route of a routes instance. """ for name, handler in routes.__class__.__dict__.items(): - if hasattr(handler, "__route__"): - if None != re.search(handler.__route__, req_handler.path): - req_handler.send_response(200) - req_handler.send_header('Content-Type', 'application/json') - req_handler.send_header('Access-Control-Allow-Origin', '*') - req_handler.end_headers() - params = read_params(req_handler.path) - data = json.dumps(handler(routes, params)) + '\n' - req_handler.wfile.write(bytes(data, encoding = 'utf-8')) - return + if ( + hasattr(handler, "__route__") + and re.search(handler.__route__, req_handler.path) != None + ): + req_handler.send_response(200) + req_handler.send_header('Content-Type', 'application/json') + req_handler.send_header('Access-Control-Allow-Origin', '*') + req_handler.end_headers() + params = read_params(req_handler.path) + data = json.dumps(handler(routes, params)) + '\n' + req_handler.wfile.write(bytes(data, encoding = 'utf-8')) + return def run(routes, host = '0.0.0.0', port = 8080): """ Runs a class as a server whose methods have been decorated with @@ -236,8 +237,8 @@ class App(object): """ The trading game server application. """ def __init__(self): - self._book_1 = dict() - self._book_2 = dict() + self._book_1 = {} + self._book_2 = {} self._data_1 = order_book(read_csv(), self._book_1, 'ABC') self._data_2 = order_book(read_csv(), self._book_2, 'DEF') self._rt_start = datetime.now() @@ -281,7 +282,7 @@ def handle_query(self, x): t1, bids1, asks1 = next(self._current_book_1) t2, bids2, asks2 = next(self._current_book_2) t = t1 if t1 > t2 else t2 - print ('Query received @ t%s' % t) + print(f'Query received @ t{t}') return [{ 'id': x and x.get('id', None), 'stock': 'ABC',