Skip to main content

Python library to populate Moodle question banks using a Cloze/XML format.

Project description

moocloze

Python library to populate Moodle question banks using a Cloze/XML format.

It aims to provide a functionality similar to that of PyCloze, but reducing the necessity of specific knowledge about the Moodle XML or Cloze formats.

Contents:

Installation

The moocloze library is available as a pip package:

pip install moocloze

You can then import it as a normal package in any python code:

import moocloze

Minimal example

The following code (download source)

import moocloze

questions = [moocloze.Question(
    name=f"How much is {i}+{i}",
    contents=f"What is the result of {i}+{i}? "
             f"{moocloze.Numerical(i + i)}")
    for i in range(3)]

moocloze.questions_to_xml_file(questions=questions, output_path="example_quiz.xml")

generates a file in Cloze/XML format (download XML file) that can be imported in Moodle. Once imported, 3 questions are added to the bank, one of which is shown next:

Example output of a numerical question

Creating questions and importing into Moodle

The following workflow is proposed to add questions to a Moodle category

  • In your computer:

    1. Create a list of (related) Question instances.
      import moocloze
      questions = [moocloze.Question(name="...", contents="..."), ...]
      
    2. Export the set of questions into an .xml file with Moodle XML/Cloze format
      moocloze.questions_to_xml_file(questions=questions, output_path="my_questions.xml")
      
  • In Moodle:

    1. Go to your course's Question bank

      question bank

    2. (Optional) Go to the question Categories page and add your category

      categories

    3. Go to the question Import page, select the category where questions are to be imported (here "Raw audio file size", shown under the "General" section), upload your xml file (e.g., "my_questions.xml" in the example below) and press "Import":

      import

    4. You will be shown a confirmation page. If no errors are found, you are done!

Full example with all field types

You can find a complete example that produces a single question using all supported field (response) types:

  • moocloze.Numerical (integers or floats, with arbitrary error tolerance)
  • moocloze.Multiresponse (one or more valid options using checkboxes)
  • moocloze.Multichoice (one valid option among several, using dropdown menus or radio buttons)
  • moocloze.ShortAnswer (short text)

A screenshot of the question is shown next (see full size):

Adding feedback to the questions

Whenever you instantiate the moocloze.Question, you can pass a general_feedback parameter to it, as in:

import moocloze

question = moocloze.Question(
    name=f"Simple question",
    contents=f"How many sides does a dodecahedron have?"
             f"{moocloze.Numerical(answer=12, show_tolerance=False)}",
    general_feedback="Do not confuse it with the icosahedron (20 faces).")

import

References

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

moocloze-1.0.2.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

moocloze-1.0.2-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file moocloze-1.0.2.tar.gz.

File metadata

  • Download URL: moocloze-1.0.2.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for moocloze-1.0.2.tar.gz
Algorithm Hash digest
SHA256 4072367be53502ef295837903e99b9fa9f9f729f626cdf7124ad9e675d1671d1
MD5 9ea2b59914347f4e8908b433d1e3e98a
BLAKE2b-256 e5927ef892d35688a7d38e41cba37e76e7eb3fd89c0774b0a042ff9b45ba2d3e

See more details on using hashes here.

File details

Details for the file moocloze-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: moocloze-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 7.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for moocloze-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ef35312ba1aac5d4c42eddabaf9fc79f78ad55a1e92c961e00ccbb9a302fda43
MD5 2dfd8a26fa92948323444e359290d686
BLAKE2b-256 7c600df4c52299ed0db98be4d1c77b5255cf81d6ce39359f7cc3a15c732835e2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page