Metadata-Version: 2.1
Name: kweb
Version: 1.1.10
Summary: KLayout API implementation of gdsfactory
Author-email: gdsfactory community <contact@gdsfactory.com>
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: klayout >=0.28.11
Requires-Dist: fastapi
Requires-Dist: uvicorn[standard]
Requires-Dist: jinja2
Provides-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: types-cachetools ; extra == 'dev'
Requires-Dist: towncrier ; extra == 'dev'
Requires-Dist: tbump ; 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 ==0.0.17 ; extra == 'docs'
Requires-Dist: myst-parser ; extra == 'docs'
Requires-Dist: matplotlib ; extra == 'docs'
Requires-Dist: nbsphinx ; extra == 'docs'
Requires-Dist: autodoc-pydantic ; extra == 'docs'
Provides-Extra: ipy
Requires-Dist: ipython ; extra == 'ipy'
Requires-Dist: ipywidgets ; extra == 'ipy'
Requires-Dist: ipyevents ; extra == 'ipy'
Provides-Extra: tests
Requires-Dist: pytest ; extra == 'tests'
Requires-Dist: pytest-cov ; extra == 'tests'

# kweb 1.1.10

KLayout Web Viewer ![demo](docs/_static/kweb.png)

Based on https://github.com/klayoutmatthias/canvas2canvas

## Install & Run

### Through pypi

From a python virtual environment run:

```bash
python -m pip install kweb
export KWEB_FILESLOCATION="/path/to/gds/folder" # or the windows equivalent with set
uvicorn --reload kweb.default:app
````

#### Advanced Usage

KWeb offers two basic apps:

- Browser:

  A version that provides a version with a file browser for a folder and the kweb viewer for viewing the gds file in that folder.
  This can be used by importing the funciton `kweb.browser.get_app` and settings the `KWEB_FILESLOCATION` env variable of passing
  `fileslocation=<Path object for target folder>` to the function. Alternatively there is a default one in `kweb.default.app` that
  will only look for the env variable.

- Viewer:

  Only enables the `/gds/<filename>` endpoints, no root path, i.e. no file browser. Available at `kweb.viewer.get_app`. This version
  doesn't provide a listener for the env variable. Use the `fileslocation` parameter in the function instead.

### Development

#### Clone & Installl


```bash
# Clone the repository to your local
git clone https://github.com/gdsfactory/kweb.git
# Install the necessary dependecies
cd /kweb
python -m pip install -e .[dev]
```

#### Set a folder for kweb to use when looking for gds files

```bash
export KWEB_FILESLOCATION=/path/to/folder/with/gdsfiles
```

#### Run

```bash
cd src/kweb
uvicorn --reload default:app
```

Copy the link http://127.0.0.1:8000/gds/file.gds (or http://localhost:8000/gds/file.gds also works) to your browser to open the waveguide example


#### Contributing

Pleas make sure you have also installed pre-commit before committing:

```bash
python -m pip install pre-commit
pre-commit install
```
