:py:mod:`mipcandy.frontend.prototype`
=====================================

.. py:module:: mipcandy.frontend.prototype

.. autodoc2-docstring:: mipcandy.frontend.prototype
   :allowtitles:

Module Contents
---------------

Classes
~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`Frontend <mipcandy.frontend.prototype.Frontend>`
     - .. autodoc2-docstring:: mipcandy.frontend.prototype.Frontend
          :summary:

Functions
~~~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`create_hybrid_frontend <mipcandy.frontend.prototype.create_hybrid_frontend>`
     - .. autodoc2-docstring:: mipcandy.frontend.prototype.create_hybrid_frontend
          :summary:

API
~~~

.. py:class:: Frontend(secrets: mipcandy.types.Settings)
   :canonical: mipcandy.frontend.prototype.Frontend

   Bases: :py:obj:`object`

   .. autodoc2-docstring:: mipcandy.frontend.prototype.Frontend

   .. rubric:: Initialization

   .. autodoc2-docstring:: mipcandy.frontend.prototype.Frontend.__init__

   .. py:method:: require_nonempty_secret(entry: str, *, required_type: type | None = None) -> mipcandy.types.Setting
      :canonical: mipcandy.frontend.prototype.Frontend.require_nonempty_secret

      .. autodoc2-docstring:: mipcandy.frontend.prototype.Frontend.require_nonempty_secret

   .. py:method:: on_experiment_created(experiment_id: str, trainer: str, model: str, note: str, num_params: float, num_macs: float, num_epochs: int, early_stop_tolerance: int) -> None
      :canonical: mipcandy.frontend.prototype.Frontend.on_experiment_created

      .. autodoc2-docstring:: mipcandy.frontend.prototype.Frontend.on_experiment_created

   .. py:method:: on_experiment_updated(experiment_id: str, epoch: int, metrics: dict[str, list[float]], early_stop_tolerance: int) -> None
      :canonical: mipcandy.frontend.prototype.Frontend.on_experiment_updated

      .. autodoc2-docstring:: mipcandy.frontend.prototype.Frontend.on_experiment_updated

   .. py:method:: on_experiment_completed(experiment_id: str) -> None
      :canonical: mipcandy.frontend.prototype.Frontend.on_experiment_completed

      .. autodoc2-docstring:: mipcandy.frontend.prototype.Frontend.on_experiment_completed

   .. py:method:: on_experiment_interrupted(experiment_id: str, error: Exception) -> None
      :canonical: mipcandy.frontend.prototype.Frontend.on_experiment_interrupted

      .. autodoc2-docstring:: mipcandy.frontend.prototype.Frontend.on_experiment_interrupted

.. py:function:: create_hybrid_frontend(*frontends: mipcandy.frontend.prototype.Frontend) -> type[mipcandy.frontend.prototype.Frontend]
   :canonical: mipcandy.frontend.prototype.create_hybrid_frontend

   .. autodoc2-docstring:: mipcandy.frontend.prototype.create_hybrid_frontend
