questioner

A lightweight Python interface for annotating things.


Keywords
questioner
License
MIT
Install
pip install questioner==0.1.0

Documentation

Questioner

Documentation Status

A human-friendly Python library for asking people questions on the command-line.

Motivation

Data often needs a human eye. I found myself writing over and over the code to help me investigate data manually on the command-line; questioner is my attempt to make this tool the right way once.

It's suitable for:

  • Labelling data manually faster than you can in excel spreadsheets or similar setups
  • Active learning loops where you and a machine-learnining agent collaborate, reducing the need for training data
  • Short question-based UIs on the command-line where you need a user's input to continue

Usage

Python API

You write a simple Python api that asks you things.

import questioner

with questioner.Cli() as c:
    is_hurt = c.yes_or_no('Are you hurt')

    symptom_set = c.choose_many(
        'What symptoms do you have?',
        ['pain', 'nausea', 'anxiety'],
    )

    rating = c.give_an_int(
        'How would you rate this experience (1-5)', 1, 5
    )

    choice = c.choose_one('Which do you like best',
                          ['dogs', 'cats', 'horses'])

On the terminal

When run, the experience on the terminal looks like the following:

$ python -m questioner.demo
Are you hurt? (y/n) n

What symptoms do you have?
  pain? (y/n) y
  nausea? (y/n) n
  anxiety? (y/n) n

How would you rate this experience (1-5)
3

Which do you like best
  0. dogs
  1. cats
  2. horses
1

The user can by default skip a question (raising QuestionSkipped) by pressing enter, or quit the entire cli by pressing q (raising QuitCli).

Features

  • Support for boolean, numeric, single-choice and multiple-choice questions
  • Uses single-keystroke input where possible

License

MIT licensed.