Metadata-Version: 2.1
Name: penne
Version: 0.5.3
Summary: Python Client Library for NOODLES Protocol
Keywords: noodles,cbor,Websockets,client,NOODLES
Author: Alex Racapé
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering :: Visualization
Requires-Dist: websockets
Requires-Dist: cbor2
Requires-Dist: pydantic
Requires-Dist: pydantic-extra-types
Requires-Dist: pytest ; extra == "testing"
Requires-Dist: rigatoni ; extra == "testing"
Requires-Dist: pandas ; extra == "testing"
Requires-Dist: matplotlib ; extra == "testing"
Project-URL: Documentation, https://insightcenternoodles.github.io/Penne/
Project-URL: Source, https://github.com/InsightCenterNoodles/Penne
Provides-Extra: testing

# Penne

![Build Status](https://github.com/InsightCenterNoodles/Penne/workflows/CI/badge.svg)
![PyPI](https://img.shields.io/pypi/v/Penne)
[![Coverage badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/InsightCenterNoodles/Penne/python-coverage-comment-action-data/endpoint.json&color=brightgreen)](https://htmlpreview.github.io/?https://github.com/InsightCenterNoodles/Penne/blob/python-coverage-comment-action-data/htmlcov/index.html)

Python Client Library for NOODLES Protocol

## Description
Penne is the first client library to implement the NOODLES messaging protocol in Python. NOODLES allows multiple client
applications to interact collaboratively with data in real-time. The client uses a websocket connection to send CBOR 
encoded messages, and all components in the scene graph can be subclassed and customized to fit an application's 
needs. 

## Documentation

For more information, check out [the documentation](https://insightcenternoodles.github.io/Penne/).


## Installation

Installation is as simple as:

```bash
pip install penne
```

## Simple Example

```python
from penne import Method, Client


class CustomMethod(Method):
  
  custom_attribute = None
  
  def on_new(self, message: dict):
    print(f"New method named {self.name} was created")
    
      
with Client("ws://localhost:50000", {Method: CustomMethod}) as client:
  # do stuff

```

## Hungry for more NOODLES?
For more information and other related repositories check out [this collection](https://github.com/InsightCenterNoodles)


