Source code for redditwarp.util.praw_config_SYNC
from __future__ import annotations
from typing import Optional, Sequence
from .praw_config import get_praw_config
from ..client_SYNC import Client
[docs]def client_from_praw_config(section_name: str, *, filepath: Optional[str] = None) -> Client:
"""See :meth:`client_SYNC.Client.from_praw_config`."""
config = get_praw_config(filepath)
section_name = section_name or config.default_section
try:
section = config[section_name]
except KeyError:
empty = not any(s.values() for s in config.values())
msg = f"No section named {section_name!r} in{' empty' if empty else ''} praw.ini config."
class StrReprStr(str):
def __repr__(self) -> str:
return str(self)
raise KeyError(StrReprStr(msg)) from None
get = section.get
grant_creds: Sequence[str] = ()
if refresh_token := get('refresh_token'):
grant_creds = (refresh_token,)
elif (username := get('username')) and (password := get('password')):
grant_creds = (username, password)
client = Client(
section['client_id'],
section['client_secret'],
*grant_creds,
)
if x := get('user_agent'):
client.set_user_agent(x)
return client