diff --git a/deltachat-rpc-client/src/deltachat_rpc_client/_utils.py b/deltachat-rpc-client/src/deltachat_rpc_client/_utils.py index 47d9b878c..bd9ebdedd 100644 --- a/deltachat-rpc-client/src/deltachat_rpc_client/_utils.py +++ b/deltachat-rpc-client/src/deltachat_rpc_client/_utils.py @@ -47,7 +47,6 @@ class AttrDict(dict): def run_client_cli( hooks: Optional[Iterable[Tuple[Callable, Union[type, "EventFilter"]]]] = None, argv: Optional[list] = None, - **kwargs, ) -> None: """Run a simple command line app, using the given hooks. @@ -55,13 +54,12 @@ def run_client_cli( """ from .client import Client - _run_cli(Client, hooks, argv, **kwargs) + _run_cli(Client, hooks, argv) def run_bot_cli( hooks: Optional[Iterable[Tuple[Callable, Union[type, "EventFilter"]]]] = None, argv: Optional[list] = None, - **kwargs, ) -> None: """Run a simple bot command line using the given hooks. @@ -69,14 +67,13 @@ def run_bot_cli( """ from .client import Bot - _run_cli(Bot, hooks, argv, **kwargs) + _run_cli(Bot, hooks, argv) def _run_cli( client_type: Type["Client"], hooks: Optional[Iterable[Tuple[Callable, Union[type, "EventFilter"]]]] = None, argv: Optional[list] = None, - **kwargs, ) -> None: from .deltachat import DeltaChat from .rpc import Rpc @@ -94,7 +91,7 @@ def _run_cli( parser.add_argument("--password", action="store", help="password", default=os.getenv("DELTACHAT_PASSWORD")) args = parser.parse_args(argv[1:]) - with Rpc(accounts_dir=args.accounts_dir, **kwargs) as rpc: + with Rpc(accounts_dir=args.accounts_dir) as rpc: deltachat = DeltaChat(rpc) core_version = (deltachat.get_system_info()).deltachat_core_version accounts = deltachat.get_all_accounts() diff --git a/deltachat-rpc-client/src/deltachat_rpc_client/rpc.py b/deltachat-rpc-client/src/deltachat_rpc_client/rpc.py index a7ec79dc4..76801e851 100644 --- a/deltachat-rpc-client/src/deltachat_rpc_client/rpc.py +++ b/deltachat-rpc-client/src/deltachat_rpc_client/rpc.py @@ -54,18 +54,13 @@ class RpcMethod: class Rpc: """RPC client.""" - def __init__(self, accounts_dir: Optional[str] = None, rpc_server_path="deltachat-rpc-server", **kwargs): + def __init__(self, accounts_dir: Optional[str] = None, rpc_server_path="deltachat-rpc-server"): """Initialize RPC client. The given arguments will be passed to subprocess.Popen(). """ - if accounts_dir: - kwargs["env"] = { - **kwargs.get("env", os.environ), - "DC_ACCOUNTS_PATH": str(accounts_dir), - } + self._accounts_dir = accounts_dir - self._kwargs = kwargs self.rpc_server_path = rpc_server_path self.process: subprocess.Popen self.id_iterator: Iterator[int] @@ -102,7 +97,10 @@ class Rpc: # `process_group` is not supported before Python 3.11. popen_kwargs["preexec_fn"] = os.setpgrp # noqa: PLW1509 - popen_kwargs.update(self._kwargs) + if self._accounts_dir: + popen_kwargs["env"] = os.environ.copy() + popen_kwargs["env"]["DC_ACCOUNTS_PATH"] = str(self._accounts_dir) + process = subprocess.Popen(self.rpc_server_path, **popen_kwargs) return process.stdout, process.stdin