Metadata-Version: 2.1
Name: kfactory
Version: 0.6.2
Summary: KLayout API implementation of gdsfactory
Author-email: gdsfactory community <contact@gdsfactory.com>
Classifier: Programming Language :: Python :: 3.10
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: klayout (>=0.28.3)
Requires-Dist: scipy
Requires-Dist: ruamel.yaml
Requires-Dist: cachetools (>=5.2.0)
Requires-Dist: pydantic
Requires-Dist: loguru
Requires-Dist: tomli
Provides-Extra: ci
Requires-Dist: flake8 ; extra == 'ci'
Requires-Dist: flake8-pyproject ; extra == 'ci'
Requires-Dist: pytest ; extra == 'ci'
Requires-Dist: pytest-regressions ; extra == 'ci'
Requires-Dist: mypy ; extra == 'ci'
Requires-Dist: types-cachetools ; extra == 'ci'
Provides-Extra: dev
Requires-Dist: black (>=23) ; extra == 'dev'
Requires-Dist: mypy ; extra == 'dev'
Requires-Dist: pre-commit ; extra == 'dev'
Requires-Dist: gitpython ; extra == 'dev'
Requires-Dist: pylsp-mypy ; extra == 'dev'
Requires-Dist: python-lsp-server[all] ; extra == 'dev'
Requires-Dist: python-lsp-ruff ; extra == 'dev'
Requires-Dist: types-cachetools ; extra == 'dev'
Requires-Dist: python-lsp-black ; extra == 'dev'
Provides-Extra: docs
Requires-Dist: sphinx ; extra == 'docs'
Requires-Dist: docutils (==0.17.1) ; extra == 'docs'
Requires-Dist: sphinx-rtd-theme ; extra == 'docs'
Requires-Dist: sphinxcontrib-video ; extra == 'docs'
Requires-Dist: sphinx-autodoc-typehints ; extra == 'docs'
Requires-Dist: sphinx-book-theme (>=0.3.3) ; extra == 'docs'
Requires-Dist: sphinx-click ; extra == 'docs'
Requires-Dist: sphinx-copybutton ; extra == 'docs'
Requires-Dist: sphinx-markdown-tables ; extra == 'docs'
Requires-Dist: myst-parser ; extra == 'docs'
Requires-Dist: matplotlib ; extra == 'docs'
Requires-Dist: nbsphinx ; extra == 'docs'
Requires-Dist: autodoc-pydantic ; extra == 'docs'
Requires-Dist: jupytext ; extra == 'docs'
Requires-Dist: jupyter ; extra == 'docs'
Requires-Dist: kfactory[ipy] ; extra == 'docs'
Provides-Extra: ipy
Requires-Dist: ipython ; extra == 'ipy'
Requires-Dist: ipywidgets ; extra == 'ipy'
Requires-Dist: ipytree ; extra == 'ipy'
Requires-Dist: ipyevents ; extra == 'ipy'

# KFactory 0.6.2

Kfactory is a [gdsfactory](https://github.com/gdsfactory/gdsfactory)-like tool. It is built with [KLayout](https://klayout.de) as a backend instead of gdstk, but aims to offer the similar featuers.

Features similar to gdsfactory:

- [x] Cells & decorator for caching & storing cells
- [x] Simple routing (point to point and simpl bundle routes for electrical routes)
- [x] Basic cells like euler/circular bends, taper, waveguide
- [x] Path extrusion (no interface with CrossSections)


Notable missing Features:
- [ ] PDK/package configuration
- [ ] CrossSection
- [ ] Netlist/Schematics and LVS
- [ ] More advanced routing
- [ ] Plugin system (simulations etc.)
- [ ] Jupyter integration


New/Improved Features:
- Fully hierarchical bi-directional conversion to YAML
- Automatic snapping to grid thanks to KLayout
- More features for vector geometries due to concept of Point/Edge/Vector/Polygon from Klayout
- Easy booleans thanks to KLayout Regions
- Enclosures: use the concept of enclosures, similar to cross sections, to allow automatic
  calculation of boolean layers for structures based on [minkowski sum](https://en.wikipedia.org/wiki/Minkowski_addition),
  which are built into KLayout


## Installation

kfactory is available on [pypi](https://pypi.org/project/kfactory/)

```
pip install kfactory
```

At the moment kfactory works only on python 3.10

### Development Installation


A development environment can be installed with

```
python -m pip install .[dev]
```

It is defined in `pyproject.toml`. For committing `pre-commit` should be installed with `pre-commit install`.
