dbdemos-tracker


Namedbdemos-tracker JSON
Version 0.1.5 PyPI version JSON
download
home_pagehttps://github.com/databricks-field-eng/dbdemos-tracker
SummaryA tracking library for Databricks demo analytics.
upload_time2025-08-22 09:20:58
maintainerNone
docs_urlNone
authorDatabricks
requires_python>=3.7
licenseDatabricks license
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # dbdemos-tracker

A Python library for tracking Databricks demo analytics.

## Installation

```bash
pip install dbdemos-tracker
```

## Usage

### Manual App Usage Tracking

```python
from dbdemos_tracker import Tracker

# Create tracker for app - Use your repo name as app name
ws = WorkspaceClient()
tracker = Tracker(org_id=ws.get_workspace_id(), demo_name="app-name")

# Track app views in functions
@app.get("/")
def home():
    tracker.track_app_view(user_email="user@databricks.com", app_path="/dashboard")
    return {"message": "Welcome to my demo app"}
```

### FastAPI Middleware
We provide a tool to track all app views out of the box.

Try to filter on the main actions so that we don't have too many views using `patterns=["/my/.*/url/to/track", "..."]`

```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
Tracker.add_tracker_fastapi(app, "app-name"))
# You can also filter to only track some URL:
Tracker.add_tracker_fastapi(app, "app-name", patterns=['/demos/.*/load']))

# Then all your API endpoints will be tracked out of the box
@app.get("/")
def home():
    return {"message": "Welcome to my demo app"}

# 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### Manual App Usage Tracking\n\n```python\nfrom dbdemos_tracker import Tracker\n\n# Create tracker for app - Use your repo name as app name\nws = WorkspaceClient()\ntracker = Tracker(org_id=ws.get_workspace_id(), demo_name=\"app-name\")\n\n# Track app views in functions\n@app.get(\"/\")\ndef home():\n    tracker.track_app_view(user_email=\"user@databricks.com\", app_path=\"/dashboard\")\n    return {\"message\": \"Welcome to my demo app\"}\n```\n\n### FastAPI Middleware\nWe provide a tool to track all app views out of the box.\n\nTry to filter on the main actions so that we don't have too many views using `patterns=[\"/my/.*/url/to/track\", \"...\"]`\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\nTracker.add_tracker_fastapi(app, \"app-name\"))\n# You can also filter to only track some URL:\nTracker.add_tracker_fastapi(app, \"app-name\", patterns=['/demos/.*/load']))\n\n# Then all your API endpoints will be tracked out of the box\n@app.get(\"/\")\ndef home():\n    return {\"message\": \"Welcome to my demo app\"}\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.5",
    "project_urls": {
        "Homepage": "https://github.com/databricks-field-eng/dbdemos-tracker"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0bcf624e73abdbc33f3eb018585f847c41a8d4406cc3408fd42a413c9463bc2e",
                "md5": "9f8d35871af4f83dd2ba2027c46a2527",
                "sha256": "388a3aa8f136015e02090d4ce80477141182078b91b5efd86131891d3cf6bea5"
            },
            "downloads": -1,
            "filename": "dbdemos_tracker-0.1.5-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9f8d35871af4f83dd2ba2027c46a2527",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 7832,
            "upload_time": "2025-08-22T09:20:58",
            "upload_time_iso_8601": "2025-08-22T09:20:58.663113Z",
            "url": "https://files.pythonhosted.org/packages/0b/cf/624e73abdbc33f3eb018585f847c41a8d4406cc3408fd42a413c9463bc2e/dbdemos_tracker-0.1.5-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-22 09:20:58",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "databricks-field-eng",
    "github_project": "dbdemos-tracker",
    "github_not_found": true,
    "lcname": "dbdemos-tracker"
}
        
Elapsed time: 3.47178s