dbdemos-tracker


Namedbdemos-tracker JSON
Version 0.1.4 PyPI version JSON
download
home_pagehttps://github.com/databricks-field-eng/dbdemos-tracker
SummaryA tracking library for Databricks demo analytics.
upload_time2025-07-14 15:53:19
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

### 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"
}
        
Elapsed time: 0.51721s