iterfzf
Pythonic interface to fzf
What it is and what it does
iterfzf wraps the fzf command-line fuzzy finder in a Pythonic API that consumes iterables lazily rather than requiring a complete list upfront. This design enables immediate display of items as they arrive, making it particularly useful when data is streamed from network sources or generated on-demand. The package bundles prebuilt fzf binaries for major platforms (macOS, Linux, Windows), so installation via pip includes everything needed without requiring separate fzf setup.
The core function, iterfzf(), accepts an iterable of strings and displays them interactively, returning the user's selection(s) or raising KeyboardInterrupt if cancelled. It supports both single and multi-selection modes, fuzzy and exact matching, ANSI colors, custom key bindings, tmux integration, and numerous fzf options passed as keyword arguments. It handles both Unicode and byte strings, respects encoding parameters, and can process multi-line items using NUL-character separation.
Use it for:
- Build interactive CLI tools that let users pick from dynamically generated or streamed lists without buffering all items first.
- Create shell-like selection interfaces in Python scripts where users interactively choose from search results or file listings.
- Integrate fuzzy finding into data pipelines where selections feed into downstream processing steps.
- Implement terminal-based configuration or menu systems with live search and filtering.
- Process multi-line or complex text data interactively with NUL-separated I/O for safe delimiter handling.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Provides a Python interface to fzf, a command-line fuzzy finder, allowing interactive selection from iterables with lazy consumption and immediate display of streamed data.
Yes, with conditions. Install if you need interactive fuzzy selection in Python and can accept GPLv3 licensing constraints. The bundled fzf binaries eliminate setup friction on common platforms, and zero runtime dependencies make integration straightforward. However, aging maintenance (last release 201 days ago) and platform-specific wheel availability mean you should verify fzf binary support for your target platform and monitor for security updates to the bundled fzf version.
Install
iterfzf on PyPI
pip
pip install iterfzfuv
uv add iterfzfpoetry
poetry add iterfzfInstalling iterfzf
Before you install
Medium install friction due to platform-specific wheels, but prebuilt fzf binaries are bundled for common platforms (macOS, Linux, Windows on x86_64 and ARM), eliminating external dependencies. Last release was 201 days ago; maintenance status is aging but the repository remains active and not archived.
License in practice
Licensed under GPL-3.0-or-later (copyleft). Any code that imports and uses iterfzf in a distributed application must comply with GPLv3 obligations, including source code disclosure if the application is distributed.
Quickstart
pip install iterfzf
from iterfzf import iterfzf
result = iterfzf(['apple', 'banana', 'cherry'])
print(result) # returns the user's selection
Requires fzf binary available at runtime; bundled wheels provide this for common platforms, but FreeBSD and other minor platforms require manual fzf installation.
Verify before relying
- Whether the bundled fzf binary versions are kept current with upstream fzf security patches.
- Performance characteristics when streaming very large iterables over slow network connections.
- Compatibility with non-standard terminal emulators or restricted shell environments.
Package facts
| License | GPL-3.0-or-later (copyleft) |
| Python support | supports the current Python release (>=3.8) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | none |
| Maintenance | aging — 201 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 690,194/month — #5,331 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: iterfzf-1.9.0.67.0-py3-none-macosx_10_7_x86_64.macosx_10_9_x86_64.whl; iterfzf-1.9.0.67.0-py3-none-macosx_11_0_arm64.whl; iterfzf-1.9.0.67.0-py3-none-manylinux_1_2_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl; iterfzf-1.9.0.67.0-py3-none-manylinux_1_2_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl; iterfzf-1.9.0.67.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl; iterfzf-1.9.0.67.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl; iterfzf-1.9.0.67.0-py3-none-win_amd64.whl; iterfzf-1.9.0.67.0-py3-none-win_arm64.whl
Keywords: fzf
Tags
More Terminals packages
Wraps any iterable to display a real-time…
copyleft · top 100 on PyPI
richRich renders styled text, tables, progress…
permissive · top 100 on PyPI
coloramaColorama makes ANSI escape sequences for…
permissive · top 100 on PyPI
wcwidthMeasures the displayed width of Unicode strings…
permissive · top 1,000 on PyPI
ptyprocessRun a subprocess in a pseudo terminal (pty) and…
permissive · top 1,000 on PyPI
pexpectPexpect spawns and controls interactive console…
permissive · top 1,000 on PyPI
pyfzfpyfzf wraps the fzf command-line fuzzy finder,…
permissive · top 15,000 on PyPI
firstReturns the first true value from an iterable,…
permissive · top 15,000 on PyPI
pickpick provides a Python library to create…
permissive · top 15,000 on PyPI
tfidf-matcherPerforms fast fuzzy string matching on large…
permissive · top 15,000 on PyPI
fuzzyfinderFuzzy finder that matches partial strings from…
permissive · top 15,000 on PyPI
iterm2Provides a Python scripting interface to…
copyleft · top 15,000 on PyPI
ngramExtends Python's set class to perform fuzzy…
copyleft · top 15,000 on PyPI
py-tlshGenerates locality-sensitive hashes for fuzzy…
permissive · top 15,000 on PyPI
pysimstringProvides fast approximate string matching and…
unclear · top 15,000 on PyPI
myclimycli is a command-line client for MySQL and…
permissive · top 15,000 on PyPI