def __init__(self, name=None, module_dir=None, signatures=None, module_info=None, assets=None, processor=None, extra_info=None, version=None): self.desc = module_desc_pb2.ModuleDesc() self.program = None self.assets = [] self.helper = None self.signatures = {} self.default_signature = None self.module_info = None self.processor = None self.extra_info = {} if extra_info is None else extra_info if not isinstance(self.extra_info, dict): raise TypeError( "The extra_info should be an instance of python dict") # cache data self.last_call_name = None self.cache_feed_dict = None self.cache_fetch_dict = None self.cache_program = None fp_lock = open(os.path.join(CONF_HOME, 'config.json')) lock.flock(fp_lock, lock.LOCK_EX) if name: self._init_with_name(name=name, version=version) lock.flock(fp_lock, lock.LOCK_UN) elif module_dir: self._init_with_module_file(module_dir=module_dir[0]) lock.flock(fp_lock, lock.LOCK_UN) name = module_dir[0].split("/")[-1] version = module_dir[1] elif signatures: if processor: if not issubclass(processor, BaseProcessor): raise TypeError( "Processor shoule be an instance of paddlehub.BaseProcessor" ) if assets: self.assets = utils.to_list(assets) # for asset in assets: # utils.check_path(assets) self.processor = processor self._generate_module_info(module_info) self._init_with_signature(signatures=signatures) lock.flock(fp_lock, lock.LOCK_UN) else: lock.flock(fp_lock, lock.LOCK_UN) raise ValueError("Module initialized parameter is empty") CacheUpdater(name, version).start()
def init_with_name(cls, name, version=None, **kwargs): fp_lock = open(os.path.join(CACHE_HOME, name), "a") lock.flock(fp_lock, lock.LOCK_EX) log_msg = "Installing %s module" % name if version: log_msg += "-%s" % version logger.info(log_msg) extra = {"command": "install"} result, tips, module_dir = default_module_manager.install_module( module_name=name, module_version=version, extra=extra) if not result: logger.error(tips) raise RuntimeError(tips) logger.info(tips) lock.flock(fp_lock, lock.LOCK_UN) return cls.init_with_directory(directory=module_dir[0], **kwargs)
def __init__(self, config_file_path=None): if not config_file_path: config_file_path = os.path.join(CONF_HOME, 'config.json') if not os.path.exists(CONF_HOME): utils.mkdir(CONF_HOME) if not os.path.exists(config_file_path): with open(config_file_path, 'w+') as fp: lock.flock(fp, lock.LOCK_EX) fp.write(json.dumps(default_server_config)) lock.flock(fp, lock.LOCK_UN) with open(config_file_path) as fp: self.config = json.load(fp) fp_lock = open(config_file_path) lock.flock(fp_lock, lock.LOCK_EX) utils.check_url(self.config['server_url']) self.server_url = self.config['server_url'] self.request() self._load_resource_list_file_if_valid() lock.flock(fp_lock, lock.LOCK_UN)