Skip to main content

promptabs - Interactive Terminal Survey Module

A Python module for creating interactive terminal-based surveys with tab navigation and arrow key support.

Features

  • Tab-based Navigation: Use left/right arrow keys to navigate between questions
  • Arrow Key Selection: Use up/down arrow keys to select answer options
  • Colorized Output: Beautiful terminal UI with ANSI colors
  • Easy Integration: Simple API for creating surveys
  • Response Collection: Automatically collects user responses in a dictionary
  • Submit/Review Tab: Review answers before submitting with validation
  • Required Field Validation: Prevent submission if required questions are unanswered
  • Optional Questions: Support both required and optional questions

Installation

pip install -e .

Quick Start

from promptabs import Survey, Question

# Create questions
questions = [
    Question(
        id="q1",
        title="What is your favorite programming language?",
        options=["Python", "JavaScript", "Go", "Rust"],
        description="Select one option"
    ),
    Question(
        id="q2",
        title="Which OS do you use?",
        options=["macOS", "Linux", "Windows"]
    ),
]

# Run the survey
survey = Survey(questions)
responses = survey.run()

# Access responses
print(responses)
# Output: {"q1": "Python", "q2": "Linux"}

API Documentation

Question

Data class representing a single survey question.

@dataclass
class Question:
    id: str                    # Unique question identifier
    title: str                 # Question title/text
    options: List[str]         # Available answer options
    description: str = ""      # Optional question description
    required: bool = True      # Whether question must be answered

Survey

Main class for managing and running surveys.

survey = Survey(questions: List[Question])

# Run the survey and get responses
responses: Dict[str, str] = survey.run()

Keyboard Controls

The tabs form a circular navigation ring - you can navigate freely between any tabs!

Navigation

  • Left Arrow (←): Move to previous tab (wraps from Q1 to Submit)
  • Right Arrow (→): Move to next tab (wraps from Submit to Q1)

On Question Tabs

  • Up/Down arrows: Select answer options
  • Enter: Confirm selection and move to next question
  • Esc / Ctrl+C: Cancel survey

On Submit/Review Tab

  • Up/Down arrows: Select between Submit and Cancel buttons
  • Enter: Submit survey (only if all required questions answered)
  • Esc / Ctrl+C: Cancel survey

Example Navigation:

Q1 ← → Q2 ← → Q3 ← → Submit
↑_______________________________↓
(pressing ← on Q1 goes to Submit)
(pressing → on Submit goes to Q1)

Architecture

  • question.py: Question data model
  • terminal.py: Terminal rendering and UI components
  • input_handler.py: Raw keyboard input handling
  • survey.py: Main survey conductor and interaction logic

Example Output

☑ Version Storage  ☐ Build System  ☐ Package Format →

Version Storage Question
Select your preferred approach

❯ Unified version.txt
  Platform-specific
  Hybrid approach
  Other

Use ↑↓ to select · ← → to navigate tabs · Enter to confirm · Esc to cancel

Requirements

  • Python 3.10+
  • Unix-like terminal (macOS, Linux) or Windows with compatible terminal

License

MIT

Metadata

Release files for promptabs 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for promptabs 0.3.1
File Size Uploaded
promptabs-0.3.1.tar.gz 57.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for promptabs 0.3.1
File Interpreter ABI Platform
promptabs-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 74.5 kB

Release files / promptabs-0.3.1.tar.gz

Download URL promptabs-0.3.1.tar.gz
Size 57.0 kB
Tags Source
SHA-256 checksum
How to use checksums
c328bec4ac292f52bb3464598120f24a1aa85ce85bfac278943eab6578704d99
BLAKE2b-256 checksum
How to use checksums
b1422453ce89a400998d3114e5696a2f2ac618583becc275d486f2f599806e59
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release files / promptabs-0.3.1-py3-none-any.whl

Download URL promptabs-0.3.1-py3-none-any.whl
Size 17.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e1fb8c98cfc7cb051f5b0c33777b81ff54eccfcb22f51ce5a99caf4b6650fff6
BLAKE2b-256 checksum
How to use checksums
61f5b42e30d76dbde1e49371735966ecc70b8d3edad009c14d4a31238b3b4467
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 release files

0.3.0

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page