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

Uploaded Source

Built Distributions

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

Uploaded Python 3 Windows ARM64

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

Uploaded Python 3 Windows x86-64

iterfzf-1.1.0.44.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.4 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ s390x

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

Uploaded Python 3 manylinux: glibc 2.17+ ppc64le

iterfzf-1.1.0.44.0-py3-none-manylinux_1_2_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

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

iterfzf-1.1.0.44.0-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.1.0.44.0-py3-none-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded Python 3 macOS 11.0+ ARM64

iterfzf-1.1.0.44.0-py3-none-macosx_10_7_x86_64.macosx_10_9_x86_64.whl (1.5 MB view details)

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

File details

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

File metadata

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

File hashes

Hashes for iterfzf-1.1.0.44.0.tar.gz
Algorithm Hash digest
SHA256 824c01aec9b87506cd175b036a9e524cf4d9fc2dcc0650f0deab9229c73863d7
MD5 2d95140f58dfde74bc92128452b9c55b
BLAKE2b-256 41bfbebb2b3083380165734b78b9359ddd7f499b68ae2e5bf375f0feb6b58b48

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.1.0.44.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 5f72d36057aaaf206001e1ff5f9de337b99908a330cc29ed2c3e0891336421c5
MD5 385d1ec0addb751c749acf50148babf6
BLAKE2b-256 806e4c3ab2497b43a660788ae47b81e48a83f46401397f5d2c2d9c08297a2efd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.1.0.44.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e66208ab0156cad0cade03139f337fbb1c33f4551d412a1b6a36a3f5576a3fc4
MD5 20d57f77f49dcf150540b3b954b1531e
BLAKE2b-256 34b66735ce703903c9108d1628960d6ed49acb521554608a72b5ab94c1e7e089

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.1.0.44.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 abb91f839ee146f97badb7b24488d7151c5ea04521c791510ff9f0c3368fda6f
MD5 1964e0c3ce90e4ca11a080a3cdff4d3b
BLAKE2b-256 e580eb5a5d7110e84add93de12d9c8c00fbe129def58867dfd962209338eeec5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.1.0.44.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 87ec8932f30f56c57171ff5bdee70bfec5daa61f474ce6faba8b741cf6191e5f
MD5 5f0076a0ea0699071bf2955f482dfbe8
BLAKE2b-256 76cdcfdaa75413f4e6386d2010540c549bb2f99085c083a4aecd1ba2784cfb53

See more details on using hashes here.

File details

Details for the file iterfzf-1.1.0.44.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.1.0.44.0-py3-none-manylinux_1_2_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aa6b415dbf99dc80c6b66373a47f385210402f2f1c507ef13ec112dccbbf341a
MD5 c07840c3581b487383ee23e39f479fe4
BLAKE2b-256 a7c9d8e7b90148d9e44de964d70610df5103b931f4410f3cd1b98a77b3702dbc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.1.0.44.0-py3-none-manylinux_1_2_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 788616b9637636cee79c2da0a48ca57bc2bd8dd8f946f5121f39fcbb3e6e2c41
MD5 5f7c8dc04886d0d083866e05760ea9c9
BLAKE2b-256 f73bef31232c5a2226ec663552fc928fa6171e8883b28d74a3910c75b1f7f3c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.1.0.44.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f422f3b344f7074c70039f6ecc7fb2d91f296d1590e787f2db277e8e4620f8c8
MD5 a9f1665c6a501e1c43f9783949a8af55
BLAKE2b-256 64f1c499b08ef3d2f0c5be790fa4f51ce846aba813ad0f9f3ecaa1bce71e9377

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.1.0.44.0-py3-none-macosx_10_7_x86_64.macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e924b06533bc6aea669034213660b5bb3ad978d98f1501e92350ab229f648cb4
MD5 ec5c18fdb243d0321c223ac73160f52c
BLAKE2b-256 42aa2bd2d811a0df960eb1ea26c39bee360f09fe9007cb54db53628c6e0caa05

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