Metadata-Version: 2.1
Name: INGInious
Version: 0.9.2
Summary: An intelligent grader that allows secured and automated testing of code made by students.
Author-email: INGInious contributors <inginious@info.ucl.ac.be>
License: AGPL 3
Project-URL: Homepage, https://inginious.org/
Project-URL: Documentation, https://docs.inginious.org
Project-URL: Repository, https://github.com/INGInious/INGInious
Project-URL: Issues, https://github.com/INGInious/INGInious/issues
Keywords: autograder,programming,training,learning,education,mooc,autograding,evaluation,grading,exercise,interview,assessment,lti,learn-to-code,programming-exercise,e-assessment,technical-coding-interview,coding-interviews,inginious
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: JavaScript
Classifier: Framework :: Flask
Classifier: Framework :: Pytest
Classifier: Framework :: Setuptools Plugin
Classifier: Framework :: Sphinx
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Education
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Classifier: Topic :: Education
Classifier: Topic :: Education :: Computer Aided Instruction (CAI)
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Software Development
Classifier: Operating System :: POSIX :: Linux
Requires-Python: >=3.9
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: docker==7.1.0
Requires-Dist: docutils==0.21.2
Requires-Dist: Flask==3.0.2
Requires-Dist: Flask-Mail==0.10.0
Requires-Dist: itsdangerous==2.2.0
Requires-Dist: Jinja2==3.1.5
Requires-Dist: lti==0.9.5
Requires-Dist: PyLTI1p3==2.0.0
Requires-Dist: MarkupSafe==3.0.2
Requires-Dist: msgpack==1.1.0
Requires-Dist: natsort==8.4.0
Requires-Dist: psutil==6.1.1
Requires-Dist: pymongo==4.11
Requires-Dist: python-dotenv==1.1.1
Requires-Dist: pytidylib==0.3.2
Requires-Dist: PyYAML==6.0.2
Requires-Dist: pyzmq==26.2.1
Requires-Dist: requests==2.31.0
Requires-Dist: requests-oauthlib==2.0.0
Requires-Dist: sh==2.2.1
Requires-Dist: watchdog==6.0.0
Requires-Dist: Werkzeug==3.0.1
Requires-Dist: WsgiDAV==4.3.3
Requires-Dist: zipstream==1.1.4
Requires-Dist: pytidylib==0.3.2
Requires-Dist: argon2-cffi==23.1.0
Provides-Extra: ldap
Requires-Dist: ldap3==2.9.1; extra == "ldap"
Provides-Extra: saml2
Requires-Dist: python3-saml==1.16.0; extra == "saml2"
Provides-Extra: test
Requires-Dist: pytest==8.3.4; extra == "test"
Requires-Dist: coverage==7.6.9; extra == "test"
Provides-Extra: doc
Requires-Dist: ipython==8.12.3; extra == "doc"
Requires-Dist: sphinx==7.4.7; extra == "doc"
Requires-Dist: sphinx-autodoc-typehints==2.3.0; extra == "doc"
Requires-Dist: sphinx-rtd-theme==3.0.0; extra == "doc"
Requires-Dist: sphinx-tabs==3.4.5; extra == "doc"

INGInious
=========

.. image:: https://app.codacy.com/project/badge/Grade/a555b98bda7444d8afcd06963178193d
   :alt: Codacy Badge
   :target: https://app.codacy.com/gh/INGInious/INGInious/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade
.. image:: https://app.codacy.com/project/badge/Coverage/a555b98bda7444d8afcd06963178193d
   :alt: Codacy coverage Badge
   :target: https://app.codacy.com/gh/INGInious/INGInious/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_Coverage
.. image:: https://github.com/INGInious/INGInious/actions/workflows/ci.yml/badge.svg
    :target: https://github.com/INGInious/INGInious/actions
.. image:: https://github.com/INGInious/INGInious/actions/workflows/env_containers.yml/badge.svg
    :target: https://github.com/INGInious/INGInious/actions
.. image:: https://readthedocs.org/projects/inginious/badge/?version=latest
    :target: https://readthedocs.org/projects/inginious/?badge=latest
.. image:: https://weblate.info.ucl.ac.be/widgets/inginious/-/frontend/svg-badge.svg
    :target: https://weblate.info.ucl.ac.be/engage/inginious/?utm_source=widget

INGInious is an intelligent grader that allows secured and automated testing of code made by students.

It is written in Python and uses Docker_ to run student's code inside a secured environment.

INGInious provides a backend which manages interaction with Docker and grade code, and a frontend which allows students to submit their code in a simple and beautiful interface. The frontend also includes a simple administration interface that allows teachers to check the progression of their students and to modify exercices in a simple way.

INGInious can be used as an external grader for Moodle or edX. The course `Constraint Programming`_ uses INGInious to correct students' code.

.. _Docker: https://www.docker.com/
.. _Constraint Programming: https://www.edx.org/learn/computer-programming/universite-catholique-de-louvain-constraint-programming

How to install?
---------------

Simply run:

.. code-block::

   $ docker compose up --build

And access http://localhost:9000 in your browser.

*The default login and password are* ``superadmin``.

The ``--build`` argument is optional, use it if you want to rebuild locally the core containers.
If you want to simply pull them from the project's registry, this argument is not required.

*Note that you can override the registry and containers version by setting the `REGISTRY` and `VERSION` environment variables.*

Docker-compose will create a ``tasks`` folder if it does not exist already.

You can then add new courses to your fresh INGInious instance by installing them in the ``tasks`` folder.

For example, the INGInious tutorial course is installed with the following commands:

.. code-block::

   $ git clone https://github.com/INGInious/demo-tasks.git
   $ mv demo-tasks/tutorial tasks/

*If you encounter permission errors, you should run the following command:*

.. code-block::

   $ sudo chown -R <your_user>:<your_user_group> tasks

*This can happen when the tasks directory is created by docker-compose.*

Note that the ``configuration.deploy.yaml`` file provided is a sample configuration, the secret key **must** be changed by administrators in production deployments.

.. _env-base: https://github.com/INGInious/INGInious/tree/main/base-containers/base
.. _env-default: https://github.com/INGInious/INGInious/tree/main/base-containers/default

The provided ``docker-compose.yaml`` file builds from sources the basic grading environments `env-base`_ and `env-default`_.
It also pulls from the project's registry a basic ``python3`` grading environment.
These three environments are sufficient for a simple INGInious deployment.

Administrators can add grading environments to their instance either by adding them statically to the ``docker-compose.yaml`` file or by pulling them manually from the container registry.

.. _Manual installation: https://docs.inginious.org/en/latest/admin_doc/install_doc/installation.html

`Manual installation`_ is also possible with pip.

Documentation
-------------

The documentation is available on Read the Docs:

- For the latest published version on PyPI : https://docs.inginious.org/
- For the master (dev) branch (not always up to date) : http://docs.inginious.org/en/latest/index.html

On Linux, run ``make html`` in the directory ``/doc`` to create a html version of the documentation.

Roadmap
-------

INGInious is continuously improved. The various Work In Progress tasks are described in the Roadmap_ of the project.
 
 .. _Roadmap: https://github.com/UCL-INGI/INGInious/wiki/Roadmap
 
Notes on security
-----------------

Docker containers can be used securely with SELinux enabled. Please do not run untrusted code without activating SELinux.

