Quixote FAQ =========== This FAQ provides quick answers to common questions about Quixote. .. _do-i-need-to-know-python-to-use-quixote-: Do I need to know Python to use Quixote ? ----------------------------------------- While being a Python expert would certainly help when using Quixote, there are no requirements except for basic knowledge of the syntax. .. _i-have-a-moulinette-how-can-i-test-it-: I have a moulinette, how can I test it ? ---------------------------------------- Moulinettes can be tested locally using the *Dulcinea* tool, which can be installed through ``pip``. See the :doc:`Testing your moulinette ` tutorial. .. _i-already-have-a-moulinette-in-another-language-can-i-adapt-it-: I already have a moulinette in another language, can I adapt it ? ----------------------------------------------------------------- Yes. Here are a few common cases for exising moulinettes: - If your moulinette is already a full-featured program, you can execute it using the :func:`~quixote.inspection.exec.command` built-in from the :mod:`~quixote.inspection` module, and then collect its output or its return code. - If your moulinette is rather a reference program (that is, a correct implementation of the exercise), you can use the :func:`~quixote.inspection.check.diff_exec` built-in (also in the :mod:`~quixote.inspection` module) to check for any difference between the student's delivery and the reference program. This is explained in details in the :doc:`Writing a moulinette with a reference program ` tutorial. .. _which-python-modules-can-i-use-within-quixote-: Which Python modules can I use within Quixote ? ----------------------------------------------- The build and fetch phases are executed in a basic environment, containing the Python Standard Library, Quixote, and the ``requests`` module. The inspection phase is executed inside the environment built by the ``build`` phase, therefore it can contain any module installed by the ``build`` phase. This topic is discussed in details in the :doc:`Writing a moulinette with external Python modules ` tutorial. How can I stop the inspection if a given step fails ? ----------------------------------------------------- Sometimes, a single step is essential to the whole inspection process, in such a way that there is no point in continuing the inspection if that step fails. In order to mark such a step, the :func:`~quixote.inspector` decorator accepts a ``critical`` argument, defaulting it to ``False``. If the argument is instead set to ``True``, and the marked step fails, then the next steps will not be executed, causing the inspection to stop early.