Metadata-Version: 2.4
Name: kfactory
Version: 3.0.0rc3
Summary: KLayout API implementation of gdsfactory
Author-email: gdsfactory community <contact@gdsfactory.com>
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: aenum<4,>=3.1.17
Requires-Dist: cachetools<7.2,>=7.1.1
Requires-Dist: kfnetlist>=0.1.3
Requires-Dist: klayout<0.31,>=0.30.8
Requires-Dist: loguru<0.8,>=0.7.3
Requires-Dist: pydantic<2.14,>=2.13.3
Requires-Dist: pydantic-extra-types<2.12,>=2.11.1
Requires-Dist: pydantic-settings<3,>=2.14
Requires-Dist: pygit2<2,>=1.19.2
Requires-Dist: rapidfuzz<4,>=3.14.5
Requires-Dist: rectangle-packer<3,>=2.1
Requires-Dist: requests<3,>=2.33.1
Requires-Dist: ruamel-yaml<0.20,>=0.19.1
Requires-Dist: ruamel-yaml-string<0.2,>=0.1.1
Requires-Dist: scipy<2,>=1.17.1
Requires-Dist: semver<4,>=3.0.4
Requires-Dist: toolz<2,>=1.1
Requires-Dist: typer<0.26,>=0.25.1
Provides-Extra: ci
Requires-Dist: pytest<9.1,>=9.0.3; extra == "ci"
Requires-Dist: pytest-cov<7.2,>=7.1; extra == "ci"
Requires-Dist: pytest-datadir<1.9,>=1.8; extra == "ci"
Requires-Dist: pytest-randomly<4.2,>=4.1; extra == "ci"
Requires-Dist: pytest-regressions<2.11,>=2.10; extra == "ci"
Requires-Dist: pytest-xdist<3.9,>=3.8; extra == "ci"
Requires-Dist: types-cachetools<7.1,>=7.0.0.20260503; extra == "ci"
Requires-Dist: types-requests<2.34,>=2.33.0.20260503; extra == "ci"
Requires-Dist: uv<0.12,>=0.11.9; extra == "ci"
Provides-Extra: dev
Requires-Dist: kfactory[ci]; extra == "dev"
Requires-Dist: pre-commit<4.7,>=4.6; extra == "dev"
Requires-Dist: python-lsp-server[all]<1.15,>=1.14; extra == "dev"
Requires-Dist: ruff<0.16,>=0.15.12; extra == "dev"
Requires-Dist: rust-just~=1.51.0; extra == "dev"
Requires-Dist: scipy-stubs<1.18,>=1.17.1.4; extra == "dev"
Requires-Dist: tbump<6.12,>=6.11; extra == "dev"
Requires-Dist: ty<0.1,>=0.0.34; extra == "dev"
Requires-Dist: types-cachetools<7.1,>=7.0.0.20260503; extra == "dev"
Requires-Dist: types-docutils<0.23,>=0.22.3.20260408; extra == "dev"
Requires-Dist: types-pygments<2.21,>=2.20.0.20260408; extra == "dev"
Requires-Dist: types-requests<2.34,>=2.33.0.20260503; extra == "dev"
Requires-Dist: types-setuptools<82.1,>=82.0.0.20260408; extra == "dev"
Provides-Extra: docs
Requires-Dist: erdantic<1.3,>=1.2.1; extra == "docs"
Requires-Dist: griffe-inherited-docstrings<1.2,>=1.1.3; extra == "docs"
Requires-Dist: griffe-pydantic<1.4,>=1.3.1; extra == "docs"
Requires-Dist: griffe-warnings-deprecated<1.2,>=1.1.1; extra == "docs"
Requires-Dist: kfactory[notebooks]; extra == "docs"
Requires-Dist: mkdocs-literate-nav<0.7,>=0.6.3; extra == "docs"
Requires-Dist: mkdocs-video<1.6,>=1.5; extra == "docs"
Requires-Dist: mkdocstrings[python]<1.1,>=1.0.4; extra == "docs"
Requires-Dist: pymdown-extensions<10.22,>=10.21.2; extra == "docs"
Requires-Dist: ruff<0.16,>=0.15.12; extra == "docs"
Requires-Dist: zensical<0.1,>=0.0.40; extra == "docs"
Provides-Extra: ipy
Requires-Dist: ipyevents<2.1,>=2.0.4; extra == "ipy"
Requires-Dist: ipython<9.14,>=9.13; extra == "ipy"
Requires-Dist: ipytree<0.3,>=0.2.2; extra == "ipy"
Requires-Dist: ipywidgets<8.2,>=8.1.8; extra == "ipy"
Provides-Extra: notebooks
Requires-Dist: ipykernel<7.3,>=7.2; extra == "notebooks"
Requires-Dist: jupytext<1.20,>=1.19.1; extra == "notebooks"
Requires-Dist: kfactory[ipy]; extra == "notebooks"
Requires-Dist: nbconvert<7.18,>=7.17.1; extra == "notebooks"
Dynamic: license-file

# KFactory 3.0.0rc2

[![codecov](https://codecov.io/gh/gdsfactory/kfactory/graph/badge.svg?token=dArcfnQE4w)](https://codecov.io/gh/gdsfactory/kfactory)

KFactory is a Python framework for photonic and electronic chip layout, built on [KLayout](https://klayout.de)'s C++ geometry engine.
It provides parametric cells with caching, optical and electrical routing, enclosures via Minkowski sums, and schematic-driven design with LVS.

## Key Features

- **Cell caching** — the `@kf.cell` decorator deduplicates identical components automatically
- **Routing** — optical and electrical bundle routing, Manhattan primitives, all-angle routing, and path-length matching
- **Cross-sections & enclosures** — define waveguide profiles and automatic boolean cladding layers via Minkowski sums
- **Schematics** — place-and-connect workflow with netlist extraction and layout-vs-schematic verification
- **Virtual cells** — hierarchical logical containers for schematic-driven design
- **Dual coordinate systems** — `KCell` (integer DBU) and `DKCell` (float µm) work side by side
- **KLayout integration** — full access to `kdb.Region`, `kdb.Polygon`, DRC, and GDS/OASIS I/O
- **Jupyter & KLive** — live preview in KLayout while editing notebooks
- **PDK system** — bundle layers, factories, cross-sections, and technology into reusable packages

## Getting Started

### Installation

KFactory is available on [PyPI](https://pypi.org/project/kfactory/) and requires Python 3.12+.

```bash
uv add kfactory

# or with pip
pip install kfactory
```

### Development

```bash
just dev
```

This installs the development environment and sets up pre-commit hooks.

## Ecosystem

| Package | Description |
|---|---|
| [gdsfactory](https://github.com/gdsfactory/gdsfactory) | Full-featured chip design framework — KFactory is its layout backend |
| [kfnetlist](https://github.com/gdsfactory/kfnetlist) | Standalone netlist extraction and generation |

## Documentation

Full documentation is available at [gdsfactory.github.io/kfactory](https://gdsfactory.github.io/kfactory).

Upgrading from an earlier version? See the [migration guide](migration.md).

## License

[MIT](LICENSE)
