Source code for jupyterlite_pyodide_lock.lockers.handlers.solver
"""A ``tornado`` handler that serves a ``pyodide`` application, solves, and quits."""
# Copyright (c) jupyterlite-pyodide-lock contributors.
# Distributed under the terms of the BSD-3-Clause License.
from __future__ import annotations
from pathlib import Path
from typing import TYPE_CHECKING, Any
from jupyterlite_core.constants import UTF8
from tornado.template import Template
from tornado.web import RequestHandler
if TYPE_CHECKING:
from logging import Logger
[docs]
class SolverHTML(RequestHandler):
"""Render a static HTML page to run ``micropip.freeze``."""
context: dict[str, str]
log: Logger
template: Template
[docs]
def initialize(self, context: dict[str, str], *args: Any, **kwargs: Any) -> None:
"""Initialize handler instance members."""
log = kwargs.pop("log")
super().initialize(*args, **kwargs)
self.context = context
self.log = log
self.template = Template(
(Path(__file__).parent / "lock.html.j2").read_text(**UTF8)
)
[docs]
async def get(self, *args: Any, **kwargs: Any) -> None:
"""Handle a GET request."""
rendered = self.template.generate(**self.context)
self.log.debug("[solver] lock HTML\n%s", rendered.decode("utf-8"))
await self.finish(rendered)