def __init__(self, count, freq, cachedir='', pairs=[]): self.count = max(count, 1) self.d = {} self.lastmutex = Semaphore(1) self.first = None self.last = None for key, value in pairs: self[key] = value # Set the frequency to something like 1/100th of # the expected dictionary final size to achieve # best performance. self.diskcache = DictCache(freq, cachedir)
def __init__(self, router_config: str='uniswap', name: Optional[str]=None, filter_address: Sequence[str]=None): script_dir = os.path.dirname(os.path.realpath(__file__)) self.name = type(self).__name__ if name is None else name with open(os.path.join(script_dir, 'config.json')) as f: self._config = json5.load(f) self._uniswap: Dict[str, UniswapV2Client] = {} self.router_config = router_config self._web3: Optional[Web3] = None self._web3_write: Optional[Web3] = None self._abi_cache: Dict[str, str] = {} self.wait_async = 0.1 self.token_cache = DictCache("token-" + self.name) self.pair_cache = DictCache("pair-" + self.name) self.reserves_cache = DictCache("reserves-" + self.name) self.deadline = 1800.0 self.default_gas_price = \ self.web3().toWei(15, "gwei") self._weth_address: Optional[str] = None self.execute_trade = False self.filter_address = [ self.uniswap().router_address.lower() ] \ if filter_address is None else [x.lower() for x in filter_address]