Metadata-Version: 2.4
Name: panel-live-server
Version: 0.1.0a5
Summary: Panel Live Server is a local Panel web server that executes Python code snippets and renders the resulting visualizations as live, interactive web pages.
Project-URL: Homepage, https://github.com/panel-extensions/panel-live-server
Project-URL: Source, https://github.com/panel-extensions/panel-live-server
Author-email: MarcSkovMadsen <marc.skov.madsen@gmail.com>
Maintainer-email: MarcSkovMadsen <marc.skov.madsen@gmail.com>
License: BSD
License-File: LICENSE.txt
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: BSD License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.12
Requires-Dist: fastmcp>=3.0
Requires-Dist: packaging
Requires-Dist: panel-material-ui
Requires-Dist: panel>=1.5.0
Requires-Dist: psutil
Requires-Dist: pydantic>=2.0
Requires-Dist: requests
Requires-Dist: ruff
Requires-Dist: typer
Provides-Extra: dev
Requires-Dist: mkdocstrings[python]; extra == 'dev'
Requires-Dist: pre-commit; extra == 'dev'
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: pytest-asyncio; extra == 'dev'
Requires-Dist: pytest-rerunfailures; extra == 'dev'
Requires-Dist: pytest-xdist; extra == 'dev'
Requires-Dist: typer; extra == 'dev'
Requires-Dist: watchfiles; extra == 'dev'
Requires-Dist: zensical; extra == 'dev'
Provides-Extra: mypy
Requires-Dist: mypy; extra == 'mypy'
Requires-Dist: panel>=1.5.0; extra == 'mypy'
Requires-Dist: types-requests; extra == 'mypy'
Requires-Dist: typing-extensions; extra == 'mypy'
Provides-Extra: pydata
Requires-Dist: altair; extra == 'pydata'
Requires-Dist: datashader; extra == 'pydata'
Requires-Dist: duckdb; extra == 'pydata'
Requires-Dist: geoviews; extra == 'pydata'
Requires-Dist: great-tables; extra == 'pydata'
Requires-Dist: holoviews; extra == 'pydata'
Requires-Dist: hvplot; extra == 'pydata'
Requires-Dist: hvsampledata; extra == 'pydata'
Requires-Dist: ipywidgets-bokeh; extra == 'pydata'
Requires-Dist: matplotlib; extra == 'pydata'
Requires-Dist: panel-full-calendar; extra == 'pydata'
Requires-Dist: panel-graphic-walker; extra == 'pydata'
Requires-Dist: panel-neuroglancer; extra == 'pydata'
Requires-Dist: panel-precision-slider; extra == 'pydata'
Requires-Dist: panel-splitjs; extra == 'pydata'
Requires-Dist: panel-web-llm; extra == 'pydata'
Requires-Dist: plotly; extra == 'pydata'
Requires-Dist: plotnine; extra == 'pydata'
Requires-Dist: polars; extra == 'pydata'
Requires-Dist: pooch; extra == 'pydata'
Requires-Dist: pyarrow; extra == 'pydata'
Requires-Dist: pydeck; extra == 'pydata'
Requires-Dist: scikit-image; extra == 'pydata'
Requires-Dist: scikit-learn; extra == 'pydata'
Requires-Dist: seaborn; extra == 'pydata'
Requires-Dist: setuptools; extra == 'pydata'
Requires-Dist: shapely; extra == 'pydata'
Requires-Dist: vega-datasets; extra == 'pydata'
Requires-Dist: yfinance; extra == 'pydata'
Description-Content-Type: text/markdown

# ✨ panel-live-server

[![CI](https://img.shields.io/github/actions/workflow/status/panel-extensions/panel-live-server/ci.yml?style=flat-square&branch=main)](https://github.com/panel-extensions/panel-live-server/actions/workflows/ci.yml)
[![conda-forge](https://img.shields.io/conda/vn/conda-forge/panel-live-server?logoColor=white&logo=conda-forge&style=flat-square)](https://prefix.dev/channels/conda-forge/packages/panel-live-server)
[![pypi-version](https://img.shields.io/pypi/v/panel-live-server.svg?logo=pypi&logoColor=white&style=flat-square)](https://pypi.org/project/panel-live-server)
[![python-version](https://img.shields.io/pypi/pyversions/panel-live-server?logoColor=white&logo=python&style=flat-square)](https://pypi.org/project/panel-live-server)


Panel Live Server is a local Panel web server and MCP server that executes
  Python code snippets and renders the resulting visualizations
  as live, interactive web pages — enabling humans and AI assistants to
  display and inspect Python outputs in real time.

![panel-live-server showcase](https://raw.githubusercontent.com/panel-extensions/panel-live-server/main/docs/assets/gif/panel-live-server-showcase.gif)

![panel-live-server MCP showcase](https://raw.githubusercontent.com/panel-extensions/panel-live-server/main/docs/assets/gif/panel-live-server-showcase-mcp.gif)

## Features

panel-live-server

## Pin your version!

This project is **in its early stages**, so if you find a version that suits your needs, it’s recommended to **pin your version**, as updates may introduce changes.

## Installation

Install it via `pip`:

```bash
pip install panel-live-server
```

## Usage

```bash
 $ pls

 Usage: pls [OPTIONS] COMMAND [ARGS]...

 Panel Live Server - Execute and visualize Python code snippets.

╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────╮
│ --version  -V        Show version and exit.                                                          │
│ --help               Show this message and exit.                                                     │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────────────────────╮
│ serve   Start the Panel Live Server directly.                                                        │
│ mcp     Start as an MCP server for AI assistants.                                                    │
│ status  Check whether the Panel server is running.                                                   │
│ list    List resources (packages, etc.).                                                             │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯
```

You can also use `panel-live-server` but `pls` is shorter, easy to remember and fun to use - pls use it 😄.

## Development

```bash
git clone https://github.com/panel-extensions/panel-live-server
cd panel-live-server
```

For a simple setup use [`uv`](https://docs.astral.sh/uv/):

```bash
uv venv
source .venv/bin/activate # on linux. Similar commands for windows and osx
uv pip install -e .[dev]
pre-commit run install
pytest tests
```

For the full Github Actions setup use [pixi](https://pixi.sh):

```bash
pixi run pre-commit-install
pixi run postinstall
pixi run test
```

This repository is based on [copier-template-panel-extension](https://github.com/panel-extensions/copier-template-panel-extension) (you can create your own Panel extension with it)!

To update to the latest template version run:

```bash
pixi exec --spec copier --spec ruamel.yaml -- copier update --defaults --trust
```

Note: `copier` will show `Conflict` for files with manual changes during an update. This is normal. As long as there are no merge conflict markers, all patches applied cleanly.

## ❤️ Contributing

Contributions are welcome! Please follow these steps to contribute:

1. Fork the repository.
2. Create a new branch: `git checkout -b feature/YourFeature`.
3. Make your changes and commit them: `git commit -m 'Add some feature'`.
4. Push to the branch: `git push origin feature/YourFeature`.
5. Open a pull request.

Please ensure your code adheres to the project's coding standards and passes all tests.
