{"id":3484,"library":"fancycompleter","title":"Fancy Completer","description":"Fancy Completer (fancycompleter) is a Python module that enhances the interactive Python prompt with colorful, context-aware TAB completion, extending the functionality of the standard library's `rlcompleter`. It highlights different types of completions (strings, functions, numbers, etc.) with distinct colors, improving readability and user experience. The current version is 0.11.1 and it appears to be actively maintained with recent updates and discussions around its integration into CPython.","status":"active","version":"0.11.1","language":"en","source_language":"en","source_url":"https://github.com/antocuni/fancycompleter","tags":["REPL","completion","developer tools","CLI","productivity"],"install":[{"cmd":"pip install fancycompleter","lang":"bash","label":"Install latest version"}],"dependencies":[{"reason":"Provides colored completion on most CPython installations (<3.13), preferred over readline for colors.","package":"pyrepl","optional":false},{"reason":"Alternative to pyrepl, particularly for Windows.","package":"pyreadline3","optional":true}],"imports":[{"symbol":"fancycompleter","correct":"import fancycompleter"}],"quickstart":{"code":"import fancycompleter\n\n# To start the fancycompleter-enhanced interactive console:\nfancycompleter.interact(persist_history=True)\n\n# Alternatively, to enable it automatically upon Python startup,\n# you can run 'python -m fancycompleter install' once,\n# which typically creates/updates your PYTHONSTARTUP script.","lang":"python","description":"The primary way to use fancycompleter is by calling `fancycompleter.interact()` to launch an enhanced interactive console. For automatic activation upon Python startup, use the `python -m fancycompleter install` command, which configures the `PYTHONSTARTUP` environment variable."},"warnings":[{"fix":"Ensure `fancycompleter.interact()` is the final statement in your `PYTHONSTARTUP` script.","message":"When enabling `fancycompleter` via a `PYTHONSTARTUP` script, the `fancycompleter.interact()` call typically uses a `sys.exit()` upon console termination. This means any Python code written *after* `fancycompleter.interact()` in the startup script might not be executed. It's recommended to place it as the last line.","severity":"gotcha","affected_versions":"<=0.11.1"},{"fix":"Ensure `pyrepl` is installed (usually as a dependency). If issues persist, refer to the documentation for details on readline patches or alternative setups. Python 3.13+ users should have colors by default.","message":"Colorized completion may not work out-of-the-box on some CPython installations, particularly older versions on Linux/OSX (< Python 3.13) that rely on GNU `readline`, as `readline` often strips escape sequences. PyPy and CPython 3.13+ are noted to work out of the box. For other CPython versions, `pyrepl` is typically installed as a dependency for colors.","severity":"gotcha","affected_versions":"<=0.11.1 (CPython < 3.13)"},{"fix":"Be aware of this behavioral difference if migrating from `rlcompleter`. You will need to manually type the opening parenthesis after completing callable names.","message":"Unlike the standard `rlcompleter`, `fancycompleter` explicitly disables the behavior of automatically adding an open parenthesis `(` when completing a callable name. This is an intentional design choice to reduce annoyance.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-04-11T00:00:00.000Z","next_check":"2026-07-10T00:00:00.000Z"}