import json import logging import os import sys logging.basicConfig(stream=sys.stdout, level=logging.INFO) LOGGER = logging.getLogger("XPost") def as_json(obj, indent=None, sort_keys=False) -> str: return json.dumps( obj.__dict__ if not isinstance(obj, dict) else obj, default=lambda o: o.__json__() if hasattr(o, "__json__") else o.__dict__, indent=indent, sort_keys=sort_keys, ) def canonical_label(label: str | None, href: str): if not label or label == href: return True split = href.split("://", 1) if len(split) > 1: if split[1] == label: return True return False def safe_get(obj: dict, key: str, default): val = obj.get(key, default) return val if val else default def as_envvar(text: str | None) -> str | None: if not text: return None if text.startswith("env:"): return os.environ.get(text[4:], "") return text