:py:mod:`pyab_experiment.experiment_evaluator`
==============================================

.. py:module:: pyab_experiment.experiment_evaluator


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

Classes
~~~~~~~

.. autoapisummary::

   pyab_experiment.experiment_evaluator.ExperimentEvaluator




.. py:class:: ExperimentEvaluator(source_code: str)


   Experiment evaluator class. What we do here is to take the experiment source,
   compile it, and generate the python functions.
   These functions are then set inside the class to expose them to the outside world

   The advantage is that we can easily load new source code at runtime, while keeping
   tabs of it's checksum to avoid re-compiling the same source file multiple times.
   Also since the class manages the source code & compilation it avoids calls to exec
   from unknown sources, since the code is self generated from the source file that
   follows a strict grammar takes a source code file, generates the python functions
   and plugs them into the class

   .. py:attribute:: _checksum
      :type: str
      :value: ''

      

   .. py:method:: __call__(**kwargs)


   .. py:method:: recompile(source_code: str) -> None

      Recompiles the source code.

      This method takes a string of source code and recompiles it.

      :param source_code: The source code to recompile.
      :type source_code: str

      :returns:

                This method does not return a value, but it recompiles the
                      source code.
      :rtype: None

      :raises YaccError: If the source code is not valid (parsing error,
      :raises or invalid characters):


   .. py:method:: run_experiment(**kwargs)



