Metadata-Version: 2.3
Name: nlip-server
Version: 0.1.2
Summary: 
Author: Dinesh Verma
Author-email: dverma@us.ibm.com
Requires-Python: >=3.10,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: fastapi[standard] (>=0.115.12,<0.116.0)
Requires-Dist: nlip-sdk (>=0.1.2,<0.2.0)
Description-Content-Type: text/markdown

# Python NLIP Repositories 

This repository contains one component of the various python repositories for NLIP Proof of Concept implementation. The various repositories are: 

* nlip_sdk: this provides a software development kit in python that implements the abstractions of NLIP message, submessages along with a factory to ease the creation of NLIP messages and submessages 
* nlip_client: this provides a package that simplifies the task of sending NLIP messages using the base underlying protocol. The current implementation uses httpx as the base transfer package. 
* nlip_server: this provides a paclage that simplifies the task of writing a server-side NLIP application. This provides the abstractions of a NLIPApplication and a NLIP Session. An application consists of multiple sessions. 

The above three are the components needed to write a client or a server. To write a client, you need to use nlip_sdk and nlip_client. To write a server side application, you need to use nlip_sdk and nlip_server. 

The following repositories contain a few simple clients and server side applications: 

* nlip_soln: this provides a few simple prototype server side solutions using the nlip_server package 
* text_client: this provides a simple text based chatbot to interface with a NLIP server 
* kivy_client: this provides a python kivy based visual client to interact with an NLIP server

# NLIP Server  

Welcome to the NLIP Server! This project is a basic implementation of NLIP server side protocol. 

This package provides a library that can easily be customized to 
create your own NLIP based Solution. 

The package depends on the NLIP SDK package. 


## Installation

This project uses [Poetry](https://python-poetry.org/docs/) for dependency management. First, please [install Poetry](https://python-poetry.org/docs/#installation).

To set up the Python project, create a virtual environment using the following commands.

1. Create the virtual environment:
```bash
poetry env use python
```
  
2. Install the application dependencies
```bash
poetry install
```
## Publishing the Package

To publish the package to PyPI, ensure that your changes are committed and then create a version tag. You can do this with the following commands:

```bash
git tag v0.1.0  # Replace with new version
git push origin v0.1.0
```
## Defining a new Server Side Solution 

To define a new solution, you need to provide two subclasses of the provided abstract classes: NLIPApplicaiton and NLIPSession. 

These two classes are defined in module server

The main routine of the solution should call the start_server routine in module server to create an instance of the solution server-side application. start_server takes a subclass of NLIP_Application as an argument. 

An example simple echo application is included in the file echo.py

To run the echo server, use the following command

```bash
poetry run fastapi dev nlip_server/echo.py
```



