Skip to main content

Streamlit component that allows you to execute Python code using Pyodide.

Project description

[!WARNING] This is a work in progress. This package currently only supports python code execution. The goal is to support other languages as well.

streamlit-execute

A streamlit component package that allows you to execute code on the client (which keeps the user code execution a safer distance from the server/backend). Currently, only python code execution is supported. Pyodide (Webassembly) is used for python code execution. The goal is to support other languages as well.

Installation instructions

pip install streamlit-execute

Usage instructions

There are 3 functions you will likely need to call to execute python code. If you dont care about Interpreter-like features, you can just call init function and give it the code you want to execute.

import streamlit as st
from streamlit_execute import init

# Execute code
response = init("print('Hello World!')")
st.write(response)

If you want to execute more code in the same interpreter, you can use the run function. This will execute the code you give it in the same interpreter that was created by the init function.

import streamlit as st
import streamlit_execute as se

# Create an interpreter
response = se.init()

# Execute code
response_add = se.run("5 + 5")
st.write(response_add)

The run function creates another component that will pass code to the correct interpreter and receive the corresponding result. It will then pass the result back to Streamlit in the return value of the run function.

However, the above will not work without calling an additional function that sets up communication between the interpreter component and all of the run components. This is done by calling the connect function.

import streamlit as st
import streamlit_execute as se

# Create an interpreter
response = se.init()

# Connect all run calls to the interpreter
se.connect()

# Execute code
response_add = se.run("5 + 5")
st.write(response_add)

Note that run components are intended to be more lightweight than the init component. Using multiple components was a decision that was made because using only one component requires script reruns in order to pass new code to the interpreter. This requires more sophisticated logic to implement and is not as dev-friendly.

Multiple Interpreters

If you want to use multiple interpreters, you can do so by calling the init function multiple times. But this time, they must have different keys. This is necessary because the run function uses the key to determine which interpreter to pass the code to. If you don't provide a key, the default key is used for both the init and run functions.

import streamlit as st
import streamlit_execute as se

# Create two interpreters
response_init1 = se.init(key="interpreter1")
response_init2 = se.init(key="interpreter2")

# Connect all run calls to the interpreters
se.connect()

# Run code in the first interpreter
response_add1 = se.run("5 + 5", target_key="interpreter1")
st.write(response_add1)

# Run code in the second interpreter
response_add2 = se.run("a=2\na", target_key="interpreter2")
st.write(response_add2)

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

streamlit-execute-0.1.0.tar.gz (5.9 MB view details)

Uploaded Source

Built Distribution

streamlit_execute-0.1.0-py3-none-any.whl (5.9 MB view details)

Uploaded Python 3

File details

Details for the file streamlit-execute-0.1.0.tar.gz.

File metadata

  • Download URL: streamlit-execute-0.1.0.tar.gz
  • Upload date:
  • Size: 5.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.12

File hashes

Hashes for streamlit-execute-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0ab54981e4a248b23cf1145dcbde93eb2c6535384d400b2cd4bf62c061d89ea0
MD5 5813e3f49850e36a4e64f7b7b71e9122
BLAKE2b-256 88181f60998d154a92d0c8b877e42f0d9f521bf80c2ec6037a4e691aede7b259

See more details on using hashes here.

File details

Details for the file streamlit_execute-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for streamlit_execute-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a9e764202497e868d319e85e200152d0c3836e50d9d26264ee099b59268e5b79
MD5 55437b8b2f519e08eaa40aca030faff9
BLAKE2b-256 cdf1d47d501df1ddf012a7bebf5b2f992d1f2f278f417d299ce1c852c187c9dc

See more details on using hashes here.

Supported by

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