Metadata-Version: 2.1
Name: INGInious
Version: 0.9.1
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: 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: argon2-cffi==23.1.0
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"
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"

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

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

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.

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.

.. _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.

