Skip to main content

Python package to make it easy to develop beautiful, performant 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.4.tar.gz (131.4 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.4-py3-none-any.whl (23.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for sisx-0.1.4.tar.gz
Algorithm Hash digest
SHA256 ef4e00eb0307cee2a5b9fe51db03592714d52ad461b2189db89704c9d81147c1
MD5 258351a66d5475ebc8e37fe51d2a0411
BLAKE2b-256 f73d1612fce8e017f731ce853179e6b5ac75c0b81b2754c4af631d5bf9600a39

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for sisx-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f1445e06830f5aa9261685a53a4b23f75fa243516cc21bea6d3b3c6a25ad3afa
MD5 9ba565af574a6431161ea2bb61e4fe63
BLAKE2b-256 9ceeb52af936208ad29bc5c036b184d2b6458d7cc984b35d539a6e6888729c8e

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