Example #1
0
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)
Example #2
0
    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)
Example #3
0
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
Example #4
0
    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)
Example #5
0
 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}")
Example #6
0
 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)
Example #7
0
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)
Example #8
0
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)
Example #9
0
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)
Example #10
0
 def test_get_build_description(self):
     quodlibet.get_build_description()
Example #11
0
 def test_get_build_description(self):
     quodlibet.get_build_description()