Skip to main content

Pythonic interface to fzf

Project description

Latest PyPI version Build status (GitHub Actions)

Demo session

iterfzf demo session

See also the API reference.

Key features

  • No dependency but only Python is required. Prebuilt fzf binary for each platform is bundled into wheels. Everything is ready by pip install iterfzf. (Note that not wheels of all supported platforms are uploaded to PyPI as they don’t allow minor platforms e.g. FreeBSD. The complete wheels can be found from the GitHub releases.)

  • Consumes an iterable rather than a list. It makes UX way better when the input data is long but streamed from low latency network. It can begin to display items immediately after only part of items are ready, and before the complete items are ready.

  • Supports Python 3.8 or higher.

iterfzf.iterfzf(iterable, *, **options)

Consumes the given iterable of strings, and displays them using fzf. If a user chooses something it immediately returns the chosen things.

The following is the full list of parameters. Pass them as keyword arguments except for iterable which comes first:

iterable (required)

The only required parameter. Every element which this iterable yields is displayed immediately after each one is produced. In other words, the passed iterable is lazily consumed.

It can be an iterable of byte strings (e.g. [b'foo', b'bar']) or of Unicode strings (e.g. [u'foo', u'bar']), but must not be mixed (e.g. [u'foo', b'bar']). If they are byte strings the function returns bytes. If they are Unicode strings it returns Unicode strings. See also the encoding parameter.

sort

Sorts the result if True. False by default.

multi

True to let the user to choose more than one. A user can select items with tab/shift-tab. If multi=True the function returns a list of strings rather than a string.

False to make a user possible to choose only one. If multi=False it returns a string rather than a list.

For both modes, the function returns None if nothing is matched or a user cancelled.

False by default.

Corresponds to -m/--multi option.

bind

The key/event bindings to pass to fzf.

Dictionary of the form {KEY: ACTION} or {EVENT: ACTION}.

Corresponds to --bind=KEYBINDS option.

print_query

If True the return type is a tuple where the first element is the query the user actually typed, and the second element is the selected output as described above and depending on the state of multi.

False by default.

Corresponds to --print-query option.

New in version 0.3.0.

encoding

The text encoding name (e.g. 'utf-8', 'ascii') to be used for encoding iterable values and decoding return values. It’s ignored when the iterable values are byte strings.

The Python’s default encoding (i.e. sys.getdefaultencoding()) is used by default.

extended

True for extended-search mode. False to turn it off.

True by default.

True corresponds to -x/--extended option, and False corresponds to +x/--no-extended option.

exact

False for fuzzy matching, and True for exact matching.

False by default.

Corresponds to -e/--exact option.

case_sensitive

True for case sensitivity, and False for case insensitivity. None, the default, for smart-case match.

True corresponds to +i option and False corresponds to -i option.

query

The query string to be filled at first. (It can be removed by a user.)

Empty string by default.

Corresponds to -q/--query option.

prompt

The prompt sequence. ' >' by default.

Corresponds to --prompt option.

preview

The preview command to execute. None by default.

Corresponds to --preview option.

mouse

False to disable mouse. True by default.

Corresponds to --no-mouse option.

ansi

True to enable ansi colors mode. None by default.

Corresponds to --ansi option.

cycle

True to enable cycling scrolling.

False by default.

Corresponds to --cycle option.

__extra__

The iterable of extra raw options/arguments to pass to fzf.

Empty by default.

Author and license

The iterfzf library is written by Hong Minhee and distributed under GPLv3 or later.

The fzf program is written by Junegunn Choi and distributed under MIT license.

Changelog

Versioning scheme

Note that iterfzf does not follow Semantic Versioning. The version consists of its own major and minor number followed by the version of bundled fzf. For example, 1.2.3.4.5 means that iterfzf’s own major version is 1, and its own minor version is 2, plus the version of fzf it bundles is 3.4.5.

/---------- 1. iterfzf's major version
|   /------ 3. bundled fzf's major version
|   |   /-- 5. bundled fzf's patch version
|   |   |
v   v   v
1.2.3.4.5
  ^   ^
  |   |
  |   \---- 4. bundled fzf's minor version
  \-------- 2. iterfzf's minor version

Version 1.4.0.51.0

Released on May 7, 2024. Bundles fzf 0.51.0.

  • Added bind option. [#21, #36 by Gregory.K]

Version 1.3.0.51.0

Released on May 6, 2024. Bundles fzf 0.51.0.

  • Added sort option. [#18, #35 by Gregory.K]

  • Officially support Python 3.12.

Version 1.2.0.46.1

Released on March 6, 2024. Bundles fzf 0.46.1.

  • Close stdin before waiting to allow --select-1 to work. [#34 by Alex Wood]

Version 1.1.0.44.0

Released on November 18, 2023. Bundles fzf 0.44.0.

  • Added cycle option. [#33 by Daniele Trifirò]

  • Added __extra__ option. [#32]

Version 1.0.0.42.0

Released on September 18, 2023. Bundles fzf 0.42.0.

  • Dropped Python 2.7, 3.5, 3.6, and 3.7 supports.

  • Officially support Python 3.8, 3.9, 3.10, and 3.11.

  • Dropped FreeBSD i386, Linux i686, Linux armv8l, OpenBSD i386, and Windows 32-bit supports as fzf no longer supports them.

  • Dropped OpenBSD amd64 support.

  • Except the first parameter iterable, all parameters are enforced to be keyword-only. (Note that it’s always been the recommended way to pass options, although it was not enforced.)

  • Added ansi option. [#16 by Erik Lilja]

  • The executable parameter now takes os.PathLike instead of str, which is backward compatible.

  • Added __version__ and __fzf_version__ attributes to the module.

  • Added POSIX_EXECUTABLE_NAME and WINDOWS_EXECUTABLE_NAME attributes to the module.

  • Module attribute EXECUTABLE_NAME is now a Literal['fzf', 'fzf.exe'] type, which is backward compatible with the previous str type.

  • Module attribute BUNDLED_EXECUTABLE is now Optional[pathlib.Path] type.

Version 0.5.0.20.0

Released on February 9, 2020. Bundles fzf 0.20.0.

  • Dropped Python 2.6, 3.3, and 3.4 supports.

  • Officially support Python 3.7 (it anyway had worked though).

  • Marked the package as supporting type checking by following PEP 561.

  • Added preview option. [#6 by Marc Weistroff]

  • Fixed a bug which had raised IOError by selecting an option before finished to load all options on Windows. [#3 by Jeff Rimko]

Version 0.4.0.17.3

Released on December 4, 2017. Bundles fzf 0.17.3.

Version 0.4.0.17.1

Released on October 19, 2017. Bundles fzf 0.17.1.

  • Added missing binary wheels for macOS again. (These were missing from 0.3.0.17.1, the previous release.)

Version 0.3.0.17.1

Released on October 16, 2017. Bundles fzf 0.17.1.

  • Added print_query option. [#1 by George Kettleborough]

Version 0.2.0.17.0

Released on August 27, 2017. Bundles fzf 0.17.0.

Version 0.2.0.16.11

Released on July 23, 2017. Bundles fzf 0.16.11.

Version 0.2.0.16.10

Released on July 23, 2017. Bundles fzf 0.16.10.

Version 0.2.0.16.8

Released on June 6, 2017. Bundles fzf 0.16.8.

  • Upgraded fzf from 0.16.7 to 0.16.8.

Version 0.2.0.16.7

Released on May 20, 2017. Bundles fzf 0.16.7.

  • Made sdists (source distributions) possible to be correctly installed so that older pip, can’t deal with wheels, also can install iterfzf.

Version 0.1.0.16.7

Released on May 19, 2017. Bundles fzf 0.16.7. The initial release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iterfzf-1.4.0.51.0.tar.gz (1.7 MB view details)

Uploaded Source

Built Distributions

iterfzf-1.4.0.51.0-py3-none-win_arm64.whl (1.6 MB view details)

Uploaded Python 3 Windows ARM64

iterfzf-1.4.0.51.0-py3-none-win_amd64.whl (1.7 MB view details)

Uploaded Python 3 Windows x86-64

iterfzf-1.4.0.51.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.5 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ s390x

iterfzf-1.4.0.51.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.4 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ppc64le

iterfzf-1.4.0.51.0-py3-none-manylinux_1_2_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded Python 3 manylinux: glibc 1.2+ x86-64 manylinux: glibc 2.17+ x86-64

iterfzf-1.4.0.51.0-py3-none-manylinux_1_2_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.4 MB view details)

Uploaded Python 3 manylinux: glibc 1.2+ ARM64 manylinux: glibc 2.17+ ARM64

iterfzf-1.4.0.51.0-py3-none-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded Python 3 macOS 11.0+ ARM64

iterfzf-1.4.0.51.0-py3-none-macosx_10_7_x86_64.macosx_10_9_x86_64.whl (1.6 MB view details)

Uploaded Python 3 macOS 10.7+ x86-64 macOS 10.9+ x86-64

File details

Details for the file iterfzf-1.4.0.51.0.tar.gz.

File metadata

  • Download URL: iterfzf-1.4.0.51.0.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for iterfzf-1.4.0.51.0.tar.gz
Algorithm Hash digest
SHA256 56a793b54accf7023e9622967d9e3e424f740d4d4319c8d3c45a13a39f981d8f
MD5 4bd7f11e8a87b53de7a626c2d721562a
BLAKE2b-256 8bb34238dff147dc78b768577d477cfa3e99c8182b7753487e43da033610e56d

See more details on using hashes here.

File details

Details for the file iterfzf-1.4.0.51.0-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for iterfzf-1.4.0.51.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 4fa707c8a56166e070cf94cf720f4c168089443051350d93b618322a1e61fbb4
MD5 603bbe4eb9e5a1a6a14fecc20352071a
BLAKE2b-256 ad2bb50d450aac20bd526bb8a638d93f9ed30a9afdfd1557c915af9da671429e

See more details on using hashes here.

File details

Details for the file iterfzf-1.4.0.51.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for iterfzf-1.4.0.51.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 50114ba74adf01cb4201dc4ffbc8466f93a53c77afc48e1f1493bab3cc88abaf
MD5 9c16b31ab79f9a9db23ab6e60077e996
BLAKE2b-256 775cb2a3f55f114ddb5b76c6e4a68d2c3e6c4d234323359173e630677bfdf12a

See more details on using hashes here.

File details

Details for the file iterfzf-1.4.0.51.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for iterfzf-1.4.0.51.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 7f4e7ad39c962cbd3c8969f71123c7b3a3cba5d91b37c1897daca2340684742a
MD5 da579293ef070dafa9b52b50ad01c447
BLAKE2b-256 65094ff9d4c7ad6fec2aade3a68401db12b66eeeccdcc0441a4811ce3974a264

See more details on using hashes here.

File details

Details for the file iterfzf-1.4.0.51.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for iterfzf-1.4.0.51.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 4cf5edf431982aaf23a6c9eaf10fdb4e52f91fbc954d3c96fef5562f60069c91
MD5 e3a99bbbbd2e4dd942fc6950e8b17804
BLAKE2b-256 eec61337779e28b61e1a0761125e39aa40128a5c6d22801cf8ffa22a8a456380

See more details on using hashes here.

File details

Details for the file iterfzf-1.4.0.51.0-py3-none-manylinux_1_2_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for iterfzf-1.4.0.51.0-py3-none-manylinux_1_2_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 244c566ca218567127ba34a0360600c22dd3854bc57f50e6e037f44d5ec6cdfc
MD5 6fe3f48236ff330d958229c46d71f3a6
BLAKE2b-256 c83a4e68a2678fc0cde67b92a86dc2e4d2f3d8765792d50cb5534330c6912131

See more details on using hashes here.

File details

Details for the file iterfzf-1.4.0.51.0-py3-none-manylinux_1_2_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for iterfzf-1.4.0.51.0-py3-none-manylinux_1_2_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2aa4c491d89de4586fec5c967c64cc45663c5a9155969676b69933baf7c3687e
MD5 bf4b9fa40c3d3b25e98b2e39c7d50b37
BLAKE2b-256 9208095b5ed5c32b78c9a4769e83b669d28708b5e97ec6902dd98dbd96260545

See more details on using hashes here.

File details

Details for the file iterfzf-1.4.0.51.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for iterfzf-1.4.0.51.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ba68102c6fd9ae92c42d4c9be88f421514fcd0efb558249505a66c58eeb69a8d
MD5 e99f89ab90893a3c3c6ed6168e407fb4
BLAKE2b-256 d0ff59e82b522c5ae33fbf0dd4ee5cc838661baa11d90df618e556c755946f3c

See more details on using hashes here.

File details

Details for the file iterfzf-1.4.0.51.0-py3-none-macosx_10_7_x86_64.macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for iterfzf-1.4.0.51.0-py3-none-macosx_10_7_x86_64.macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9043a0a3eadad24d903d5adf66bc70d5e74430248ebd120d34bf46e3e3b6cdda
MD5 d930565e51938f2f85dfa8a65429ee9d
BLAKE2b-256 f0cf197b6770c0661d774832808563133bdebbe051030c670cafd15bafec5509

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page