def set_chain_class(self, chain_identifier): if isinstance(chain_identifier, type): self.chain_class = chain_identifier elif is_string(chain_identifier): if chain_identifier.lower() in CHAIN_IDENTIFIER_MAP: self.chain_class = CHAIN_IDENTIFIER_MAP[chain_identifier.lower()] else: try: import_string(chain_identifier) except ImportError: raise ValueError(UNSUPPORTED_CHAIN_IDENTIFIER_MSG.format(chain_identifier)) else: self.chain_class = chain_identifier else: raise ValueError(UNSUPPORTED_CHAIN_IDENTIFIER_MSG.format(chain_identifier))
def contract_backends(self): for backend_name, backend_config in self.contract_backend_configs.items(): ProviderBackendClass = import_string(backend_config['class']) yield ( backend_name, ProviderBackendClass(self, backend_config.get_config('settings')), )
def __init__(self, project, chain_name, provider=IPCProvider, **geth_kwargs): super(BaseGethChain, self).__init__(project, chain_name) if geth_kwargs is None: geth_kwargs = {} if is_string(provider): provider = import_string(provider) # context manager shenanigans self.stack = ExitStack() self.provider_class = provider self.extra_kwargs = { key: value for key, value in geth_kwargs.items() if key not in GETH_KWARGS } self.geth_kwargs = { key: value for key, value in geth_kwargs.items() if key in GETH_KWARGS } self.geth = self.get_geth_process_instance()
def set_backend_class(self, backend_identifier): if isinstance(backend_identifier, type): self.backend_class = backend_identifier elif is_string(backend_identifier): if backend_identifier.lower() in BACKEND_IDENTIFIER_MAP: self.backend_class = BACKEND_IDENTIFIER_MAP[backend_identifier.lower()] else: try: import_string(backend_identifier) except ImportError: raise ValueError( UNSUPPORTED_BACKEND_IDENTIFIER_MSG.format(backend_identifier) ) else: self.backend_class = backend_identifier else: raise ValueError(UNSUPPORTED_BACKEND_IDENTIFIER_MSG.format(backend_identifier))
def set_provider_class(self, provider_identifier): if isinstance(provider_identifier, type): self.provider_class = provider_identifier elif is_string(provider_identifier): if provider_identifier.lower() in PROVIDER_IDENTIFIER_MAP: self.provider_class = PROVIDER_IDENTIFIER_MAP[provider_identifier.lower()] else: try: import_string(provider_identifier) except ImportError: raise ValueError( UNSUPPORTED_PROVIDER_IDENTIFIER_MSG.format(provider_identifier) ) else: self.provider_class = provider_identifier else: raise ValueError(UNSUPPORTED_PROVIDER_IDENTIFIER_MSG.format(provider_identifier))
def set_chain_class(self, chain_identifier): if isinstance(chain_identifier, type): self.chain_class = chain_identifier elif is_string(chain_identifier): if chain_identifier.lower() in CHAIN_IDENTIFIER_MAP: self.chain_class = CHAIN_IDENTIFIER_MAP[ chain_identifier.lower()] else: try: import_string(chain_identifier) except ImportError: raise ValueError( UNSUPPORTED_CHAIN_IDENTIFIER_MSG.format( chain_identifier)) else: self.chain_class = chain_identifier else: raise ValueError( UNSUPPORTED_CHAIN_IDENTIFIER_MSG.format(chain_identifier))
def set_provider_class(self, provider_identifier): if isinstance(provider_identifier, type): self.provider_class = provider_identifier elif is_string(provider_identifier): if provider_identifier.lower() in PROVIDER_IDENTIFIER_MAP: self.provider_class = PROVIDER_IDENTIFIER_MAP[ provider_identifier.lower()] else: try: import_string(provider_identifier) except ImportError: raise ValueError( UNSUPPORTED_PROVIDER_IDENTIFIER_MSG.format( provider_identifier)) else: self.provider_class = provider_identifier else: raise ValueError( UNSUPPORTED_PROVIDER_IDENTIFIER_MSG.format( provider_identifier))
def set_backend_class(self, backend_identifier): if isinstance(backend_identifier, type): self.backend_class = backend_identifier elif is_string(backend_identifier): if backend_identifier.lower() in self.backend_class_shortnames: self.backend_class = self.backend_class_shortnames[ backend_identifier.lower()] else: try: import_string(backend_identifier) except ImportError: raise ValueError( UNSUPPORTED_BACKEND_IDENTIFIER_MSG.format(','.join( tuple(self.backend_class_shortnames.keys())))) else: self.backend_class = backend_identifier else: raise ValueError( UNSUPPORTED_BACKEND_IDENTIFIER_MSG.format(','.join( tuple(self.backend_class_shortnames.keys()))))
def __init__(self, project, chain_name, *args, **kwargs): super(ExternalChain, self).__init__(project, chain_name) provider_import_path = kwargs.pop( 'provider', 'web3.providers.ipc.IPCProvider', ) provider_class = import_string(provider_import_path) if provider_class == RPCProvider: host = kwargs.pop('host', '127.0.0.1') # TODO: this integer casting needs to be done downstream in # web3.py. port = int(kwargs.pop('port', 8545)) provider = provider_class(host=host, port=port) elif provider_class == IPCProvider: ipc_path = kwargs.pop('ipc_path', None) provider = provider_class(ipc_path=ipc_path) else: raise NotImplementedError( "Only the IPCProvider and RPCProvider provider classes are " "currently supported for external chains.") self._web3 = Web3(provider)
def __get__(self, obj, type=None): class_import_path = obj[self.key] klass = import_string(class_import_path) return klass