Metadata-Version: 2.1
Name: banana_cli
Version: 0.1.1
Summary: The Banana CLI helps you build Potassium apps
Home-page: https://www.banana.dev
Author: Erik Dunteman
Author-email: erik@banana.dev
License: Apache License 2.0
Keywords: Banana server,HTTP server,Banana,Framework
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Click
Requires-Dist: gitpython
Requires-Dist: termcolor
Requires-Dist: requests
Requires-Dist: yaspin
Requires-Dist: prompt_toolkit
Requires-Dist: opencv-python
Requires-Dist: gitignore_parser
Requires-Dist: fastapi
Requires-Dist: uvicorn[standard]
Requires-Dist: websocket-client
Requires-Dist: wsaccel
Requires-Dist: rel

# banana-cli

The goal of the Banana CLI is to bring an npm-like experience to ML development loops. 

This version includes:
- `banana init` to create a project with boilerplate
- `banana install` to install packages from the requirements.txt
- `banana --version` to show the current version
- `banana deploy` to easily deploy the local folder to Banana.dev without using GitHub

[Here's a demo video](https://www.loom.com/share/86d4e7b0801549b9ab2f7a1acce772aa)


## Installing the CLI locally

```
python3 -m venv .venv
source .venv/bin/activate
pip3 install -e ./
banana --version
```

---
This is a v0 release using SemVer; it is not stable and the interface can break at any time.
---

## To use it

1. Create a new project directory with 
```bash
banana init my-app
cd my-app
```
2. Start the dev server
```bash
python3 app.py
```

3. Call your API (from a separate terminal)
```bash
curl -X POST -H "Content-Type: application/json" -d '{"prompt": "Hello I am a [MASK] model."}' http://localhost:8000/
``` 

The interactive dev server works like a react, next, or nodemon server: it selectively hot reloads components when you save changes to different parts of your `app.py` file.

The init() function is ran on startup and for every change to init().

The handler() function is ran on every change to handler(), without needing to wait for a long init()

## Play with it:

4. Try changing the handler, see what happens!
5. Try changing the init, see what happens!

## Future Development:
- Lock in a stable interface
- Add the following commands
  - `banana stage` -> run a temporary deployment to Banana's cluster for on-GPU testing
  - `banana test` -> unit test against local test cases
