diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-suggestion.spec | 580 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 582 insertions, 0 deletions
@@ -0,0 +1 @@ +/suggestion-0.0.7.tar.gz diff --git a/python-suggestion.spec b/python-suggestion.spec new file mode 100644 index 0000000..4576348 --- /dev/null +++ b/python-suggestion.spec @@ -0,0 +1,580 @@ +%global _empty_manifest_terminate_build 0 +Name: python-suggestion +Version: 0.0.7 +Release: 1 +Summary: Democratizing auto-complete(suggest) for Python desktop applications +License: MIT +URL: https://github.com/pyrustic/suggestion +Source0: https://mirrors.aliyun.com/pypi/web/packages/c7/78/944be4c58e92863078992e40cebecf108e56152fc73efaf76ef2d8b40f66/suggestion-0.0.7.tar.gz +BuildArch: noarch + +Requires: python3-viewable + +%description +# Suggestion +`Suggestion` is a `Python` library for democratizing auto-complete(suggest) in desktop applications. It's part of the [Pyrustic Open Ecosystem](https://pyrustic.github.io). + +[Installation](#installation) | [Reference](https://github.com/pyrustic/suggestion/tree/master/docs/reference#readme) + +## 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](https://uxmag.com/articles/designing-search-as-you-type-suggestions) shows the difference between auto-suggest and auto-complete. + +Let's discover how to use `Suggestion`: + +```python +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: + +<!-- Image --> +<div align="center"> + <img src="https://raw.githubusercontent.com/pyrustic/misc/master/media/suggestion-demo-1.gif" alt="Figure" width="600"> + <p align="center"> + <i> Figure 1 </i> + </p> +</div> + +Did my ridiculous dataset make you smile ? It's not realistic, right ? I agree. + +Ok, let's download a [list](https://github.com/dwyl/english-words/blob/master/words_alpha.txt) of 370K english words from [https://github.com/dwyl/english-words](https://github.com/dwyl/english-words). + +```python +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: + +<!-- Image --> +<div align="center"> + <img src="https://raw.githubusercontent.com/pyrustic/misc/master/media/suggestion-demo-2.gif" alt="Figure" width="600"> + <p align="center"> + <i> Figure 2 </i> + </p> +</div> + +I can type faster, duh ! + +<!-- Image --> +<div align="center"> + <img src="https://raw.githubusercontent.com/pyrustic/misc/master/media/suggestion-demo-3.gif" alt="Figure" width="600"> + <p align="center"> + <i> Figure 3 </i> + </p> +</div> + + + +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: +- [https://norvig.com/spell-correct.html](https://norvig.com/spell-correct.html) +- [https://github.com/rodricios/autocomplete](https://github.com/rodricios/autocomplete) +- [https://www.jeremymikkola.com/posts/2019_03_19_rules_for_autocomplete.html](https://www.jeremymikkola.com/posts/2019_03_19_rules_for_autocomplete.html) +- [Rules of Autocomplete (Hackernews)](https://news.ycombinator.com/item?id=19438826) + +As `Suggestion` is part of the [Pyrustic Open Ecosystem](https://pyrustic.github.io), it is compatible with the [Cyberpunk Theme](https://github.com/pyrustic/cyberpunk-theme): + +```python +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() + +``` + +<!-- Image --> +<div align="center"> + <img src="https://raw.githubusercontent.com/pyrustic/misc/master/media/suggestion-demo-4.gif" alt="Figure" width="650"> + <p align="center"> + <i> Figure 4 </i> + </p> +</div> + + +## Installation +### First time +Install for the first time: + +```bash +$ pip install suggestion +``` + +### Upgrade +To upgrade `Suggestion`: + +```bash +$ pip install suggestion --upgrade --upgrade-strategy eager +``` + + + + +%package -n python3-suggestion +Summary: Democratizing auto-complete(suggest) for Python desktop applications +Provides: python-suggestion +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-suggestion +# Suggestion +`Suggestion` is a `Python` library for democratizing auto-complete(suggest) in desktop applications. It's part of the [Pyrustic Open Ecosystem](https://pyrustic.github.io). + +[Installation](#installation) | [Reference](https://github.com/pyrustic/suggestion/tree/master/docs/reference#readme) + +## 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](https://uxmag.com/articles/designing-search-as-you-type-suggestions) shows the difference between auto-suggest and auto-complete. + +Let's discover how to use `Suggestion`: + +```python +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: + +<!-- Image --> +<div align="center"> + <img src="https://raw.githubusercontent.com/pyrustic/misc/master/media/suggestion-demo-1.gif" alt="Figure" width="600"> + <p align="center"> + <i> Figure 1 </i> + </p> +</div> + +Did my ridiculous dataset make you smile ? It's not realistic, right ? I agree. + +Ok, let's download a [list](https://github.com/dwyl/english-words/blob/master/words_alpha.txt) of 370K english words from [https://github.com/dwyl/english-words](https://github.com/dwyl/english-words). + +```python +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: + +<!-- Image --> +<div align="center"> + <img src="https://raw.githubusercontent.com/pyrustic/misc/master/media/suggestion-demo-2.gif" alt="Figure" width="600"> + <p align="center"> + <i> Figure 2 </i> + </p> +</div> + +I can type faster, duh ! + +<!-- Image --> +<div align="center"> + <img src="https://raw.githubusercontent.com/pyrustic/misc/master/media/suggestion-demo-3.gif" alt="Figure" width="600"> + <p align="center"> + <i> Figure 3 </i> + </p> +</div> + + + +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: +- [https://norvig.com/spell-correct.html](https://norvig.com/spell-correct.html) +- [https://github.com/rodricios/autocomplete](https://github.com/rodricios/autocomplete) +- [https://www.jeremymikkola.com/posts/2019_03_19_rules_for_autocomplete.html](https://www.jeremymikkola.com/posts/2019_03_19_rules_for_autocomplete.html) +- [Rules of Autocomplete (Hackernews)](https://news.ycombinator.com/item?id=19438826) + +As `Suggestion` is part of the [Pyrustic Open Ecosystem](https://pyrustic.github.io), it is compatible with the [Cyberpunk Theme](https://github.com/pyrustic/cyberpunk-theme): + +```python +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() + +``` + +<!-- Image --> +<div align="center"> + <img src="https://raw.githubusercontent.com/pyrustic/misc/master/media/suggestion-demo-4.gif" alt="Figure" width="650"> + <p align="center"> + <i> Figure 4 </i> + </p> +</div> + + +## Installation +### First time +Install for the first time: + +```bash +$ pip install suggestion +``` + +### Upgrade +To upgrade `Suggestion`: + +```bash +$ pip install suggestion --upgrade --upgrade-strategy eager +``` + + + + +%package help +Summary: Development documents and examples for suggestion +Provides: python3-suggestion-doc +%description help +# Suggestion +`Suggestion` is a `Python` library for democratizing auto-complete(suggest) in desktop applications. It's part of the [Pyrustic Open Ecosystem](https://pyrustic.github.io). + +[Installation](#installation) | [Reference](https://github.com/pyrustic/suggestion/tree/master/docs/reference#readme) + +## 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](https://uxmag.com/articles/designing-search-as-you-type-suggestions) shows the difference between auto-suggest and auto-complete. + +Let's discover how to use `Suggestion`: + +```python +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: + +<!-- Image --> +<div align="center"> + <img src="https://raw.githubusercontent.com/pyrustic/misc/master/media/suggestion-demo-1.gif" alt="Figure" width="600"> + <p align="center"> + <i> Figure 1 </i> + </p> +</div> + +Did my ridiculous dataset make you smile ? It's not realistic, right ? I agree. + +Ok, let's download a [list](https://github.com/dwyl/english-words/blob/master/words_alpha.txt) of 370K english words from [https://github.com/dwyl/english-words](https://github.com/dwyl/english-words). + +```python +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: + +<!-- Image --> +<div align="center"> + <img src="https://raw.githubusercontent.com/pyrustic/misc/master/media/suggestion-demo-2.gif" alt="Figure" width="600"> + <p align="center"> + <i> Figure 2 </i> + </p> +</div> + +I can type faster, duh ! + +<!-- Image --> +<div align="center"> + <img src="https://raw.githubusercontent.com/pyrustic/misc/master/media/suggestion-demo-3.gif" alt="Figure" width="600"> + <p align="center"> + <i> Figure 3 </i> + </p> +</div> + + + +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: +- [https://norvig.com/spell-correct.html](https://norvig.com/spell-correct.html) +- [https://github.com/rodricios/autocomplete](https://github.com/rodricios/autocomplete) +- [https://www.jeremymikkola.com/posts/2019_03_19_rules_for_autocomplete.html](https://www.jeremymikkola.com/posts/2019_03_19_rules_for_autocomplete.html) +- [Rules of Autocomplete (Hackernews)](https://news.ycombinator.com/item?id=19438826) + +As `Suggestion` is part of the [Pyrustic Open Ecosystem](https://pyrustic.github.io), it is compatible with the [Cyberpunk Theme](https://github.com/pyrustic/cyberpunk-theme): + +```python +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() + +``` + +<!-- Image --> +<div align="center"> + <img src="https://raw.githubusercontent.com/pyrustic/misc/master/media/suggestion-demo-4.gif" alt="Figure" width="650"> + <p align="center"> + <i> Figure 4 </i> + </p> +</div> + + +## Installation +### First time +Install for the first time: + +```bash +$ pip install suggestion +``` + +### Upgrade +To upgrade `Suggestion`: + +```bash +$ pip install suggestion --upgrade --upgrade-strategy eager +``` + + + + +%prep +%autosetup -n suggestion-0.0.7 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-suggestion -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 0.0.7-1 +- Package Spec generated @@ -0,0 +1 @@ +0441d7ab225056bcec487e85b26801e4 suggestion-0.0.7.tar.gz |