Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 18 additions & 1 deletion src/amplitude/event.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,8 @@ def get_body(self):
"ingestion_metadata": ["ingestion_metadata", IngestionMetadata],
"group_properties": ["group_properties", dict],
"partner_id": ["partner_id", str],
"version_name": ["version_name", str]
"version_name": ["version_name", str],
"user_agent": ["user_agent", str]
}


Expand Down Expand Up @@ -209,6 +210,7 @@ class EventOptions:
ingestion_metadata (IngestionMetadata, optional): Ingestion metadata.
partner_id (str, optional): The partner id.
version_name (str, optional): The version name.
user_agent (str, optional): The user agent string.
callback (callable, optional): Event level callback method. Triggered when event is sent or failed. Take three
parameters: an event instance, an integer code of response status, an optional string message.

Expand Down Expand Up @@ -256,6 +258,7 @@ def __init__(self, user_id: Optional[str] = None,
ingestion_metadata: Optional[IngestionMetadata] = None,
partner_id: Optional[str] = None,
version_name: Optional[str] = None,
user_agent: Optional[str] = None,
callback=None):
"""The constructor of EventOptions class"""
self.user_id: Optional[str] = None
Expand Down Expand Up @@ -295,6 +298,7 @@ def __init__(self, user_id: Optional[str] = None,
self.ingestion_metadata: Optional[IngestionMetadata] = None
self.partner_id: Optional[str] = None
self.version_name: Optional[str] = None
self.user_agent: Optional[str] = None
self["user_id"] = user_id
self["device_id"] = device_id
self["time"] = time
Expand Down Expand Up @@ -331,6 +335,7 @@ def __init__(self, user_id: Optional[str] = None,
self["ingestion_metadata"] = ingestion_metadata
self["partner_id"] = partner_id
self["version_name"] = version_name
self["user_agent"] = user_agent
self.event_callback: Optional[Callable[[EventOptions, int, Optional[str]], None]] = callback
self.__retry: int = 0

Expand Down Expand Up @@ -455,6 +460,7 @@ class BaseEvent(EventOptions):
plan (Plan, optional): Tracking plan properties.
ingestion_metadata (IngestionMetadata, optional): Ingestion metadata.
partner_id (str, optional): The partner id.
user_agent (str, optional): The user agent string.
callback (callable, optional): Event level callback method. Triggered when event is sent or failed. Take three
parameters: an event instance, an integer code of response status, an optional string message.

Expand Down Expand Up @@ -502,6 +508,7 @@ def __init__(self, event_type: str,
plan: Optional[Plan] = None,
ingestion_metadata: Optional[IngestionMetadata] = None,
partner_id: Optional[str] = None,
user_agent: Optional[str] = None,
callback: Optional[Callable[[EventOptions, int, Optional[str]], None]] = None):
"""The constructor of the BaseEvent class"""
super().__init__(user_id=user_id,
Expand Down Expand Up @@ -539,6 +546,7 @@ def __init__(self, event_type: str,
plan=plan,
ingestion_metadata=ingestion_metadata,
partner_id=partner_id,
user_agent=user_agent,
callback=callback)
self.event_type: str = event_type
self.event_properties: Optional[dict] = None
Expand Down Expand Up @@ -796,6 +804,7 @@ class GroupIdentifyEvent(BaseEvent):
plan (Plan, optional): Tracking plan properties.
ingestion_metadata (IngestionMetadata, optional): Ingestion metadata.
partner_id (str, optional): The partner id.
user_agent (str, optional): The user agent string.
callback (callable, optional): Event level callback method. Triggered when event is sent or failed. Take three
parameters: an event instance, an integer code of response status, an optional string message.
identify_obj (Identify, optional): An Identify instance used to update the event's group_properties
Expand Down Expand Up @@ -839,6 +848,7 @@ def __init__(self, user_id: Optional[str] = None,
plan: Optional[Plan] = None,
ingestion_metadata: Optional[IngestionMetadata] = None,
partner_id: Optional[str] = None,
user_agent: Optional[str] = None,
callback: Optional[Callable[[EventOptions, int, Optional[str]], None]] = None,
identify_obj: Optional[Identify] = None):
"""The constructor of GroupIdentifyEvent"""
Expand Down Expand Up @@ -880,6 +890,7 @@ def __init__(self, user_id: Optional[str] = None,
plan=plan,
ingestion_metadata=ingestion_metadata,
partner_id=partner_id,
user_agent=user_agent,
callback=callback)
if identify_obj:
self.group_properties = identify_obj.user_properties
Expand Down Expand Up @@ -931,6 +942,7 @@ class IdentifyEvent(BaseEvent):
plan (Plan, optional): Tracking plan properties.
ingestion_metadata (IngestionMetadata, optional): Ingestion metadata.
partner_id (str, optional): The partner id.
user_agent (str, optional): The user agent string.
callback (callable, optional): Event level callback method. Triggered when event is sent or failed. Take three
parameters: an event instance, an integer code of response status, an optional string message.
identify_obj (Identify, optional): An Identify instance used to update the event's user_properties
Expand Down Expand Up @@ -974,6 +986,7 @@ def __init__(self, user_id: Optional[str] = None,
plan: Optional[Plan] = None,
ingestion_metadata: Optional[IngestionMetadata] = None,
partner_id: Optional[str] = None,
user_agent: Optional[str] = None,
callback: Optional[Callable[[EventOptions, int, Optional[str]], None]] = None,
identify_obj: Optional[Identify] = None):
super().__init__(constants.IDENTIFY_EVENT, user_id=user_id,
Expand Down Expand Up @@ -1014,6 +1027,7 @@ def __init__(self, user_id: Optional[str] = None,
plan=plan,
ingestion_metadata=ingestion_metadata,
partner_id=partner_id,
user_agent=user_agent,
callback=callback)
if identify_obj:
self.user_properties = identify_obj.user_properties
Expand Down Expand Up @@ -1157,6 +1171,7 @@ class RevenueEvent(BaseEvent):
plan (Plan, optional): Tracking plan properties.
ingestion_metadata (IngestionMetadata, optional): Ingestion metadata.
partner_id (str, optional): The partner id.
user_agent (str, optional): The user agent string.
callback (callable, optional): Event level callback method. Triggered when event is sent or failed. Take three
parameters: an event instance, an integer code of response status, an optional string message.
revenue_obj (Revenue, optional): An Revenue instance used to update the event's event_properties
Expand Down Expand Up @@ -1201,6 +1216,7 @@ def __init__(self, user_id: Optional[str] = None,
plan: Optional[Plan] = None,
ingestion_metadata: Optional[IngestionMetadata] = None,
partner_id: Optional[str] = None,
user_agent: Optional[str] = None,
callback: Optional[Callable[[EventOptions, int, Optional[str]], None]] = None,
revenue_obj: Optional[Revenue] = None):
"""The constructor of RevenueEvent class"""
Expand Down Expand Up @@ -1243,6 +1259,7 @@ def __init__(self, user_id: Optional[str] = None,
plan=plan,
ingestion_metadata=ingestion_metadata,
partner_id=partner_id,
user_agent=user_agent,
callback=callback)
if revenue_obj:
if not self.event_properties:
Expand Down
5 changes: 5 additions & 0 deletions src/test/test_event.py
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,11 @@ def test_event_with_ingestion_metadata_equal_to_expect_event_body(self):
self.assertTrue("ingestion_metadata" in event)
self.assertEqual({"event_type": "test_event", "ingestion_metadata": expected}, event.get_event_body())

def test_event_user_agent(self):
expected = "test_user_agent"
event = BaseEvent("test_event", user_agent=expected)
self.assertTrue("user_agent" in event)
self.assertEqual({"event_type": "test_event", "user_agent": expected}, event.get_event_body())

if __name__ == '__main__':
unittest.main()
Loading