kameleoon-client-python 3.2.0__tar.gz → 3.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/PKG-INFO +1 -1
  2. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/data/data.py +1 -0
  3. kameleoon-client-python-3.3.0/kameleoon/data/kcs_heat.py +22 -0
  4. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/sdk_version.py +1 -1
  5. kameleoon-client-python-3.3.0/kameleoon/targeting/conditions/kcs_heat_range_condition.py +32 -0
  6. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/targeting_condition.py +1 -0
  7. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/targeting_manager.py +2 -0
  8. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/tree_condition_factory.py +4 -0
  9. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon_client_python.egg-info/PKG-INFO +1 -1
  10. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon_client_python.egg-info/SOURCES.txt +2 -0
  11. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/MANIFEST.in +0 -0
  12. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/README.md +0 -0
  13. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/__init__.py +0 -0
  14. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/configuration/__init__.py +0 -0
  15. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/configuration/custom_data_info.py +0 -0
  16. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/configuration/data_file.py +0 -0
  17. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/configuration/feature_flag.py +0 -0
  18. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/configuration/rule.py +0 -0
  19. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/configuration/rule_type.py +0 -0
  20. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/configuration/settings.py +0 -0
  21. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/configuration/variable.py +0 -0
  22. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/configuration/variation.py +0 -0
  23. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/configuration/variation_by_exposition.py +0 -0
  24. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/data/__init__.py +0 -0
  25. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/data/browser.py +0 -0
  26. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/data/conversion.py +0 -0
  27. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/data/cookie.py +0 -0
  28. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/data/custom_data.py +0 -0
  29. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/data/device.py +0 -0
  30. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/data/geolocation.py +0 -0
  31. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/data/operating_system.py +0 -0
  32. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/data/page_view.py +0 -0
  33. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/data/user_agent.py +0 -0
  34. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/data/visitor_visits.py +0 -0
  35. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/defaults.py +0 -0
  36. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/exceptions.py +0 -0
  37. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/helpers/__init__.py +0 -0
  38. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/helpers/functions.py +0 -0
  39. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/helpers/logger.py +0 -0
  40. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/helpers/multi_threading.py +0 -0
  41. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/helpers/nonce.py +0 -0
  42. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/helpers/repeat_timer.py +0 -0
  43. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/helpers/scheduler.py +0 -0
  44. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/helpers/visitor_code.py +0 -0
  45. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/kameleoon_client.py +0 -0
  46. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/kameleoon_client_config.py +0 -0
  47. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/kameleoon_client_factory.py +0 -0
  48. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/middleware.py +0 -0
  49. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/real_time/__init__.py +0 -0
  50. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/real_time/real_time_configuration_service.py +0 -0
  51. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/real_time/real_time_event.py +0 -0
  52. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/storage/__init__.py +0 -0
  53. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/storage/cache.py +0 -0
  54. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/storage/cache_factory.py +0 -0
  55. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/storage/cache_factory_impl.py +0 -0
  56. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/storage/cache_impl.py +0 -0
  57. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/__init__.py +0 -0
  58. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/__init__.py +0 -0
  59. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/browser_condition.py +0 -0
  60. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/constants.py +0 -0
  61. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/conversion_condition.py +0 -0
  62. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/cookie_condition.py +0 -0
  63. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/custom_datum.py +0 -0
  64. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/device_condition.py +0 -0
  65. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/exclusive_feature_flag_condition.py +0 -0
  66. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/geolocation_condition.py +0 -0
  67. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/number_condition.py +0 -0
  68. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/operating_system_condition.py +0 -0
  69. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/page_title_condition.py +0 -0
  70. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/page_url_condition.py +0 -0
  71. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/page_view_number_condition.py +0 -0
  72. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/previous_page_condition.py +0 -0
  73. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/sdk_language_condition.py +0 -0
  74. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/segment_condition.py +0 -0
  75. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/string_value_condition.py +0 -0
  76. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/target_feature_flag_condition.py +0 -0
  77. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/time_elapsed_since_visit_condition.py +0 -0
  78. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/unknown_condition.py +0 -0
  79. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/visit_number_today_condition.py +0 -0
  80. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/visit_number_total_condition.py +0 -0
  81. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/visitor_code_condition.py +0 -0
  82. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/conditions/visitor_new_return_condition.py +0 -0
  83. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/models.py +0 -0
  84. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon/targeting/tree_builder.py +0 -0
  85. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon_client_python.egg-info/dependency_links.txt +0 -0
  86. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon_client_python.egg-info/requires.txt +13 -13
  87. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/kameleoon_client_python.egg-info/top_level.txt +0 -0
  88. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/setup.cfg +0 -0
  89. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/setup.py +0 -0
  90. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/tests/integration/proj/__init__.py +0 -0
  91. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/tests/integration/proj/kameleoon_app/__init__.py +0 -0
  92. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/tests/integration/proj/kameleoon_app/admin.py +0 -0
  93. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/tests/integration/proj/kameleoon_app/apps.py +0 -0
  94. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/tests/integration/proj/kameleoon_app/migrations/__init__.py +0 -0
  95. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/tests/integration/proj/kameleoon_app/models.py +0 -0
  96. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/tests/integration/proj/kameleoon_app/tests.py +0 -0
  97. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/tests/integration/proj/kameleoon_app/views.py +0 -0
  98. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/tests/integration/proj/manage.py +0 -0
  99. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/tests/integration/proj/proj/__init__.py +0 -0
  100. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/tests/integration/proj/proj/asgi.py +0 -0
  101. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/tests/integration/proj/proj/settings.py +0 -0
  102. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/tests/integration/proj/proj/urls.py +0 -0
  103. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/tests/integration/proj/proj/wsgi.py +0 -0
  104. {kameleoon-client-python-3.2.0 → kameleoon-client-python-3.3.0}/tests/resources/config.yml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kameleoon-client-python
3
- Version: 3.2.0
3
+ Version: 3.3.0
4
4
  Summary: Kameleoon Client Python Software Development Kit.
5
5
  Home-page: https://developers.kameleoon.com/python-sdk.html
6
6
  Author: Kameleoon
@@ -18,6 +18,7 @@ class DataType(IntEnum):
18
18
  GEOLOCATION = 9
19
19
  PAGE_VIEW_VISIT = 10
20
20
  VISITOR_VISITS = 11
21
+ KCS_HEAT = 12
21
22
 
22
23
 
23
24
  class BaseData:
@@ -0,0 +1,22 @@
1
+ """KCS heat"""
2
+
3
+ from typing import Dict
4
+ from kameleoon.data import DataType
5
+ from kameleoon.data.data import BaseData
6
+
7
+
8
+ class KcsHeat(BaseData):
9
+ """KCS heat"""
10
+
11
+ def __init__(self, values: Dict[int, Dict[int, float]]) -> None:
12
+ super().__init__()
13
+ self.__values = values
14
+
15
+ @property
16
+ def values(self) -> Dict[int, Dict[int, float]]:
17
+ """Returns goal scores stored by goal IDs within dictionaries stored by key moment IDs within a dictionary"""
18
+ return self.__values
19
+
20
+ @property
21
+ def data_type(self) -> DataType:
22
+ return DataType.KCS_HEAT
@@ -3,7 +3,7 @@
3
3
  from typing import Optional, Tuple
4
4
 
5
5
 
6
- version_info = (3, 2, 0)
6
+ version_info = (3, 3, 0)
7
7
  __version__ = ".".join(str(v) for v in version_info) # uses in scripts
8
8
 
9
9
 
@@ -0,0 +1,32 @@
1
+ """Device condition"""
2
+
3
+ from typing import Any, Dict, Union
4
+ from kameleoon.data.kcs_heat import KcsHeat
5
+ from kameleoon.targeting.conditions.targeting_condition import TargetingCondition
6
+
7
+
8
+ class KcsHeatRangeCondition(TargetingCondition):
9
+ """KCS heat range / Heat slice / AI predictive / Likelihood to convert"""
10
+
11
+ def __init__(self, json_condition: Dict[str, Union[str, int, Any]]):
12
+ super().__init__(json_condition)
13
+ self.__goal_id = self.__get_json_value(json_condition, "goalId", int, -1)
14
+ self.__key_moment_id = self.__get_json_value(json_condition, "keyMomentId", int, -1)
15
+ # Goal score belongs to [0.0; 100.0] range
16
+ self.__lower_bound = self.__get_json_value(json_condition, "lowerBound", (float, int), 101.0)
17
+ self.__upper_bound = self.__get_json_value(json_condition, "upperBound", (float, int), -1.0)
18
+
19
+ @staticmethod
20
+ def __get_json_value(json_condition: Dict[str, Union[str, int, Any]], key: str, types, default):
21
+ value = json_condition.get(key)
22
+ return value if isinstance(value, types) else default
23
+
24
+ def check(self, data: Any) -> bool:
25
+ return isinstance(data, KcsHeat) and self.__check(data)
26
+
27
+ def __check(self, kcs_heat: KcsHeat) -> bool:
28
+ goal_scores = kcs_heat.values.get(self.__key_moment_id)
29
+ if not isinstance(goal_scores, dict):
30
+ return False
31
+ score = goal_scores.get(self.__goal_id)
32
+ return isinstance(score, (float, int)) and (self.__lower_bound <= score <= self.__upper_bound)
@@ -36,6 +36,7 @@ class TargetingConditionType(Enum):
36
36
  VISITS = "VISITS"
37
37
  SAME_DAY_VISITS = "SAME_DAY_VISITS"
38
38
  NEW_VISITORS = "NEW_VISITORS"
39
+ HEAT_SLICE = "HEAT_SLICE"
39
40
  UNKNOWN = "UNKNOWN"
40
41
 
41
42
 
@@ -99,4 +99,6 @@ class TargetingManager:
99
99
  TargetingConditionType.NEW_VISITORS,
100
100
  ):
101
101
  return visitor.visitor_visits
102
+ if TargetingConditionType.HEAT_SLICE:
103
+ return visitor.kcs_heat
102
104
  return None
@@ -13,6 +13,7 @@ from kameleoon.targeting.conditions.exclusive_feature_flag_condition import Excl
13
13
  from kameleoon.targeting.conditions.visitor_code_condition import VisitorCodeCondition
14
14
  from kameleoon.targeting.conditions.cookie_condition import CookieCondition
15
15
  from kameleoon.targeting.conditions.geolocation_condition import GeolocationCondition
16
+ from kameleoon.targeting.conditions.kcs_heat_range_condition import KcsHeatRangeCondition
16
17
  from kameleoon.targeting.conditions.operating_system_condition import OperatingSystemCondition
17
18
  from kameleoon.targeting.conditions.segment_condition import SegmentCondition
18
19
  from kameleoon.targeting.conditions.target_feature_flag_condition import TargetFeatureFlagCondition
@@ -96,6 +97,9 @@ class TreeConditionFactory:
96
97
  ):
97
98
  return TimeElapsedSinceVisitCondition(condition_json)
98
99
 
100
+ if condition_type == TargetingConditionType.HEAT_SLICE:
101
+ return KcsHeatRangeCondition(condition_json)
102
+
99
103
  return UnknownCondition(condition_json)
100
104
  except KeyError as exception:
101
105
  print(f"Unsupported targeted condition type found: {exception}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kameleoon-client-python
3
- Version: 3.2.0
3
+ Version: 3.3.0
4
4
  Summary: Kameleoon Client Python Software Development Kit.
5
5
  Home-page: https://developers.kameleoon.com/python-sdk.html
6
6
  Author: Kameleoon
@@ -28,6 +28,7 @@ kameleoon/data/custom_data.py
28
28
  kameleoon/data/data.py
29
29
  kameleoon/data/device.py
30
30
  kameleoon/data/geolocation.py
31
+ kameleoon/data/kcs_heat.py
31
32
  kameleoon/data/operating_system.py
32
33
  kameleoon/data/page_view.py
33
34
  kameleoon/data/user_agent.py
@@ -62,6 +63,7 @@ kameleoon/targeting/conditions/custom_datum.py
62
63
  kameleoon/targeting/conditions/device_condition.py
63
64
  kameleoon/targeting/conditions/exclusive_feature_flag_condition.py
64
65
  kameleoon/targeting/conditions/geolocation_condition.py
66
+ kameleoon/targeting/conditions/kcs_heat_range_condition.py
65
67
  kameleoon/targeting/conditions/number_condition.py
66
68
  kameleoon/targeting/conditions/operating_system_condition.py
67
69
  kameleoon/targeting/conditions/page_title_condition.py
@@ -4,24 +4,24 @@ sseclient-py==1.7.*
4
4
  aiohttp==3.8.*
5
5
 
6
6
  [test]
7
- aiohttp==3.8.*
8
- aioresponses==0.7.*
7
+ pytest-pythonpath==0.7.3
8
+ twine==3.4.1
9
+ pytest-cov==2.12.1
9
10
  pyyaml==5.4.*
11
+ Django==3.2.4
12
+ flake8==4.0.1
13
+ types-PyYAML==5.4.3
14
+ pytest-django==4.4.0
15
+ requests>=2.25
16
+ pytest-ordering==0.6
10
17
  Werkzeug==2.0.1
11
- wheel==0.36.2
12
18
  types-python-dateutil==2.8.2
13
19
  freezegun==1.1.0
14
20
  mypy==0.991
15
- pytest-django==4.4.0
16
- flake8==4.0.1
17
- pytest-ordering==0.6
18
- pytest-pythonpath==0.7.3
19
21
  pylint==2.12.*
20
- twine==3.4.1
21
- Django==3.2.4
22
- requests>=2.25
23
- types-PyYAML==5.4.3
24
- pytest-cov==2.12.1
25
22
  pytest-asyncio==0.21.*
26
- sseclient-py==1.7.*
27
23
  types-requests==2.25.0
24
+ aioresponses==0.7.*
25
+ wheel==0.36.2
26
+ aiohttp==3.8.*
27
+ sseclient-py==1.7.*