import logging, sys, os import json 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