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.

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.

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.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.2.0.46.1.tar.gz (1.7 MB view details)

Uploaded Source

Built Distributions

iterfzf-1.2.0.46.1-py3-none-win_arm64.whl (1.5 MB view details)

Uploaded Python 3 Windows ARM64

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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 manylinux: glibc 2.17+ s390x

iterfzf-1.2.0.46.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.3 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ppc64le

iterfzf-1.2.0.46.1-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.2.0.46.1-py3-none-manylinux_1_2_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

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

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

Uploaded Python 3 macOS 11.0+ ARM64

iterfzf-1.2.0.46.1-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.2.0.46.1.tar.gz.

File metadata

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

File hashes

Hashes for iterfzf-1.2.0.46.1.tar.gz
Algorithm Hash digest
SHA256 6b838475f44087a3285878c1e2f785d8a4ef65f6993f429806503d692e5b4903
MD5 e5a0b699cbcab3f2e54798d35b9d8c24
BLAKE2b-256 669b1fbc310ecf3b8ec91b2f2bb795e7b94529d76db4b60a6cf645323e901690

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.2.0.46.1-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 5c9a122ad9e8acbc636b54f3a39a67865b47e7aae89ea69f0985242f962bb63f
MD5 a6bbfacab96e8dc4114a555342e3dccc
BLAKE2b-256 b632fdcda7bc6e987ceaffa5a23f2981bb0f05e8ebe9483518430117a1cab2c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.2.0.46.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 fdbeef5e192bc3ef901d8cbb39c3270826faf33377ada000cffd99cfbecaae72
MD5 cda289a6c07d9397f936f34cd52a5bc6
BLAKE2b-256 5e9b0c060d2586d9fe561714c3597e5b100a2ff444a0d5c44fa82306d41be31f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.2.0.46.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 1eeb717a87975185eae3852ce344a565630730d8d2bb53e76ad3c61d8efe8e78
MD5 c96434b4ca1d770c0bd71edc594460ad
BLAKE2b-256 888dae0d8858387bccc7aef083d0e3cc450276c136e39a8f84b96ca10797b53d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.2.0.46.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 de508deef8558122fd6aee8d2468da9cd01ceffaf5bad924dcd82eabf168b532
MD5 640cd9f747fdefb001569d33515870e6
BLAKE2b-256 2ad4993b30d2901140371ad7d7d210adb09cadb17c80ea07de6b4a5f53aecba5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.2.0.46.1-py3-none-manylinux_1_2_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4ac867a651b0993eacde747d6521dac05143dd09d315cd57d64f412c6445a3c6
MD5 21f8febf249d34d9619393da5b251222
BLAKE2b-256 1ef52b948c96e0c05019f775640396b419a0718d754777e280068c77c5a1503f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.2.0.46.1-py3-none-manylinux_1_2_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 803af291763bdb66e5c5c8e217a65511447a5d0479979491da5cc23bceda915e
MD5 cf68c7bad63ae84655cfae92830cdaf7
BLAKE2b-256 eca1d14d9665bf8efaad5ce5d101874450c822d7b8424d413ed65f229c726664

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.2.0.46.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 09e5a963c7ac4d61ac56a314fe60c2e4fb4c8f57b92b4a2ae08f5790c87598d6
MD5 06a9b49413986f8669edc1e6227caef6
BLAKE2b-256 a615a52e83972aea164ca5301abe73ab02d1f36ea8c2093d6bcfb55dc0aad202

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.2.0.46.1-py3-none-macosx_10_7_x86_64.macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 56a3fe2605d052578625fa63adc61d24194c3bca4c681fffd7078e64d03b82db
MD5 31f6661fb2596258391c88ad2b0c56b3
BLAKE2b-256 15597a53156ae4dfc95d49ac9a116982b2a6293b4c4f59ffdb01ac86e559d7fd

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