python-sdk-remote 0.0.148__tar.gz → 0.0.149__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.

Potentially problematic release.


This version of python-sdk-remote might be problematic. Click here for more details.

Files changed (23) hide show
  1. {python_sdk_remote-0.0.148 → python_sdk_remote-0.0.149}/PKG-INFO +1 -1
  2. {python_sdk_remote-0.0.148 → python_sdk_remote-0.0.149}/README.md +1 -1
  3. {python_sdk_remote-0.0.148 → python_sdk_remote-0.0.149}/python_sdk_remote/src/constants.py +2 -3
  4. python_sdk_remote-0.0.149/python_sdk_remote/src/mini_logger.py +140 -0
  5. {python_sdk_remote-0.0.148 → python_sdk_remote-0.0.149}/python_sdk_remote/src/utilities.py +7 -3
  6. {python_sdk_remote-0.0.148 → python_sdk_remote-0.0.149}/python_sdk_remote.egg-info/PKG-INFO +1 -1
  7. {python_sdk_remote-0.0.148 → python_sdk_remote-0.0.149}/python_sdk_remote.egg-info/SOURCES.txt +0 -1
  8. {python_sdk_remote-0.0.148 → python_sdk_remote-0.0.149}/setup.py +2 -2
  9. python_sdk_remote-0.0.148/python_sdk_remote/src/constants_src_mini_logger.py +0 -14
  10. python_sdk_remote-0.0.148/python_sdk_remote/src/mini_logger.py +0 -146
  11. {python_sdk_remote-0.0.148 → python_sdk_remote-0.0.149}/pyproject.toml +0 -0
  12. {python_sdk_remote-0.0.148 → python_sdk_remote-0.0.149}/python_sdk_remote/src/__init__.py +0 -0
  13. {python_sdk_remote-0.0.148 → python_sdk_remote-0.0.149}/python_sdk_remote/src/http_response.py +0 -0
  14. {python_sdk_remote-0.0.148 → python_sdk_remote-0.0.149}/python_sdk_remote/src/is_test_data.py +0 -0
  15. {python_sdk_remote-0.0.148 → python_sdk_remote-0.0.149}/python_sdk_remote/src/item.py +0 -0
  16. {python_sdk_remote-0.0.148 → python_sdk_remote-0.0.149}/python_sdk_remote/src/our_object.py +0 -0
  17. {python_sdk_remote-0.0.148 → python_sdk_remote-0.0.149}/python_sdk_remote/src/unified_json.py +0 -0
  18. {python_sdk_remote-0.0.148 → python_sdk_remote-0.0.149}/python_sdk_remote/src/valid_json_versions.py +0 -0
  19. {python_sdk_remote-0.0.148 → python_sdk_remote-0.0.149}/python_sdk_remote/src/validate_environment.py +0 -0
  20. {python_sdk_remote-0.0.148 → python_sdk_remote-0.0.149}/python_sdk_remote.egg-info/dependency_links.txt +0 -0
  21. {python_sdk_remote-0.0.148 → python_sdk_remote-0.0.149}/python_sdk_remote.egg-info/requires.txt +0 -0
  22. {python_sdk_remote-0.0.148 → python_sdk_remote-0.0.149}/python_sdk_remote.egg-info/top_level.txt +0 -0
  23. {python_sdk_remote-0.0.148 → python_sdk_remote-0.0.149}/setup.cfg +0 -0
@@ -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.149
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
@@ -8,4 +8,4 @@ logger = Logger.create_logger(object=your_logger_object)
8
8
  @handler_decorator(logger=logger)
9
9
  def my_handler(request_parameters: dict) -> dict:
10
10
  # here you can use both camelCase and snake_case keys from request_parameters
11
- ```# dummy change.
11
+ ```
@@ -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
-
@@ -0,0 +1,140 @@
1
+ import logging
2
+ import os
3
+ import sys
4
+
5
+ # TODO LOGGER_MINIMAL_SEVERITY_DEFAULT
6
+ LOGGER_MINIMUM_SEVERITY = os.getenv("LOGGER_MINIMUM_SEVERITY", "INFO").upper()
7
+ # logging expects NOTSET/DEBUG/INFO/WARNING/ERROR/FATAL/CRITICAL
8
+ if LOGGER_MINIMUM_SEVERITY.isdigit():
9
+ # TODO logger_minimal_severity_default_value
10
+ logger_minimum_severity = int(LOGGER_MINIMUM_SEVERITY)
11
+ # TODO Change Magic Numbers and use the values from Logger.MessageSeverity
12
+ if logger_minimum_severity < 400:
13
+ # TODO LOGGER_MINIMAL_SEVERITY_DEFAULT_NAME =
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"
22
+ else:
23
+ LOGGER_MINIMUM_SEVERITY = "CRITICAL"
24
+
25
+ logging.basicConfig(level=LOGGER_MINIMUM_SEVERITY, stream=sys.stdout,
26
+ format="%(asctime)s - %(message)s")
27
+ logger = logging.getLogger(__name__)
28
+
29
+
30
+ class MiniLogger:
31
+ # TODO Can we have one generic function called by all as we have a lot of duplicated code here?
32
+
33
+ # TODO: print the caller function name
34
+
35
+ @staticmethod
36
+ def start(message: str = "", object: dict = None):
37
+ """
38
+ Print a log message with the current time.
39
+
40
+ Parameters:
41
+ message (str): The message to be printed.
42
+ object (dict): The object to be printed.
43
+ """
44
+ if object is None:
45
+ logger.debug(f"START - {message}")
46
+ else:
47
+ logger.debug(f"START - {message} - {object}")
48
+
49
+ @staticmethod
50
+ def end(message: str = "", object: dict = None):
51
+ """
52
+ Print a log message with the current time.
53
+
54
+ Parameters:
55
+ message (str): The message to be printed.
56
+ """
57
+ if object is None:
58
+ logger.debug(f"END - {message}")
59
+ else:
60
+ logger.debug(f"END - {message} - {object}")
61
+
62
+ # TODO convert all those methods (debug, info, warning, error) into one unified private method
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
64
+ @staticmethod
65
+ def debug(message: str = "", object: dict = None):
66
+ """
67
+ Print a log message with the current time.
68
+
69
+ Parameters:
70
+ message (str): The message to be printed.
71
+ object (dict): The object to be printed.
72
+ """
73
+ if object is None:
74
+ logger.debug(f"DEBUG - {message}")
75
+ else:
76
+ logger.debug(f"DEBUG {message} - {object}")
77
+
78
+ @staticmethod
79
+ def info(message: str = "", object: dict = None):
80
+ """
81
+ Print a log message with the current time.
82
+
83
+ Parameters:
84
+ message (str): The message to be printed.
85
+ object (dict): The object to be printed.
86
+ """
87
+ if object is None:
88
+ logger.info(f"INFO - {message}")
89
+ else:
90
+ logger.info(f"INFO {message} - {object}")
91
+
92
+ @staticmethod
93
+ def warning(message: str = "", object: dict = None):
94
+ """
95
+ Print a log message with the current time.
96
+
97
+ Parameters:
98
+ message (str): The message to be printed.
99
+ object (dict): The object to be printed.
100
+ """
101
+ # TODO Add the source of the message - We should add the object or atleast some parts of it
102
+ if object is None:
103
+ logger.warning(f"WARNING - {message}")
104
+ else:
105
+ logger.warning(f"WARNING {message} - {object}")
106
+
107
+ @staticmethod
108
+ def error(message: str = "", object: dict = None):
109
+ """
110
+ Print a log error message with the current time.
111
+
112
+ Parameters:
113
+ message (str): The message to be printed.
114
+ object (dict): The object to be printed.
115
+ """
116
+ if object is None:
117
+ logger.error(f"ERROR - {message}")
118
+ else:
119
+ logger.error(f"ERROR - {message} - {object}")
120
+
121
+ @staticmethod
122
+ def exception(message: str = "", object: Exception or dict = None):
123
+ """
124
+ Print a log error message with the current time.
125
+
126
+ Parameters:
127
+ message (str): The message to be printed.
128
+ object (dict / Exception): The object / Exception to be printed.
129
+ """
130
+ if isinstance(object, Exception):
131
+ exception = object
132
+ elif isinstance(object, dict):
133
+ exception = object.get("exception")
134
+ else:
135
+ exception = None
136
+
137
+ if object is None:
138
+ logger.exception(f"EXCEPTION - {message}")
139
+ else:
140
+ logger.exception(f"EXCEPTION- {message} - {object}", exc_info=exception)
@@ -296,6 +296,7 @@ def get_environment_name(raise_if_not_found: bool = True,
296
296
  return environment_name
297
297
 
298
298
 
299
+ # TODO add optional_prefix optional parameter. First check with optional_prefix, if not found, check without it.
299
300
  def our_get_env(key: str, default: str = None, raise_if_not_found: bool = True,
300
301
  raise_if_empty: bool = False) -> str:
301
302
  logger.start(object={"key": key, "default": default,
@@ -311,7 +312,8 @@ def our_get_env(key: str, default: str = None, raise_if_not_found: bool = True,
311
312
 
312
313
 
313
314
  # 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:
315
+ def get_sql_hostname(raise_if_not_found: bool = True,
316
+ raise_if_empty: bool = False) -> str:
315
317
  get_sql_hostname_result = our_get_env("RDS_HOSTNAME",
316
318
  raise_if_empty=raise_if_empty)
317
319
  return get_sql_hostname_result
@@ -416,7 +418,7 @@ def validate_arguments(args: dict) -> None:
416
418
  :return: True if all arguments are not None or '', False otherwise
417
419
  """
418
420
  for arg, value in args.items():
419
- if not value:
421
+ if not arg:
420
422
  raise ValueError(f"Argument {arg} is cannot be empty (got {value})")
421
423
 
422
424
 
@@ -456,8 +458,10 @@ def camel_to_snake(camel_str: str) -> str:
456
458
  return snake_str
457
459
 
458
460
 
461
+ # We have both deprecation_warning as method in Logger and as a standalone function
462
+ # We can call the deprecation_warning_function from the logger
459
463
  @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:
464
+ def deprecation_warning_function(old_name: str, new_name: str, start_date: date = None) -> None:
461
465
  if start_date and start_date < date.today():
462
466
  return
463
467
  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.149
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
@@ -8,7 +8,6 @@ python_sdk_remote.egg-info/requires.txt
8
8
  python_sdk_remote.egg-info/top_level.txt
9
9
  python_sdk_remote/src/__init__.py
10
10
  python_sdk_remote/src/constants.py
11
- python_sdk_remote/src/constants_src_mini_logger.py
12
11
  python_sdk_remote/src/http_response.py
13
12
  python_sdk_remote/src/is_test_data.py
14
13
  python_sdk_remote/src/item.py
@@ -3,11 +3,11 @@ import setuptools
3
3
  PACKAGE_NAME = "python-sdk-remote"
4
4
  package_dir = PACKAGE_NAME.replace("-", "_")
5
5
 
6
- # used by python -m build.
6
+ # used by python -m build
7
7
  # python -m build needs pyproject.toml or setup.py
8
8
  setuptools.setup(
9
9
  name=PACKAGE_NAME,
10
- version='0.0.148', # https://pypi.org/project/python-sdk-remote/
10
+ version='0.0.149', # https://pypi.org/project/python-sdk-remote/
11
11
  author="Circles",
12
12
  author_email="info@circlez.ai",
13
13
  description="PyPI Package for Circles Python SDK Local Python",
@@ -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
@@ -1,146 +0,0 @@
1
- import logging
2
- import os
3
- import sys
4
- from enum import Enum
5
- import inspect
6
- from .constants_src_mini_logger import LogMessageSeverity, StartEndEnum
7
-
8
- # TODO LOGGER_MINIMAL_SEVERITY_DEFAULT
9
- LOGGER_MINIMUM_SEVERITY = os.getenv("LOGGER_MINIMUM_SEVERITY", "INFO").upper()
10
- # logging expects NOTSET/DEBUG/INFO/WARNING/ERROR/FATAL/CRITICAL
11
- if LOGGER_MINIMUM_SEVERITY.isdigit():
12
- # TODO logger_minimal_severity_default_value
13
- logger_minimum_severity = int(LOGGER_MINIMUM_SEVERITY)
14
- # TODO Change Magic Numbers and use the values from Logger.MessageSeverity
15
- if logger_minimum_severity < LogMessageSeverity.Start.value:
16
- # 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
25
- else:
26
- LOGGER_MINIMUM_SEVERITY = LogMessageSeverity.Critical
27
-
28
- logging.basicConfig(level=LOGGER_MINIMUM_SEVERITY, stream=sys.stdout,
29
- format="%(asctime)s - %(message)s")
30
- logger = logging.getLogger(__name__)
31
-
32
-
33
- class MiniLogger:
34
- # TODO Can we so one generic function call by all
35
-
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
-
60
-
61
- @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):
64
- """
65
- Print a log message with the current time.
66
-
67
- Parameters:
68
- log_message (str): The message to be printed.
69
- """
70
- MiniLogger._log(LogMessageSeverity.Debug, StartEndEnum.Start, log_message, **kwargs)
71
-
72
- @staticmethod
73
- def end(log_message: str = None, **kwargs):
74
- """
75
- Print a log message with the current time.
76
-
77
- Parameters:
78
- log_message (str): The message to be printed.
79
- """
80
- MiniLogger._log(LogMessageSeverity.Debug, StartEndEnum.End, log_message, **kwargs)
81
-
82
- # 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
85
- @staticmethod
86
- def debug(log_message: str = None, **kwargs):
87
- """
88
- Print a log message with the current time.
89
-
90
- Parameters:
91
- log_message (str): The message to be printed.
92
- """
93
- MiniLogger._log(LogMessageSeverity.Debug, log_message=log_message, **kwargs)
94
-
95
- @staticmethod
96
- def info(log_message: str = None, **kwargs):
97
- """
98
- Print a log message with the current time.
99
-
100
- Parameters:
101
- log_message (str): The message to be printed.
102
- """
103
- MiniLogger._log(LogMessageSeverity.Info, log_message=log_message, **kwargs)
104
-
105
- @staticmethod
106
- def warning(log_message: str = None, **kwargs):
107
- """
108
- Print a log message with the current time.
109
-
110
- Parameters:
111
- log_message (str): The message to be printed.
112
- """
113
- # 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
-
116
-
117
- @staticmethod
118
- def error(log_message: str = None, **kwargs):
119
- """
120
- Print a log error message with the current time.
121
-
122
- Parameters:
123
- log_message (str): The message to be printed.
124
- """
125
- MiniLogger._log(LogMessageSeverity.Error, log_message=log_message, **kwargs)
126
-
127
- @staticmethod
128
- def exception(log_message: str = None, **kwargs):
129
- """
130
- Print a log error message with the current time.
131
-
132
- Parameters:
133
- log_message (str): The message to be printed.
134
- """
135
- object = kwargs.get("object")
136
- if isinstance(object, Exception):
137
- exception = object
138
- elif isinstance(object, dict):
139
- exception = object.get("exception")
140
- else:
141
- exception = None
142
-
143
- if object is None:
144
- logger.exception(f"EXCEPTION - {log_message}")
145
- else:
146
- logger.exception(f"EXCEPTION- {log_message} - {object}", exc_info=exception)