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.

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

Uploaded Source

Built Distributions

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

Uploaded Python 3 Windows ARM64

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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 macOS 11.0+ ARM64

iterfzf-1.3.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.3.0.51.0.tar.gz.

File metadata

  • Download URL: iterfzf-1.3.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.3.0.51.0.tar.gz
Algorithm Hash digest
SHA256 e87311e37813e129e6656cc6a86ecf337807f321f88311a3b9bbd5f2f063dbe7
MD5 ec43bdd69ea2e1628c7adbae60d9b1ff
BLAKE2b-256 bef8e5662e8630fc7c5ed30be9b5769dfdd7b8a764ca464b8657b5de8b66a757

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.3.0.51.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 ae7fd9212e538ade190e652ce5422572afc8f0f05d3551afd1636d8830407ed6
MD5 9c7945ef7b4b959fd18961b73decdcf2
BLAKE2b-256 78b497c98c98b60812dd727afdc2f72662a718fc18291667d202c66f44144237

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.3.0.51.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e445a8bf89f7979559f81abe5cca711774321e43d3592612ac9f6979af0e53b1
MD5 5ee3e072b981682b454f18a945008ea3
BLAKE2b-256 ffb5dddfcaf68975c37a91ee11b1780ef0030157b6904d59e4ef16196acac45c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.3.0.51.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 7f57f878c26560d56ae2456ef31bbdc2a8a0cb72b8079060cafa2550b845105c
MD5 9150a649be78903c9bf69cb7917883e4
BLAKE2b-256 e182151d38e30ed25325c096a82cd1249d0b673d73583ec06a75920cc8152ab5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.3.0.51.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 dafc2e1168917a6f0a560b0eba29b359c0072af221604b6b26f1d0b3e05b4517
MD5 402b713ff5971d5ae1c925c912fd319b
BLAKE2b-256 1be20098961d42dbc6ca2906f116c6bdd17550fbc7213a2325da9caf5bcb6f24

See more details on using hashes here.

File details

Details for the file iterfzf-1.3.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.3.0.51.0-py3-none-manylinux_1_2_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ccdac97dd9b83aa694b0cce22a11444cc4bfef15d46ace541157624c349f01c2
MD5 a65d41d5089f47af69e712baffa68079
BLAKE2b-256 42f67a07370a674527fe772163c496eda15bdf520c8c9bfb4eef1e269f392893

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.3.0.51.0-py3-none-manylinux_1_2_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 16f8fca7d11992a7d123c87b3377f6a94aeec51dc351f0b7baf746aaccb440b2
MD5 4692ce10ade5eed99fde3a009fe6e1e4
BLAKE2b-256 59bf7916fe258e9e9189db9bab8165b86ee855b1f6bf3906644f63720b64b8c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.3.0.51.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d7db5fe1f3fe68eea9d70c5efeaff720a9ef40fa7bbcfe7175a0dd77fa21c1eb
MD5 b9e0f45b107776985b593dc8d3c4d285
BLAKE2b-256 233b2b424c1af2085f0394876789f1c45d237f398eef72fe471ab113dbd84933

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for iterfzf-1.3.0.51.0-py3-none-macosx_10_7_x86_64.macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1f4df0c4308ec898d99058e80be4ed09af710e5dff78a7fe2c8a7beb4a0bb372
MD5 2dfbb907753ce58fc434497a7f6a99db
BLAKE2b-256 f12cd72e17276bab7281d203efe245b29bf11b07679bf1584a0404aa66935e92

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