Metadata-Version: 2.3
Name: python-cli-app-template
Version: 0.2.2
Summary: Python CLI app template project featuring the modern and extensible Python project manager hatch.
Project-URL: Documentation, https://turbobasic.github.io/python-cli-app-template
Project-URL: Source, https://github.com/turboBasic/python-cli-app-template
Project-URL: Tracker, https://github.com/turboBasic/python-cli-app-template/issues
Author-email: Andrii Melnyk ⚡️ <andrii7melnyk@proton.me>
License: MIT
License-File: AUTHORS.md
License-File: LICENSE.txt
Keywords: hatch,typer
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: Implementation :: CPython
Requires-Python: >=3.11
Requires-Dist: dynaconf
Requires-Dist: typer
Description-Content-Type: text/markdown

# python-cli-app-template

Boilerplate for Python CLI utility project.

## Features

* Uses [Hatch] - modern PEP-compliant project manager
* Uses [Typer] framework for managing CLI commands
* Uses [Dynaconf] for flexible management of configurations

## Usage

```bash
pca --help
```

## Development

To set up [hatch] and [pre-commit] for the first time:

1. install [hatch] globally, e.g. with [pipx] or brew, i.e. `pipx install hatch`,
2. make sure [pre-commit] is installed globally, e.g. with `pipx install pre-commit`.

A special feature that makes hatch very different from other familiar tools is that you almost never
activate, or enter, an environment. Instead, you use `hatch run env_name:command` and the `default` environment
is assumed for a command if there is no colon found. Thus you must always define your environment in a declarative
way and hatch makes sure that the environment reflects your declaration by updating it whenever you issue
a `hatch run ...`. This helps with reproducability and avoids forgetting to specify dependencies since the
hatch workflow is to specify everything directly in [pyproject.toml]. Only in rare cases, you
will use `hatch shell` to enter the `default` environment, which is similar to what you may know from other tools.

To get you started, use `hatch run test:cov` or `hatch run test:no-cov` to run the unitest with or without coverage reports,
respectively. Use `hatch run lint:all` to run all kinds of typing and linting checks. Try to automatically fix linting
problems with `hatch run lint:fix` and use `hatch run docs:serve` to build and serve your documentation.
You can also easily define your own environments and commands. Check out the environment setup of hatch
in [pyproject.toml] for more commands as well as the package, build and tool configuration.

The environments defined by hatch are configured to generate lock files using [hatch-pip-compile] under `locks`.
To upgrade all packages in an environment like `test`, just run `hatch run test:upgrade-all`. To upgrade specific
packages, type `hatch run test:upgrade-pkg pkg1,pkg2`.

## Credits

This package was created with [The Hatchlor] project template.

[The Hatchlor]: https://github.com/florianwilhelm/the-hatchlor
[Typer]: https://typer.tiangolo.com/
[dynaconf]: https://www.dynaconf.com/
[pipx]: https://pypa.github.io/pipx/
[hatch]: https://hatch.pypa.io/
[pre-commit]: https://pre-commit.com/
[hatch-pip-compile]: https://github.com/juftin/hatch-pip-compile
[pyproject.toml]: https://github.com/turboBasic/python-cli-app-template/blob/main/pyproject.toml
