Brokermod check output fixed and tweaks to deribit Client.bars function
parent
6df181c233
commit
a0b415095a
|
@ -40,23 +40,31 @@ _watchlists_data_path = os.path.join(_config_dir, 'watchlists.json')
|
||||||
|
|
||||||
|
|
||||||
@cli.command()
|
@cli.command()
|
||||||
@click.option('--loglevel', '-l', default='info', help='Logging level')
|
|
||||||
@click.argument('broker', nargs=1, required=True)
|
@click.argument('broker', nargs=1, required=True)
|
||||||
@click.pass_obj
|
@click.pass_obj
|
||||||
def brokercheck(config, loglevel, broker):
|
def brokercheck(config, broker):
|
||||||
'''
|
'''
|
||||||
Test broker apis for completeness.
|
Test broker apis for completeness.
|
||||||
|
|
||||||
'''
|
'''
|
||||||
log = get_console_log(loglevel)
|
OK = '\033[92m'
|
||||||
|
WARNING = '\033[93m'
|
||||||
|
FAIL = '\033[91m'
|
||||||
|
ENDC = '\033[0m'
|
||||||
|
|
||||||
|
def print_ok(s: str, **kwargs):
|
||||||
|
print(OK + s + ENDC, **kwargs)
|
||||||
|
|
||||||
|
def print_error(s: str, **kwargs):
|
||||||
|
print(FAIL + s + ENDC, **kwargs)
|
||||||
|
|
||||||
async def run_method(client, meth_name: str, **kwargs):
|
async def run_method(client, meth_name: str, **kwargs):
|
||||||
log.info(f'checking client for method \'{meth_name}\'...')
|
print(f'checking client for method \'{meth_name}\'...', end='', flush=True)
|
||||||
method = getattr(client, meth_name, None)
|
method = getattr(client, meth_name, None)
|
||||||
assert method
|
assert method
|
||||||
log.info('found!, running...')
|
print_ok('found!, running...', end='', flush=True)
|
||||||
result = await method(**kwargs)
|
result = await method(**kwargs)
|
||||||
log.info(f'done! result: {type(result)}')
|
print_ok(f'done! result: {type(result)}')
|
||||||
return result
|
return result
|
||||||
|
|
||||||
async def run_test(broker_name: str):
|
async def run_test(broker_name: str):
|
||||||
|
@ -65,13 +73,13 @@ def brokercheck(config, loglevel, broker):
|
||||||
passed = 0
|
passed = 0
|
||||||
failed = 0
|
failed = 0
|
||||||
|
|
||||||
log.info(f'getting client...')
|
print(f'getting client...', end='', flush=True)
|
||||||
if not hasattr(brokermod, 'get_client'):
|
if not hasattr(brokermod, 'get_client'):
|
||||||
log.error('fail! no \'get_client\' context manager found.')
|
print_error('fail! no \'get_client\' context manager found.')
|
||||||
return
|
return
|
||||||
|
|
||||||
async with brokermod.get_client() as client:
|
async with brokermod.get_client() as client:
|
||||||
log.info(f'done! inside client context.')
|
print_ok(f'done! inside client context.')
|
||||||
|
|
||||||
# check for methods present on brokermod
|
# check for methods present on brokermod
|
||||||
method_list = [
|
method_list = [
|
||||||
|
@ -83,13 +91,14 @@ def brokercheck(config, loglevel, broker):
|
||||||
]
|
]
|
||||||
|
|
||||||
for method in method_list:
|
for method in method_list:
|
||||||
log.info(
|
print(
|
||||||
f'checking brokermod for method \'{method}\'...')
|
f'checking brokermod for method \'{method}\'...',
|
||||||
|
end='', flush=True)
|
||||||
if not hasattr(brokermod, method):
|
if not hasattr(brokermod, method):
|
||||||
log.error(f'fail! method \'{method}\' not found.')
|
print_error(f'fail! method \'{method}\' not found.')
|
||||||
failed += 1
|
failed += 1
|
||||||
else:
|
else:
|
||||||
log.info('done!')
|
print_ok('done!')
|
||||||
passed += 1
|
passed += 1
|
||||||
|
|
||||||
total += 1
|
total += 1
|
||||||
|
@ -119,12 +128,12 @@ def brokercheck(config, loglevel, broker):
|
||||||
passed += 1
|
passed += 1
|
||||||
|
|
||||||
except AssertionError:
|
except AssertionError:
|
||||||
log.error(f'fail! method \'{method_name}\' not found.')
|
print_error(f'fail! method \'{method_name}\' not found.')
|
||||||
failed += 1
|
failed += 1
|
||||||
|
|
||||||
total += 1
|
total += 1
|
||||||
|
|
||||||
log.info(f'total: {total}, passed: {passed}, failed: {failed}')
|
print(f'total: {total}, passed: {passed}, failed: {failed}')
|
||||||
|
|
||||||
trio.run(run_test, broker)
|
trio.run(run_test, broker)
|
||||||
|
|
||||||
|
|
|
@ -109,9 +109,12 @@ class KLinesResult(BaseModel):
|
||||||
volume: List[float]
|
volume: List[float]
|
||||||
|
|
||||||
class KLines(BaseModel):
|
class KLines(BaseModel):
|
||||||
id: int
|
|
||||||
jsonrpc: str = '2.0'
|
jsonrpc: str = '2.0'
|
||||||
result: KLinesResult
|
result: KLinesResult
|
||||||
|
usIn: int
|
||||||
|
usOut: int
|
||||||
|
usDiff: int
|
||||||
|
testnet: bool
|
||||||
|
|
||||||
|
|
||||||
# convert datetime obj timestamp to unixtime in milliseconds
|
# convert datetime obj timestamp to unixtime in milliseconds
|
||||||
|
@ -200,11 +203,13 @@ class Client:
|
||||||
|
|
||||||
async def bars(
|
async def bars(
|
||||||
self,
|
self,
|
||||||
instrument: str,
|
symbol: str,
|
||||||
start_dt: Optional[datetime] = None,
|
start_dt: Optional[datetime] = None,
|
||||||
end_dt: Optional[datetime] = None,
|
end_dt: Optional[datetime] = None,
|
||||||
|
limit: int = 1000,
|
||||||
as_np: bool = True,
|
as_np: bool = True,
|
||||||
) -> dict:
|
) -> dict:
|
||||||
|
instrument = symbol
|
||||||
|
|
||||||
if end_dt is None:
|
if end_dt is None:
|
||||||
end_dt = pendulum.now('UTC')
|
end_dt = pendulum.now('UTC')
|
||||||
|
|
Loading…
Reference in New Issue