===================
Feature
-------
- Improve Documentation
- Added documentation using Sphinx, therefore a workflow was created to build and push the website.
- The build documentation will be pushed to a separate branch ``gh-pages``.
- The API of the class PyExperimenter has been updated to be accessible via documentation.
- Updated README to refer to the documentation.
- Converted project to pyproject.toml using Poetry
- Created pyproject.toml via Poetry.
- Added all dependencies for PyExperimenter itself as well as for the development.
- Updated Experiment Handling
- The experiment configuration field ``cpu.max`` was renamed to ``n_jobs``.
- ``PyExperimenter.execute()`` now spawns as many workers as defined by ``n_jobs``.
- The open experiment will not be pulled once in advance, but within each call of the ``PyExperimenter._execution_wrapper()``. This is completely handled by the ``SELECT`` call, including the ``randomize`` (if given), and limits the results to ``1``. In the same transaction of pulling an open experiment, its status is set to ``running``.
- An open experiment is only pulled if ``max_experiments`` has not been reached (except for ``-1``).
- File holding all exceptions was renamed to ``exceptions.py``.
- Modified functionality to reset experiments
- Added Enum ``ExperimentStatus``.
- Modified ``experimenter.reset_experiments()`` to be able to get
- single ``ExperimentStatus``
- list of ``ExperimentStatus``
- ``"all"`` to reset all ``ExperimentStatus``
- Added method ``experimenter.delete_table()``.
- Finalized paper draft
Examples
--------
- Updated due to latest changes and renamings
- Referenced documentation within examples
Fix
---
- Bugfix of wrong column order when writing to DB
- Unfavorable pulling experiments has been changed (see above)
Tests
-----
- Add workflow to automatically check tests
- Adds a simple test runner using GitHub Actions.
- Uses poetry to install the package and locked dependencies.
- Caching the virtual environment. This prevents having to install it every time and cuts down on CI roundtrip times.
- It tests a matrix of various python versions (3.7, 3.8, 3.9) and OS versions (Ubuntu, MacOS, Windows). Python 3.10 is excluded for now, since installing some of the dependencies takes a very long time.