{"library":"streamlit-condition-tree","title":"Condition Tree Builder for Streamlit","type":"library","description":"Streamlit-condition-tree is a custom Streamlit component that enables users to construct complex, nested condition trees, primarily for filtering DataFrames or building database queries. The library is currently at version 0.3.0, released in October 2024, and maintains an active development status with regular updates and improvements.","language":"python","status":"active","last_verified":"Fri May 22","install":{"commands":["pip install streamlit-condition-tree"],"cli":null},"imports":["from streamlit_condition_tree import condition_tree","from streamlit_condition_tree import config_from_dataframe"],"auth":{"required":false,"env_vars":[]},"links":{"homepage":null,"github":"https://github.com/cedricvlt/streamlit-condition-tree","docs":null,"changelog":null,"pypi":"https://pypi.org/project/streamlit-condition-tree/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null},"quickstart":{"code":"import streamlit as st\nimport pandas as pd\nfrom streamlit_condition_tree import condition_tree, config_from_dataframe\n\nst.set_page_config(layout=\"wide\")\nst.title(\"Streamlit Condition Tree Demo\")\n\n# Initial dataframe\ndf = pd.DataFrame({\n    'First Name': ['Georges', 'Alfred', 'Maria', 'Sophie'],\n    'Age': [45, 98, 30, 25],\n    'Favorite Color': ['Green', 'Red', 'Blue', 'Green'],\n    'Like Tomatoes': [True, False, True, True]\n})\n\nst.subheader(\"Original DataFrame\")\nst.dataframe(df)\n\n# Basic field configuration from dataframe\nconfig = config_from_dataframe(df)\n\n# Condition tree component\nquery_string = condition_tree(\n    config,\n    always_show_buttons=True,\n    placeholder=\"Build your filter conditions here...\"\n)\n\nst.subheader(\"Generated Query String\")\nst.code(query_string)\n\n# Filtered dataframe\nif query_string:\n    try:\n        filtered_df = df.query(query_string)\n        st.subheader(\"Filtered DataFrame\")\n        st.dataframe(filtered_df)\n    except Exception as e:\n        st.error(f\"Error applying query: {e}\")\nelse:\n    st.info(\"No conditions applied yet. Displaying original DataFrame.\")","lang":"python","description":"This quickstart demonstrates how to use `streamlit-condition-tree` to filter a Pandas DataFrame dynamically. It initializes a sample DataFrame, automatically generates a configuration for the condition tree, and then uses the `condition_tree` component to construct a query string. The DataFrame is then filtered using the generated query.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-22","installed_version":"0.3.0","pypi_latest":"0.3.0","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":15.8,"avg_import_s":1.34,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"streamlit-condition-tree","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":1.42,"mem_mb":24.6,"disk_size":"474.8M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"streamlit-condition-tree","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":16.4,"import_time_s":0.66,"mem_mb":19.9,"disk_size":"444M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"streamlit-condition-tree","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":2.01,"mem_mb":26.4,"disk_size":"495.5M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"streamlit-condition-tree","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":15.6,"import_time_s":1.06,"mem_mb":21.8,"disk_size":"464M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"streamlit-condition-tree","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":1.99,"mem_mb":26.1,"disk_size":"479.3M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"streamlit-condition-tree","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":14.5,"import_time_s":1.29,"mem_mb":21.1,"disk_size":"448M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"streamlit-condition-tree","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":1.91,"mem_mb":26.3,"disk_size":"477.9M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"streamlit-condition-tree","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":14.7,"import_time_s":1.2,"mem_mb":21.8,"disk_size":"446M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"streamlit-condition-tree","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":1.29,"mem_mb":19.7,"disk_size":"459.6M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"streamlit-condition-tree","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":18,"import_time_s":0.59,"mem_mb":15,"disk_size":"437M"}]}}