{"id":15471440,"url":"https://github.com/aisk/pick","last_synced_at":"2025-12-12T00:48:05.618Z","repository":{"id":3507087,"uuid":"49802969","full_name":"aisk/pick","owner":"aisk","description":"create curses based interactive selection list in the terminal","archived":false,"fork":false,"pushed_at":"2025-03-23T11:29:39.000Z","size":267,"stargazers_count":753,"open_issues_count":15,"forks_count":65,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-04-14T11:12:04.916Z","etag":null,"topics":["cli","curses","python","terminal"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aisk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-01-17T04:28:49.000Z","updated_at":"2025-03-24T07:48:57.000Z","dependencies_parsed_at":"2024-03-31T12:27:03.811Z","dependency_job_id":"1ee77f22-f268-4fd8-81ed-8d0e31fd22e0","html_url":"https://github.com/aisk/pick","commit_stats":{"total_commits":134,"total_committers":14,"mean_commits":9.571428571428571,"dds":"0.32089552238805974","last_synced_commit":"f986d1a3e1c76be71294a6a8558e475a9f759470"},"previous_names":["aisk/pick","wong2/pick"],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aisk%2Fpick","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aisk%2Fpick/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aisk%2Fpick/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aisk%2Fpick/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aisk","download_url":"https://codeload.github.com/aisk/pick/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254067673,"owners_count":22009233,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","curses","python","terminal"],"created_at":"2024-10-02T02:19:54.858Z","updated_at":"2025-12-12T00:48:05.571Z","avatar_url":"https://github.com/aisk.png","language":"Python","readme":"# pick\n\n[![image](https://github.com/aisk/pick/actions/workflows/ci.yml/badge.svg)](https://github.com/aisk/pick/actions/workflows/ci.yml)\n[![PyPI](https://img.shields.io/pypi/v/pick.svg)](https://pypi.python.org/pypi/pick)\n[![PyPI](https://img.shields.io/pypi/dm/pick)](https://pypi.python.org/pypi/pick)\n\n**pick** is a small python library to help you create curses based\ninteractive selection list in the terminal.\n\n|         Basic          |         Multiselect          |\n| :--------------------: | :--------------------------: |\n| ![](example/basic.gif) | ![](example/multiselect.gif) |\n\n## Installation\n\n    $ pip install pick\n\n## Usage\n\n**pick** comes with a simple api:\n\n    \u003e\u003e\u003e from pick import pick\n\n    \u003e\u003e\u003e title = 'Please choose your favorite programming language: '\n    \u003e\u003e\u003e options = ['Java', 'JavaScript', 'Python', 'PHP', 'C++', 'Erlang', 'Haskell']\n    \u003e\u003e\u003e option, index = pick(options, title)\n    \u003e\u003e\u003e print(option)\n    \u003e\u003e\u003e print(index)\n\n**outputs**:\n\n    \u003e\u003e\u003e C++\n    \u003e\u003e\u003e 4\n\n**pick** multiselect example:\n\n    \u003e\u003e\u003e from pick import pick\n\n    \u003e\u003e\u003e title = 'Please choose your favorite programming language (press SPACE to mark, ENTER to continue): '\n    \u003e\u003e\u003e options = ['Java', 'JavaScript', 'Python', 'PHP', 'C++', 'Erlang', 'Haskell']\n    \u003e\u003e\u003e selected = pick(options, title, multiselect=True, min_selection_count=1)\n    \u003e\u003e\u003e print(selected)\n\n**outputs**:\n\n    \u003e\u003e\u003e [('Java', 0), ('C++', 4)]\n\n## Options\n\n- `options`: a list of options to choose from\n- `title`: (optional) a title above options list\n- `indicator`: (optional) custom the selection indicator, defaults to `*`\n- `default_index`: (optional) set this if the default selected option\n  is not the first one\n- `multiselect`: (optional), if set to True its possible to select\n  multiple items by hitting SPACE\n- `min_selection_count`: (optional) for multi select feature to\n  dictate a minimum of selected items before continuing\n- `screen`: (optional), if you are using `pick` within an existing curses application set this to your existing `screen` object. It is assumed this has initialised in the standard way (e.g. via `curses.wrapper()`, or `curses.noecho(); curses.cbreak(); screen.kepad(True)`)\n- `position`: (optional), if you are using `pick` within an existing curses application use this to set the first position to write to. e.g., `position=pick.Position(y=1, x=1)`\n- `quit_keys`: (optional), if you want to quit early, you can pass a key codes.\n  If the corresponding key are pressed, it will quit the menu.\n\n## Community Projects\n\n[pickpack](https://github.com/anafvana/pickpack): A fork of `pick` to select tree data.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faisk%2Fpick","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faisk%2Fpick","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faisk%2Fpick/lists"}