Metadata-Version: 2.1
Name: jamspy
Version: 0.3.2
Summary: A HTTP & gRPC client for J.A.M.S - Just Another Model Server in Python
Author: gagansingh894
Project-URL: Homepage, https://github.com/gagansingh894/jams-rs/tree/main/clients/python/jams
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pydantic==2.6
Requires-Dist: requests==2.32.3
Requires-Dist: grpcio==1.67.0
Requires-Dist: protobuf>=3.20.3
Requires-Dist: grpcio-tools==1.65.5
Requires-Dist: ruff==0.6.9
Requires-Dist: mypy==1.11.1
Requires-Dist: types-requests==2.32.0.20240914
Requires-Dist: types-protobuf==5.28.0.20240924
Requires-Dist: pytest==8.0.0
Requires-Dist: pytest-asyncio==0.23.8
Requires-Dist: nox==2024.4.15
Requires-Dist: catboost==1.2.3
Requires-Dist: lightgbm==4.0.0
Requires-Dist: torch==2.2.0
Requires-Dist: xgboost==2.0.3
Requires-Dist: numpy==1.26.0
Requires-Dist: httpx==0.26.0
Provides-Extra: dev
Requires-Dist: check-manifest; extra == "dev"

# J.A.M.S Python Client


A HTTP & gRPC client for `J.A.M.S - Just Another Model Server`

## Installation
```
pip install jamspy
```

## Usage

Start `J.A.M.S` by following the instructions [here](https://github.com/gagansingh894/jams-rs?tab=readme-ov-file#docker-setup)

### HTTP

```
from jamspy.client.http import Client

# init client
client = Client('0.0.0.0:3000')

# healthcheck
await client.health_check()

# predict   
model_name = "titanic_model"
model_input = json.dumps(
    {
        "pclass": ["1", "3"],
        "sex": ["male", "female"],
        "age": [22.0, 23.79929292929293],
        "sibsp": [
            "0",
            "1",
        ],
        "parch": ["0", "0"],
        "fare": [151.55, 14.4542],
        "embarked": ["S", "C"],
        "class": ["First", "Third"],
        "who": ["man", "woman"],
        "adult_male": ["True", "False"],
        "deck": ["Unknown", "Unknown"],
        "embark_town": ["Southampton", "Cherbourg"],
        "alone": ["True", "False"],
    }
)
prediction = client.predict(model_name=model_name, model_input=model_input)
prediction.values # use predictions


# add model
client.add_model(model_name='tensorflow-my_awesome_penguin_model') # <MODEL FRAMEWORK>-<MODEL_NAME>

# update model
client.update_model(model_name='my_awesome_penguin_model')

# delete model
client.delete_model(model_name='my_awesome_penguin_model')

# get models
models = client.get_models()
print(models)

```

### gRPC

```
from jamspy.client.grpc import Client

# init client
client = Client('0.0.0.0:4000')

# healthcheck
client.health_check()

# predict   
model_name = "titanic_model"
model_input = json.dumps(
    {
        "pclass": ["1", "3"],
        "sex": ["male", "female"],
        "age": [22.0, 23.79929292929293],
        "sibsp": [
            "0",
            "1",
        ],
        "parch": ["0", "0"],
        "fare": [151.55, 14.4542],
        "embarked": ["S", "C"],
        "class": ["First", "Third"],
        "who": ["man", "woman"],
        "adult_male": ["True", "False"],
        "deck": ["Unknown", "Unknown"],
        "embark_town": ["Southampton", "Cherbourg"],
        "alone": ["True", "False"],
    }
)
prediction = client..predict(model_name=model_name, model_input=model_input)
prediction.values # use predictions


# add model
client.add_model(model_name='tensorflow-my_awesome_penguin_model') # <MODEL FRAMEWORK>-<MODEL_NAME>

# update model
client.update_model(model_name='my_awesome_penguin_model')

# delete model
client.delete_model(model_name='my_awesome_penguin_model')

# get models
models = client.get_models()
print(models)
```
