diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-columbo.spec | 536 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 538 insertions, 0 deletions
@@ -0,0 +1 @@ +/columbo-0.13.0.post1.tar.gz diff --git a/python-columbo.spec b/python-columbo.spec new file mode 100644 index 0000000..0c5b3b4 --- /dev/null +++ b/python-columbo.spec @@ -0,0 +1,536 @@ +%global _empty_manifest_terminate_build 0 +Name: python-columbo +Version: 0.13.0.post1 +Release: 1 +Summary: Specify a dynamic set of questions to ask a user and get their answers. +License: MIT License +URL: https://github.com/plannigan/columbo +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/85/f6/a82a7eadfa515d2e0b1126ed359bbc0af14b18910667ecbb9288e87d7802/columbo-0.13.0.post1.tar.gz +BuildArch: noarch + +Requires: python3-prompt-toolkit +Requires: python3-typing-extensions + +%description +[][ci] +[][pypi] +[][pypi] +[][codecov] +[][mypy-home] +[][black-home] + +# Columbo + +Specify a dynamic set of questions to ask a user and get their answers. + +`columbo`'s feature set allows a program to: + +* Ask multiple types of questions: + * Yes or No + * Multiple choice + * Open-ended +* Validate the response provided by the user. +* Use answers from earlier questions: + * As part of the text of a question + * As part of the text of a default value + * To decide if a question should be skipped +* Accept answers from the command line in addition to prompting the user. + +## Example + +### User Prompts + +The primary use of `columbo` is to define a sequence of interactions that are used to prompt a user to provide answers +using a terminal. Below is a sample which shows some ways this can be used. + +```python +import columbo + +interactions = [ + columbo.Echo("Welcome to the Columbo example"), + columbo.Acknowledge( + "Press enter to start" + ), + columbo.BasicQuestion( + "user", + "What is your name?", + default="Patrick", + ), + columbo.BasicQuestion( + "user_email", + lambda answers: f"""What email address should be used to contact {answers["user"]}?""", + default="me@example.com" + ), + columbo.Choice( + "mood", + "How are you feeling today?", + options={ + "happy": "😀", + "sad": "😢", + "sleepy": "🥱", + "confused": "🤔", + }, + default="happy", + ), + columbo.Confirm("likes_dogs", "Do you like dogs?", default=True), +] + +answers = columbo.get_answers(interactions) +print(answers) +``` + +Below shows the output when the user accepts the default values for most of the questions. The user provides a different +value for the email and explicitly confirms that they like dogs. + +```text +Welcome to the Columbo example +Press enter to start + +What is your name? [Patrick]: + +What email address should be used to contact Patrick? [me@example.com]: patrick@example.com + +How are you feeling today? +1 - 😀 +2 - 😢 +3 - 🥱 +4 - 🤔 +Enter the number of your choice [1]: + +Do you like dogs? (Y/n): y + +{'user': 'Patrick', 'user_email': 'patrick@example.com', 'mood': 'happy', 'likes_dogs': True} +``` + +### Command Line Answers + +In addition to the interactive prompts, `columbo` can also parse command line arguments for interactions. This is done by +changing `columbo.get_answers()` to `columbo.parse_args()`. Below shows the output when using the same interactions from above. + +```shell +$ python columbo_example.py --user-email patrick@example.com --likes-dogs +{'user': 'Patrick', 'user_email': 'patrick@example.com', 'mood': 'happy', 'likes_dogs': True} +``` + +<details> + <summary>The full example</summary> + +```python +import columbo + +interactions = [ + columbo.Echo("Welcome to the Columbo example"), + columbo.Acknowledge( + "Press enter to start" + ), + columbo.BasicQuestion( + "user", + "What is your name?", + default="Patrick", + ), + columbo.BasicQuestion( + "user_email", + lambda answers: f"""What email address should be used to contact {answers["user"]}?""", + default="me@example.com" + ), + columbo.Choice( + "mood", + "How are you feeling today?", + options=["happy", "sad", "sleepy", "confused"], + default="happy", + ), + columbo.Confirm("likes_dogs", "Do you like dogs?", default=True), +] + +answers = columbo.parse_args(interactions) +print(answers) +``` +</details> + +## Documentation + +Check out the [project documentation][columbo-docs]. + +For an overview on how repository structure and how to work with the code base, read the +[Development Guide][development-docs]. + + +## Credits + +The development of this project was originally funded and incubated by [Wayfair](https://github.com/wayfair-incubator). + +[ci]: https://github.com/plannigan/columbo/actions +[pypi]: https://pypi.org/project/columbo/ +[codecov]: https://codecov.io/gh/plannigan/columbo +[mypy-home]: http://mypy-lang.org/ +[black-home]: https://github.com/psf/black +[columbo-docs]: https://plannigan.github.io/columbo/latest/ +[development-docs]: https://plannigan.github.io/columbo/latest/development-guide/ + + +%package -n python3-columbo +Summary: Specify a dynamic set of questions to ask a user and get their answers. +Provides: python-columbo +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-columbo +[][ci] +[][pypi] +[][pypi] +[][codecov] +[][mypy-home] +[][black-home] + +# Columbo + +Specify a dynamic set of questions to ask a user and get their answers. + +`columbo`'s feature set allows a program to: + +* Ask multiple types of questions: + * Yes or No + * Multiple choice + * Open-ended +* Validate the response provided by the user. +* Use answers from earlier questions: + * As part of the text of a question + * As part of the text of a default value + * To decide if a question should be skipped +* Accept answers from the command line in addition to prompting the user. + +## Example + +### User Prompts + +The primary use of `columbo` is to define a sequence of interactions that are used to prompt a user to provide answers +using a terminal. Below is a sample which shows some ways this can be used. + +```python +import columbo + +interactions = [ + columbo.Echo("Welcome to the Columbo example"), + columbo.Acknowledge( + "Press enter to start" + ), + columbo.BasicQuestion( + "user", + "What is your name?", + default="Patrick", + ), + columbo.BasicQuestion( + "user_email", + lambda answers: f"""What email address should be used to contact {answers["user"]}?""", + default="me@example.com" + ), + columbo.Choice( + "mood", + "How are you feeling today?", + options={ + "happy": "😀", + "sad": "😢", + "sleepy": "🥱", + "confused": "🤔", + }, + default="happy", + ), + columbo.Confirm("likes_dogs", "Do you like dogs?", default=True), +] + +answers = columbo.get_answers(interactions) +print(answers) +``` + +Below shows the output when the user accepts the default values for most of the questions. The user provides a different +value for the email and explicitly confirms that they like dogs. + +```text +Welcome to the Columbo example +Press enter to start + +What is your name? [Patrick]: + +What email address should be used to contact Patrick? [me@example.com]: patrick@example.com + +How are you feeling today? +1 - 😀 +2 - 😢 +3 - 🥱 +4 - 🤔 +Enter the number of your choice [1]: + +Do you like dogs? (Y/n): y + +{'user': 'Patrick', 'user_email': 'patrick@example.com', 'mood': 'happy', 'likes_dogs': True} +``` + +### Command Line Answers + +In addition to the interactive prompts, `columbo` can also parse command line arguments for interactions. This is done by +changing `columbo.get_answers()` to `columbo.parse_args()`. Below shows the output when using the same interactions from above. + +```shell +$ python columbo_example.py --user-email patrick@example.com --likes-dogs +{'user': 'Patrick', 'user_email': 'patrick@example.com', 'mood': 'happy', 'likes_dogs': True} +``` + +<details> + <summary>The full example</summary> + +```python +import columbo + +interactions = [ + columbo.Echo("Welcome to the Columbo example"), + columbo.Acknowledge( + "Press enter to start" + ), + columbo.BasicQuestion( + "user", + "What is your name?", + default="Patrick", + ), + columbo.BasicQuestion( + "user_email", + lambda answers: f"""What email address should be used to contact {answers["user"]}?""", + default="me@example.com" + ), + columbo.Choice( + "mood", + "How are you feeling today?", + options=["happy", "sad", "sleepy", "confused"], + default="happy", + ), + columbo.Confirm("likes_dogs", "Do you like dogs?", default=True), +] + +answers = columbo.parse_args(interactions) +print(answers) +``` +</details> + +## Documentation + +Check out the [project documentation][columbo-docs]. + +For an overview on how repository structure and how to work with the code base, read the +[Development Guide][development-docs]. + + +## Credits + +The development of this project was originally funded and incubated by [Wayfair](https://github.com/wayfair-incubator). + +[ci]: https://github.com/plannigan/columbo/actions +[pypi]: https://pypi.org/project/columbo/ +[codecov]: https://codecov.io/gh/plannigan/columbo +[mypy-home]: http://mypy-lang.org/ +[black-home]: https://github.com/psf/black +[columbo-docs]: https://plannigan.github.io/columbo/latest/ +[development-docs]: https://plannigan.github.io/columbo/latest/development-guide/ + + +%package help +Summary: Development documents and examples for columbo +Provides: python3-columbo-doc +%description help +[][ci] +[][pypi] +[][pypi] +[][codecov] +[][mypy-home] +[][black-home] + +# Columbo + +Specify a dynamic set of questions to ask a user and get their answers. + +`columbo`'s feature set allows a program to: + +* Ask multiple types of questions: + * Yes or No + * Multiple choice + * Open-ended +* Validate the response provided by the user. +* Use answers from earlier questions: + * As part of the text of a question + * As part of the text of a default value + * To decide if a question should be skipped +* Accept answers from the command line in addition to prompting the user. + +## Example + +### User Prompts + +The primary use of `columbo` is to define a sequence of interactions that are used to prompt a user to provide answers +using a terminal. Below is a sample which shows some ways this can be used. + +```python +import columbo + +interactions = [ + columbo.Echo("Welcome to the Columbo example"), + columbo.Acknowledge( + "Press enter to start" + ), + columbo.BasicQuestion( + "user", + "What is your name?", + default="Patrick", + ), + columbo.BasicQuestion( + "user_email", + lambda answers: f"""What email address should be used to contact {answers["user"]}?""", + default="me@example.com" + ), + columbo.Choice( + "mood", + "How are you feeling today?", + options={ + "happy": "😀", + "sad": "😢", + "sleepy": "🥱", + "confused": "🤔", + }, + default="happy", + ), + columbo.Confirm("likes_dogs", "Do you like dogs?", default=True), +] + +answers = columbo.get_answers(interactions) +print(answers) +``` + +Below shows the output when the user accepts the default values for most of the questions. The user provides a different +value for the email and explicitly confirms that they like dogs. + +```text +Welcome to the Columbo example +Press enter to start + +What is your name? [Patrick]: + +What email address should be used to contact Patrick? [me@example.com]: patrick@example.com + +How are you feeling today? +1 - 😀 +2 - 😢 +3 - 🥱 +4 - 🤔 +Enter the number of your choice [1]: + +Do you like dogs? (Y/n): y + +{'user': 'Patrick', 'user_email': 'patrick@example.com', 'mood': 'happy', 'likes_dogs': True} +``` + +### Command Line Answers + +In addition to the interactive prompts, `columbo` can also parse command line arguments for interactions. This is done by +changing `columbo.get_answers()` to `columbo.parse_args()`. Below shows the output when using the same interactions from above. + +```shell +$ python columbo_example.py --user-email patrick@example.com --likes-dogs +{'user': 'Patrick', 'user_email': 'patrick@example.com', 'mood': 'happy', 'likes_dogs': True} +``` + +<details> + <summary>The full example</summary> + +```python +import columbo + +interactions = [ + columbo.Echo("Welcome to the Columbo example"), + columbo.Acknowledge( + "Press enter to start" + ), + columbo.BasicQuestion( + "user", + "What is your name?", + default="Patrick", + ), + columbo.BasicQuestion( + "user_email", + lambda answers: f"""What email address should be used to contact {answers["user"]}?""", + default="me@example.com" + ), + columbo.Choice( + "mood", + "How are you feeling today?", + options=["happy", "sad", "sleepy", "confused"], + default="happy", + ), + columbo.Confirm("likes_dogs", "Do you like dogs?", default=True), +] + +answers = columbo.parse_args(interactions) +print(answers) +``` +</details> + +## Documentation + +Check out the [project documentation][columbo-docs]. + +For an overview on how repository structure and how to work with the code base, read the +[Development Guide][development-docs]. + + +## Credits + +The development of this project was originally funded and incubated by [Wayfair](https://github.com/wayfair-incubator). + +[ci]: https://github.com/plannigan/columbo/actions +[pypi]: https://pypi.org/project/columbo/ +[codecov]: https://codecov.io/gh/plannigan/columbo +[mypy-home]: http://mypy-lang.org/ +[black-home]: https://github.com/psf/black +[columbo-docs]: https://plannigan.github.io/columbo/latest/ +[development-docs]: https://plannigan.github.io/columbo/latest/development-guide/ + + +%prep +%autosetup -n columbo-0.13.0.post1 + +%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-columbo -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed May 17 2023 Python_Bot <Python_Bot@openeuler.org> - 0.13.0.post1-1 +- Package Spec generated @@ -0,0 +1 @@ +6688bea80ea92dd2b793c8ccd9f77ba7 columbo-0.13.0.post1.tar.gz |
