diff --git a/src/superannotate/lib/app/interface/base_interface.py b/src/superannotate/lib/app/interface/base_interface.py index 0b58392ae..930d84e03 100644 --- a/src/superannotate/lib/app/interface/base_interface.py +++ b/src/superannotate/lib/app/interface/base_interface.py @@ -1,6 +1,7 @@ import functools import json import os +import platform import sys import typing from inspect import signature @@ -124,10 +125,10 @@ def _retrieve_configs_from_env() -> typing.Union[ConfigEntity, None]: class Tracker: def get_mp_instance(self) -> Mixpanel: client = self.get_client() - mp_token = "ca95ed96f80e8ec3be791e2d3097cf51" - if client: - if client.host != constants.BACKEND_URL: - mp_token = "e741d4863e7e05b1a45833d01865ef0d" + if client.controller._config.API_URL == constants.BACKEND_URL: # noqa + mp_token = "ca95ed96f80e8ec3be791e2d3097cf51" + else: + mp_token = "e741d4863e7e05b1a45833d01865ef0d" return Mixpanel(mp_token) @staticmethod @@ -137,6 +138,8 @@ def get_default_payload(team_name, user_id): "Team": team_name, "Team Owner": user_id, "Version": __version__, + "Python version": platform.python_version(), + "Python interpreter type": platform.python_implementation(), } def __init__(self, function): @@ -170,6 +173,10 @@ def default_parser(function_name: str, kwargs: dict) -> tuple: for key, value in kwargs.items(): if key == "self": continue + elif key == "token": + properties["sa_token"] = str(bool(value)) + elif key == "config_path": + properties[key] = str(bool(value)) elif value is None: properties[key] = value elif key == "project": @@ -241,5 +248,6 @@ def __new__(mcs, name, bases, attrs): attr_value, FunctionType ) and not attr_value.__name__.startswith("_"): attrs[attr_name] = Tracker(validate_arguments(attr_value)) + attrs["__init__"] = Tracker(validate_arguments(attrs["__init__"])) tmp = super().__new__(mcs, name, bases, attrs) return tmp diff --git a/tests/integration/items/test_search_items.py b/tests/integration/items/test_search_items.py index d79d9b8ff..4779569fa 100644 --- a/tests/integration/items/test_search_items.py +++ b/tests/integration/items/test_search_items.py @@ -78,20 +78,3 @@ def test_search_items_recursive(self): items = sa.search_items(self.PROJECT_NAME, recursive=True) assert len(items) == 8 - - def test_search_items_by_annotator_email(self): - test_email = "shab.prog@gmail.com" - sa.add_contributors_to_project( - self.PROJECT_NAME, ["shab.prog@gmail.com"], "Annotator" - ) - sa.upload_images_from_folder_to_project( - self.PROJECT_NAME, self.folder_path, annotation_status="InProgress" - ) - sa.assign_items( - self.PROJECT_NAME, [self.IMAGE1_NAME, self.IMAGE2_NAME], test_email - ) - - items = sa.search_items( - self.PROJECT_NAME, annotator_email=test_email, recursive=True - ) - assert len(items) == 2 diff --git a/tests/integration/mixpanel/test_mixpanel_decorator.py b/tests/integration/mixpanel/test_mixpanel_decorator.py index 6f92145e6..a1c5e1abd 100644 --- a/tests/integration/mixpanel/test_mixpanel_decorator.py +++ b/tests/integration/mixpanel/test_mixpanel_decorator.py @@ -1,5 +1,8 @@ import copy +import platform +import tempfile import threading +from configparser import ConfigParser from unittest import TestCase from unittest.mock import patch @@ -18,6 +21,8 @@ class TestMixpanel(TestCase): "Team Owner": TEAM_DATA["creator_id"], "Version": __version__, "Success": True, + "Python version": platform.python_version(), + "Python interpreter type": platform.python_implementation(), } PROJECT_NAME = "TEST_MIX" PROJECT_DESCRIPTION = "Desc" @@ -49,6 +54,57 @@ def _safe_delete_project(cls, project_name): def default_payload(self): return copy.copy(self.BLANK_PAYLOAD) + @patch("lib.app.interface.base_interface.Tracker._track") + def test_init(self, track_method): + SAClient() + result = list(track_method.call_args)[0] + payload = self.default_payload + payload.update({"sa_token": "False", "config_path": "False"}) + assert result[1] == "__init__" + assert payload == result[2] + + @patch("lib.app.interface.base_interface.Tracker._track") + @patch("lib.core.usecases.GetTeamUseCase") + def test_init_via_token(self, get_team_use_case, track_method): + SAClient(token="test=3232") + result = list(track_method.call_args)[0] + payload = self.default_payload + payload.update( + { + "sa_token": "True", + "config_path": "False", + "Team": get_team_use_case().execute().data.name, + "Team Owner": get_team_use_case().execute().data.creator_id, + } + ) + assert result[1] == "__init__" + assert payload == result[2] + + @patch("lib.app.interface.base_interface.Tracker._track") + @patch("lib.core.usecases.GetTeamUseCase") + def test_init_via_config_file(self, get_team_use_case, track_method): + with tempfile.TemporaryDirectory() as config_dir: + config_ini_path = f"{config_dir}/config.ini" + with patch("lib.core.CONFIG_INI_FILE_LOCATION", config_ini_path): + with open(f"{config_dir}/config.ini", "w") as config_ini: + config_parser = ConfigParser() + config_parser.optionxform = str + config_parser["DEFAULT"] = {"SA_TOKEN": "test=3232"} + config_parser.write(config_ini) + SAClient(config_path=f"{config_dir}/config.ini") + result = list(track_method.call_args)[0] + payload = self.default_payload + payload.update( + { + "sa_token": "False", + "config_path": "True", + "Team": get_team_use_case().execute().data.name, + "Team Owner": get_team_use_case().execute().data.creator_id, + } + ) + assert result[1] == "__init__" + assert payload == result[2] + @patch("lib.app.interface.base_interface.Tracker._track") def test_get_team_metadata(self, track_method): team = self.CLIENT.get_team_metadata() @@ -57,7 +113,7 @@ def test_get_team_metadata(self, track_method): payload = self.default_payload assert result[0] == team_owner assert result[1] == "get_team_metadata" - assert payload == list(track_method.call_args)[0][2] + assert payload == result[2] @patch("lib.app.interface.base_interface.Tracker._track") def test_search_team_contributors(self, track_method): @@ -72,7 +128,7 @@ def test_search_team_contributors(self, track_method): payload = self.default_payload payload.update(kwargs) assert result[1] == "search_team_contributors" - assert payload == list(track_method.call_args)[0][2] + assert payload == result[2] @patch("lib.app.interface.base_interface.Tracker._track") def test_search_projects(self, track_method): @@ -87,7 +143,7 @@ def test_search_projects(self, track_method): payload = self.default_payload payload.update(kwargs) assert result[1] == "search_projects" - assert payload == list(track_method.call_args)[0][2] + assert payload == result[2] @patch("lib.app.interface.base_interface.Tracker._track") def test_create_project(self, track_method): @@ -110,7 +166,7 @@ def test_create_project(self, track_method): payload.update(kwargs) payload["settings"] = list(kwargs["settings"].keys()) assert result[1] == "create_project" - assert payload == list(track_method.call_args)[0][2] + assert payload == result[2] @pytest.mark.skip("Need to adjust") @patch("lib.app.interface.base_interface.Tracker._track")