# dbdemos-tracker
A Python library for tracking Databricks demo analytics.
## Installation
```bash
pip install dbdemos-tracker
```
## Usage
### Basic Demo Tracking
```python
from dbdemos_tracker import Tracker
### App Usage Tracking
```python
from dbdemos_tracker import Tracker
# Create tracker for app
tracker = Tracker("your-workspace-id")
# Track app views
tracker.track_app_view("user@databricks.com", "app-name", "/dashboard")
```
### FastAPI Middleware
```python
from fastapi import FastAPI
from dbdemos_tracker import Tracker
app = FastAPI()
# Add middleware to track all requests automatically
app.middleware("http")(Tracker.create_fastapi_middleware("app-name"))
# Or with a custom workspace client
from databricks.sdk import WorkspaceClient
workspace_client = WorkspaceClient()
app.middleware("http")(Tracker.create_fastapi_middleware("app-name", workspace_client))
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int):
return {"item_id": item_id}
```
**Complete Example:**
```python
from fastapi import FastAPI
from dbdemos_tracker import Tracker
# Create FastAPI app
app = FastAPI(title="My Demo App")
# Add tracking middleware - this will track ALL requests automatically
app.middleware("http")(Tracker.create_fastapi_middleware("app-name"))
# Your API endpoints
@app.get("/")
def home():
return {"message": "Welcome to my demo app"}
@app.post("/data")
def process_data(data: dict):
# This request will be automatically tracked
return {"processed": data}
@app.get("/users/{user_id}")
def get_user(user_id: str):
# This request will also be automatically tracked
return {"user_id": user_id, "name": "John Doe"}
# Run with: uvicorn main:app --reload
```
### Streamlit Integration
**EXPERIMENTAL - NOT TESTED - REACH OUT FOR HELP ON #field-demos**
**Automatic Interceptor (Recommended):**
```python
import streamlit as st
from dbdemos_tracker import Tracker
# Setup automatic tracking - call this once at the top of your app
Tracker.setup_streamlit_interceptor("app-name")
# Your Streamlit app - all interactions are automatically tracked!
st.title("My Demo App")
# These will be automatically tracked:
if st.button("Process Data"):
st.write("Data processed!")
name = st.text_input("Enter your name")
age = st.slider("Age", 0, 100, 25)
option = st.selectbox("Choose option", ["A", "B", "C"])
enabled = st.checkbox("Enable feature")
# Set user email for tracking (optional)
st.session_state.user_email = "user@databricks.com"
```
**Manual Tracking (if needed):**
```python
# Track specific interactions manually
Tracker.track_streamlit_app("app-name")
```
## Configuration
### Disable Tracking
```python
# Disable tracking globally
Tracker.enable_tracker = False
# Re-enable when needed
Tracker.enable_tracker = True
```
### Email Filtering
The tracker automatically filters emails to only track Databricks email addresses (`@databricks.com`). Non-Databricks emails are ignored for privacy.
### Test Workspace
Tracking is automatically disabled for test workspace ID `1660015457675682`.
## Features
- Track demo usage analytics
- Configurable tracking enable/disable
- Automatic Databricks email filtering
- Error handling with timeout protection
- FastAPI middleware for automatic request tracking
- Streamlit integration for app interaction tracking
- Support for both notebook and app path tracking
- User hash generation for privacy
## License
Databricks License
Raw data
{
"_id": null,
"home_page": "https://github.com/databricks-field-eng/dbdemos-tracker",
"name": "dbdemos-tracker",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": null,
"author": "Databricks",
"author_email": "quentin.ambard@databricks.com",
"download_url": null,
"platform": null,
"description": "# dbdemos-tracker\n\nA Python library for tracking Databricks demo analytics.\n\n## Installation\n\n```bash\npip install dbdemos-tracker\n```\n\n## Usage\n\n### Basic Demo Tracking\n\n```python\nfrom dbdemos_tracker import Tracker\n\n### App Usage Tracking\n\n```python\nfrom dbdemos_tracker import Tracker\n\n# Create tracker for app\ntracker = Tracker(\"your-workspace-id\")\n\n# Track app views\ntracker.track_app_view(\"user@databricks.com\", \"app-name\", \"/dashboard\")\n\n```\n\n### FastAPI Middleware\n\n```python\nfrom fastapi import FastAPI\nfrom dbdemos_tracker import Tracker\n\napp = FastAPI()\n\n# Add middleware to track all requests automatically\napp.middleware(\"http\")(Tracker.create_fastapi_middleware(\"app-name\"))\n\n# Or with a custom workspace client\nfrom databricks.sdk import WorkspaceClient\nworkspace_client = WorkspaceClient()\napp.middleware(\"http\")(Tracker.create_fastapi_middleware(\"app-name\", workspace_client))\n\n@app.get(\"/\")\ndef read_root():\n return {\"Hello\": \"World\"}\n\n@app.get(\"/items/{item_id}\")\ndef read_item(item_id: int):\n return {\"item_id\": item_id}\n```\n\n**Complete Example:**\n\n```python\nfrom fastapi import FastAPI\nfrom dbdemos_tracker import Tracker\n\n# Create FastAPI app\napp = FastAPI(title=\"My Demo App\")\n\n# Add tracking middleware - this will track ALL requests automatically\napp.middleware(\"http\")(Tracker.create_fastapi_middleware(\"app-name\"))\n\n# Your API endpoints\n@app.get(\"/\")\ndef home():\n return {\"message\": \"Welcome to my demo app\"}\n\n@app.post(\"/data\")\ndef process_data(data: dict):\n # This request will be automatically tracked\n return {\"processed\": data}\n\n@app.get(\"/users/{user_id}\")\ndef get_user(user_id: str):\n # This request will also be automatically tracked\n return {\"user_id\": user_id, \"name\": \"John Doe\"}\n\n# Run with: uvicorn main:app --reload\n```\n\n### Streamlit Integration\n\n**EXPERIMENTAL - NOT TESTED - REACH OUT FOR HELP ON #field-demos**\n\n**Automatic Interceptor (Recommended):**\n```python\nimport streamlit as st\nfrom dbdemos_tracker import Tracker\n\n# Setup automatic tracking - call this once at the top of your app\nTracker.setup_streamlit_interceptor(\"app-name\")\n\n# Your Streamlit app - all interactions are automatically tracked!\nst.title(\"My Demo App\")\n\n# These will be automatically tracked:\nif st.button(\"Process Data\"):\n st.write(\"Data processed!\")\n\nname = st.text_input(\"Enter your name\")\nage = st.slider(\"Age\", 0, 100, 25)\noption = st.selectbox(\"Choose option\", [\"A\", \"B\", \"C\"])\nenabled = st.checkbox(\"Enable feature\")\n\n# Set user email for tracking (optional)\nst.session_state.user_email = \"user@databricks.com\"\n```\n\n**Manual Tracking (if needed):**\n```python\n# Track specific interactions manually\nTracker.track_streamlit_app(\"app-name\")\n```\n\n## Configuration\n\n### Disable Tracking\n\n```python\n# Disable tracking globally\nTracker.enable_tracker = False\n\n# Re-enable when needed\nTracker.enable_tracker = True\n```\n\n### Email Filtering\n\nThe tracker automatically filters emails to only track Databricks email addresses (`@databricks.com`). Non-Databricks emails are ignored for privacy.\n\n### Test Workspace\n\nTracking is automatically disabled for test workspace ID `1660015457675682`.\n\n## Features\n\n- Track demo usage analytics\n- Configurable tracking enable/disable\n- Automatic Databricks email filtering\n- Error handling with timeout protection\n- FastAPI middleware for automatic request tracking\n- Streamlit integration for app interaction tracking\n- Support for both notebook and app path tracking\n- User hash generation for privacy\n\n## License\n\nDatabricks License \n",
"bugtrack_url": null,
"license": "Databricks license",
"summary": "A tracking library for Databricks demo analytics.",
"version": "0.1.4",
"project_urls": {
"Homepage": "https://github.com/databricks-field-eng/dbdemos-tracker"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "4064291ad24330083e5844278ce2f92ca9d7f278cdb500d12dc443a29c49b04c",
"md5": "af718d5eddab40d9341ff15ebc290228",
"sha256": "9a575925041e984cf2f07458815b0894e93db693eee8fe0bb49f5aaafb6b073f"
},
"downloads": -1,
"filename": "dbdemos_tracker-0.1.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "af718d5eddab40d9341ff15ebc290228",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 7707,
"upload_time": "2025-07-14T15:53:19",
"upload_time_iso_8601": "2025-07-14T15:53:19.336983Z",
"url": "https://files.pythonhosted.org/packages/40/64/291ad24330083e5844278ce2f92ca9d7f278cdb500d12dc443a29c49b04c/dbdemos_tracker-0.1.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-14 15:53:19",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "databricks-field-eng",
"github_project": "dbdemos-tracker",
"github_not_found": true,
"lcname": "dbdemos-tracker"
}