python-sdk-remote 0.0.148__py3-none-any.whl → 0.0.150__py3-none-any.whl

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.
@@ -7,7 +7,7 @@ OBJECT_TO_INSERT_CODE = {
7
7
  'component_id': PYTHON_SDK_REMOTE_COMPONENT_ID,
8
8
  'component_name': PYTHON_SDK_REMOTE_COMPONENT_NAME,
9
9
  'component_category': LoggerComponentEnum.ComponentCategory.Code.value,
10
- 'developer_email': 'sahar.g@circ.zone'
10
+ 'developer_email_address': 'sahar.g@circ.zone'
11
11
  }
12
12
 
13
13
  OBJECT_TO_INSERT_TEST = {
@@ -15,6 +15,5 @@ OBJECT_TO_INSERT_TEST = {
15
15
  'component_name': PYTHON_SDK_REMOTE_COMPONENT_NAME,
16
16
  'component_category': LoggerComponentEnum.ComponentCategory.Unit_Test.value,
17
17
  'testing_framework': LoggerComponentEnum.testingFramework.pytest.value,
18
- 'developer_email': 'sahar.g@circ.zone'
18
+ 'developer_email_address': 'sahar.g@circ.zone'
19
19
  }
20
-
@@ -1,10 +1,7 @@
1
1
  import logging
2
2
  import os
3
3
  import sys
4
- from enum import Enum
5
- import inspect
6
- from .constants_src_mini_logger import LogMessageSeverity, StartEndEnum
7
-
4
+
8
5
  # TODO LOGGER_MINIMAL_SEVERITY_DEFAULT
9
6
  LOGGER_MINIMUM_SEVERITY = os.getenv("LOGGER_MINIMUM_SEVERITY", "INFO").upper()
10
7
  # logging expects NOTSET/DEBUG/INFO/WARNING/ERROR/FATAL/CRITICAL
@@ -12,18 +9,18 @@ if LOGGER_MINIMUM_SEVERITY.isdigit():
12
9
  # TODO logger_minimal_severity_default_value
13
10
  logger_minimum_severity = int(LOGGER_MINIMUM_SEVERITY)
14
11
  # TODO Change Magic Numbers and use the values from Logger.MessageSeverity
15
- if logger_minimum_severity < LogMessageSeverity.Start.value:
12
+ if logger_minimum_severity < 400:
16
13
  # TODO LOGGER_MINIMAL_SEVERITY_DEFAULT_NAME =
17
- # TODO Change "DEBUG", "INFO", "WARNING" ... into enum values from Logger.LogMessageSeverity
18
- LOGGER_MINIMUM_SEVERITY = LogMessageSeverity.Debug
19
- elif logger_minimum_severity < LogMessageSeverity.Warning.value:
20
- LOGGER_MINIMUM_SEVERITY = LogMessageSeverity.Info
21
- elif logger_minimum_severity < LogMessageSeverity.Error.value:
22
- LOGGER_MINIMUM_SEVERITY = LogMessageSeverity.Warning
23
- elif logger_minimum_severity < LogMessageSeverity.Critical.value:
24
- LOGGER_MINIMUM_SEVERITY = LogMessageSeverity.Error
14
+ # TODO Change "DEBUG", "INFO", "WARNING" ... into enum values from Logger.MessageSeverity
15
+ LOGGER_MINIMUM_SEVERITY = "DEBUG"
16
+ elif logger_minimum_severity < 600:
17
+ LOGGER_MINIMUM_SEVERITY = "INFO"
18
+ elif logger_minimum_severity < 700:
19
+ LOGGER_MINIMUM_SEVERITY = "WARNING"
20
+ elif logger_minimum_severity < 800:
21
+ LOGGER_MINIMUM_SEVERITY = "ERROR"
25
22
  else:
26
- LOGGER_MINIMUM_SEVERITY = LogMessageSeverity.Critical
23
+ LOGGER_MINIMUM_SEVERITY = "CRITICAL"
27
24
 
28
25
  logging.basicConfig(level=LOGGER_MINIMUM_SEVERITY, stream=sys.stdout,
29
26
  format="%(asctime)s - %(message)s")
@@ -31,108 +28,105 @@ logger = logging.getLogger(__name__)
31
28
 
32
29
 
33
30
  class MiniLogger:
34
- # TODO Can we so one generic function call by all
31
+ # TODO Can we have one generic function called by all as we have a lot of duplicated code here?
35
32
 
36
- @staticmethod
37
- def _log(level: LogMessageSeverity, start_or_end: StartEndEnum = None, log_message: str = None, **kwargs):
38
- """
39
- Private method to unify all log methods
40
-
41
- Parameters:
42
- level (MessageSeverity): log level
43
- log_message (str): The message to be printed.
44
- """
45
- object = kwargs.get("object")
46
- method_name = level.name.lower()
47
- method = getattr(logger, method_name)
48
- if not start_or_end:
49
- action_name = level.name
50
- else:
51
- action_name = start_or_end.name
52
- stk = inspect.stack()[2]
53
- function = stk.function
54
- line = stk.lineno
55
- if object is None:
56
- method(f"Function: {function}, Line: {line}; {action_name} - {log_message}")
57
- else:
58
- method(f"Function: {function}, Line: {line}; {action_name} - {log_message} - {object}")
59
-
33
+ # TODO: print the caller function name
60
34
 
61
35
  @staticmethod
62
- # TODO Add a new file called align_logger_and_minilogger_test.py, which makes sure the signature of all methods of MiniLogger and Logger are the same and we can change from MiniLogger to Logger and vice versa by changing only one line in our code. If we should change the signatures, we should make them backward compatible.
63
- def start(log_message: str = None, **kwargs):
36
+ def start(message: str = "", object: dict = None):
64
37
  """
65
38
  Print a log message with the current time.
66
39
 
67
40
  Parameters:
68
- log_message (str): The message to be printed.
41
+ message (str): The message to be printed.
42
+ object (dict): The object to be printed.
69
43
  """
70
- MiniLogger._log(LogMessageSeverity.Debug, StartEndEnum.Start, log_message, **kwargs)
44
+ if object is None:
45
+ logger.debug(f"START - {message}")
46
+ else:
47
+ logger.debug(f"START - {message} - {object}")
71
48
 
72
49
  @staticmethod
73
- def end(log_message: str = None, **kwargs):
50
+ def end(message: str = "", object: dict = None):
74
51
  """
75
52
  Print a log message with the current time.
76
53
 
77
54
  Parameters:
78
- log_message (str): The message to be printed.
55
+ message (str): The message to be printed.
79
56
  """
80
- MiniLogger._log(LogMessageSeverity.Debug, StartEndEnum.End, log_message, **kwargs)
57
+ if object is None:
58
+ logger.debug(f"END - {message}")
59
+ else:
60
+ logger.debug(f"END - {message} - {object}")
81
61
 
82
62
  # TODO convert all those methods (debug, info, warning, error) into one unified private method
83
- # TODO Add to the unified private method print of the name of method, version
84
- # and line number of the calling function/method to the mini_logger methods
63
+ # TODO Add to the unified private method print of the name of method, version and line number of the calling function/method to the mini_logger methods # noqa: E501
85
64
  @staticmethod
86
- def debug(log_message: str = None, **kwargs):
65
+ def debug(message: str = "", object: dict = None):
87
66
  """
88
67
  Print a log message with the current time.
89
68
 
90
69
  Parameters:
91
- log_message (str): The message to be printed.
70
+ message (str): The message to be printed.
71
+ object (dict): The object to be printed.
92
72
  """
93
- MiniLogger._log(LogMessageSeverity.Debug, log_message=log_message, **kwargs)
73
+ if object is None:
74
+ logger.debug(f"DEBUG - {message}")
75
+ else:
76
+ logger.debug(f"DEBUG {message} - {object}")
94
77
 
95
78
  @staticmethod
96
- def info(log_message: str = None, **kwargs):
79
+ def info(message: str = "", object: dict = None):
97
80
  """
98
81
  Print a log message with the current time.
99
82
 
100
83
  Parameters:
101
- log_message (str): The message to be printed.
84
+ message (str): The message to be printed.
85
+ object (dict): The object to be printed.
102
86
  """
103
- MiniLogger._log(LogMessageSeverity.Info, log_message=log_message, **kwargs)
87
+ if object is None:
88
+ logger.info(f"INFO - {message}")
89
+ else:
90
+ logger.info(f"INFO {message} - {object}")
104
91
 
105
92
  @staticmethod
106
- def warning(log_message: str = None, **kwargs):
93
+ def warning(message: str = "", object: dict = None):
107
94
  """
108
95
  Print a log message with the current time.
109
96
 
110
97
  Parameters:
111
- log_message (str): The message to be printed.
98
+ message (str): The message to be printed.
99
+ object (dict): The object to be printed.
112
100
  """
113
101
  # TODO Add the source of the message - We should add the object or atleast some parts of it
114
- MiniLogger._log(LogMessageSeverity.Warning, log_message=log_message, **kwargs)
115
-
102
+ if object is None:
103
+ logger.warning(f"WARNING - {message}")
104
+ else:
105
+ logger.warning(f"WARNING {message} - {object}")
116
106
 
117
107
  @staticmethod
118
- def error(log_message: str = None, **kwargs):
108
+ def error(message: str = "", object: dict = None):
119
109
  """
120
110
  Print a log error message with the current time.
121
111
 
122
112
  Parameters:
123
- log_message (str): The message to be printed.
113
+ message (str): The message to be printed.
114
+ object (dict): The object to be printed.
124
115
  """
125
- MiniLogger._log(LogMessageSeverity.Error, log_message=log_message, **kwargs)
116
+ if object is None:
117
+ logger.error(f"ERROR - {message}")
118
+ else:
119
+ logger.error(f"ERROR - {message} - {object}")
126
120
 
127
121
  @staticmethod
128
- def exception(log_message: str = None, **kwargs):
122
+ def exception(message: str = "", object: Exception or dict = None):
129
123
  """
130
124
  Print a log error message with the current time.
131
125
 
132
126
  Parameters:
133
- log_message (str): The message to be printed.
127
+ message (str): The message to be printed.
128
+ object (dict / Exception): The object / Exception to be printed.
134
129
  """
135
- object = kwargs.get("object")
136
130
  if isinstance(object, Exception):
137
131
  exception = object
138
132
  elif isinstance(object, dict):
@@ -141,6 +135,6 @@ class MiniLogger:
141
135
  exception = None
142
136
 
143
137
  if object is None:
144
- logger.exception(f"EXCEPTION - {log_message}")
138
+ logger.exception(f"EXCEPTION - {message}")
145
139
  else:
146
- logger.exception(f"EXCEPTION- {log_message} - {object}", exc_info=exception)
140
+ logger.exception(f"EXCEPTION- {message} - {object}", exc_info=exception)
@@ -279,6 +279,21 @@ def is_datetime_in_datetime_range(check_datetime: datetime, datetime_range: (dat
279
279
  return is_datetime_in_datetime_range_result
280
280
 
281
281
 
282
+ # TODO add optional_prefix optional parameter. First check with optional_prefix, if not found, check without it.
283
+ def our_get_env(key: str, default: str = None, raise_if_not_found: bool = True,
284
+ raise_if_empty: bool = False) -> str:
285
+ logger.start(object={"key": key, "default": default,
286
+ "raise_if_not_found": raise_if_not_found,
287
+ "raise_if_empty": raise_if_empty})
288
+ env_var = os.getenv(key, default)
289
+ # TODO: "default is None" is always False
290
+ if ((raise_if_not_found and key not in os.environ and default is None)
291
+ or (raise_if_empty and not env_var and not default)):
292
+ raise Exception(f"Environment variable {key} not found - please check your .env file") # noqa: E501
293
+ logger.end(object={"env_var": env_var})
294
+ return env_var
295
+
296
+
282
297
  def get_brand_name(raise_if_not_found: bool = True,
283
298
  raise_if_empty: bool = False) -> str:
284
299
  get_brand_name_result = our_get_env("BRAND_NAME",
@@ -296,22 +311,26 @@ def get_environment_name(raise_if_not_found: bool = True,
296
311
  return environment_name
297
312
 
298
313
 
299
- def our_get_env(key: str, default: str = None, raise_if_not_found: bool = True,
300
- raise_if_empty: bool = False) -> str:
301
- logger.start(object={"key": key, "default": default,
302
- "raise_if_not_found": raise_if_not_found,
303
- "raise_if_empty": raise_if_empty})
304
- env_var = os.getenv(key, default)
305
- # TODO: "default is None" is always False
306
- if ((raise_if_not_found and key not in os.environ and default is None)
307
- or (raise_if_empty and not env_var and not default)):
308
- raise Exception(f"Environment variable {key} not found - please check your .env file") # noqa: E501
309
- logger.end(object={"env_var": env_var})
310
- return env_var
314
+ def get_product_user_identifier(raise_if_not_found: bool = True,
315
+ raise_if_empty: bool = False) -> str:
316
+ get_product_user_identifier_result = our_get_env("PRODUCT_USER_IDENTIFIER",
317
+ raise_if_not_found=raise_if_not_found, # noqa E501
318
+ raise_if_empty=raise_if_empty) # noqa E501
319
+ return get_product_user_identifier_result
320
+
321
+
322
+ def get_product_user_password(raise_if_not_found: bool = True,
323
+ raise_if_empty: bool = False) -> str:
324
+ # TODO Add support to PRODUCT_USER_PASSWORD and deprecation message for PRODUCT_PASSWORD (backward compatible)
325
+ get_product_user_password_result = our_get_env("PRODUCT_PASSWORD",
326
+ raise_if_not_found=raise_if_not_found, # noqa E501
327
+ raise_if_empty=raise_if_empty) # noqa E501
328
+ return get_product_user_password_result
311
329
 
312
330
 
313
331
  # TODO As only the database package uses those, let's move those three to the database package # noqa: E501
314
- def get_sql_hostname(raise_if_not_found: bool = True, raise_if_empty: bool = False) -> str:
332
+ def get_sql_hostname(raise_if_not_found: bool = True,
333
+ raise_if_empty: bool = False) -> str:
315
334
  get_sql_hostname_result = our_get_env("RDS_HOSTNAME",
316
335
  raise_if_empty=raise_if_empty)
317
336
  return get_sql_hostname_result
@@ -416,7 +435,7 @@ def validate_arguments(args: dict) -> None:
416
435
  :return: True if all arguments are not None or '', False otherwise
417
436
  """
418
437
  for arg, value in args.items():
419
- if not value:
438
+ if not arg:
420
439
  raise ValueError(f"Argument {arg} is cannot be empty (got {value})")
421
440
 
422
441
 
@@ -456,8 +475,10 @@ def camel_to_snake(camel_str: str) -> str:
456
475
  return snake_str
457
476
 
458
477
 
478
+ # We have both deprecation_warning as method in Logger and as a standalone function
479
+ # We can call the deprecation_warning_function from the logger
459
480
  @lru_cache(maxsize=64) # don't print the same warning multiple times
460
- def deprecation_warning(old_name: str, new_name: str, start_date: date = None) -> None:
481
+ def deprecation_warning_function(old_name: str, new_name: str, start_date: date = None) -> None:
461
482
  if start_date and start_date < date.today():
462
483
  return
463
484
  warnings_message = f"Please use {old_name} instead of {new_name}."
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-sdk-remote
3
- Version: 0.0.148
3
+ Version: 0.0.150
4
4
  Summary: PyPI Package for Circles Python SDK Local Python
5
5
  Home-page: https://github.com/circles-zone/python-sdk-remote-python-package
6
6
  Author: Circles
@@ -1,16 +1,15 @@
1
1
  python_sdk_remote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- python_sdk_remote/constants.py,sha256=Zg4_KOlTkbqdKwua3oTe_64QyYvK_mhA6KnriQMBIPo,752
3
- python_sdk_remote/constants_src_mini_logger.py,sha256=ukaPhopFSxnLeQwyHa4VUi3TACh4QuKn77JtSK8Z1Tg,247
2
+ python_sdk_remote/constants.py,sha256=8n1iV8CJV5YdVeusue2Hfef8BGEFP72V3ycl2E0INLI,767
4
3
  python_sdk_remote/http_response.py,sha256=5_h9xOtUhsMzxUiLT4wkYBpL0StA7XYtaqKF4esGwis,6370
5
4
  python_sdk_remote/is_test_data.py,sha256=zbUz-Juj7vOPG9TtIttMIBWFxbsOs4-TuR1RYfGNkp4,92
6
5
  python_sdk_remote/item.py,sha256=6DQs1nBKbEmnHjE50vZtkMr14ECS_9b8cvE7ItPAbhE,322
7
- python_sdk_remote/mini_logger.py,sha256=5oX64d2vCrfa_5-WSeIxFaz9BenrUaGf8goIMyd_UUo,5659
6
+ python_sdk_remote/mini_logger.py,sha256=EAARhRUvUTQKeSJLDS5n9AxNra9Jk0DUyFsAMhX0wCs,4869
8
7
  python_sdk_remote/our_object.py,sha256=Db3_CbM4e1VtDU97VDesnBNMXNuYvnuDL7QqHv4MgJo,4618
9
8
  python_sdk_remote/unified_json.py,sha256=zk4Lo9t9MSHXW8UKdo50YCYmFv5FgTsmHf6l2AWqLWU,961
10
- python_sdk_remote/utilities.py,sha256=4xwiZ6dvHBFnG4LGFKoY-Sey8h5-jLOT9BcGGA9KyNY,16754
9
+ python_sdk_remote/utilities.py,sha256=MVWbVkuWQNywumh-7Sw1cLy3Fiq7EMtJiYzJ0HclRzw,18072
11
10
  python_sdk_remote/valid_json_versions.py,sha256=-ZU65JYI6gTEfK8o6gu9Dmm9SQmwzj5pDbEXiyUbBhQ,138
12
11
  python_sdk_remote/validate_environment.py,sha256=nzCHZDw56G56ekrTQT3gG48utjsU4VCwQi9dVsBDas0,2268
13
- python_sdk_remote-0.0.148.dist-info/METADATA,sha256=ffemxup2_QpPRISlrVd8TGxc91Tz3552mbabczSrbVQ,729
14
- python_sdk_remote-0.0.148.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
15
- python_sdk_remote-0.0.148.dist-info/top_level.txt,sha256=JTpEq_svPlI5hTlPq30Ne-NkR-u5464gjVDP2U74PvE,18
16
- python_sdk_remote-0.0.148.dist-info/RECORD,,
12
+ python_sdk_remote-0.0.150.dist-info/METADATA,sha256=dtgAcLP89567n7fieDu8GWgxXB3fHwyNkIKK6t8yXhI,729
13
+ python_sdk_remote-0.0.150.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
14
+ python_sdk_remote-0.0.150.dist-info/top_level.txt,sha256=JTpEq_svPlI5hTlPq30Ne-NkR-u5464gjVDP2U74PvE,18
15
+ python_sdk_remote-0.0.150.dist-info/RECORD,,
@@ -1,14 +0,0 @@
1
- from enum import Enum
2
-
3
- class LogMessageSeverity(Enum):
4
- Debug = 100
5
- Verbose = 200
6
- Init = 300
7
- Info = 500
8
- Warning = 600
9
- Error = 700
10
- Critical = 800
11
- Exception = 900
12
- class StartEndEnum(Enum):
13
- Start = 400
14
- End = 402