python-sdk-local 0.0.38__tar.gz → 0.0.40__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 (21) hide show
  1. {python-sdk-local-0.0.38 → python-sdk-local-0.0.40}/PKG-INFO +1 -1
  2. {python-sdk-local-0.0.38 → python-sdk-local-0.0.40}/python_sdk_local.egg-info/PKG-INFO +1 -1
  3. {python-sdk-local-0.0.38 → python-sdk-local-0.0.40}/python_sdk_local.egg-info/SOURCES.txt +2 -4
  4. {python-sdk-local-0.0.38 → python-sdk-local-0.0.40}/sdk/src/constants.py +2 -2
  5. python-sdk-local-0.0.40/sdk/src/item.py +12 -0
  6. python-sdk-local-0.0.40/sdk/src/mini_logger.py +61 -0
  7. python-sdk-local-0.0.40/sdk/src/our_object.py +56 -0
  8. {python-sdk-local-0.0.38 → python-sdk-local-0.0.40}/sdk/src/utilities.py +72 -50
  9. {python-sdk-local-0.0.38 → python-sdk-local-0.0.40}/setup.py +1 -1
  10. python-sdk-local-0.0.38/sdk/src/mini_logger.py +0 -35
  11. python-sdk-local-0.0.38/sdk/src/our_object.py +0 -52
  12. python-sdk-local-0.0.38/sdk/tests/__init__.py +0 -0
  13. python-sdk-local-0.0.38/sdk/tests/our_object_test.py +0 -63
  14. python-sdk-local-0.0.38/sdk/tests/utilities_test.py +0 -137
  15. {python-sdk-local-0.0.38 → python-sdk-local-0.0.40}/README.md +0 -0
  16. {python-sdk-local-0.0.38 → python-sdk-local-0.0.40}/pyproject.toml +0 -0
  17. {python-sdk-local-0.0.38 → python-sdk-local-0.0.40}/python_sdk_local.egg-info/dependency_links.txt +0 -0
  18. {python-sdk-local-0.0.38 → python-sdk-local-0.0.40}/python_sdk_local.egg-info/top_level.txt +0 -0
  19. {python-sdk-local-0.0.38 → python-sdk-local-0.0.40}/sdk/__init__.py +0 -0
  20. {python-sdk-local-0.0.38 → python-sdk-local-0.0.40}/sdk/src/__init__.py +0 -0
  21. {python-sdk-local-0.0.38 → python-sdk-local-0.0.40}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python-sdk-local
3
- Version: 0.0.38
3
+ Version: 0.0.40
4
4
  Summary: PyPI Package for Circles Python SDK Local Python
5
5
  Home-page: https://github.com/circles
6
6
  Author: Circles
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python-sdk-local
3
- Version: 0.0.38
3
+ Version: 0.0.40
4
4
  Summary: PyPI Package for Circles Python SDK Local Python
5
5
  Home-page: https://github.com/circles
6
6
  Author: Circles
@@ -8,9 +8,7 @@ python_sdk_local.egg-info/top_level.txt
8
8
  sdk/__init__.py
9
9
  sdk/src/__init__.py
10
10
  sdk/src/constants.py
11
+ sdk/src/item.py
11
12
  sdk/src/mini_logger.py
12
13
  sdk/src/our_object.py
13
- sdk/src/utilities.py
14
- sdk/tests/__init__.py
15
- sdk/tests/our_object_test.py
16
- sdk/tests/utilities_test.py
14
+ sdk/src/utilities.py
@@ -7,7 +7,7 @@ OBJECT_TO_INSERT_CODE = {
7
7
  'component_id': PYTHON_SDK_LOCAL_COMPONENT_ID,
8
8
  'component_name': PYTHON_SDK_LOCAL_COMPONENT_NAME,
9
9
  'component_category': LoggerComponentEnum.ComponentCategory.Code.value,
10
- 'developer_email': 'tal.g@circ.zone'
10
+ 'developer_email': 'sahar.g@circ.zone'
11
11
  }
12
12
 
13
13
  OBJECT_TO_INSERT_TEST = {
@@ -15,5 +15,5 @@ OBJECT_TO_INSERT_TEST = {
15
15
  'component_name': PYTHON_SDK_LOCAL_COMPONENT_NAME,
16
16
  'component_category': LoggerComponentEnum.ComponentCategory.Unit_Test.value,
17
17
  'testing_framework': LoggerComponentEnum.testingFramework.pytest.value,
18
- 'developer_email': 'tal.g@circ.zone'
18
+ 'developer_email': 'sahar.g@circ.zone'
19
19
  }
@@ -0,0 +1,12 @@
1
+ from abc import abstractmethod
2
+ from .our_object import OurObject
3
+
4
+
5
+ class Item(OurObject):
6
+
7
+ def __init__(self, **kwargs):
8
+ super().__init__(**kwargs)
9
+
10
+ @abstractmethod
11
+ def get_id(self):
12
+ pass # This method needs to be implemented in subclasses
@@ -0,0 +1,61 @@
1
+ import sys
2
+ from datetime import datetime
3
+
4
+
5
+ class MiniLogger:
6
+
7
+ @staticmethod
8
+ def start(message: str, object: dict = None):
9
+ """
10
+ Print a log message with the current time.
11
+
12
+ Parameters:
13
+ message (str): The message to be printed.
14
+ """
15
+ if object is None:
16
+ print(f"{datetime.now()} - START - {message}")
17
+ else:
18
+ print(f"{datetime.now()} - START - {message} - {object}")
19
+
20
+ @staticmethod
21
+ def end(message: str, object: dict = None):
22
+ """
23
+ Print a log message with the current time.
24
+
25
+ Parameters:
26
+ message (str): The message to be printed.
27
+ """
28
+ if object is None:
29
+ print(f"{datetime.now()} - END - {message}")
30
+ else:
31
+ print(f"{datetime.now()} - END - {message} - {object}")
32
+
33
+ @staticmethod
34
+ def info(message: str, object: dict = None):
35
+ """
36
+ Print a log message with the current time.
37
+
38
+ Parameters:
39
+ message (str): The message to be printed.
40
+ object (dict): The object to be printed.
41
+ """
42
+ if object is None:
43
+ print(f"{datetime.now()} - INFO - {message}")
44
+ else:
45
+ print(f"{datetime.now()} - INFO {message} - {object}")
46
+
47
+ @staticmethod
48
+ def error(message: str, object: dict = None):
49
+ """
50
+ Print a log error message with the current time.
51
+
52
+ Parameters:
53
+ message (str): The message to be printed.
54
+ object (dict): The object to be printed.
55
+ """
56
+ if object is None:
57
+ print(f"{datetime.now()} - ERROR - {message}",
58
+ file=sys.stderr)
59
+ else:
60
+ print(
61
+ f"{datetime.now()} - ERROR - {message} - {object}", file=sys.stderr)
@@ -0,0 +1,56 @@
1
+ from __future__ import annotations
2
+ import json
3
+ import sys
4
+ import os
5
+ from dotenv import load_dotenv
6
+ sys.path.append(os.getcwd())
7
+ from .constants import * # noqa: E402
8
+ load_dotenv()
9
+ from logger_local.Logger import Logger # noqa: E402
10
+ from abc import ABC, abstractmethod # noqa: E402
11
+
12
+ logger = Logger.create_logger(object=OBJECT_TO_INSERT_CODE)
13
+
14
+
15
+ class OurObject(ABC):
16
+
17
+ def __init__(self, **kwargs):
18
+ INIT_METHOD_NAME = '__init__'
19
+ logger.start(INIT_METHOD_NAME, object={'kwargs': kwargs})
20
+ self.kwargs = kwargs
21
+ logger.end(INIT_METHOD_NAME, object={'kwargs': kwargs})
22
+
23
+ @abstractmethod
24
+ def get_name(self):
25
+ pass # This method needs to be implemented in subclasses
26
+
27
+ def get(self, attr_name: str):
28
+ GET_METHOD_NAME = 'get'
29
+ logger.start(GET_METHOD_NAME, object={'attr_name': attr_name})
30
+ arguments = getattr(self, 'kwargs', None)
31
+ value = arguments.get(attr_name, None)
32
+ logger.end(GET_METHOD_NAME, object={'attr_name': attr_name})
33
+ return value
34
+
35
+ def get_all_arguments(self):
36
+ return getattr(self, 'kwargs', None)
37
+
38
+ def to_json(self) -> str:
39
+ return json.dumps(self.__dict__)
40
+
41
+ def from_json(self, json_string: str) -> OurObject:
42
+ FROM_JSON_METHOD_NAME = 'from_json'
43
+ logger.start(FROM_JSON_METHOD_NAME,
44
+ object={'json_string': json_string})
45
+ self.__dict__ = json.loads(json_string)
46
+ logger.end(FROM_JSON_METHOD_NAME,
47
+ object={'json_dict': self.__dict__})
48
+ return self
49
+
50
+ def __eq__(self, other) -> bool:
51
+ if not isinstance(other, OurObject):
52
+ return False
53
+ return self.__dict__ == other.__dict__
54
+
55
+ def __ne__(self, other) -> bool:
56
+ return not self.__eq__(other)
@@ -1,13 +1,15 @@
1
1
  import sys
2
2
  import os
3
- from datetime import time, datetime, timedelta, date
3
+ script_directory = os.path.dirname(os.path.abspath(__file__))
4
+ sys.path.append(os.path.join(script_directory, '..'))
5
+
4
6
  from dotenv import load_dotenv
5
- sys.path.append(os.getcwd())
7
+ from datetime import time, datetime, timedelta, date
6
8
  from .constants import * # noqa: E402¸
7
9
  load_dotenv()
8
- # from logger_local.Logger import Logger # noqa: E402
10
+ from logger_local.Logger import Logger # noqa: E402
9
11
 
10
- # logger = Logger.create_logger(object=OBJECT_TO_INSERT_CODE)
12
+ logger = Logger.create_logger(object=OBJECT_TO_INSERT_CODE)
11
13
 
12
14
 
13
15
  def timedelta_to_time_format(timedelta: timedelta) -> str:
@@ -30,7 +32,8 @@ def timedelta_to_time_format(timedelta: timedelta) -> str:
30
32
  '02:30:45'
31
33
  """
32
34
  TIMEDELTA_TO_TIME_FORMAT_METHOD_NAME = "timedelta_to_time_format"
33
- # logger.start(TIMEDELTA_TO_TIME_FORMAT_METHOD_NAME)
35
+ logger.start(TIMEDELTA_TO_TIME_FORMAT_METHOD_NAME,
36
+ object={'timedelta': timedelta.__str__()})
34
37
 
35
38
  # Calculate the total seconds and convert to HH:MM:SS format
36
39
  total_seconds = int(timedelta.total_seconds())
@@ -41,8 +44,8 @@ def timedelta_to_time_format(timedelta: timedelta) -> str:
41
44
  # Format as "HH:MM:SS"
42
45
  formatted_time = f"{hours:02d}:{minutes:02d}:{seconds:02d}"
43
46
 
44
- # logger.end(TIMEDELTA_TO_TIME_FORMAT_METHOD_NAME,
45
- # object={'formatted_time': formatted_time})
47
+ logger.end(TIMEDELTA_TO_TIME_FORMAT_METHOD_NAME,
48
+ object={'formatted_time': formatted_time})
46
49
  return formatted_time
47
50
 
48
51
 
@@ -51,25 +54,26 @@ def is_valid_time_range(time_range: tuple) -> bool:
51
54
  Validate that the time range is in the format 'HH:MM:SS'.
52
55
  """
53
56
  IS_VALID_TIME_RANGE_METHOD_NAME = "is_valid_time_range"
54
- # logger.start(IS_VALID_TIME_RANGE_METHOD_NAME)
57
+ logger.start(IS_VALID_TIME_RANGE_METHOD_NAME, object={
58
+ "time_range": time_range.__str__()})
55
59
  if len(time_range) != 2:
56
- # logger.end(IS_VALID_TIME_RANGE_METHOD_NAME, object={
57
- # "is_valid_time_range_result": False, "reason": "len(time_range) != 2"})
60
+ logger.end(IS_VALID_TIME_RANGE_METHOD_NAME, object={
61
+ "is_valid_time_range_result": False, "reason": "len(time_range) != 2"})
58
62
  return False
59
63
 
60
64
  for time_obj in time_range:
61
65
  if not isinstance(time_obj, time):
62
- # logger.end(IS_VALID_TIME_RANGE_METHOD_NAME, object={
63
- # "is_valid_time_range_result": False, "reason": "time_range contains non-time objects"})
66
+ logger.end(IS_VALID_TIME_RANGE_METHOD_NAME, object={
67
+ "is_valid_time_range_result": False, "reason": "time_range contains non-time objects"})
64
68
  return False
65
69
  time_str = time_obj.strftime('%H:%M:%S')
66
70
  if time_obj.strftime('%H:%M:%S') != time_str:
67
- # logger.end(IS_VALID_TIME_RANGE_METHOD_NAME, object={
68
- # "is_valid_time_range_result": False, "reason": "time_range contains invalid time format"})
71
+ logger.end(IS_VALID_TIME_RANGE_METHOD_NAME, object={
72
+ "is_valid_time_range_result": False, "reason": "time_range contains invalid time format"})
69
73
  return False
70
74
 
71
- # logger.end(IS_VALID_TIME_RANGE_METHOD_NAME, object={
72
- # "is_valid_time_range_result": True})
75
+ logger.end(IS_VALID_TIME_RANGE_METHOD_NAME, object={
76
+ "is_valid_time_range_result": True})
73
77
  return True
74
78
 
75
79
 
@@ -78,19 +82,20 @@ def is_valid_date_range(date_range: tuple) -> bool:
78
82
  Validate that the date range is in the format 'YYYY-MM-DD'.
79
83
  """
80
84
  IS_VALID_DATE_RANGE_METHOD_NAME = "is_valid_date_range"
81
- # logger.start(IS_VALID_DATE_RANGE_METHOD_NAME)
85
+ logger.start(IS_VALID_DATE_RANGE_METHOD_NAME, object={
86
+ "date_range": date_range.__str__()})
82
87
  if len(date_range) != 2:
83
- # logger.end(IS_VALID_DATE_RANGE_METHOD_NAME, object={
84
- # "is_valid_date_range_result": False, "reason": "len(date_range) != 2"})
88
+ logger.end(IS_VALID_DATE_RANGE_METHOD_NAME, object={
89
+ "is_valid_date_range_result": False, "reason": "len(date_range) != 2"})
85
90
  return False
86
91
 
87
92
  for date_obj in date_range:
88
93
  if not isinstance(date_obj, date):
89
- # logger.end(IS_VALID_DATE_RANGE_METHOD_NAME, object={
90
- # "is_valid_date_range_result": False, "reason": "date_range contains non-date objects"})
94
+ logger.end(IS_VALID_DATE_RANGE_METHOD_NAME, object={
95
+ "is_valid_date_range_result": False, "reason": "date_range contains non-date objects"})
91
96
  return False
92
- # logger.end(IS_VALID_DATE_RANGE_METHOD_NAME, object={
93
- # "is_valid_date_range_result": True})
97
+ logger.end(IS_VALID_DATE_RANGE_METHOD_NAME, object={
98
+ "is_valid_date_range_result": True})
94
99
  return True
95
100
 
96
101
 
@@ -99,19 +104,20 @@ def is_valid_datetime_range(datetime_range: tuple) -> bool:
99
104
  Validate that the datetime range is in the format 'YYYY-MM-DD HH:MM:SS'.
100
105
  """
101
106
  IS_VALID_DATETIME_RANGE_METHOD_NAME = "is_valid_datetime_range"
102
- # logger.start(IS_VALID_DATETIME_RANGE_METHOD_NAME)
107
+ logger.start(IS_VALID_DATETIME_RANGE_METHOD_NAME, object={
108
+ "datetime_range": datetime_range.__str__()})
103
109
  if len(datetime_range) != 2:
104
- # logger.end(IS_VALID_DATETIME_RANGE_METHOD_NAME, object={
105
- # "is_valid_datetime_range_result": False, "reason": "len(datetime_range) != 2"})
110
+ logger.end(IS_VALID_DATETIME_RANGE_METHOD_NAME, object={
111
+ "is_valid_datetime_range_result": False, "reason": "len(datetime_range) != 2"})
106
112
  return False
107
113
 
108
114
  for datetime_obj in datetime_range:
109
115
  if not isinstance(datetime_obj, datetime):
110
- # logger.end(IS_VALID_DATETIME_RANGE_METHOD_NAME, object={
111
- # "is_valid_datetime_range_result": False, "reason": "datetime_range contains non-datetime objects"})
116
+ logger.end(IS_VALID_DATETIME_RANGE_METHOD_NAME, object={
117
+ "is_valid_datetime_range_result": False, "reason": "datetime_range contains non-datetime objects"})
112
118
  return False
113
- # logger.end(IS_VALID_DATETIME_RANGE_METHOD_NAME, object={
114
- # "is_valid_datetime_range_result": True})
119
+ logger.end(IS_VALID_DATETIME_RANGE_METHOD_NAME, object={
120
+ "is_valid_datetime_range_result": True})
115
121
  return True
116
122
 
117
123
 
@@ -139,25 +145,25 @@ def is_list_of_dicts(obj):
139
145
  False
140
146
  """
141
147
  IS_LIST_OF_DICTS_FUNCTION_NAME = "is_list_of_dicts"
142
- # logger.start(IS_LIST_OF_DICTS_FUNCTION_NAME, object={"obj": obj})
148
+ logger.start(IS_LIST_OF_DICTS_FUNCTION_NAME, object={"obj": obj})
143
149
  try:
144
150
  if not isinstance(obj, list):
145
151
  is_list_of_dicts_result = False
146
- # logger.end(IS_LIST_OF_DICTS_FUNCTION_NAME, object={
147
- # "is_list_of_dicts_result": is_list_of_dicts_result})
152
+ logger.end(IS_LIST_OF_DICTS_FUNCTION_NAME, object={
153
+ "is_list_of_dicts_result": is_list_of_dicts_result})
148
154
  return is_list_of_dicts_result
149
155
  for item in obj:
150
156
  if not isinstance(item, dict):
151
157
  is_list_of_dicts_result = False
152
- # logger.end(IS_LIST_OF_DICTS_FUNCTION_NAME, object={
153
- # "is_list_of_dicts_result": is_list_of_dicts_result})
158
+ logger.end(IS_LIST_OF_DICTS_FUNCTION_NAME, object={
159
+ "is_list_of_dicts_result": is_list_of_dicts_result})
154
160
  return is_list_of_dicts_result
155
161
  is_list_of_dicts_result = True
156
- # logger.end(IS_LIST_OF_DICTS_FUNCTION_NAME, object={
157
- # "is_list_of_dicts_result": is_list_of_dicts_result})
162
+ logger.end(IS_LIST_OF_DICTS_FUNCTION_NAME, object={
163
+ "is_list_of_dicts_result": is_list_of_dicts_result})
158
164
  return is_list_of_dicts_result
159
165
  except Exception as e:
160
- # logger.end(IS_LIST_OF_DICTS_FUNCTION_NAME, exception=e)
166
+ logger.end(IS_LIST_OF_DICTS_FUNCTION_NAME, exception=e)
161
167
  raise e
162
168
 
163
169
 
@@ -172,13 +178,16 @@ def is_time_in_time_range(check_time: time, time_range: tuple) -> bool:
172
178
  Returns:
173
179
  bool: True if the check_time is within the time range, False otherwise.
174
180
  """
175
- # IS_TIME_IN_TIME_RANGE_METHOD_NAME = "is_time_in_time_range"
176
- # logger.start(IS_TIME_IN_TIME_RANGE_METHOD_NAME)
181
+ IS_TIME_IN_TIME_RANGE_METHOD_NAME = "is_time_in_time_range"
182
+ logger.start(IS_TIME_IN_TIME_RANGE_METHOD_NAME, object={
183
+ "check_time": check_time.__str__(), "time_range": time_range.__str__()})
177
184
  if not is_valid_time_range(time_range) or not isinstance(check_time, time):
185
+ logger.end(IS_TIME_IN_TIME_RANGE_METHOD_NAME, object={
186
+ "is_time_in_time_range_result": False})
178
187
  return False
179
188
  start_time, end_time = time_range
180
- # logger.end(IS_TIME_IN_TIME_RANGE_METHOD_NAME, object={
181
- # "is_time_in_time_range_result": start_time <= check_time <= end_time})
189
+ logger.end(IS_TIME_IN_TIME_RANGE_METHOD_NAME, object={
190
+ "is_time_in_time_range_result": start_time <= check_time <= end_time})
182
191
  return start_time <= check_time <= end_time
183
192
 
184
193
 
@@ -193,14 +202,17 @@ def is_date_in_date_range(check_date: date, date_range: tuple) -> bool:
193
202
  Returns:
194
203
  bool: True if the check_date is within the date range, False otherwise.
195
204
  """
196
- # IS_DATE_IN_DATE_RANGE_METHOD_NAME = "is_date_in_date_range"
197
- # logger.start(IS_DATE_IN_DATE_RANGE_METHOD_NAME)
205
+ IS_DATE_IN_DATE_RANGE_METHOD_NAME = "is_date_in_date_range"
206
+ logger.start(IS_DATE_IN_DATE_RANGE_METHOD_NAME, object={
207
+ "check_date": check_date.__str__(), "date_range": date_range.__str__()})
198
208
  if not is_valid_date_range(date_range) or not isinstance(check_date, date):
209
+ logger.end(IS_DATE_IN_DATE_RANGE_METHOD_NAME, object={
210
+ "is_date_in_date_range_result": False})
199
211
  return False
200
212
 
201
213
  start_date, end_date = date_range
202
- # logger.end(IS_DATE_IN_DATE_RANGE_METHOD_NAME, object={
203
- # "is_date_in_date_range_result": start_date <= check_date <= end_date})
214
+ logger.end(IS_DATE_IN_DATE_RANGE_METHOD_NAME, object={
215
+ "is_date_in_date_range_result": start_date <= check_date <= end_date})
204
216
  return start_date <= check_date <= end_date
205
217
 
206
218
 
@@ -215,12 +227,22 @@ def is_datetime_in_datetime_range(check_datetime: datetime, datetime_range: tupl
215
227
  Returns:
216
228
  bool: True if the check_datetime is within the datetime range, False otherwise.
217
229
  """
218
- # IS_DATETIME_IN_DATETIME_RANGE_METHOD_NAME = "is_datetime_in_datetime_range"
219
- # logger.start(IS_DATETIME_IN_DATETIME_RANGE_METHOD_NAME)
230
+ IS_DATETIME_IN_DATETIME_RANGE_METHOD_NAME = "is_datetime_in_datetime_range"
231
+ logger.start(IS_DATETIME_IN_DATETIME_RANGE_METHOD_NAME)
220
232
  if not is_valid_datetime_range(datetime_range) or not isinstance(check_datetime, datetime):
233
+ logger.end(IS_DATETIME_IN_DATETIME_RANGE_METHOD_NAME, object={
234
+ "is_datetime_in_datetime_range_result": False})
221
235
  return False
222
236
 
223
237
  start_datetime, end_datetime = datetime_range
224
- # logger.end(IS_DATETIME_IN_DATETIME_RANGE_METHOD_NAME, object={
225
- # "is_datetime_in_datetime_range_result": start_datetime <= check_datetime <= end_datetime})
238
+ logger.end(IS_DATETIME_IN_DATETIME_RANGE_METHOD_NAME, object={
239
+ "is_datetime_in_datetime_range_result": start_datetime <= check_datetime <= end_datetime})
226
240
  return start_datetime <= check_datetime <= end_datetime
241
+
242
+
243
+ def create_http_headers(jwt_token: str):
244
+ headers = {
245
+ 'Content-Type': 'application/json',
246
+ 'Authorization': f'Bearer {jwt_token}',
247
+ }
248
+ return headers
@@ -3,7 +3,7 @@ import setuptools
3
3
  # python -m build needs pyproject.toml or setup.py
4
4
  setuptools.setup(
5
5
  name='python-sdk-local',
6
- version='0.0.38', # https://pypi.org/project/python-sdk-local/
6
+ version='0.0.40', # https://pypi.org/project/python-sdk-local/
7
7
  author="Circles",
8
8
  author_email="info@circles.life",
9
9
  description="PyPI Package for Circles Python SDK Local Python",
@@ -1,35 +0,0 @@
1
- import sys
2
- from datetime import datetime
3
-
4
-
5
- class MiniLogger:
6
-
7
- @staticmethod
8
- def info(message: str, object: dict = None):
9
- """
10
- Print a log message with the current time.
11
-
12
- Parameters:
13
- message (str): The message to be printed.
14
- object (dict): The object to be printed.
15
- """
16
- if object is None:
17
- print(f"{datetime.now()} - {message}")
18
- else:
19
- print(f"{datetime.now()} - {message} - {object}")
20
-
21
- @staticmethod
22
- def error(message: str, object: dict = None):
23
- """
24
- Print a log error message with the current time.
25
-
26
- Parameters:
27
- message (str): The message to be printed.
28
- object (dict): The object to be printed.
29
- """
30
- if object is None:
31
- print(f"{datetime.now()} - ERROR - {message}",
32
- file=sys.stderr)
33
- else:
34
- print(
35
- f"{datetime.now()} - ERROR - {message} - {object}", file=sys.stderr)
@@ -1,52 +0,0 @@
1
- from __future__ import annotations
2
- import json
3
- import sys
4
- import os
5
- from dotenv import load_dotenv
6
- sys.path.append(os.getcwd())
7
- from python_sdk_local.sdk.src.constants import * # noqa: E402
8
- load_dotenv()
9
- # from logger_local.Logger import Logger # noqa: E402
10
-
11
-
12
- # logger = Logger.create_logger(object=OBJECT_TO_INSERT_CODE)
13
-
14
-
15
- class OurObject:
16
-
17
- def __init__(self, **kwargs):
18
- # INIT_METHOD_NAME = '__init__'
19
- # logger.start(INIT_METHOD_NAME, object={'kwargs': kwargs})
20
- self.kwargs = kwargs
21
- # logger.end(INIT_METHOD_NAME, object={'kwargs': kwargs})
22
-
23
- def get(self, attr_name: str):
24
- arguments = getattr(self, 'kwargs', None)
25
- value = arguments.get(attr_name, None)
26
- return value
27
-
28
- def get_all_arguments(self):
29
- return getattr(self, 'kwargs', None)
30
-
31
- def to_json(self) -> str:
32
- return json.dumps(self.__dict__)
33
-
34
- def from_json(self, json_string: str) -> OurObject:
35
- self.__dict__ = json.loads(json_string)
36
- return self
37
-
38
- def __eq__(self, other) -> bool:
39
- if not isinstance(other, OurObject):
40
- return False
41
- return self.__dict__ == other.__dict__
42
-
43
- def __ne__(self, other) -> bool:
44
- return not self.__eq__(other)
45
-
46
- # TODO Shall we call it get_http_headers()? create_http_headers()?
47
- def make_header(self, jwt_token: str):
48
- headers = {
49
- 'Content-Type': 'application/json',
50
- 'Authorization': f'Bearer {jwt_token}',
51
- }
52
- return headers
File without changes
@@ -1,63 +0,0 @@
1
- import sys
2
- import os
3
- from dotenv import load_dotenv
4
-
5
- sys.path.append(os.getcwd())
6
- from python_sdk_local.sdk.src import our_object # noqa: E402
7
- from python_sdk_local.sdk.src.constants import * # noqa: E402
8
- load_dotenv()
9
- # from logger_local.Logger import Logger # noqa: E402
10
-
11
- # logger = Logger.create_logger(object=OBJECT_TO_INSERT_TEST)
12
-
13
-
14
- def test_our_object():
15
- # TEST_OUR_OBJECT_FUNCTION_NAME = "test_our_object"
16
- # logger.start(TEST_OUR_OBJECT_FUNCTION_NAME)
17
-
18
- our_object_1 = our_object.OurObject(a=1, b="Our Object Test")
19
- our_object_2 = our_object.OurObject(a=1, b="Our Object Test")
20
- our_object_3 = our_object.OurObject(a="Object3", b=3)
21
-
22
- # Test == and != operators
23
- assert our_object_1 == our_object_2
24
- assert our_object_1 != our_object_3
25
-
26
- # Test get() method
27
- a1 = our_object_1.get('a')
28
- a2 = our_object_2.get('a')
29
- a3 = our_object_3.get('a')
30
- b1 = our_object_1.get('b')
31
- b2 = our_object_2.get('b')
32
- b3 = our_object_3.get('b')
33
-
34
- assert a1 == a2 == 1
35
- assert a3 == "Object3"
36
- assert b1 == b2 == "Our Object Test"
37
- assert b3 == 3
38
-
39
- # Test get_all_arguments() method
40
- assert our_object_1.get_all_arguments() == {'a': 1, 'b': 'Our Object Test'}
41
- assert our_object_2.get_all_arguments() == {'a': 1, 'b': 'Our Object Test'}
42
- assert our_object_3.get_all_arguments() == {'a': 'Object3', 'b': 3}
43
-
44
- # Test to_json() and from_json() methods
45
- our_object_1_json = our_object_1.to_json()
46
- our_object_2_json = our_object_2.to_json()
47
- our_object_3_json = our_object_3.to_json()
48
- assert our_object_1_json == '{"kwargs": {"a": 1, "b": "Our Object Test"}}'
49
- assert our_object_2_json == '{"kwargs": {"a": 1, "b": "Our Object Test"}}'
50
- assert our_object_3_json == '{"kwargs": {"a": "Object3", "b": 3}}'
51
-
52
- our_object4 = our_object.OurObject()
53
- our_object5 = our_object.OurObject()
54
- our_object6 = our_object.OurObject()
55
- assert our_object4.from_json(our_object_1_json) == our_object_1
56
- assert our_object5.from_json(our_object_2_json) == our_object_2
57
- assert our_object6.from_json(our_object_3_json) == our_object_3
58
-
59
- # # Test make_header
60
- # header = our_object_1.make_header(logger.userContext.get_user_JWT())
61
- # assert 'Authorization' in header
62
-
63
- # logger.end(TEST_OUR_OBJECT_FUNCTION_NAME)
@@ -1,137 +0,0 @@
1
- from datetime import time, datetime, timedelta, date
2
- import sys
3
- import os
4
- from dotenv import load_dotenv
5
- from python_sdk_local.sdk.src import utilities
6
- from python_sdk_local.sdk.src.mini_logger import MiniLogger
7
- sys.path.append(os.getcwd())
8
- from python_sdk_local.sdk.src.constants import * # noqa: E402
9
- load_dotenv()
10
- # from logger_local.Logger import Logger # noqa: E402
11
-
12
- # logger = Logger.create_logger(object=OBJECT_TO_INSERT_TEST)
13
-
14
- TEST_TIME_DELTA = timedelta(seconds=25853)
15
- TEST_TIME_FORMAT = "07:10:53"
16
-
17
-
18
- def test_timedelta_to_time_format():
19
- # TEST_TIMEDELTA_TO_TIME_FORMAT_METHOD_NAME = "test_timedelta_to_time_format"
20
- # logger.start(TEST_TIMEDELTA_TO_TIME_FORMAT_METHOD_NAME)
21
-
22
- time_format = utilities.timedelta_to_time_format(TEST_TIME_DELTA)
23
- assert time_format == TEST_TIME_FORMAT
24
-
25
- # logger.end(TEST_TIMEDELTA_TO_TIME_FORMAT_METHOD_NAME)
26
-
27
-
28
- def test_is_list_of_dicts():
29
- # TEST_IS_LIST_OF_DICTS_METHOD_NAME = "test_is_list_of_dicts"
30
- # logger.start(TEST_IS_LIST_OF_DICTS_METHOD_NAME)
31
-
32
- assert utilities.is_list_of_dicts([]) == True
33
- assert utilities.is_list_of_dicts([{'a': 1}, {'b': 2}]) == True
34
- assert utilities.is_list_of_dicts([{'a': 1}, {'b': 2}, 3]) == False
35
- assert utilities.is_list_of_dicts([{'a': 1}, {'b': 2}, 'c']) == False
36
- assert utilities.is_list_of_dicts([{'a': 1}, {'b': 2}, {'c': 3}]) == True
37
- assert utilities.is_list_of_dicts(
38
- [{'a': 1}, {'b': 2}, {'c': {'d': 5}}, 4]) == False
39
-
40
- # logger.end(TEST_IS_LIST_OF_DICTS_METHOD_NAME)
41
-
42
-
43
- def test_is_valid_time_range():
44
- valid_time_range = (time(12, 34, 56), time(23, 45, 12))
45
- invalid_time_range = (time(12, 34, 56), time(
46
- 11, 22).hour) # Invalid format
47
-
48
- assert utilities.is_valid_time_range(valid_time_range) is True
49
- assert utilities.is_valid_time_range(invalid_time_range) is False
50
-
51
-
52
- def test_is_valid_date_range():
53
- valid_date_range = (date(2023, 10, 26), date(2023, 10, 27))
54
- invalid_date_range = (date(2023, 10, 26), time(
55
- 23, 45, 12)) # Invalid format
56
- check_date_inside = date(2023, 10, 27)
57
- check_date_outside = date(2023, 10, 25)
58
-
59
- assert utilities.is_valid_date_range(valid_date_range) is True
60
- assert utilities.is_valid_date_range(invalid_date_range) is False
61
- assert utilities.is_date_in_date_range(
62
- check_date_inside, valid_date_range) is True
63
- assert utilities.is_date_in_date_range(
64
- check_date_outside, valid_date_range) is False
65
-
66
-
67
- def test_is_valid_datetime_range():
68
- valid_datetime_range = (
69
- datetime(2023, 10, 26, 12, 34, 56), datetime(2023, 10, 27, 23, 45, 12))
70
- invalid_datetime_range = (
71
- datetime(2023, 10, 26, 12, 34, 56), time(23, 45, 12)) # Invalid format
72
- check_datetime_inside = datetime(2023, 10, 27, 15, 0, 0)
73
- check_datetime_outside = datetime(2023, 10, 25, 5, 0, 0)
74
-
75
- assert utilities.is_valid_datetime_range(valid_datetime_range) is True
76
- assert utilities.is_valid_datetime_range(invalid_datetime_range) is False
77
- assert utilities.is_datetime_in_datetime_range(
78
- check_datetime_inside, valid_datetime_range) is True
79
- assert utilities.is_datetime_in_datetime_range(
80
- check_datetime_outside, valid_datetime_range) is False
81
-
82
-
83
- def test_timedelta_to_time_format():
84
- duration = timedelta(hours=2, minutes=30, seconds=45)
85
- formatted_time = utilities.timedelta_to_time_format(duration)
86
- assert formatted_time == "02:30:45"
87
-
88
-
89
- def test_is_time_in_time_range():
90
- valid_time_range = (time(12, 34, 56), time(23, 45, 12))
91
- invalid_time_range = (time(12, 34, 56), time(23, 45)) # Invalid format
92
- check_time_inside = time(15, 0, 0)
93
- check_time_outside = time(5, 0, 0)
94
-
95
- assert utilities.is_time_in_time_range(
96
- check_time_inside, valid_time_range) is True
97
- assert utilities.is_time_in_time_range(
98
- check_time_outside, valid_time_range) is False
99
-
100
-
101
- def test_is_date_in_date_range():
102
- valid_date_range = [date(2023, 10, 26), date(2023, 10, 27)]
103
- invalid_date_range = [date(2023, 10, 26), time(
104
- 23, 45, 12)] # Invalid format
105
- check_date_inside = date(2023, 10, 27)
106
- check_date_outside = date(2023, 10, 25)
107
-
108
- assert utilities.is_date_in_date_range(
109
- check_date_inside, valid_date_range) is True
110
- assert utilities.is_date_in_date_range(
111
- check_date_outside, valid_date_range) is False
112
- assert utilities.is_date_in_date_range(
113
- check_date_inside, invalid_date_range) is False
114
-
115
-
116
- def test_is_datetime_in_datetime_range():
117
- valid_datetime_range = [
118
- datetime(2023, 10, 26, 12, 34, 56), datetime(2023, 10, 27, 23, 45, 12)]
119
- invalid_datetime_range = [
120
- datetime(2023, 10, 26, 12, 34, 56), time(23, 45, 12)] # Invalid format
121
- check_datetime_inside = datetime(2023, 10, 27, 15, 0, 0)
122
- check_datetime_outside = datetime(2023, 10, 25, 5, 0, 0)
123
-
124
- assert utilities.is_datetime_in_datetime_range(
125
- check_datetime_inside, valid_datetime_range) is True
126
- assert utilities.is_datetime_in_datetime_range(
127
- check_datetime_outside, valid_datetime_range) is False
128
- assert utilities.is_datetime_in_datetime_range(
129
- check_datetime_inside, invalid_datetime_range) is False
130
-
131
-
132
- def test_minilogger_info():
133
- MiniLogger.info("test_minilogger_info")
134
-
135
-
136
- def test_minilogger_error():
137
- MiniLogger.error("test_minilogger_error")