Metadata-Version: 2.4
Name: virtualitics-cli
Version: 1.54.0
Summary: A command line interface for initializing, packaging, and deploying Custom Apps to the Virtualitics AI Platform from a local development environment.
Author-email: Virtualitics Engineering <engineering@virtualitics.com>
License: MIT
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows :: Windows 10
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.14
Requires-Python: <3.15,>=3.14
Requires-Dist: art>=6.1
Requires-Dist: build>=1.2.1
Requires-Dist: requests>=2.31.0
Requires-Dist: typer>=0.19.2
Provides-Extra: dev
Requires-Dist: ruff>=0.9.0; extra == 'dev'
Provides-Extra: optional
Requires-Dist: virtualitics-sdk>=1.26.0; extra == 'optional'
Provides-Extra: test
Requires-Dist: pip-audit>=2.7.0; extra == 'test'
Requires-Dist: pytest-cov>=5.0.0; extra == 'test'
Requires-Dist: pytest>=8.1.1; extra == 'test'
Description-Content-Type: text/markdown

# Virtualitics AI Platform CLI

[![Quality Gate Status](https://sonarqube.virtualitics.com/api/project_badges/measure?project=virtualitics-cli&metric=alert_status&token=sqb_f10a2a34b3e6eeea1fb49ec4e1eb529b2dccf601)](https://sonarqube.virtualitics.com/dashboard?id=virtualitics-cli)
[![Coverage](https://sonarqube.virtualitics.com/api/project_badges/measure?project=virtualitics-cli&metric=coverage&token=sqb_f10a2a34b3e6eeea1fb49ec4e1eb529b2dccf601)](https://sonarqube.virtualitics.com/dashboard?id=virtualitics-cli)
[![Security Hotspots](https://sonarqube.virtualitics.com/api/project_badges/measure?project=virtualitics-cli&metric=security_hotspots&token=sqb_f10a2a34b3e6eeea1fb49ec4e1eb529b2dccf601)](https://sonarqube.virtualitics.com/dashboard?id=virtualitics-cli)
[![Reliability Issues](https://sonarqube.virtualitics.com/api/project_badges/measure?project=virtualitics-cli&metric=software_quality_reliability_issues&token=sqb_f10a2a34b3e6eeea1fb49ec4e1eb529b2dccf601)](https://sonarqube.virtualitics.com/dashboard?id=virtualitics-cli)
[![Maintainability Issues](https://sonarqube.virtualitics.com/api/project_badges/measure?project=virtualitics-cli&metric=software_quality_maintainability_issues&token=sqb_f10a2a34b3e6eeea1fb49ec4e1eb529b2dccf601)](https://sonarqube.virtualitics.com/dashboard?id=virtualitics-cli)
[![Duplicated Lines (%)](https://sonarqube.virtualitics.com/api/project_badges/measure?project=virtualitics-cli&metric=duplicated_lines_density&token=sqb_f10a2a34b3e6eeea1fb49ec4e1eb529b2dccf601)](https://sonarqube.virtualitics.com/dashboard?id=virtualitics-cli)
[![Lines of Code](https://sonarqube.virtualitics.com/api/project_badges/measure?project=virtualitics-cli&metric=ncloc&token=sqb_f10a2a34b3e6eeea1fb49ec4e1eb529b2dccf601)](https://sonarqube.virtualitics.com/dashboard?id=virtualitics-cli)

A command line interface for initializing, packaging, and deploying Custom Apps to the Virtualitics AI Platform (VAIP) from a local development environment.

## Installation

```console
pip install virtualitics-cli
```

Requires Python >= 3.14.

## Quick Start

```console
vaip config                          # Configure connection to a VAIP instance
vaip init                            # Scaffold a new VAIP app
# ... write your app code ...
vaip build --yes                     # Build a wheel
vaip deploy                          # Deploy to the VAIP instance
vaip destroy --project-name=my_app --yes  # Remove app from the instance
```

## Usage

```console
$ vaip [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--version`
* `--verbose / --no-verbose`: [default: no-verbose]
* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

## Commands

### `vaip config`

Create or update a configuration file for connecting to a VAIP instance.
Requires a friendly name, host URL, API token, and username. Supports multiple named contexts.

```console
$ vaip config [OPTIONS]
```

* `-N, --name TEXT`: Friendly name for the VAIP instance (e.g., `predict-dev`) [required]
* `-H, --host TEXT`: Backend hostname (e.g., `https://predict-api-dev.virtualitics.com`) [required]
* `-T, --token TEXT`: API token for authentication
* `-U, --username TEXT`: Username associated with API token

### `vaip use-context`

Switch the active context for deployment.

```console
$ vaip use-context CONTEXT_NAME
```

### `vaip show-context`

Display the current configuration file.

```console
$ vaip show-context
```

### `vaip delete-context`

Delete a specific context from the configuration file.

```console
$ vaip delete-context CONTEXT_NAME
```

### `vaip edit-context`

Modify a specific context in the configuration file.

```console
$ vaip edit-context CONTEXT_NAME
```

### `vaip init`

Scaffold a new VAIP app structure with a `pyproject.toml` and package directory.

```console
$ vaip init [OPTIONS]
```

* `-n, --project-name TEXT`: Name for the VAIP App (no spaces, numbers, or special chars besides `_`) [required]
* `-v, --version TEXT`: Version for the VAIP App [required]
* `-d, --description TEXT`: Description for the VAIP App [required]
* `-a, --authors TEXT`: Authors for the VAIP App [required]
* `-l, --licenses TEXT`: License for the VAIP App [required]

### `vaip build`

Build a Python wheel file from the `pyproject.toml` in the current directory.

```console
$ vaip build [OPTIONS]
```

* `-y, --yes`: Confirm the build [required]

### `vaip deploy`

Deploy the VAIP App wheel to the configured VAIP instance.

```console
$ vaip deploy [OPTIONS]
```

* `-f, --file TEXT`: Path to the wheel file (defaults to `./dist/*.whl`)

### `vaip destroy`

Delete a VAIP module and all its apps from the instance.

```console
$ vaip destroy [OPTIONS]
```

* `-n, --project-name TEXT`: Project name to delete [required]
* `-y, --yes`: Confirm deletion [required]

### `vaip publish`

Publish a VAIP App to other users in your organization. *(Not currently implemented.)*

```console
$ vaip publish
```

## Development

This project uses [uv](https://docs.astral.sh/uv/) for dependency management.

```bash
# Install dependencies (including test extras)
uv sync --extra test

# Run tests with coverage
uv run pytest

# Run a single test
uv run pytest tests/test_cli.py::test_config_w_input

# Build wheel
uv build
```

*To delete an app from an instance*: remove the app file from your project, rebuild, and redeploy.
