{"library":"face","title":"Face: Command-line application framework","description":"Face is a Pythonic microframework for building command-line applications (CLI parser). It provides first-class subcommand support, a powerful middleware architecture, a separate Parser layer, built-in flagfile support, handy testing utilities, and a themeable help display. The current version is 26.0.0, released on February 13, 2026, indicating active development.","status":"active","version":"26.0.0","language":"en","source_language":"en","source_url":"https://github.com/mahmoud/face","tags":["cli","command-line","framework","parser","tool"],"install":[{"cmd":"pip install face","lang":"bash","label":"Install stable version"}],"dependencies":[{"reason":"Requires Python 3.8 or higher to run the library.","package":"Python","optional":false}],"imports":[{"note":"Used to define CLI commands and subcommands.","symbol":"Command","correct":"from face import Command"},{"note":"A utility function for printing output to the console, similar to click's echo.","symbol":"echo","correct":"from face import echo"}],"quickstart":{"code":"from face import Command, echo\n\n@Command\ndef hello(name: str = 'World'):\n    \"\"\"A simple greeting command.\"\"\"\n    echo(f\"Hello, {name}!\")\n\nif __name__ == '__main__':\n    hello.run()","lang":"python","description":"This quickstart defines a simple command-line application with a 'hello' command that takes an optional 'name' argument. Running this script will execute the CLI parser and dispatch to the 'hello' function."},"warnings":[{"fix":"Consult the 'Why is Face so picky about argument order?' section in the official documentation and review examples of subcommand definition.","message":"Face is very opinionated about argument order and parsing. While it aims to be intuitive, users coming from other CLI frameworks might find its strictness around positional and keyword arguments, especially with subcommands, requires a slight adjustment. Refer to the official documentation for its specific parsing rules to avoid unexpected behavior.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Start with basic commands and gradually introduce middleware or custom parsers as complexity demands. Review the architecture overview in the documentation when encountering unexpected parsing outcomes.","message":"The library's design emphasizes 'middleware' and a 'Parser layer' for advanced customization. For simple CLI tools, this abstraction might seem like an overhead. Ensure you understand the middleware flow when debugging complex argument parsing or command dispatch issues.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-04-05T00:00:00.000Z","next_check":"2026-07-04T00:00:00.000Z"}