diff --git a/libbot/__main__.py b/libbot/__main__.py index 5739e27..6de6966 100644 --- a/libbot/__main__.py +++ b/libbot/__main__.py @@ -1,28 +1,32 @@ -from typing import Any +from pathlib import Path +from typing import Any, Union + import aiofiles -from ujson import loads, dumps +from ujson import dumps, loads -async def json_read(path: str) -> Any: - async with aiofiles.open(path, mode="r", encoding="utf-8") as f: +async def json_read(path: Union[str, Path]) -> Any: + async with aiofiles.open(str(path), mode="r", encoding="utf-8") as f: data = await f.read() return loads(data) -async def json_write(data: Any, path: str) -> None: - async with aiofiles.open(path, mode="w", encoding="utf-8") as f: +async def json_write(data: Any, path: Union[str, Path]) -> None: + async with aiofiles.open(str(path), mode="w", encoding="utf-8") as f: await f.write(dumps(data, ensure_ascii=False, escape_forward_slashes=False)) -async def config_get(key: str, *path: str) -> Any: - this_key = await json_read("config.json") +async def config_get(key: str, *path: str, config_file: str = "config.json") -> Any: + this_key = await json_read(config_file) for dict_key in path: this_key = this_key[dict_key] return this_key[key] -async def config_set(key: str, value: Any, *path: str) -> None: - this_dict = await json_read("config.json") +async def config_set( + key: str, value: Any, *path: str, config_file: str = "config.json" +) -> None: + this_dict = await json_read(config_file) string = "this_dict" for arg in path: string += f'["{arg}"]' @@ -31,5 +35,5 @@ async def config_set(key: str, value: Any, *path: str) -> None: else: string += f'["{key}"] = {value}' exec(string) - await json_write(this_dict, "config.json") + await json_write(this_dict, config_file) return diff --git a/libbot/sync/__init__.py b/libbot/sync/__init__.py index 01b70eb..c71fa3a 100644 --- a/libbot/sync/__init__.py +++ b/libbot/sync/__init__.py @@ -1,28 +1,31 @@ -from typing import Any +from pathlib import Path +from typing import Any, Union from ujson import dumps, loads -def json_read(path: str) -> Any: - with open(path, mode="r", encoding="utf-8") as f: +def json_read(path: Union[str, Path]) -> Any: + with open(str(path), mode="r", encoding="utf-8") as f: data = f.read() return loads(data) -def json_write(data: Any, path: str) -> None: - with open(path, mode="w", encoding="utf-8") as f: +def json_write(data: Any, path: Union[str, Path]) -> None: + with open(str(path), mode="w", encoding="utf-8") as f: f.write(dumps(data, ensure_ascii=False, escape_forward_slashes=False, indent=4)) -def config_get(key: str, *path: str) -> Any: - this_key = json_read("config.json") +def config_get(key: str, *path: str, config_file: str = "config.json") -> Any: + this_key = json_read(config_file) for dict_key in path: this_key = this_key[dict_key] return this_key[key] -def config_set(key: str, value: Any, *path: str) -> None: - this_dict = json_read("config.json") +def config_set( + key: str, value: Any, *path: str, config_file: str = "config.json" +) -> None: + this_dict = json_read(config_file) string = "this_dict" for arg in path: string += f'["{arg}"]' @@ -31,5 +34,5 @@ def config_set(key: str, value: Any, *path: str) -> None: else: string += f'["{key}"] = {value}' exec(string) - json_write(this_dict, "config.json") + json_write(this_dict, config_file) return