Metadata-Version: 2.4
Name: frequenz-repo-config
Version: 0.16.0
Summary: Frequenz repository setup tools and common configuration
Author-email: Frequenz Energy-as-a-Service GmbH <floss@frequenz.com>
License-Expression: MIT
Project-URL: Documentation, https://frequenz-floss.github.io/frequenz-repo-config-python/
Project-URL: Changelog, https://github.com/frequenz-floss/frequenz-repo-config-python/releases
Project-URL: Issues, https://github.com/frequenz-floss/frequenz-repo-config-python/issues
Project-URL: Repository, https://github.com/frequenz-floss/frequenz-repo-config-python
Project-URL: Support, https://github.com/frequenz-floss/frequenz-repo-config-python/discussions/categories/support
Keywords: config,frequenz,grpc,lib,library,mkdocs,nox,project,protobuf,python,repo-config,repository,setuptools,tool
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Software Development :: Libraries
Classifier: Typing :: Typed
Requires-Python: <4,>=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: nox>=2022.11.21
Requires-Dist: mkdocs-gen-files<0.7.0,>=0.4.0
Requires-Dist: semver<4,>=3.0.1
Requires-Dist: github-action-utils<2,>=1.1.0
Requires-Dist: mkdocstrings-python<3,>=1.14.6
Provides-Extra: actor
Provides-Extra: api
Requires-Dist: grpcio-tools<2,>=1.47.0; extra == "api"
Requires-Dist: mypy-protobuf<6,>=3.0.0; extra == "api"
Requires-Dist: setuptools<83,>=67.6.0; extra == "api"
Provides-Extra: app
Provides-Extra: lib
Provides-Extra: model
Provides-Extra: extra-lint-examples
Requires-Dist: pylint<5,>=2.17.3; extra == "extra-lint-examples"
Requires-Dist: pytest<10,>=7.3.0; extra == "extra-lint-examples"
Requires-Dist: sybil<10,>=6.1.1; extra == "extra-lint-examples"
Provides-Extra: dev-flake8
Requires-Dist: flake8==7.3.0; extra == "dev-flake8"
Requires-Dist: flake8-datetimez==20.10.0; extra == "dev-flake8"
Requires-Dist: flake8-docstrings==1.7.0; extra == "dev-flake8"
Requires-Dist: flake8-pyproject==1.2.4; extra == "dev-flake8"
Requires-Dist: pydoclint==0.8.3; extra == "dev-flake8"
Requires-Dist: pydocstyle==6.3.0; extra == "dev-flake8"
Provides-Extra: dev-formatting
Requires-Dist: black==26.1.0; extra == "dev-formatting"
Requires-Dist: isort==8.0.1; extra == "dev-formatting"
Provides-Extra: dev-mkdocs
Requires-Dist: black==26.1.0; extra == "dev-mkdocs"
Requires-Dist: Markdown==3.10.2; extra == "dev-mkdocs"
Requires-Dist: mike==2.1.3; extra == "dev-mkdocs"
Requires-Dist: mkdocs-gen-files==0.6.0; extra == "dev-mkdocs"
Requires-Dist: mkdocs-literate-nav==0.6.2; extra == "dev-mkdocs"
Requires-Dist: mkdocs-macros-plugin==1.5.0; extra == "dev-mkdocs"
Requires-Dist: mkdocs-material==9.7.3; extra == "dev-mkdocs"
Requires-Dist: mkdocstrings[python]==1.0.3; extra == "dev-mkdocs"
Requires-Dist: mkdocstrings-python==2.0.3; extra == "dev-mkdocs"
Provides-Extra: dev-mypy
Requires-Dist: mypy==1.19.1; extra == "dev-mypy"
Requires-Dist: types-setuptools<83,>=67.6.0; extra == "dev-mypy"
Requires-Dist: types-Markdown==3.10.2.20260211; extra == "dev-mypy"
Requires-Dist: types-PyYAML==6.0.12.20250915; extra == "dev-mypy"
Requires-Dist: types-babel==2.11.0.15; extra == "dev-mypy"
Requires-Dist: types-colorama==0.4.15.20250801; extra == "dev-mypy"
Requires-Dist: frequenz-repo-config[dev-mkdocs,dev-noxfile,dev-pytest]; extra == "dev-mypy"
Provides-Extra: dev-noxfile
Requires-Dist: nox==2026.2.9; extra == "dev-noxfile"
Provides-Extra: dev-pylint
Requires-Dist: frequenz-repo-config[dev-mkdocs,dev-noxfile,dev-pytest]; extra == "dev-pylint"
Requires-Dist: setuptools<83,>=67.6.0; extra == "dev-pylint"
Provides-Extra: dev-pytest
Requires-Dist: pytest==9.0.2; extra == "dev-pytest"
Requires-Dist: pylint==4.0.5; extra == "dev-pytest"
Requires-Dist: cookiecutter==2.6.0; extra == "dev-pytest"
Requires-Dist: jinja2==3.1.6; extra == "dev-pytest"
Requires-Dist: sybil<10,>=6.1.1; extra == "dev-pytest"
Requires-Dist: chardet<6; extra == "dev-pytest"
Provides-Extra: dev
Requires-Dist: frequenz-repo-config[dev-flake8,dev-formatting,dev-mkdocs,dev-mypy,dev-noxfile,dev-pylint,dev-pytest]; extra == "dev"
Dynamic: license-file

# Frequenz Repository Configuration

[![Build Status](https://github.com/frequenz-floss/frequenz-repo-config-python/actions/workflows/ci.yaml/badge.svg)](https://github.com/frequenz-floss/frequenz-repo-config-python/actions/workflows/ci.yaml)
[![PyPI Package](https://img.shields.io/pypi/v/frequenz-repo-config)](https://pypi.org/project/frequenz-repo-config/)
[![Docs](https://img.shields.io/badge/docs-latest-informational)](https://frequenz-floss.github.io/frequenz-repo-config-python/)

## Introduction

This is a highly opinionated set of tools and configurations to set up a Python
repository for [Frequenz](https://frequenz.com) projects.

It offers:

* [Cookiecutter] templates for scaffolding new projects
* Trivial build of `noxfile.py` with some predefined sessions that include all
  common checks.
* Tools to build protobuf/grpc files as Python, including type information.

## Supported Platforms

The following platforms are officially supported (tested):

- **Python:** 3.11
- **Operating System:** Ubuntu Linux 20.04
- **Architectures:** amd64, arm64

## Quick Example

To start a new project, you should first [install
Cookiecutter](https://cookiecutter.readthedocs.io/en/stable/installation.html).
It is normally available in any Linux distribution, but some have a very old
version (for example, Ubuntu/Debian). You can [check which version your distro
has on Repology](https://repology.org/project/cookiecutter/versions). You need
**at least version 2.4.0**. To ensure you get an up-to-date version, you can
always use `pip` and install it in a `venv`:

```console
$ python -m venv cookiecutter
$ cd cookiecutter
$ . bin/activate
(venv) $ pip install cookiecutter
Collecting cookiecutter
...
```

Then simply run [Cookiecutter] where you want to create the new project. A new
directory will be created with the generated project name. For example:

```sh
cd ~/devel
cookiecutter gh:frequenz-floss/frequenz-repo-config-python --directory=cookiecutter
```

This command will prompt you for the project type, name, and other
configuration options, and it will generate the entire project for you.

It is recommended to use a released version, you can do that by adding the
option `--checkout <version>` to the command above. You can check which is the
latest version
[here](https://github.com/frequenz-floss/frequenz-repo-config-python/releases/latest).

After completing the project and fixing the `TODO`s, you can either amend the
previous commit using `git commit --amend` or create a new commit for the
changes using `git commit`.

## Documentation

For more detailed documentation, please check the [project's
website](https://frequenz-floss.github.io/frequenz-repo-config-python/).

## Contributing

If you want to know how to build this project and contribute to it, please
refer to the [Contributing Guide](CONTRIBUTING.md).


[Cookiecutter]: https://cookiecutter.readthedocs.io/en/stable
