import typing class Source: def connect(self, **kwargs): raise NotImplementedError def list(self): raise NotImplementedError def get(self, ids: typing.Collection): raise NotImplementedError def get_json(self, url:str) -> dict: raise NotImplementedError def close(self): raise NotImplementedError