def init(): global browsers # ignore double init (for the test suite) if browsers: return this_dir = os.path.dirname(__file__) load_pyc = os.name == 'nt' modules = load_dir_modules(this_dir, package=__package__, load_compiled=load_pyc) user_dir = os.path.join(quodlibet.get_user_dir(), "browsers") if os.path.isdir(user_dir): modules += load_dir_modules(user_dir, package="quodlibet.fake.browsers", load_compiled=load_pyc) for browser in modules: try: browsers.extend(browser.browsers) except AttributeError: print_w("%r doesn't contain any browsers." % browser.__name__) def is_browser(Kind): return isinstance(Kind, type) and issubclass(Kind, Browser) browsers = filter(is_browser, browsers) if not browsers: raise SystemExit("No browsers found!") browsers.sort(key=lambda Kind: Kind.priority)
def test_load_dir_modules(self): h = self._create_mod("x.py") h.write(b"test=42\n") h.close() mods = load_dir_modules(self.d, "qlfake") self.failUnlessEqual(len(mods), 1) self.failUnlessEqual(mods[0].test, 42)
def init(): """Import all browsers from this package and from the user directory. After this is called the global `browers` list will contain all classes sorted by priority. Can be called multiple times. """ global browsers, default # ignore double init (for the test suite) if browsers: return this_dir = os.path.dirname(__file__) load_pyc = util.is_windows() or util.is_osx() modules = load_dir_modules(this_dir, package=__package__, load_compiled=load_pyc) user_dir = os.path.join(quodlibet.get_user_dir(), "browsers") if os.path.isdir(user_dir): modules += load_dir_modules(user_dir, package="quodlibet.fake.browsers", load_compiled=load_pyc) for browser in modules: try: browsers.extend(browser.browsers) except AttributeError: print_w("%r doesn't contain any browsers." % browser.__name__) def is_browser(Kind): return isinstance(Kind, type) and issubclass(Kind, Browser) browsers = list(filter(is_browser, browsers)) if not browsers: raise SystemExit("No browsers found!") browsers.sort(key=lambda Kind: Kind.priority) try: default = get("SearchBar") except ValueError: raise SystemExit("Default browser not found!")
def init(): """Import all browsers from this package and from the user directory. After this is called the global `browers` list will contain all classes sorted by priority. Can be called multiple times. """ global browsers, default # ignore double init (for the test suite) if browsers: return this_dir = os.path.dirname(__file__) load_pyc = util.is_windows() or util.is_osx() modules = load_dir_modules(this_dir, package=__package__, load_compiled=load_pyc) user_dir = os.path.join(quodlibet.get_user_dir(), "browsers") if os.path.isdir(user_dir): modules += load_dir_modules(user_dir, package="quodlibet.fake.browsers", load_compiled=load_pyc) for browser in modules: try: browsers.extend(browser.browsers) except AttributeError: print_w("%r doesn't contain any browsers." % browser.__name__) def is_browser(Kind): return isinstance(Kind, type) and issubclass(Kind, Browser) browsers = filter(is_browser, browsers) if not browsers: raise SystemExit("No browsers found!") browsers.sort(key=lambda Kind: Kind.priority) try: default = get("SearchBar") except ValueError: raise SystemExit("Default browser not found!")
def test_load_dir_modules_packages(self): h = self._create_pkg("somepkg2") h2 = self._create_mod("sub.py", "somepkg2") h2.write(b"test=456\n") h2.close() h.write(b"from .sub import *\nmain=654\n") h.close() mods = load_dir_modules(self.d, "qlfake") self.failUnlessEqual(len(mods), 1) self.failUnlessEqual(mods[0].test, 456)
def test_load_dir_modules_both(self): h = self._create_mod("x1.py") h.write(b"test=99\n") h.close() py_compile_legacy(h.name) self.failUnlessEqual(set(os.listdir(self.d)), {"x1.pyc", "x1.py"}) mods = load_dir_modules(self.d, "qlfake", load_compiled=True) self.failUnlessEqual(len(mods), 1) self.failUnlessEqual(mods[0].test, 99)
def test_load_dir_modules_compiled_ignore(self): h = self._create_mod("x1.py") h.write(b"test=24\n") h.close() py_compile_legacy(h.name) os.unlink(h.name) assert os.listdir(self.d) == ["x1.pyc"] mods = load_dir_modules(self.d, "qlfake") self.failUnlessEqual(len(mods), 0)
def test_load_dir_modules_compiled(self): h = self._create_mod("x1.py") h.write(b"test=99\n") h.close() py_compile_legacy(h.name) os.unlink(h.name) assert os.listdir(self.d) == ["x1.pyc"] mods = load_dir_modules(self.d, "qlfake", load_compiled=True) self.failUnlessEqual(len(mods), 1) self.failUnlessEqual(mods[0].test, 99)
def init_devices(): global devices load_pyc = util.is_windows() or util.is_osx() modules = load_dir_modules(dirname(__file__), package=__package__, load_compiled=load_pyc) for mod in modules: try: devices.extend(mod.devices) except AttributeError: print_w("%r doesn't contain any devices." % mod.__name__) devices.sort(key=lambda d: repr(d))
def init_devices(): global devices load_pyc = os.name == 'nt' modules = load_dir_modules(dirname(__file__), package=__package__, load_compiled=load_pyc) for mod in modules: try: devices.extend(mod.devices) except AttributeError: print_w("%r doesn't contain any devices." % mod.__name__) devices.sort()
def init_devices(): global devices load_pyc = util.is_windows() or util.is_osx() modules = load_dir_modules(dirname(__file__), package=__package__, load_compiled=load_pyc) for mod in modules: try: devices.extend(mod.devices) except AttributeError: print_w("%r doesn't contain any devices." % mod.__name__) devices.sort()
def init(): """Load/Import all formats. Before this is called loading a file and unpickling will not work. """ global mimes, loaders, types MinVersions.MUTAGEN.check(mutagen.version) base = util.get_module_dir() load_pyc = util.is_windows() or util.is_osx() formats = load_dir_modules(base, package=__package__, load_compiled=load_pyc) module_names = [] for format in formats: name = format.__name__ for ext in format.extensions: loaders[ext] = format.loader types.update(format.types) if format.extensions: for type_ in format.types: mimes.update(type_.mimes) module_names.append(name.split(".")[-1]) # Migrate pre-0.16 library, which was using an undocumented "feature". sys.modules[name.replace(".", "/")] = format # Migrate old layout if name.startswith("quodlibet."): sys.modules[name.split(".", 1)[1]] = format # This can be used for the quodlibet.desktop file desktop_mime_types = "MimeType=" + \ ";".join(sorted({m.split(";")[0] for m in mimes})) + ";" print_d(desktop_mime_types) s = ", ".join(sorted(module_names)) print_d("Supported formats: %s" % s) if not loaders: raise SystemExit("No formats found!")
def init(): global mimes, _infos, modules, names import mutagen if mutagen.version < MinVersions.MUTAGEN: raise ImportError( "Mutagen %s required. %s found." % (MinVersions.MUTAGEN, mutagen.version_string)) base = os.path.dirname(__file__) load_pyc = os.name == 'nt' formats = load_dir_modules(base, package=__package__, load_compiled=load_pyc) for format in formats: name = format.__name__ for ext in format.extensions: _infos[ext] = format.info types.extend(format.types) if format.extensions: for type_ in format.types: mimes.update(type_.mimes) names.append(type_.format) modules.append(name.split(".")[-1]) # Migrate pre-0.16 library, which was using an undocumented "feature". sys.modules[name.replace(".", "/")] = format # Migrate old layout if name.startswith("quodlibet."): sys.modules[name.split(".", 1)[1]] = format modules.sort() names.sort() # This can be used for the quodlibet.desktop file desktop_mime_types = "MimeType=" + \ ";".join(sorted({m.split(";")[0] for m in mimes})) + ";" print_d(desktop_mime_types) if not _infos: raise SystemExit("No formats found!")
def init(): global mimes, _infos, modules, names, _extensions import mutagen MinVersions.MUTAGEN.check(mutagen.version) base = util.get_module_dir() load_pyc = util.is_windows() or util.is_osx() formats = load_dir_modules(base, package=__package__, load_compiled=load_pyc) for format in formats: name = format.__name__ for ext in format.extensions: _infos[ext] = format.info types.extend(format.types) if format.extensions: for type_ in format.types: mimes.update(type_.mimes) names.append(type_.format) modules.append(name.split(".")[-1]) # Migrate pre-0.16 library, which was using an undocumented "feature". sys.modules[name.replace(".", "/")] = format # Migrate old layout if name.startswith("quodlibet."): sys.modules[name.split(".", 1)[1]] = format modules.sort() names.sort() # This can be used for the quodlibet.desktop file desktop_mime_types = "MimeType=" + \ ";".join(sorted({m.split(";")[0] for m in mimes})) + ";" print_d(desktop_mime_types) if not _infos: raise SystemExit("No formats found!") _extensions = tuple(_infos.keys())
def init(): global mimes, _infos, modules, names, _extensions import mutagen MinVersions.MUTAGEN.check(mutagen.version) base = os.path.dirname(__file__) load_pyc = util.is_windows() or util.is_osx() formats = load_dir_modules(base, package=__package__, load_compiled=load_pyc) for format in formats: name = format.__name__ for ext in format.extensions: _infos[ext] = format.info types.extend(format.types) if format.extensions: for type_ in format.types: mimes.update(type_.mimes) names.append(type_.format) modules.append(name.split(".")[-1]) # Migrate pre-0.16 library, which was using an undocumented "feature". sys.modules[name.replace(".", "/")] = format # Migrate old layout if name.startswith("quodlibet."): sys.modules[name.split(".", 1)[1]] = format modules.sort() names.sort() # This can be used for the quodlibet.desktop file desktop_mime_types = "MimeType=" + \ ";".join(sorted({m.split(";")[0] for m in mimes})) + ";" print_d(desktop_mime_types) if not _infos: raise SystemExit("No formats found!") _extensions = tuple(_infos.keys())
def init(): global mimes, _infos, modules, names import mutagen if mutagen.version < MinVersions.MUTAGEN: raise ImportError("Mutagen %s required. %s found." % (MinVersions.MUTAGEN, mutagen.version_string)) base = os.path.dirname(__file__) load_pyc = os.name == 'nt' formats = load_dir_modules(base, package=__package__, load_compiled=load_pyc) for format in formats: name = format.__name__ for ext in format.extensions: _infos[ext] = format.info types.extend(format.types) if format.extensions: for type_ in format.types: mimes.update(type_.mimes) names.append(type_.format) modules.append(name.split(".")[-1]) # Migrate pre-0.16 library, which was using an undocumented "feature". sys.modules[name.replace(".", "/")] = format # Migrate old layout if name.startswith("quodlibet."): sys.modules[name.split(".", 1)[1]] = format modules.sort() names.sort() # This can be used for the quodlibet.desktop file desktop_mime_types = "MimeType=" + \ ";".join(sorted(set([m.split(";")[0] for m in mimes]))) + ";" print_d(desktop_mime_types) if not _infos: raise SystemExit("No formats found!")
def init() -> None: """Import all browsers from this package and from the user directory. After this is called the global `browsers` list will contain all classes sorted by priority. Can be called multiple times. """ global browsers, default # ignore double init (for the test suite) if browsers: return this_dir = util.get_module_dir() modules = load_dir_modules(this_dir, package=__package__) for browser in modules: try: browsers.extend(browser.browsers) except AttributeError: util.print_w("%r doesn't contain any browsers." % browser.__name__) def is_browser(Kind): return isinstance(Kind, type) and issubclass(Kind, Browser) browsers = list(filter(is_browser, browsers)) if not browsers: raise SystemExit("No browsers found!") browsers.sort(key=lambda Kind: Kind.priority) try: default = get("SearchBar") except ValueError: raise SystemExit("Default browser not found!")