def __init__(self) -> None: """Initializes the backend server May raise: - SystemPermissionError due to the given args containing a datadir that does not have the correct permissions """ arg_parser = app_args( prog='rotki', description= ('Rotki, the portfolio tracker and accounting tool that respects your privacy' ), ) self.args = arg_parser.parse_args() self.rotkehlchen = Rotkehlchen(self.args) self.stop_event = gevent.event.Event() domain_list = [] if self.args.api_cors: if "," in self.args.api_cors: for domain in self.args.api_cors.split(","): domain_list.append(str(domain)) else: domain_list.append(str(self.args.api_cors)) self.api_server = APIServer( rest_api=RestAPI(rotkehlchen=self.rotkehlchen), cors_domain_list=domain_list, )
def __init__(self): self.args = app_args() self.rotkehlchen = Rotkehlchen(self.args) self.stop_event = Event() mainloop_greenlet = self.rotkehlchen.start() mainloop_greenlet.link_exception(self.handle_killed_greenlets) self.greenlets = [mainloop_greenlet] self.task_lock = Semaphore() self.task_id = 0 self.task_results = {}
def __init__(self): self.args = app_args() self.rotkehlchen = Rotkehlchen(self.args) self.stop_event = Event() mainloop_greenlet = self.rotkehlchen.start() mainloop_greenlet.link_exception(self.handle_killed_greenlets) # Greenlets that will be waited for when we shutdown self.waited_greenlets = [mainloop_greenlet] # Greenlets that can be killed instead of waited for when we shutdown self.killable_greenlets = [] self.task_lock = Semaphore() self.task_id = 0 self.task_results = {}
def __init__(self): arg_parser = app_args( prog='rotkehlchen', description='Rotkehlchen Crypto Portfolio Management', ) self.args = arg_parser.parse_args() self.rotkehlchen = Rotkehlchen(self.args) self.stop_event = Event() mainloop_greenlet = self.rotkehlchen.start() mainloop_greenlet.link_exception(self.handle_killed_greenlets) # Greenlets that will be waited for when we shutdown self.waited_greenlets = [mainloop_greenlet] # Greenlets that can be killed instead of waited for when we shutdown self.killable_greenlets = [] self.task_lock = Semaphore() self.task_id = 0 self.task_results = {}
def __init__(self) -> None: arg_parser = app_args( prog='rotki', description= ('Rotki, the portfolio tracker and accounting tool that respects your privacy' ), ) self.args = arg_parser.parse_args() self.rotkehlchen = Rotkehlchen(self.args) self.stop_event = gevent.event.Event() domain_list = [] if self.args.api_cors: if "," in self.args.api_cors: for domain in self.args.api_cors.split(","): domain_list.append(str(domain)) else: domain_list.append(str(self.args.api_cors)) self.api_server = APIServer( rest_api=RestAPI(rotkehlchen=self.rotkehlchen), cors_domain_list=domain_list, )
def data_faker_args() -> argparse.ArgumentParser: """Append to the Rotkehlchen argument parser and return it""" p = app_args( prog='data_faker', description='Rotkehlchen fake data generation tool', ) p.add_argument( '--user-name', help='The name for the new user', ) p.add_argument( '--user-password', help='The password for the new user', required=True, ) p.add_argument( '--trades-number', help='The number of trades to automatically generate', default=100, ) return p
def data_faker_args() -> argparse.ArgumentParser: """Append to the Rotkehlchen argument parser and return it""" p = app_args( prog='data_faker', description='Rotkehlchen fake data generation tool', ) p.add_argument( '--user-name', help='The name for the new user', ) p.add_argument( '--user-password', help='The password for the new user', required=True, ) p.add_argument( '--trades-number', type=int, help='The number of trades to automatically generate', default=100, ) p.add_argument( '--seconds-between-trades', type=int, help='The min number of seconds between each trade. Default 1 day', default=86400, ) p.add_argument( '--seconds-between-balance-save', type=int, help= 'The min number of seconds between each balance save. Default 1 day', default=86400, ) return p
# Success, save the result in the DB self.data.db.add_exchange(name, api_key, api_secret) return True, '' def delete_exchange_data(self, name): self.connected_exchanges.remove(name) self.trades_historian.set_exchange(name, None) delattr(self, name) setattr(self, name, None) def remove_exchange(self, name): if getattr(self, name) is None: return False, 'Exchange {} is not registered'.format(name) self.delete_exchange_data(name) # Success, remove it also from the DB self.data.db.remove_exchange(name) return True, '' def shutdown(self): log.info("Shutting Down") self.shutdown_event.set() # For testing purposes only if __name__ == '__main__': from rotkehlchen.args import app_args args = app_args() r = Rotkehlchen(args)
def data_faker_args() -> argparse.ArgumentParser: """Append to the Rotkehlchen argument parser and return it""" p = app_args( prog='data_faker', description='Rotkehlchen fake data generation tool', ) p.add_argument( '--user-name', help='The name for the new (or existing) user', ) p.add_argument( '--user-password', help='The password for the new (or existing) user', required=True, ) p.add_argument( '--trades-number', type=int, help='The number of trades to automatically generate', default=100, ) p.add_argument( '--seconds-between-trades', type=int, help='The min number of seconds between each trade. Default 1 day', default=86400, ) p.add_argument( '--seconds-between-balance-save', type=int, help='The min number of seconds between each balance save. Default 1 day', default=86400, ) p.add_argument( '--command', type=str, choices=['mockall', 'statistics'], help='The type of operation data faken should do', ) p.add_argument( '--from-timestamp', type=int, required=False, help='The time from which to create the fake statistics data generation', ) p.add_argument( '--to-timestamp', type=int, required=False, help='The time until which to create the fake statistics data generation', ) p.add_argument( '--assets', type=str, required=False, help='List of assets to generate for fake statistics', ) p.add_argument( '--locations', type=str, required=False, help='List of locations to use for fake statistics', ) p.add_argument( '--starting-amount', type=int, required=False, default=10000, help='The starting amount of net value in USD', ) p.add_argument( '--max-amount', type=int, required=False, default=100000, help='The max amount of net value in USD to be able to get to', ) p.add_argument( '--min-amount', type=int, required=False, default=1000, help='The min amount of net value in USD to be able to get to', ) p.add_argument( '--go-up-probability', type=str, required=False, default='0.5', help='Number between 0 and 1.0 indicating probability that at each step number will go up', ) return p