def get_github_issue_url(exc_info): """Gives an URL for a pre-filled github issue based on an exception Returns: str """ error_title = (text_type(exc_info[1]).strip() or u"\n").splitlines()[0] title = u"[Error] %s: %s" % (exc_info[0].__name__, error_title) error_text = u"\n".join(format_exception(*exc_info)) body = u"""\ * What did you try to do when the error occurred? Error Details: ``` %s Version: %s Python: %s Platform: %s ``` """ % (error_text, quodlibet.get_build_description(), sys.version, platform.platform()) return build_issue_url(title, body)
def __init__(self, parent, app): super(AboutDialog, self).__init__() self.set_transient_for(parent) self.set_program_name(app.name) self.set_version(quodlibet.get_build_description()) self.set_authors(const.AUTHORS) self.set_artists(const.ARTISTS) self.set_logo_icon_name(app.icon_name) def chunks(l, n): return [l[i : i + n] for i in range(0, len(l), n)] is_real_player = app.player.name != "Null" format_names = sorted([t.format for t in formats.types]) fmts = ",\n".join(", ".join(c) for c in chunks(format_names, 4)) text = [] text.append(_("Supported formats: %s") % fmts) text.append("") if is_real_player: text.append(_("Audio device: %s") % app.player.name) text.append("Python: %s" % platform.python_version()) text.append("Mutagen: %s" % fver(mutagen.version)) text.append("GTK+: %s (%s)" % (fver(gtk_version), get_backend_name())) text.append("PyGObject: %s" % fver(pygobject_version)) if is_real_player: text.append(app.player.version_info) self.set_comments("\n".join(text)) self.set_license_type(Gtk.License.GPL_2_0) self.set_translator_credits("\n".join(const.TRANSLATORS)) self.set_website(const.WEBSITE) self.set_copyright(const.COPYRIGHT + "\n" + "<%s>" % const.SUPPORT_EMAIL)
def get_sentry(): """Returns a cached Sentry instance Returns: Sentry """ # reverse, so it isn't so easy to search for at least SENTRY_DSN = ( "514241/oi.yrtnes@0818e5ab0218038bcbb41f049ec5de21:" "0d15f73b978d143b5e84030a1ddf9a73//:sptth")[::-1] sentry = Sentry(SENTRY_DSN) sentry.add_tag("release", quodlibet.get_build_description()) sentry.add_tag("build_type", BUILD_TYPE) sentry.add_tag("build_info", BUILD_INFO) sentry.add_tag("mutagen_version", fver(mutagen.version)) sentry.add_tag("python_version", platform.python_version()) sentry.add_tag("gtk_version", fver(gtk_version)) sentry.add_tag("gtk_backend", get_backend_name()) sentry.add_tag("pygobject_version", fver(pygobject_version)) sentry.add_tag("pycairo_version", fver(cairo.version_info)) sentry.add_tag("platform", platform.platform()) return sentry
def __init__(self, parent, app): super(AboutDialog, self).__init__() self.set_transient_for(parent) self.set_program_name(app.name) self.set_version(quodlibet.get_build_description()) self.set_authors(const.AUTHORS) self.set_artists(const.ARTISTS) self.set_logo_icon_name(app.icon_name) def chunks(l, n): return [l[i:i + n] for i in range(0, len(l), n)] is_real_player = app.player.name != "Null" format_names = sorted([t.format for t in formats.types]) fmts = ",\n".join(", ".join(c) for c in chunks(format_names, 4)) text = [] text.append(_("Supported formats: %s") % fmts) text.append("") if is_real_player: text.append(_("Audio device: %s") % app.player.name) text.append("Python: %s" % platform.python_version()) text.append("Mutagen: %s" % fver(mutagen.version)) text.append("GTK+: %s (%s)" % (fver(gtk_version), get_backend_name())) text.append("PyGObject: %s" % fver(pygobject_version)) if is_real_player: text.append(app.player.version_info) self.set_comments("\n".join(text)) self.set_license_type(Gtk.License.GPL_2_0) self.set_translator_credits("\n".join(const.TRANSLATORS)) self.set_website(const.WEBSITE) self.set_copyright(const.COPYRIGHT + "\n" + "<%s>" % const.SUPPORT_EMAIL)
def __init__(self, parent, app): super().__init__() self.set_transient_for(parent) self.set_program_name(app.name) self.set_version(quodlibet.get_build_description()) self.set_authors(const.AUTHORS) self.set_artists(const.ARTISTS) self.set_logo_icon_name(app.icon_name) self.set_comments(app.description) self.set_license_type(Gtk.License.GPL_2_0) self.set_translator_credits("\n".join(const.TRANSLATORS)) self.set_website(const.WEBSITE) self.set_copyright(f"{const.COPYRIGHT}\n{const.SUPPORT_EMAIL}")
def __init__(self, parent, app): super(AboutDialog, self).__init__() self.set_transient_for(parent) self.set_program_name(app.name) self.set_version(quodlibet.get_build_description()) self.set_authors(const.AUTHORS) self.set_artists(const.ARTISTS) self.set_logo_icon_name(app.icon_name) self.set_comments(app.description) self.set_license_type(Gtk.License.GPL_2_0) self.set_translator_credits("\n".join(const.TRANSLATORS)) self.set_website(const.WEBSITE) self.set_copyright(const.COPYRIGHT + "\n" + "<%s>" % const.SUPPORT_EMAIL)
def format_dump_header(type_, value, traceback): """Returns system information and the traceback as`text_type`""" lines = [ u"=== SYSTEM INFORMATION:" u"", u"Quod Libet %s" % quodlibet.get_build_description(), u"Mutagen %s" % mutagen.version_string, u"Python %s %s" % (sys.version, sys.platform), u"Platform %s" % platform.platform(), u"=== STACK TRACE", u"", ] lines.extend(format_exception(type_, value, traceback)) lines.append(u"") return os.linesep.join(lines)
def format_dump_header(exc_info): """Returns system information and the traceback Args: exc_info (tuple): sys.exc_info() result tuple Returns: text_type """ lines = [ u"=== SYSTEM INFORMATION:" u"", u"Quod Libet %s" % quodlibet.get_build_description(), u"Mutagen %s" % mutagen.version_string, u"Python %s %s" % (sys.version, sys.platform), u"Platform %s" % platform.platform(), u"=== STACK TRACE", u"", ] lines.extend(format_exception(*exc_info)) lines.append(u"") return os.linesep.join(lines)
def test_get_build_description(self): quodlibet.get_build_description()