Source code for jdaviz.configs.default.plugins.about.about

import json

import requests
from packaging.version import Version
from traitlets import Bool, Unicode

from jdaviz.core.registries import tray_registry
from jdaviz.core.template_mixin import PluginTemplateMixin

try:
    from jdaviz import __version__
except ImportError:  # pragma: no cover
    __version__ = "unknown"

__all__ = ['About']


[docs] @tray_registry('about', label="About") class About(PluginTemplateMixin): """Show information about Jdaviz.""" template_file = __file__, "about.vue" jdaviz_version = Unicode("unknown").tag(sync=True) jdaviz_pypi = Unicode("unknown").tag(sync=True) not_is_latest = Bool(False).tag(sync=True) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.jdaviz_version = __version__ if __version__ != "unknown": _ver_pypi = latest_version_from_pypi("jdaviz") if _ver_pypi: self.jdaviz_pypi = _ver_pypi self.not_is_latest = Version(__version__) < Version(_ver_pypi) else: # pragma: no cover self.jdaviz_pypi = "unknown" self.not_is_latest = False
def latest_version_from_pypi(package_name): """Version info for given package or `None`.""" url = f"https://pypi.org/pypi/{package_name}/json" try: r = requests.get(url, timeout=60) except Exception: # nosec # pragma: no cover pass else: if r.ok: try: d = json.loads(r.text) v = d["info"]["version"] except Exception: # nosec # pragma: no cover pass else: return v