Metadata-Version: 2.3
Name: pykiln
Version: 0.0.1
Summary: Set up new or existing projects at professional quality: configuration, CI/CD, documentation, tests and IDE run configurations.
Keywords: scaffolding,project-template,ci-cd,tooling,uv
Author: biface
Classifier: Development Status :: 1 - Planning
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Code Generators
Classifier: Topic :: Software Development :: Quality Assurance
Requires-Python: >=3.10
Project-URL: Homepage, https://gitlab.com/open-works/kiln/pykiln
Project-URL: Source, https://gitlab.com/open-works/kiln/pykiln
Project-URL: Issues, https://gitlab.com/open-works/kiln/pykiln/-/issues
Project-URL: Governance, https://gitlab.com/open-works/kiln/gitlab-profile
Description-Content-Type: text/markdown

# pykiln

*[Version française](https://gitlab.com/open-works/kiln/pykiln/-/blob/main/README.fr.md)*

pykiln is the Python engine of [Kiln](https://gitlab.com/open-works/kiln):
it helps configure new or existing projects — configuration files, CI/CD,
documentation, tests, IDE run configurations — so they reach a high level
of quality from the start.

pykiln is written in Python, but the projects it generates do not have to
be: Python and Rust come first, other languages follow as language packs.

> **Status:** early development. Version 0.0.1 on PyPI only reserves the
> name and provides no functionality. The command line interface is not
> settled; this README will document it once it is.

## What it does

pykiln runs in four phases:

1. **Inventory and questions** — reads the existing project and asks what it
   cannot detect, then shows a plan. Nothing is written.
2. **Build or transform** — applies the approved plan.
3. **Verify** — checks that the environment syncs and that the quality
   toolchain and tests run. The previous setup is only removed once this
   passes.
4. **Remote repository** — configures the remote repository (labels, milestones,
   issue templates, mirror).

For a Python project, pykiln detects an existing virtual environment
(venv, virtualenv, Poetry, Pipenv) and offers to move it to
[uv](https://docs.astral.sh/uv/). It is an offer, not a forced migration.

IDE support targets PyCharm and RustRover first, through shared run
configurations in `.run/` and `.editorconfig`. pykiln does not write into
`.idea/`.

## Installation

Once a functional version is released, the recommended way to install
pykiln will be:

```bash
uv tool install pykiln
```

`uv` installs and manages its own Python, so no system Python is needed.
`pip install pykiln` will also work on a system with Python 3.10 or later.

## Development

Requirements: [uv](https://docs.astral.sh/uv/).

```bash
git clone https://gitlab.com/open-works/kiln/pykiln.git
cd pykiln
uv sync            # creates .venv with the dev dependency group
uv run tox         # quality checks and test suite
```

Always run tox through `uv run tox`: `uvx tox` starts tox in an isolated
environment without the `tox-uv` plugin.

## Contributing

Bugs, features and tasks are tracked in this project's issues. Design
decisions that apply to all of Kiln live in the
[governance project](https://gitlab.com/open-works/kiln/gitlab-profile);
decisions that only concern pykiln's own Python stack are filed here, with
the same `DT-NNN` numbering.
