def METHOD_NAME(self):
    """can raise WalletFileException"""
    self._storage = WalletStorage(self._path)
    if not self._storage.file_exists():
        self._logger.warning('file does not exist')
        self.fileNotFound.emit()
        self._storage = None
        return
    if self._storage.is_encrypted():
        self.needsPassword = True
        try:
            self._storage.decrypt('' if not self._password else self._password)
            self.validPassword = True
        except InvalidPassword as e:
            self.validPassword = False
            self.invalidPassword.emit()
    else:  # storage not encrypted; but it might still have a keystore pw
        # FIXME hack... load both db and full wallet, just to tell if it has keystore pw.
        #       this also completely ignores db.requires_split(), db.get_action(), etc
        db = WalletDB(self._storage.read(), storage=self._storage, manual_upgrades=False)
        wallet = Wallet(db, config=self._config)
        self.needsPassword = wallet.has_password()
        if self.needsPassword:
            try:
                wallet.check_password('' if not self._password else self._password)
                self.validPassword = True
            except InvalidPassword as e:
                self.validPassword = False
                self._storage = None
                self.invalidPassword.emit()
    if self._storage:
        if not self._storage.is_past_initial_decryption():
            self._storage = None