Skip to main content

A simple, elegant Python framework for creating and running interactive quizzes

Project description

Quizy

Overview

A lightweight, API-first Python quiz framework for creating interactive quizzes and assessments. Features async execution, timers, partial credit, shuffling, and AI-powered question generation.

Key Features:

  • Async/await support with execute_async()
  • Real-time countdown timers with visual feedback
  • Partial credit for flexible grading
  • Question option shuffling and randomization
  • Interactive CLI with color-coded results
  • AI-powered question generation via OpenAI

Installation

pip install quizy # comes with OpenAI

Manual Questions

Create different question types:

from quizy import Quiz, MultipleChoiceQuestion, MatchingQuestion

quiz = Quiz(title="My Quiz", time_limit=60)

# Multiple Choice
quiz.add_question(MultipleChoiceQuestion(
    text="What is the capital of France?",
    options=["London", "Berlin", "Paris", "Madrid"],
    correct_answer="Paris",
    shuffle_options=True,
    time_limit=10
))

# Matching
quiz.add_question(MatchingQuestion(
    text="Match programming terms",
    pairs={
        "def": "Function definition",
        "class": "Class definition",
        "async": "Asynchronous function"
    },
    shuffle_answers=True,
    allow_partial_credit=True,
    time_limit=15
))

# Execute
result = quiz.execute(answer_provider=lambda q, idx: input(q.text + "\n> "))
print(f"Score: {result.score_percentage:.1f}%")

AI-Generated Questions

Generate quiz questions automatically using OpenAI:

import asyncio
from quizy import Quiz
from quizy.ai_generator import AIQuestionGenerator
from quizy.core import QuestionType

async def main():
    # Set OPENAI_API_KEY environment variable or pass api_key
    generator = AIQuestionGenerator()

    # Generate questions set with similar topics
    questions = await generator.generate_questions_set(
        topic="Python Programming",
        num_questions=5,
        question_types=[
            QuestionType.MULTIPLE_CHOICE,
            QuestionType.TRUE_FALSE,
            QuestionType.MULTIPLE_SELECT,
            QuestionType.SHORT_TEXT,
            QuestionType.MATCHING,
        ],
        difficulty="medium"
    )

    # Build and run quiz
    quiz = Quiz(title="AI-Generated Python Quiz", time_limit=300)
    for q in questions:
        quiz.add_question(q)

    result = await quiz.execute_async(
        answer_provider=lambda q, idx: input(f"{q.text}\n> ")
    )
    print(f"Score: {result.score_percentage:.1f}%")

asyncio.run(main())

Running Interactive Quizzes

Use the CLI for formatted output with timers and progress:

from quizy import QuizCLI

# Run with timer display
QuizCLI.run_interactive(quiz, show_timer=True)

# Get detailed results breakdown
QuizCLI.display_detailed_results(result)

Question Types

  • MultipleChoiceQuestion: Single correct answer
  • MultipleSelectQuestion: Select all correct answers (supports partial credit)
  • MatchingQuestion: Match items to descriptions (supports partial credit)
  • TrueFalseQuestion: Binary choice
  • ShortTextQuestion: Free-form text answers

Future Enhancements (v0.5+)

  • Web-based UI components
  • Database integration for result persistence
  • Advanced analytics and reporting
  • Real-time leaderboards
  • Support for more AI providers (Claude, Gemini, etc.)
  • More partial credit options
  • Fine-tuning for domain-specific questions

Support

GitHub: https://github.com/rustampy/quizy | Issues: https://github.com/rustampy/quizy/issues

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

quizy-0.4.4.tar.gz (25.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quizy-0.4.4-py3-none-any.whl (17.5 kB view details)

Uploaded Python 3

File details

Details for the file quizy-0.4.4.tar.gz.

File metadata

  • Download URL: quizy-0.4.4.tar.gz
  • Upload date:
  • Size: 25.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for quizy-0.4.4.tar.gz
Algorithm Hash digest
SHA256 0b388c057593a4bbd018c20133776218068fbbedcc07552b60704ab992853cb0
MD5 36ea3088e339af64b90b21cd4cfbd4e9
BLAKE2b-256 49d549dd2eb67ead4285a7e8ff44e42f8d10422aaf27729929e4306cf50a7083

See more details on using hashes here.

File details

Details for the file quizy-0.4.4-py3-none-any.whl.

File metadata

  • Download URL: quizy-0.4.4-py3-none-any.whl
  • Upload date:
  • Size: 17.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for quizy-0.4.4-py3-none-any.whl
Algorithm Hash digest
SHA256 303e87a031915967c78d5c6bb83c246899e23dd90d62e90cb597f90c522d172f
MD5 38e74a1432820b34ad6c0a30fbf7aea2
BLAKE2b-256 2c225ac093fc4fe16fca8214929160291a460d78b97f60659bd8332ddfab9a16

See more details on using hashes here.

Supported by

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