def read(self, data_path: Union[Path, str], db_url: Optional[str] = None, *args,<EOL>**kwargs) -> None:
logger.info('<STR_LIT>')<EOL>try:<EOL><INDENT>save_path = expand_path(kwargs['<STR_LIT>'])<EOL><DEDENT>except KeyError:<EOL><INDENT>raise ConfigError(<EOL>f'<STR_LIT>')<EOL><DEDENT>if save_path.exists() and save_path.with_suffix(f'<STR_LIT>').exists():<EOL><INDENT>return<EOL><DEDENT>try:<EOL><INDENT>dataset_format = kwargs['<STR_LIT>']<EOL><DEDENT>except KeyError:<EOL><INDENT>raise ConfigError(<EOL>f'<STR_LIT>')<EOL><DEDENT>save_path.parent.mkdir(parents=True, exist_ok=True)<EOL>if db_url:<EOL><INDENT>download_dir = save_path.parent<EOL>logger.info(f'<STR_LIT>')<EOL>download(download_dir, db_url, force_download=False)<EOL>return<EOL><DEDENT>self._build_db(save_path, dataset_format, expand_path(data_path))<EOL>
Build a SQLite database from provided files, download SQLite database from a provided URL,
         or do nothing.

        Args:
            data_path: a directory/file with texts to create a database from
            db_url: path to a database url
            kwargs:
                save_path: a path where a database should be saved to, or path to a ready database
                dataset_format: initial data format; should be selected from ['txt', 'wiki', 'json']

        Returns:
            None