See also the API reference.
- No dependency but only Python is required. Prebuilt
fzfbinary for each platform is bundled into wheels. Everything is ready bypip 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.
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
iterableyields is displayed immediately after each one is produced. In other words, the passediterableis 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 theencodingparameter.multiTrueto let the user to choose more than one. A user can select items with tab/shift-tab. Ifmulti=Truethe function returns a list of strings rather than a string.Falseto make a user possible to choose only one. Ifmulti=Falseit returns a string rather than a list.For both modes, the function returns
Noneif nothing is matched or a user cancelled.Falseby default.Corresponds to
-m/--multioption.print_queryIf
Truethe 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 ofmulti.Falseby default.Corresponds to
--print-queryoption.New in version 0.3.0.
encodingThe text encoding name (e.g.
'utf-8','ascii') to be used for encodingiterablevalues and decoding return values. It's ignored when theiterablevalues are byte strings.The Python's default encoding (i.e.
sys.getdefaultencoding()) is used by default.extendedTruefor extended-search mode.Falseto turn it off.Trueby default.Truecorresponds to-x/--extendedoption, andFalsecorresponds to+x/--no-extendedoption.exactFalsefor fuzzy matching, andTruefor exact matching.Falseby default.Corresponds to
-e/--exactoption.case_sensitiveTruefor case sensitivity, andFalsefor case insensitivity.None, the default, for smart-case match.Truecorresponds to+ioption andFalsecorresponds to-ioption.queryThe query string to be filled at first. (It can be removed by a user.)
Empty string by default.
Corresponds to
-q/--queryoption.promptThe prompt sequence.
' >'by default.Corresponds to
--promptoption.previewThe preview command to execute.
Noneby default.Corresponds to
--previewoption.mouseFalseto disable mouse.Trueby default.Corresponds to
--no-mouseoption.ansiTrueto enable ansi colors mode.Noneby default.Corresponds to
--ansioption.cycleTrueto enable cycling scrolling.Falseby default.Corresponds to
--cycleoption.__extra__The iterable of extra raw options/arguments to pass to
fzf.Empty by default.
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.
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
Released on March 6, 2024. Bundles fzf 0.46.1.
- Close stdin before waiting to allow
--select-1to work. [#34 by Alex Wood]
Released on November 18, 2023. Bundles fzf 0.44.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
ansioption. [#16 by Erik Lilja] - The
executableparameter now takesos.PathLikeinstead ofstr, which is backward compatible. - Added
__version__and__fzf_version__attributes to the module. - Added
POSIX_EXECUTABLE_NAMEandWINDOWS_EXECUTABLE_NAMEattributes to the module. - Module attribute
EXECUTABLE_NAMEis now aLiteral['fzf', 'fzf.exe']type, which is backward compatible with the previousstrtype. - Module attribute
BUNDLED_EXECUTABLEis nowOptional[pathlib.Path]type.
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
previewoption. [#6 by Marc Weistroff] - Fixed a bug which had raised
IOErrorby selecting an option before finished to load all options on Windows. [#3 by Jeff Rimko]
Released on December 4, 2017. Bundles fzf 0.17.3.
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.)
Released on October 16, 2017. Bundles fzf 0.17.1.
- Added
print_queryoption. [#1 by George Kettleborough]
Released on August 27, 2017. Bundles fzf 0.17.0.
Released on July 23, 2017. Bundles fzf 0.16.11.
Released on July 23, 2017. Bundles fzf 0.16.10.
Released on June 6, 2017. Bundles fzf 0.16.8.
- Upgraded
fzffrom 0.16.7 to 0.16.8.
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 installiterfzf.
Released on May 19, 2017. Bundles fzf 0.16.7. The initial release.