Metadata-Version: 2.1
Name: snowdev
Version: 0.1.4
Summary: snowdev is a Python package that allows you to deploy Snowflake UDFs, stored procedures, tasks, streamlit from your local environment using snowpark
Home-page: https://github.com/kaarthik108/snowdev
Author: kaarthik
Author-email: kaarthikandavar@gmail.com
Requires-Python: >=3.10.0,<3.11.0
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.9
Requires-Dist: langchain (>=0.0.265,<0.0.266)
Requires-Dist: openai (>=0.27.8,<0.28.0)
Requires-Dist: pydantic (==1.10.9)
Requires-Dist: pyyaml (>=6.0.1,<7.0.0)
Requires-Dist: snowflake-snowpark-python[pandas] (==1.5.1)
Requires-Dist: termcolor (==2.3.0)
Requires-Dist: toml (>=0.10.2,<0.11.0)
Description-Content-Type: text/markdown

# SnowDev - Snowpark Devops

SnowDev is a command-line utility designed for deploying various components related to Snowflake such as UDFs, stored procedures, and Streamlit applications using **Snowpark**. This tool streamlines tasks like initializing directories, local testing, uploading, and auto create components code using AI.

## Usage

``` bash
snowdev <command> [options]
```

## Commands

### `init`
- **Description**: Initializes the directory structure for the deployment.
- **Usage**: `snowdev init`

### `test`
- **Description**: Test the deployment locally.
- **Usage**: `snowdev test --udf predict_sentiment`

### `deploy`
- **Description**: Deploys the specified components, registers and tests using temp function before deploying to prod
- **Usage**: `snowdev deploy --udf predict_sentiment`

### `upload`
- **Description**: Uploads specified items such as static content.
- **Usage**: `snowdev upload --upload <upload_item>`

### `add`
- **Description**: Adds a package and optionally uploads it to stage.
- **Usage**: `snowdev add --package <package_name>`

### `new`
- **Description**: Adds a new component.
- **Usage**: `snowdev new --sproc "test_script"`

### `ai`
- **Description**: Interact with AI components and embeddings. It can also help in creating new AI components code based on the description.
- **Usage**: `snowdev ai --streamlit "Want to see a bar chart on the order table"`

## Options

- `--udf <udf_name>`: Name or identifier for the UDF you want to deploy.
- `--sproc <sproc_name>`: Name or identifier for the Stored Procedure you want to deploy.
- `--streamlit <streamlit_name>`: Name or identifier for the Streamlit application you want to deploy.
- `--upload <upload_item>`: Specifies what to upload. Currently supported options: `static`.
- `--package <package_name>`: Specifies the name of the package to zip and upload to the static folder.
- `--embed`: Used with the `ai` command to run embeddings.

## Requirements

- **Python**: `>=3.10.0, <3.11.0`
- **Dependencies**: 
  - `"snowflake-snowpark-python" = { version = "1.5.1", extras = ["pandas"] }`


## Notes
- For the `ai` command, when specifying a component type (using --udf, --sproc, or --streamlit), ensure that the respective name or identifier is provided.
- When using the `add` command, the user will be prompted to decide if they want to upload the zip package to stage.
- The AI functionality in SnowDev is optimized with GPT-4, ensuring a better relevance in code suggestions and interactions.


## Roadmap

- [x] Support for UDFs and Stored Procedures
- [x] Support for Streamlit
- [x] AI interactions for embedding and suggestions
- [ ] Use AI to modify existing code for optimization
- [ ] Adding more granularity for AI commands
- [ ] Support for snowflake Tasks


## Contributions

Feel free to contribute to SnowDev by submitting pull requests or opening issues on the project's GitHub repository.

