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
12 changes: 7 additions & 5 deletions snowplow_tracker/test/unit/test_tracker.py
Original file line number Diff line number Diff line change
Expand Up @@ -223,12 +223,14 @@ def test_track(self) -> None:

t = Tracker("namespace", [e1, e2, e3])

p = Payload({"test": "track"})
t.track(p)
p = Payload({"eid": "event_id"})
event_id = t.track(p)

e1.input.assert_called_once_with({"test": "track"})
e2.input.assert_called_once_with({"test": "track"})
e3.input.assert_called_once_with({"test": "track"})
e1.input.assert_called_once_with({"eid": "event_id"})
e2.input.assert_called_once_with({"eid": "event_id"})
e3.input.assert_called_once_with({"eid": "event_id"})

self.assertEqual(event_id, "event_id")

@freeze_time("2021-04-19 00:00:01") # unix: 1618790401000
@mock.patch("snowplow_tracker.Tracker.track")
Expand Down
104 changes: 51 additions & 53 deletions snowplow_tracker/tracker.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,25 +122,27 @@ def get_timestamp(tstamp: Optional[float] = None) -> int:
Tracking methods
"""

def track(self, pb: payload.Payload) -> "Tracker":
def track(self, pb: payload.Payload) -> Optional[str]:
"""
Send the payload to a emitter
Send the payload to a emitter. Returns the tracked event ID.

:param pb: Payload builder
:type pb: payload
:rtype: tracker
:rtype: String
"""
for emitter in self.emitters:
emitter.input(pb.nv_pairs)
return self

if "eid" in pb.nv_pairs.keys():
return pb.nv_pairs["eid"]

def complete_payload(
self,
pb: payload.Payload,
context: Optional[List[SelfDescribingJson]],
tstamp: Optional[float],
event_subject: Optional[_subject.Subject],
) -> "Tracker":
) -> Optional[str]:
"""
Called by all tracking events to add the standard name-value pairs
to the Payload object irrespective of the tracked event.
Expand All @@ -153,7 +155,7 @@ def complete_payload(
:type tstamp: int | float | None
:param event_subject: Optional per event subject
:type event_subject: subject | None
:rtype: tracker
:rtype: String
"""
pb.add("eid", Tracker.get_uuid())

Expand Down Expand Up @@ -199,7 +201,7 @@ def track_page_view(
:type tstamp: int | float | None
:param event_subject: Optional per event subject
:type event_subject: subject | None
:rtype: tracker
:rtype: Tracker
"""
non_empty_string(page_url)

Expand All @@ -209,7 +211,8 @@ def track_page_view(
pb.add("page", page_title)
pb.add("refr", referrer)

return self.complete_payload(pb, context, tstamp, event_subject)
self.complete_payload(pb, context, tstamp, event_subject)
return self

def track_page_ping(
self,
Expand Down Expand Up @@ -245,7 +248,7 @@ def track_page_ping(
:type tstamp: int | float | None
:param event_subject: Optional per event subject
:type event_subject: subject | None
:rtype: tracker
:rtype: Tracker
"""
non_empty_string(page_url)

Expand All @@ -259,7 +262,8 @@ def track_page_ping(
pb.add("pp_miy", min_y)
pb.add("pp_may", max_y)

return self.complete_payload(pb, context, tstamp, event_subject)
self.complete_payload(pb, context, tstamp, event_subject)
return self

def track_link_click(
self,
Expand Down Expand Up @@ -289,7 +293,7 @@ def track_link_click(
:type tstamp: int | float | None
:param event_subject: Optional per event subject
:type event_subject: subject | None
:rtype: tracker
:rtype: Tracker
"""
non_empty_string(target_url)

Expand All @@ -308,9 +312,8 @@ def track_link_click(
"%s/link_click/%s/1-0-1" % (BASE_SCHEMA_PATH, SCHEMA_TAG), properties
)

return self.track_self_describing_event(
event_json, context, tstamp, event_subject
)
self.track_self_describing_event(event_json, context, tstamp, event_subject)
return self

def track_add_to_cart(
self,
Expand Down Expand Up @@ -343,7 +346,7 @@ def track_add_to_cart(
:type tstamp: int | float | None
:param event_subject: Optional per event subject
:type event_subject: subject | None
:rtype: tracker
:rtype: Tracker
"""
warn(
"track_add_to_cart will be deprecated in future versions.",
Expand All @@ -368,9 +371,8 @@ def track_add_to_cart(
"%s/add_to_cart/%s/1-0-0" % (BASE_SCHEMA_PATH, SCHEMA_TAG), properties
)

return self.track_self_describing_event(
event_json, context, tstamp, event_subject
)
self.track_self_describing_event(event_json, context, tstamp, event_subject)
return self

def track_remove_from_cart(
self,
Expand Down Expand Up @@ -403,7 +405,7 @@ def track_remove_from_cart(
:type tstamp: int | float | None
:param event_subject: Optional per event subject
:type event_subject: subject | None
:rtype: tracker
:rtype: Tracker
"""
warn(
"track_remove_from_cart will be deprecated in future versions.",
Expand All @@ -428,9 +430,8 @@ def track_remove_from_cart(
"%s/remove_from_cart/%s/1-0-0" % (BASE_SCHEMA_PATH, SCHEMA_TAG), properties
)

return self.track_self_describing_event(
event_json, context, tstamp, event_subject
)
self.track_self_describing_event(event_json, context, tstamp, event_subject)
return self

def track_form_change(
self,
Expand Down Expand Up @@ -463,7 +464,7 @@ def track_form_change(
:type tstamp: int | float | None
:param event_subject: Optional per event subject
:type event_subject: subject | None
:rtype: tracker
:rtype: Tracker
"""
non_empty_string(form_id)
one_of(node_name, FORM_NODE_NAMES)
Expand All @@ -484,9 +485,8 @@ def track_form_change(
"%s/change_form/%s/1-0-0" % (BASE_SCHEMA_PATH, SCHEMA_TAG), properties
)

return self.track_self_describing_event(
event_json, context, tstamp, event_subject
)
self.track_self_describing_event(event_json, context, tstamp, event_subject)
return self

def track_form_submit(
self,
Expand All @@ -510,7 +510,7 @@ def track_form_submit(
:type tstamp: int | float | None
:param event_subject: Optional per event subject
:type event_subject: subject | None
:rtype: tracker
:rtype: Tracker
"""
non_empty_string(form_id)
for element in elements or []:
Expand All @@ -527,9 +527,8 @@ def track_form_submit(
"%s/submit_form/%s/1-0-0" % (BASE_SCHEMA_PATH, SCHEMA_TAG), properties
)

return self.track_self_describing_event(
event_json, context, tstamp, event_subject
)
self.track_self_describing_event(event_json, context, tstamp, event_subject)
return self

def track_site_search(
self,
Expand All @@ -556,7 +555,7 @@ def track_site_search(
:type tstamp: int | float | None
:param event_subject: Optional per event subject
:type event_subject: subject | None
:rtype: tracker
:rtype: Tracker
"""
non_empty(terms)

Expand All @@ -573,9 +572,8 @@ def track_site_search(
"%s/site_search/%s/1-0-0" % (BASE_SCHEMA_PATH, SCHEMA_TAG), properties
)

return self.track_self_describing_event(
event_json, context, tstamp, event_subject
)
self.track_self_describing_event(event_json, context, tstamp, event_subject)
return self

def track_ecommerce_transaction_item(
self,
Expand Down Expand Up @@ -614,7 +612,7 @@ def track_ecommerce_transaction_item(
:type tstamp: int | float | None
:param event_subject: Optional per event subject
:type event_subject: subject | None
:rtype: tracker
:rtype: Tracker
"""
warn(
"track_ecommerce_transaction_item will be deprecated in future versions.",
Expand All @@ -634,7 +632,8 @@ def track_ecommerce_transaction_item(
pb.add("ti_qu", quantity)
pb.add("ti_cu", currency)

return self.complete_payload(pb, context, tstamp, event_subject)
self.complete_payload(pb, context, tstamp, event_subject)
return self

def track_ecommerce_transaction(
self,
Expand Down Expand Up @@ -679,7 +678,7 @@ def track_ecommerce_transaction(
:type tstamp: int | float | None
:param event_subject: Optional per event subject
:type event_subject: subject | None
:rtype: tracker
:rtype: Tracker
"""
warn(
"track_ecommerce_transaction will be deprecated in future versions.",
Expand Down Expand Up @@ -734,7 +733,7 @@ def track_screen_view(
:type tstamp: int | float | None
:param event_subject: Optional per event subject
:type event_subject: subject | None
:rtype: tracker
:rtype: Tracker
"""
warn(
"track_screen_view will be deprecated in future versions. Please use track_mobile_screen_view.",
Expand All @@ -752,9 +751,8 @@ def track_screen_view(
screen_view_properties,
)

return self.track_self_describing_event(
event_json, context, tstamp, event_subject
)
self.track_self_describing_event(event_json, context, tstamp, event_subject)
return self

def track_mobile_screen_view(
self,
Expand Down Expand Up @@ -790,7 +788,7 @@ def track_mobile_screen_view(
:type tstamp: int | float | None
:param event_subject: Optional per event subject
:type event_subject: subject | None
:rtype: tracker
:rtype: Tracker
"""
screen_view_properties = {}

Expand All @@ -816,9 +814,8 @@ def track_mobile_screen_view(
"%s/screen_view/%s/1-0-0" % (MOBILE_SCHEMA_PATH, SCHEMA_TAG),
screen_view_properties,
)
return self.track_self_describing_event(
event_json, context, tstamp, event_subject
)
self.track_self_describing_event(event_json, context, tstamp, event_subject)
return self

def track_struct_event(
self,
Expand Down Expand Up @@ -850,7 +847,7 @@ def track_struct_event(
:type tstamp: int | float | None
:param event_subject: Optional per event subject
:type event_subject: subject | None
:rtype: tracker
:rtype: Tracker
"""
non_empty_string(category)
non_empty_string(action)
Expand All @@ -863,7 +860,8 @@ def track_struct_event(
pb.add("se_pr", property_)
pb.add("se_va", value)

return self.complete_payload(pb, context, tstamp, event_subject)
self.complete_payload(pb, context, tstamp, event_subject)
return self

def track_self_describing_event(
self,
Expand All @@ -883,7 +881,7 @@ def track_self_describing_event(
:type tstamp: int | float | None
:param event_subject: Optional per event subject
:type event_subject: subject | None
:rtype: tracker
:rtype: Tracker
"""

envelope = SelfDescribingJson(
Expand All @@ -895,7 +893,8 @@ def track_self_describing_event(
pb.add("e", "ue")
pb.add_json(envelope, self.encode_base64, "ue_px", "ue_pr", self.json_encoder)

return self.complete_payload(pb, context, tstamp, event_subject)
self.complete_payload(pb, context, tstamp, event_subject)
return self

# Alias
def track_unstruct_event(
Expand All @@ -916,16 +915,15 @@ def track_unstruct_event(
:type tstamp: int | float | None
:param event_subject: Optional per event subject
:type event_subject: subject | None
:rtype: tracker
:rtype: Tracker
"""
warn(
"track_unstruct_event will be deprecated in future versions. Please use track_self_describing_event.",
DeprecationWarning,
stacklevel=2,
)
return self.track_self_describing_event(
event_json, context, tstamp, event_subject
)
self.track_self_describing_event(event_json, context, tstamp, event_subject)
return self

def flush(self, is_async: bool = False) -> "Tracker":
"""
Expand Down