Skip to main content

Suggestion

Suggestion is a Python library for democratizing auto-complete(suggest) in desktop applications. It's part of the Pyrustic Open Ecosystem.

Installation | Reference

Overview

Auto-complete(suggest) is a feature available in smartphone keyboards, browser search bars, and IDEs, so why not in your app too ?

Suggestion is the library you need to power your applications with auto-complete or auto-suggest feature.

This article shows the difference between auto-suggest and auto-complete.

Let's discover how to use Suggestion:

import tkinter as tk
from suggestion import Suggestion


# the dataset
DATASET = ["friend", "family", "my", "monster"]

# root
root = tk.Tk()
root.title("Suggestion demo | built with Pyrustic")

# text field (it works with tk.Entry too !)
text_field = tk.Text(root)
text_field.pack()

# Suggestion
suggestion = Suggestion(text_field, dataset=DATASET)

# lift off !
root.mainloop()

This is what it looks like when you run the code:

Figure

Figure 1

Did my ridiculous dataset make you smile ? It's not realistic, right ? I agree.

Ok, let's download a list of 370K english words from https://github.com/dwyl/english-words.

import tkinter as tk
from suggestion import Suggestion

# the dataset
DATASET = "/home/alex/words_alpha.txt"

# root
root = tk.Tk()
root.title("Suggestion demo | built with Pyrustic")

# text field (it works with tk.Entry too!)
text_field = tk.Text(root)
text_field.pack()

# Suggestion
suggestion = Suggestion(text_field, dataset=DATASET)

# lift off !
root.mainloop()

Watch how smooth it is:

Figure

Figure 2

I can type faster, duh !

Figure

Figure 3

What if I told you that so far you've only seen the default configuration/behavior of Suggestion ?

There are 3 main parts in Suggestion:

  • the dataset: by default it is a sequence of words. You can set any data type you want if you have a custom engine that knows how to use the dataset.
  • the engine: by default it is a basic algorithm which compares the words you type with the words of the dataset (provided that the dataset is a list of words). You can set your own engine and define your own type of dataset.
  • the dropdown: by default this is a simple tk.Listbox in a headless window that displays the suggested words returned by the engine. You can define your own drop down list to display rich data, with icons or whatever you want.

Maybe you have a sophisticated dataset of words with metadata like probability of occurrence, and you need to keep track of words already typed to perform complex calculations. Suggestion is the library you need to implement your project !

If you want to create your custom auto-complete(suggest) engine, these links could be helpful:

As Suggestion is part of the Pyrustic Open Ecosystem, it is compatible with the Cyberpunk Theme:

import tkinter as tk
from suggestion import Suggestion
from cyberpunk_theme import Cyberpunk


# the dataset
DATASET = "/home/alex/words_alpha.txt"

# root
root = tk.Tk()
root.title("Suggestion demo | built with Pyrustic")

# set the theme
Cyberpunk().target(root)

# text field (it works with tk.Entry too!)
text_field = tk.Text(root)
text_field.pack()

# Suggestion
suggestion = Suggestion(text_field, dataset=DATASET)

# lift off !
root.mainloop()
Figure

Figure 4

Installation

First time

Install for the first time:

$ pip install suggestion

Upgrade

To upgrade Suggestion:

$ pip install suggestion --upgrade --upgrade-strategy eager

Metadata

Release files for suggestion 0.0.7

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

Source distribution (sdist)

Source distribution for suggestion 0.0.7
File Size Uploaded
suggestion-0.0.7.tar.gz 10.9 kB Details

Built distribution (wheel)

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

Total release size: 30.5 kB

Release files / suggestion-0.0.7.tar.gz

Download URL suggestion-0.0.7.tar.gz
Size 10.9 kB
Tags Source
SHA-256 checksum
How to use checksums
7f7e0ac7725b82f1b2c000447478ffc017588a4d79d7e1160542eca6514f67c0
BLAKE2b-256 checksum
How to use checksums
c778944be4c58e92863078992e40cebecf108e56152fc73efaf76ef2d8b40f66
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.6.1 requests/2.9.1 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.5.2

Release files / suggestion-0.0.7-py3-none-any.whl

Download URL suggestion-0.0.7-py3-none-any.whl
Size 19.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3ab3670d728b7d254dd731e8bc226cb9dcba7a03ac551546af9953ca027768ae
BLAKE2b-256 checksum
How to use checksums
a981df7f1d1778895401fa7670c793ad7d36869ac7bbd291d75d3fc38b13f68c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.6.1 requests/2.9.1 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.5.2

Release history Release notifications | RSS feed

This release

0.0.7 This release

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

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