def run(self):
        env = self.state.document.settings.env
        app = env.app

        rst = []

        versions = [
            x.rstrip(".rst")
            for x in listdir(join(app.srcdir, "docs", "releases"))
        ]
        versions.sort(key=V, reverse=True)

        for v in versions:
            rst_text = f".. include:: releases/{v}.rst"
            try:
                hashes = get_sri_hashes_for_version(v)
                rst_text += _SRI_SECTION % v
                for key, val in sorted(hashes.items()):
                    rst_text += f"    ``{key}``, ``{val}``\n"
            except KeyError:
                if v == __version__:
                    raise RuntimeError(
                        f"Missing SRI Hash for full release version {v!r}")

            entry = self._parse(rst_text, "<bokeh-releases>")
            rst.extend(entry)

        return rst
Exemple #2
0
def test_js_resources_hashes_mock_full(monkeypatch) -> None:
    monkeypatch.setattr(buv, "__version__", "1.4.0")
    monkeypatch.setattr(resources, "__version__", "1.4.0")
    r = resources.JSResources()
    assert r.mode == "cdn"
    min_hashes = set(v for k, v in resources.get_sri_hashes_for_version("1.4.0").items() if k.endswith(".min.js") and "api" not in k)
    assert set(r.hashes.values()) == min_hashes
 def test_js_resources_hashes_mock_full(self, monkeypatch: pytest.MonkeyPatch) -> None:
     monkeypatch.setattr(buv, "__version__", "1.4.0")
     monkeypatch.setattr(resources, "__version__", "1.4.0")
     r = deepcopy(resources.JSResources())
     # Skip bokeh-mathjax for older versions
     r.js_components.remove("bokeh-mathjax")
     assert r.mode == "cdn"
     hashes = resources.get_sri_hashes_for_version("1.4.0")
     min_hashes = {v for k, v in hashes.items() if k.endswith(".min.js") and "api" not in k}
     assert set(r.hashes.values()) == min_hashes
Exemple #4
0
    def run(self):
        rst = []

        srcdir = self.env.app.srcdir
        versions = [
            x.rstrip(".rst") for x in listdir(join(srcdir, "docs", "releases"))
            if x.endswith(".rst")
        ]
        versions.sort(key=V, reverse=True)

        for v in versions:
            rst += self.parse(f".. include:: releases/{v}.rst",
                              "<bokeh-releases>")
            try:
                hashes = get_sri_hashes_for_version(v)
                rst += [sri_table(version=v, table=sorted(hashes.items()))]
            except KeyError:
                if v == __version__:
                    raise RuntimeError(
                        f"Missing SRI Hash for full release version {v!r}")

        return rst
Exemple #5
0
def bokeh_cdn_resources():
    """Create script to load Bokeh resources from CDN based on
       installed bokeh version.

    Returns:
        script -- script to load resources from CDN
    """
    included_resources = [
        f'bokeh-{bokeh_release_ver}.min.js',
        f'bokeh-api-{bokeh_release_ver}.min.js',
        f'bokeh-tables-{bokeh_release_ver}.min.js',
        f'bokeh-widgets-{bokeh_release_ver}.min.js'
    ]

    resources = '\n    '
    for key, value in get_sri_hashes_for_version(bokeh_release_ver).items():
        if key in included_resources:
            resources += '<script type="text/javascript" '
            resources += f'src="{BOKEH_CDN}/{key}" '
            resources += f'integrity="sha384-{value}" '
            resources += 'crossorigin="anonymous"></script>\n    '

    resources += BOKEH_BROWSER_LOGGING
    return resources
Exemple #6
0
 def test_get_sri_hashes_for_version(self) -> None:
     all_hashes = resources.get_all_sri_hashes()
     for key in all_hashes:
         h = resources.get_sri_hashes_for_version(key)
         assert h == all_hashes[key]
Exemple #7
0
 def test_get_sri_hashes_for_version_bad(self) -> None:
     with pytest.raises(KeyError):
         resources.get_sri_hashes_for_version("junk")
Exemple #8
0
 def test_get_sri_hashes_for_version(self):
     all_hashes = resources.get_all_sri_hashes()
     for key, value in all_hashes.items():
         h = resources.get_sri_hashes_for_version(key)
         assert h == all_hashes[key]