Skip to main content

Python package to make it easy to develop, test and deploy streamlit-in-snowflake apps

Project description

sisx

A command-line interface (CLI) for managing Streamlit applications in Snowflake.

Overview

sisx provides a set of commands to simplify the workflow for developing, deploying, and managing Streamlit applications on Snowflake. It handles common tasks like deploying applications, creating preview versions, and cleaning up old deployments.

Installation

uvx sisx

After doing this, you can either do sisx, or uvx sisx.

Commands

Deploy Commands

deploy

Deploy a Streamlit application to Snowflake.

sisx deploy [--verbose] [--replace] [--no-open] [--connection NAME] [--query-warehouse NAME] [--app-warehouse NAME] [--debug]

Options:

  • --verbose, -v: Enable verbose output
  • --replace, -r: Replace existing app if it exists
  • --no-open: Don't open the deployed app in a browser (opens by default)
  • --connection, -c: Connection name to use
  • --query-warehouse: Override the query warehouse to use
  • --app-warehouse: Override the app warehouse to use
  • --debug: Enable debug output

deploy-preview

Deploy a preview version of your application with "preview_" prefix and "PREVIEW:" title.

sisx deploy-preview [--preview-name NAME] [--verbose] [--replace] [--no-open] [--connection NAME] [--debug]

Options:

  • --preview-name: Custom name for the preview app (defaults to "preview_" + original name)
  • --verbose, -v: Enable verbose output
  • --replace, -r: Replace existing preview if it exists
  • --no-open: Don't open the deployed app in a browser (opens by default)
  • --connection, -c: Connection name to use
  • --debug: Enable debug output

Management Commands

drop

Remove a deployed Streamlit application.

sisx drop [--verbose] [--connection NAME] [--force] [--drop-spcs]

Options:

  • --verbose, -v: Enable verbose output
  • --connection, -c: Connection name to use
  • --force, -f: Force drop without confirmation
  • --drop-spcs: Also drop any associated SPCS services

drop-preview

Remove a preview version of a Streamlit application.

sisx drop-preview [--verbose] [--connection NAME] [--force] [--drop-spcs]

Options:

  • --verbose, -v: Enable verbose output
  • --connection, -c: Connection name to use
  • --force, -f: Force drop without confirmation
  • --drop-spcs: Also drop any associated SPCS services

cleanup

Remove multiple applications matching a filter.

sisx cleanup [FILTER] [--verbose] [--connection NAME] [--force] [--drop-spcs]

If no filter is specified, this will remove all apps with "preview_" prefix by default.

Options:

  • --verbose, -v: Enable verbose output
  • --connection, -c: Connection name to use
  • --force, -f: Force cleanup without confirmation
  • --drop-spcs: Also drop any associated SPCS services

Development Commands

new

Create a new Streamlit app from a template.

sisx new [OUTPUT_DIR] [--verbose] [--force] [--connection NAME] [--compute-type TYPE] [--query-warehouse NAME] [--app-warehouse NAME] [--compute-pool NAME] [--stage NAME]

Options:

  • --verbose, -v: Enable verbose output
  • --force, -f: Force overwrite without confirmation
  • --connection, -c: Name of the Snowflake connection to use
  • --compute-type, -t: Type of compute to use: 'warehouse' or 'compute_pool' (default: warehouse)
  • --query-warehouse, -q: Warehouse to use for queries (when using warehouse compute type)
  • --app-warehouse, -a: Warehouse to use for running the app (when using warehouse compute type)
  • --compute-pool: Compute pool to use (when using compute_pool compute type)
  • --stage: Stage to use for app artifacts

run

Run a Streamlit app locally for development.

sisx run [APP_PATH]

Default app path is streamlit_app.py.

test

Run tests for the CLI.

sisx test [PYTEST_ARGS]

Any additional arguments are passed directly to pytest.

Configuration

sisx uses the snowflake.yml file in your project directory for configuration. This defines your app's name, database, schema, and other settings.

Example snowflake.yml for warehouse compute type:

definition_version: "2"
env:
  name: "my_app"
  query_warehouse: "compute_wh"
  app_warehouse: "SYSTEM$STREAMLIT_NOTEBOOK_WH"
  schema: "public"
  database: "streamlit"
  role: "ACCOUNTADMIN"
  preview_database: "streamlit"
  preview_schema: "public"
  preview_role: "ACCOUNTADMIN"
  stage: "streamlit_stage"
entities:
  streamlit_app:
    type: streamlit
    identifier:
      name: <% ctx.env.name %>
      schema: <% ctx.env.schema %>
      database: <% ctx.env.database %>
    stage: <% ctx.env.stage %>
    query_warehouse: <% ctx.env.query_warehouse %>
    main_file: streamlit_app.py
    pages_dir: pages/
    artifacts:
      - "**/*.py"
      - "*.yml"

Example snowflake.yml for compute pool type:

definition_version: "2"
env:
  name: "my_app"
  compute_pool: "streamlit_compute_pool"
  schema: "public"
  database: "streamlit"
  preview_database: "streamlit"
  preview_schema: "public"
  preview_role: "ACCOUNTADMIN"
  stage: "streamlit_stage"
entities:
  streamlit_app:
    type: streamlit
    identifier:
      name: <% ctx.env.name %>
      schema: <% ctx.env.schema %>
      database: <% ctx.env.database %>
    stage: <% ctx.env.stage %>
    compute_pool: <% ctx.env.compute_pool %>
    main_file: streamlit_app.py
    pages_dir: pages/
    artifacts:
      - "**/*.py"
      - "requirements.txt"
      - "*.yml"

Version Information

You can check the version of sisx by running:

sisx --version

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sisx-0.1.5.tar.gz (132.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sisx-0.1.5-py3-none-any.whl (22.2 kB view details)

Uploaded Python 3

File details

Details for the file sisx-0.1.5.tar.gz.

File metadata

  • Download URL: sisx-0.1.5.tar.gz
  • Upload date:
  • Size: 132.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.4.18

File hashes

Hashes for sisx-0.1.5.tar.gz
Algorithm Hash digest
SHA256 a248e9dce2748a0f60bfc874639872514862de903960ebb7a6b2095c64901c54
MD5 4994335ef162226c3e351bdcafd65b3a
BLAKE2b-256 827c5448e1589d58266159ec35788f2bf162e841c7ca98f5fa14631350d5d974

See more details on using hashes here.

File details

Details for the file sisx-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: sisx-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 22.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.4.18

File hashes

Hashes for sisx-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 733444896479234678207cf6dd3f2bb866d09abb7af1a66b41b5cd791f48e4a4
MD5 9a5483b06e254af191e412ee374b2ebe
BLAKE2b-256 8fab47d2302457f41c3e3c730975938b760fe58305570e967414889e12a8d6fe

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page