From 4b3d46295c76aedfcfb6ceade60d95e8fc8a8f49 Mon Sep 17 00:00:00 2001 From: Jack-Keene Date: Mon, 24 Apr 2023 14:30:09 +0100 Subject: [PATCH 1/8] track() returns event id --- snowplow_tracker/tracker.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/snowplow_tracker/tracker.py b/snowplow_tracker/tracker.py index 95e79120..3e1ce5a7 100644 --- a/snowplow_tracker/tracker.py +++ b/snowplow_tracker/tracker.py @@ -122,17 +122,19 @@ def get_timestamp(tstamp: Optional[float] = None) -> int: Tracking methods """ - def track(self, pb: payload.Payload) -> "Tracker": + def track(self, pb: payload.Payload) -> str: """ Send the payload to a emitter :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, From 93f703861f7bd2167841d7ef9ccfdbc33095fcb3 Mon Sep 17 00:00:00 2001 From: Jack-Keene Date: Mon, 24 Apr 2023 14:30:17 +0100 Subject: [PATCH 2/8] Update return types for track functions --- snowplow_tracker/tracker.py | 64 ++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/snowplow_tracker/tracker.py b/snowplow_tracker/tracker.py index 3e1ce5a7..e6545285 100644 --- a/snowplow_tracker/tracker.py +++ b/snowplow_tracker/tracker.py @@ -142,7 +142,7 @@ def complete_payload( context: Optional[List[SelfDescribingJson]], tstamp: Optional[float], event_subject: Optional[_subject.Subject], - ) -> "Tracker": + ) -> str: """ Called by all tracking events to add the standard name-value pairs to the Payload object irrespective of the tracked event. @@ -155,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()) @@ -187,7 +187,7 @@ def track_page_view( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> "Tracker": + ) -> str: """ :param page_url: URL of the viewed page :type page_url: non_empty_string @@ -201,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: str """ non_empty_string(page_url) @@ -225,7 +225,7 @@ def track_page_ping( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> "Tracker": + ) -> str: """ :param page_url: URL of the viewed page :type page_url: non_empty_string @@ -247,7 +247,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: str """ non_empty_string(page_url) @@ -273,7 +273,7 @@ def track_link_click( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> "Tracker": + ) -> str: """ :param target_url: Target URL of the link :type target_url: non_empty_string @@ -291,7 +291,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: str """ non_empty_string(target_url) @@ -325,7 +325,7 @@ def track_add_to_cart( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> "Tracker": + ) -> str: """ :param sku: Item SKU or ID :type sku: non_empty_string @@ -345,7 +345,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: str """ warn( "track_add_to_cart will be deprecated in future versions.", @@ -385,7 +385,7 @@ def track_remove_from_cart( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> "Tracker": + ) -> str: """ :param sku: Item SKU or ID :type sku: non_empty_string @@ -405,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: str """ warn( "track_remove_from_cart will be deprecated in future versions.", @@ -445,7 +445,7 @@ def track_form_change( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> "Tracker": + ) -> str: """ :param form_id: ID attribute of the HTML form :type form_id: non_empty_string @@ -465,7 +465,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: str """ non_empty_string(form_id) one_of(node_name, FORM_NODE_NAMES) @@ -498,7 +498,7 @@ def track_form_submit( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> "Tracker": + ) -> str: """ :param form_id: ID attribute of the HTML form :type form_id: non_empty_string @@ -512,7 +512,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: str """ non_empty_string(form_id) for element in elements or []: @@ -542,7 +542,7 @@ def track_site_search( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> "Tracker": + ) -> str: """ :param terms: Search terms :type terms: seq[>=1](str) @@ -558,7 +558,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: str """ non_empty(terms) @@ -591,7 +591,7 @@ def track_ecommerce_transaction_item( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> "Tracker": + ) -> str: """ This is an internal method called by track_ecommerce_transaction. It is not for public use. @@ -616,7 +616,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: str """ warn( "track_ecommerce_transaction_item will be deprecated in future versions.", @@ -653,7 +653,7 @@ def track_ecommerce_transaction( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> "Tracker": + ) -> str: """ :param order_id: ID of the eCommerce transaction :type order_id: non_empty_string @@ -681,7 +681,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: str """ warn( "track_ecommerce_transaction will be deprecated in future versions.", @@ -724,7 +724,7 @@ def track_screen_view( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> "Tracker": + ) -> str: """ :param name: The name of the screen view event :type name: string_or_none @@ -736,7 +736,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: str """ warn( "track_screen_view will be deprecated in future versions. Please use track_mobile_screen_view.", @@ -770,7 +770,7 @@ def track_mobile_screen_view( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> "Tracker": + ) -> str: """ :param id_: Screen view ID. This must be of type UUID. :type id_: string | None @@ -792,7 +792,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: str """ screen_view_properties = {} @@ -832,7 +832,7 @@ def track_struct_event( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> "Tracker": + ) -> str: """ :param category: Category of the event :type category: non_empty_string @@ -852,7 +852,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: str """ non_empty_string(category) non_empty_string(action) @@ -873,7 +873,7 @@ def track_self_describing_event( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> "Tracker": + ) -> str: """ :param event_json: The properties of the event. Has two field: A "data" field containing the event properties and @@ -885,7 +885,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: str """ envelope = SelfDescribingJson( @@ -906,7 +906,7 @@ def track_unstruct_event( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> "Tracker": + ) -> str: """ :param event_json: The properties of the event. Has two field: A "data" field containing the event properties and @@ -918,7 +918,7 @@ def track_unstruct_event( :type tstamp: int | float | None :param event_subject: Optional per event subject :type event_subject: subject | None - :rtype: tracker + :rtype: str """ warn( "track_unstruct_event will be deprecated in future versions. Please use track_self_describing_event.", From 8620d978163334ae825d6011c94c6f2791425246 Mon Sep 17 00:00:00 2001 From: Jack-Keene Date: Mon, 24 Apr 2023 14:32:07 +0100 Subject: [PATCH 3/8] Update tracker unit tests --- snowplow_tracker/test/unit/test_tracker.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/snowplow_tracker/test/unit/test_tracker.py b/snowplow_tracker/test/unit/test_tracker.py index 0862fce5..6afb5b40 100644 --- a/snowplow_tracker/test/unit/test_tracker.py +++ b/snowplow_tracker/test/unit/test_tracker.py @@ -223,12 +223,12 @@ def test_track(self) -> None: t = Tracker("namespace", [e1, e2, e3]) - p = Payload({"test": "track"}) + p = Payload({"eid":"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"}) @freeze_time("2021-04-19 00:00:01") # unix: 1618790401000 @mock.patch("snowplow_tracker.Tracker.track") From 1a25468ebc8b2990949900ed6707baa59cc07fd6 Mon Sep 17 00:00:00 2001 From: Jack-Keene Date: Tue, 25 Apr 2023 12:36:13 +0100 Subject: [PATCH 4/8] track_xxx()functions return tracker --- snowplow_tracker/tracker.py | 120 +++++++++++++++++------------------- 1 file changed, 58 insertions(+), 62 deletions(-) diff --git a/snowplow_tracker/tracker.py b/snowplow_tracker/tracker.py index e6545285..ea768b66 100644 --- a/snowplow_tracker/tracker.py +++ b/snowplow_tracker/tracker.py @@ -187,7 +187,7 @@ def track_page_view( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> str: + ) -> "Tracker": """ :param page_url: URL of the viewed page :type page_url: non_empty_string @@ -201,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: str + :rtype: Tracker """ non_empty_string(page_url) @@ -211,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, @@ -225,7 +226,7 @@ def track_page_ping( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> str: + ) -> "Tracker": """ :param page_url: URL of the viewed page :type page_url: non_empty_string @@ -247,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: str + :rtype: Tracker """ non_empty_string(page_url) @@ -261,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, @@ -273,7 +275,7 @@ def track_link_click( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> str: + ) -> "Tracker": """ :param target_url: Target URL of the link :type target_url: non_empty_string @@ -291,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: str + :rtype: Tracker """ non_empty_string(target_url) @@ -310,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, @@ -325,7 +326,7 @@ def track_add_to_cart( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> str: + ) -> "Tracker": """ :param sku: Item SKU or ID :type sku: non_empty_string @@ -345,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: str + :rtype: Tracker """ warn( "track_add_to_cart will be deprecated in future versions.", @@ -370,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, @@ -385,7 +385,7 @@ def track_remove_from_cart( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> str: + ) -> "Tracker": """ :param sku: Item SKU or ID :type sku: non_empty_string @@ -405,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: str + :rtype: Tracker """ warn( "track_remove_from_cart will be deprecated in future versions.", @@ -430,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, @@ -445,7 +444,7 @@ def track_form_change( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> str: + ) -> "Tracker": """ :param form_id: ID attribute of the HTML form :type form_id: non_empty_string @@ -465,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: str + :rtype: Tracker """ non_empty_string(form_id) one_of(node_name, FORM_NODE_NAMES) @@ -486,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, @@ -498,7 +496,7 @@ def track_form_submit( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> str: + ) -> "Tracker": """ :param form_id: ID attribute of the HTML form :type form_id: non_empty_string @@ -512,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: str + :rtype: Tracker """ non_empty_string(form_id) for element in elements or []: @@ -529,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, @@ -542,7 +539,7 @@ def track_site_search( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> str: + ) -> "Tracker": """ :param terms: Search terms :type terms: seq[>=1](str) @@ -558,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: str + :rtype: Tracker """ non_empty(terms) @@ -575,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, @@ -591,7 +587,7 @@ def track_ecommerce_transaction_item( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> str: + ) -> "Tracker": """ This is an internal method called by track_ecommerce_transaction. It is not for public use. @@ -616,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: str + :rtype: Tracker """ warn( "track_ecommerce_transaction_item will be deprecated in future versions.", @@ -636,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, @@ -653,7 +650,7 @@ def track_ecommerce_transaction( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> str: + ) -> "Tracker": """ :param order_id: ID of the eCommerce transaction :type order_id: non_empty_string @@ -681,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: str + :rtype: Tracker """ warn( "track_ecommerce_transaction will be deprecated in future versions.", @@ -724,7 +721,7 @@ def track_screen_view( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> str: + ) -> "Tracker": """ :param name: The name of the screen view event :type name: string_or_none @@ -736,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: str + :rtype: Tracker """ warn( "track_screen_view will be deprecated in future versions. Please use track_mobile_screen_view.", @@ -754,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, @@ -770,7 +766,7 @@ def track_mobile_screen_view( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> str: + ) -> "Tracker": """ :param id_: Screen view ID. This must be of type UUID. :type id_: string | None @@ -792,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: str + :rtype: Tracker """ screen_view_properties = {} @@ -818,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, @@ -832,7 +827,7 @@ def track_struct_event( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> str: + ) -> "Tracker": """ :param category: Category of the event :type category: non_empty_string @@ -852,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: str + :rtype: Tracker """ non_empty_string(category) non_empty_string(action) @@ -865,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, @@ -873,7 +869,7 @@ def track_self_describing_event( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> str: + ) -> "Tracker": """ :param event_json: The properties of the event. Has two field: A "data" field containing the event properties and @@ -885,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: str + :rtype: Tracker """ envelope = SelfDescribingJson( @@ -897,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( @@ -906,7 +903,7 @@ def track_unstruct_event( context: Optional[List[SelfDescribingJson]] = None, tstamp: Optional[float] = None, event_subject: Optional[_subject.Subject] = None, - ) -> str: + ) -> "Tracker": """ :param event_json: The properties of the event. Has two field: A "data" field containing the event properties and @@ -918,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: str + :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": """ From 5f176a2153513f54c9b067a0c5f87b3c454779a5 Mon Sep 17 00:00:00 2001 From: Jack-Keene Date: Tue, 25 Apr 2023 12:59:16 +0100 Subject: [PATCH 5/8] Update tracker unit tests --- snowplow_tracker/test/unit/test_tracker.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/snowplow_tracker/test/unit/test_tracker.py b/snowplow_tracker/test/unit/test_tracker.py index 6afb5b40..219f835c 100644 --- a/snowplow_tracker/test/unit/test_tracker.py +++ b/snowplow_tracker/test/unit/test_tracker.py @@ -223,12 +223,14 @@ def test_track(self) -> None: t = Tracker("namespace", [e1, e2, e3]) - p = Payload({"eid":"event_id"}) - t.track(p) + p = Payload({"eid": "event_id"}) + tracker = t.track(p) - 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"}) + 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(tracker, "event_id") @freeze_time("2021-04-19 00:00:01") # unix: 1618790401000 @mock.patch("snowplow_tracker.Tracker.track") From 8e0c73fc26ccd840cc6a67717547f9c390802ec2 Mon Sep 17 00:00:00 2001 From: Jack-Keene Date: Tue, 25 Apr 2023 13:16:24 +0100 Subject: [PATCH 6/8] Add optional return type --- snowplow_tracker/tracker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snowplow_tracker/tracker.py b/snowplow_tracker/tracker.py index ea768b66..cd7d8e87 100644 --- a/snowplow_tracker/tracker.py +++ b/snowplow_tracker/tracker.py @@ -122,7 +122,7 @@ def get_timestamp(tstamp: Optional[float] = None) -> int: Tracking methods """ - def track(self, pb: payload.Payload) -> str: + def track(self, pb: payload.Payload) -> Optional[str]: """ Send the payload to a emitter From f750db6d3db632ad6339b2eda826d6a38e96c9a9 Mon Sep 17 00:00:00 2001 From: Jack-Keene Date: Tue, 25 Apr 2023 14:58:34 +0100 Subject: [PATCH 7/8] Name things properly --- snowplow_tracker/test/unit/test_tracker.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/snowplow_tracker/test/unit/test_tracker.py b/snowplow_tracker/test/unit/test_tracker.py index 219f835c..8e6cb6bf 100644 --- a/snowplow_tracker/test/unit/test_tracker.py +++ b/snowplow_tracker/test/unit/test_tracker.py @@ -224,13 +224,13 @@ def test_track(self) -> None: t = Tracker("namespace", [e1, e2, e3]) p = Payload({"eid": "event_id"}) - tracker = t.track(p) + event_id = t.track(p) 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(tracker, "event_id") + self.assertEqual(event_id, "event_id") @freeze_time("2021-04-19 00:00:01") # unix: 1618790401000 @mock.patch("snowplow_tracker.Tracker.track") From ca760654e1f4728c8929ba5cea5cf7e9d03a8caf Mon Sep 17 00:00:00 2001 From: Jack-Keene Date: Tue, 25 Apr 2023 14:58:55 +0100 Subject: [PATCH 8/8] Add optional rtype and docstring --- snowplow_tracker/tracker.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/snowplow_tracker/tracker.py b/snowplow_tracker/tracker.py index cd7d8e87..68315085 100644 --- a/snowplow_tracker/tracker.py +++ b/snowplow_tracker/tracker.py @@ -124,7 +124,7 @@ def get_timestamp(tstamp: Optional[float] = None) -> int: 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 @@ -142,7 +142,7 @@ def complete_payload( context: Optional[List[SelfDescribingJson]], tstamp: Optional[float], event_subject: Optional[_subject.Subject], - ) -> str: + ) -> Optional[str]: """ Called by all tracking events to add the standard name-value pairs to the Payload object irrespective of the tracked event.