import importlib import inspect import logging import pkgutil import sys from collections import defaultdict from copy import copy from pathlib import Path from typing import Dict, Generator, List, Set, Type from ._bandcamp import Bandcamp from ._encyclopaedia_metallum import EncyclopaediaMetallum from ._genius import Genius from ._musify import Musify from ._youtube import YouTube from ._youtube_music import YoutubeMusic def import_children(): _page_directory = Path(__file__).parent _stem_blacklist = set(["__pycache__", "__init__"]) for _file in _page_directory.iterdir(): if _file.stem in _stem_blacklist: continue logging.debug(f"importing {_file.absolute()}") exec(f"from . import {_file.stem}") # module_blacklist = set(sys.modules.keys()) import_children() """ classes = set() print(__name__) for module_name, module in sys.modules.items(): if module_name in module_blacklist or not module_name.startswith(__name__): continue print("scanning module", module_name) for name, obj in inspect.getmembers(module, predicate=inspect.isclass): _module = obj.__module__ if _module.startswith(__name__) and hasattr(obj, "SOURCE_TYPE"): print("checking object", name, obj.__module__) classes.add(obj) print() print(*(c.__name__ for c in classes), sep=",\t") __all__ = [c.__name__ for c in classes] """