# click

> Composable command line interface toolkit

- **URL**: https://www.freshcrate.ai/projects/click
- **Author**: pypi
- **Category**: Developer Tools
- **Latest version**: `8.4.1` (2026-05-22)
- **License**: Unknown
- **Source**: https://github.com/pallets/click/
- **Homepage**: https://pypi.org/project/click/
- **Language**: Python
- **GitHub**: 17,423 stars, 1,659 forks
- **Registry**: pypi (`click`)
- **Tags**: `pypi`

## Description

<div align="center"><img src="https://raw.githubusercontent.com/pallets/click/refs/heads/stable/docs/_static/click-name.svg" alt="" height="150"></div>

# Click

Click is a Python package for creating beautiful command line interfaces
in a composable way with as little code as necessary. It's the "Command
Line Interface Creation Kit". It's highly configurable but comes with
sensible defaults out of the box.

It aims to make the process of writing command line tools quick and fun
while also preventing any frustration caused by the inability to
implement an intended CLI API.

Click in three points:

-   Arbitrary nesting of commands
-   Automatic help page generation
-   Supports lazy loading of subcommands at runtime


## A Simple Example

```python
import click

@click.command()
@click.option("--count", default=1, help="Number of greetings.")
@click.option("--name", prompt="Your name", help="The person to greet.")
def hello(count, name):
    """Simple program that greets NAME for a total of COUNT times."""
    for _ in range(count):
        click.echo(f"Hello, {name}!")

if __name__ == '__main__':
    hello()
```

```
$ python hello.py --count=3
Your name: Click
Hello, Click!
Hello, Click!
Hello, Click!
```


## Donate

The Pallets organization develops and supports Click and other popular
packages. In order to grow the community of contributors and users, and
allow the maintainers to devote more time to the projects, [please
donate today][].

[please donate today]: https://palletsprojects.com/donate

## Contributing

See our [detailed contributing documentation][contrib] for many ways to
contribute, including reporting issues, requesting features, asking or answering
questions, and making PRs.

[contrib]: https://palletsprojects.com/contributing/

## Recent releases

| Version | Date | Urgency | Changes |
| --- | --- | --- | --- |
| `8.4.1` | 2026-05-22 | High | This is the Click 8.4.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.  PyPI: https://pypi.org/project/click/8.4.1/ Changes: https://click.palletsprojects.com/page/changes/#version-8-4-1 Milestone: https://github.com/pallets/click/milestone/32?closed=1  - `get_parameter_source()` is available during eager callbacks and type conversion again. #3458 #3484 - Zsh completion scripts parse co |
| `8.4.0` | 2026-05-17 | High | This is the Click 8.4.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.  We encourage everyone to upgrade. You can read more about our [Version Support Policy][version] on our website.  [version]: https://palletsprojects.com/versions  PyPI: https://pypi.org/project/click/8.4.0/ Changes:  https://click.palletsprojects.com/page/changes/#version-8-4-0 Milestone https://github.com/ |
| `8.3.3` | 2026-04-22 | High | This is the Click 8.3.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.  PyPI: https://pypi.org/project/click/8.3.3/ Changes: https://click.palletsprojects.com/page/changes/#version-8-3-3 Milestone: https://github.com/pallets/click/milestone/30  -   Use :func:`shlex.split` to split pager and editor commands into ``argv``     lists for :class:`subprocess.Popen`, removing ``shell=True``. |
| `8.3.2` | 2026-04-21 | Low | Imported from PyPI (8.3.2) |
| `8.3.1` | 2025-11-15 | Low | This is the Click 8.3.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.  PyPI: https://pypi.org/project/click/8.3.1/ Changes: https://click.palletsprojects.com/page/changes/#version-8-3-1 Milestone: https://github.com/pallets/click/milestone/28  -   Don't discard pager arguments by correctly using ``subprocess.Popen``. #3039 #3055 -   Replace ``Sentinel.UNSET`` default values by ``None`` |
| `8.3.0` | 2025-09-18 | Low | This is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.  We encourage everyone to upgrade. You can read more about our [Version Support Policy][version] on our website.  [version]: https://palletsprojects.com/versions  PyPI: https://pypi.org/project/click/8.3.0/ Changes:  https://click.palletsprojects.com/page/changes/#version-8-3-0 Milestone https://github.com/ |
| `8.2.2` | 2025-08-02 | Low | This is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.  PyPI: https://pypi.org/project/click/8.2.2/ Changes: https://click.palletsprojects.com/page/changes/#version-8-2-2 Milestone: https://github.com/pallets/click/milestone/25  -   Fix reconciliation of `default`, `flag_value` and `type` parameters for     flag options, as well as parsing and normalization of environmen |
| `8.2.1` | 2025-05-20 | Low | This is the Click 8.2.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.  PyPI: https://pypi.org/project/click/8.2.1/ Changes: https://click.palletsprojects.com/page/changes/#version-8-2-1 Milestone: https://github.com/pallets/click/milestone/24?closed=1  -   Fix flag value handling for flag options with a provided type. #2894 #2897 -   Fix shell completion for nested groups. #2906 -   F |
| `8.2.0` | 2025-05-10 | Low | This is the Click 8.2.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.  We encourage everyone to upgrade. You can read more about our [Version Support Policy][version] on our website.  [version]: https://palletsprojects.com/versions  PyPI: https://pypi.org/project/click/8.2.0/ Changes: https://click.palletsprojects.com/en/stable/changes/ Milestone https://github.com/pallets/cl |
| `8.1.8` | 2024-12-21 | Low | This is the Click 8.1.8 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.  PyPI: https://pypi.org/project/click/8.1.8/ Changes: https://click.palletsprojects.com/en/stable/changes/#version-8-1-8 Milestone https://github.com/pallets/click/milestones/23?closed=1  -   Fix an issue with type hints for `click.open_file()`. #2717 -   Fix issue where error message for invalid `click.Path` display |

## Dependency audit

- **Score**: 98/100
- **Total deps**: 0
- **Resolved**: 0
- **Unresolved**: 0
- **License conflicts**: 0
- **Warnings**: 1
- **Scanned**: 2026-06-01

## Citation

- HTML: https://www.freshcrate.ai/projects/click
- Markdown: https://www.freshcrate.ai/projects/click.md
- Dependencies JSON: https://www.freshcrate.ai/api/projects/click/deps

_Generated by freshcrate.ai. Indexes pypi releases for AI-agent ecosystem packages._
