Pre-release
This release is a pre-release and may not be stable for production use.
Snowplow Signals Python SDK
The Snowplow Signals Python SDK enables you to interact with the Snowplow Signals Profile API. It provides a simple interface to define, deploy, and retrieve user attributes for personalization.
Installation
pip install snowplow-signals
Quickstart
from snowplow_signals import Signals, SignalsSandbox, Attribute, Event, StreamAttributeGroup, domain_sessionid
# Initialize the SDK with BDP authentication (default)
signals = Signals(
api_url="API_URL",
api_key="API_KEY",
api_key_id="API_KEY_ID",
org_id="ORG_ID",
)
# Or initialize with SANDBOX authentication
signals = SignalsSandbox(
api_url="API_URL",
sandbox_token="YOUR_SANDBOX_TOKEN",
)
# Define an attribute
page_view_count = Attribute(
name="page_view_count",
type="int32",
events=[
Event(
vendor="com.snowplowanalytics.snowplow",
name="page_view",
version="1-0-0",
)
],
aggregation="counter"
)
# Create and deploy a view
stream_attribute_group = StreamAttributeGroup(
name="my_attribute_group",
version=1,
attribute_key=domain_sessionid,
attributes=[page_view_count],
)
signals.publish([stream_attribute_group])
# Retrieve attributes
response = signals.get_group_attributes(
name="my_attribute_group",
version=1,
attribute_key="domain_sessionid",
attributes=["page_view_count"],
identifier="abc-123",
)
Key Features
- Define attributes based on Snowplow events
- Create attribute groups for related attributes
- Deploy attribute groups to the Profile API
- Retrieve real-time user attributes
- Build training datasets with session-based or custom anchors
- Execute dataset builds server-side and preview results
Dataset Builder
Build training datasets from your Snowplow events using the dataset builder. You can generate SQL bundles locally or submit dataset builds for server-side execution.
Generate SQL bundle
from datetime import datetime, timezone
from snowplow_signals import Signals, Criteria, Criterion, TrainingSpan
from snowplow_signals.models import AtomicProperty
bundle = signals.build_dataset_with_session_anchors(
attribute_groups=[my_attribute_group],
goal_criteria=Criteria(
any=[Criterion.eq(AtomicProperty(name="se_action"), "purchase")]
),
training_span=TrainingSpan(
start_time=datetime(2025, 1, 1, tzinfo=timezone.utc),
end_time=datetime(2025, 6, 1, tzinfo=timezone.utc),
),
)
# Save SQL files to disk
bundle.save_to("./dataset_output")
Server-side execution
Submit a dataset build for execution on your warehouse and poll for results:
import time
from snowplow_signals import DatasetRunStatus
run = signals.submit_dataset_run_with_session_anchors(
attribute_groups=[my_attribute_group],
goal_criteria=Criteria(
any=[Criterion.eq(AtomicProperty(name="se_action"), "purchase")]
),
training_span=TrainingSpan(
start_time=datetime(2025, 1, 1, tzinfo=timezone.utc),
end_time=datetime(2025, 6, 1, tzinfo=timezone.utc),
),
)
# Poll for completion
while True:
status = signals.get_dataset_run_status(run.id)
if status.status != DatasetRunStatus.PENDING:
break
time.sleep(5)
# Preview results
if status.status == DatasetRunStatus.SUCCESS:
preview = signals.get_dataset_run_preview(run.id, limit=100)
df = preview.to_pandas()
print(df)
Release files for snowplow-signals 0.4.8rc1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| snowplow_signals-0.4.8rc1.tar.gz | 35.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| snowplow_signals-0.4.8rc1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 79.3 kB
Release files / snowplow_signals-0.4.8rc1.tar.gz
| Download URL | snowplow_signals-0.4.8rc1.tar.gz |
|---|---|
| Size | 35.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6cddbac25f2e17a0ebcf40e903d3b6ecd3e3efb1a8c1c09631bf157d3920020b
|
|
BLAKE2b-256 checksum How to use checksums |
2ea74c38a8d487e17f20f6e6e92aebd9c267f313cb2d98f2dcd5ff5d2827436d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.11.15 Linux/6.17.0-1020-azure
|
Release files / snowplow_signals-0.4.8rc1-py3-none-any.whl
| Download URL | snowplow_signals-0.4.8rc1-py3-none-any.whl |
|---|---|
| Size | 43.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
666c2e5552cb72cbb394c79cc4517ce6b369129603f24dc0d956556620f8e9d1
|
|
BLAKE2b-256 checksum How to use checksums |
451e2ebfddc946c0ee6e23137d25e804fb4c8a1d499217accddcc70c0fc2cae3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.11.15 Linux/6.17.0-1020-azure
|