atk-common 3.3.0__tar.gz → 3.5.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 (70) hide show
  1. {atk_common-3.3.0 → atk_common-3.5.0}/PKG-INFO +1 -1
  2. {atk_common-3.3.0 → atk_common-3.5.0}/setup.py +1 -1
  3. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/classes/bo_logger.py +11 -7
  4. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/classes/env_handler.py +1 -1
  5. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/classes/error_handler.py +1 -1
  6. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/classes/rabbitmq_consumer.py +3 -3
  7. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/log_level_enum.py +0 -1
  8. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/interfaces/logger_interface.py +0 -1
  9. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/utils/__init__.py +2 -0
  10. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/utils/consumer_retry_handler.py +5 -5
  11. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/utils/datetime_utils.py +3 -0
  12. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/utils/mq_utils.py +2 -2
  13. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common.egg-info/PKG-INFO +1 -1
  14. {atk_common-3.3.0 → atk_common-3.5.0}/README.md +0 -0
  15. {atk_common-3.3.0 → atk_common-3.5.0}/license.txt +0 -0
  16. {atk_common-3.3.0 → atk_common-3.5.0}/pyproject.toml +0 -0
  17. {atk_common-3.3.0 → atk_common-3.5.0}/setup.cfg +0 -0
  18. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/__init__.py +0 -0
  19. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/classes/__init__.py +0 -0
  20. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/classes/docker_handler.py +0 -0
  21. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/classes/http_response_handler.py +0 -0
  22. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/__init__.py +0 -0
  23. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/api_error_type_enum.py +0 -0
  24. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/camera_cabinet_type_enum.py +0 -0
  25. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/camera_role_enum.py +0 -0
  26. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/certificate_issuer_enum.py +0 -0
  27. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/command_status_type_enum.py +0 -0
  28. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/command_type_enum.py +0 -0
  29. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/config_reply_status_type_enum.py +0 -0
  30. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/detection_status_type_enum.py +0 -0
  31. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/encryption_type_enum.py +0 -0
  32. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/file_exists_enum.py +0 -0
  33. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/history_status_type_enum.py +0 -0
  34. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/image_encoding_type_enum.py +0 -0
  35. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/image_part_category_enum.py +0 -0
  36. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/image_part_type_enum.py +0 -0
  37. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/image_shelf_type_enum.py +0 -0
  38. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/metering_direction_enum.py +0 -0
  39. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/multimotor_status_type_enum.py +0 -0
  40. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/piezo_vehicle_type_enum.py +0 -0
  41. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/process_status_type_enum.py +0 -0
  42. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/response_status_type_enum.py +0 -0
  43. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/section_role_enum.py +0 -0
  44. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/sensor_order_enum.py +0 -0
  45. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/sensor_type_enum.py +0 -0
  46. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/speed_control_status_type_enum.py +0 -0
  47. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/speed_control_stop_reason.py +0 -0
  48. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/test_image_type_enum.py +0 -0
  49. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/enums/violation_type_enum.py +0 -0
  50. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/interfaces/__init__.py +0 -0
  51. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/interfaces/docker_handler_interface.py +0 -0
  52. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/interfaces/env_handler_interface.py +0 -0
  53. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/interfaces/error_handler_interface.py +0 -0
  54. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/interfaces/http_response_handler_interface.py +0 -0
  55. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/utils/db_utils.py +0 -0
  56. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/utils/default_should_retry.py +0 -0
  57. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/utils/error_utils.py +0 -0
  58. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/utils/file_utils.py +0 -0
  59. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/utils/hash_utils.py +0 -0
  60. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/utils/http_utils.py +0 -0
  61. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common/utils/internal_response_utils.py +0 -0
  62. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common.egg-info/SOURCES.txt +0 -0
  63. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common.egg-info/dependency_links.txt +0 -0
  64. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common.egg-info/requires.txt +0 -0
  65. {atk_common-3.3.0 → atk_common-3.5.0}/src/atk_common.egg-info/top_level.txt +0 -0
  66. {atk_common-3.3.0 → atk_common-3.5.0}/src/shared_python_atk_enforcement/__init__.py +0 -0
  67. {atk_common-3.3.0 → atk_common-3.5.0}/tests/test_docker_utils.py +0 -0
  68. {atk_common-3.3.0 → atk_common-3.5.0}/tests/test_error_utils.py +0 -0
  69. {atk_common-3.3.0 → atk_common-3.5.0}/tests/test_http_utils.py +0 -0
  70. {atk_common-3.3.0 → atk_common-3.5.0}/tests/test_log_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atk_common
3
- Version: 3.3.0
3
+ Version: 3.5.0
4
4
  Summary: ATK common methods
5
5
  Home-page: https://github.com/pypa/atk_common
6
6
  Author: Roger
@@ -36,7 +36,7 @@ setup(
36
36
  # For a discussion on single-sourcing the version across setup.py and the
37
37
  # project code, see
38
38
  # https://packaging.python.org/guides/single-sourcing-package-version/
39
- version="3.3.0", # Required
39
+ version="3.5.0", # Required
40
40
  # This is a one-line description or tagline of what your project does. This
41
41
  # corresponds to the "Summary" metadata field:
42
42
  # https://packaging.python.org/specifications/core-metadata/#summary
@@ -3,8 +3,7 @@ from typing import Optional
3
3
  from opentelemetry.trace import get_current_span
4
4
  from atk_common.interfaces import ILogger
5
5
  from atk_common.enums import LogLevel
6
- from atk_common.utils.datetime_utils import get_utc_date_time_str
7
- from atk_common.enums.log_level_enum import LogLevel
6
+ from atk_common.utils.datetime_utils import get_utc_iso_date_time
8
7
 
9
8
  class BoLogger(ILogger):
10
9
  def __init__(self, log_level: LogLevel, component, version):
@@ -12,9 +11,17 @@ class BoLogger(ILogger):
12
11
  self.log_level = LogLevel.INFO
13
12
  else:
14
13
  self.log_level = log_level
15
- self.component = component
14
+ self.component = self._parse_component_name(component)
16
15
  self.version = version
17
16
 
17
+ # Example: ghcr.io/perspictech/bo-status-mq-consumer
18
+ def _parse_component_name(self, component: str) -> str:
19
+ if component.startswith("ghcr"):
20
+ parts = component.split('/')
21
+ if len(parts) == 3:
22
+ return parts[2]
23
+ return component
24
+
18
25
  def _get_trace_context(self):
19
26
  span = get_current_span()
20
27
  ctx = span.get_span_context()
@@ -38,7 +45,7 @@ class BoLogger(ILogger):
38
45
 
39
46
  def _log(self, level: LogLevel, message: str):
40
47
  if level.value >= self.log_level.value:
41
- timestamp = get_utc_date_time_str()
48
+ timestamp = str(get_utc_iso_date_time())
42
49
  log_json = self._create_log_json(timestamp, level, message)
43
50
  print(json.dumps(log_json))
44
51
 
@@ -54,9 +61,6 @@ class BoLogger(ILogger):
54
61
  def error(self, message: str):
55
62
  self._log(LogLevel.ERROR, message)
56
63
 
57
- def critical(self, message: str):
58
- self._log(LogLevel.CRITICAL, message)
59
-
60
64
  def set_level(self, log_level: LogLevel):
61
65
  self.log_level = log_level
62
66
 
@@ -28,7 +28,7 @@ class EnvHandler(IEnvHandler):
28
28
  if val is None and abort_on_error:
29
29
  err_msg = f"Environment variable '{key}' is not set."
30
30
  if self.logger:
31
- self.logger.critical(err_msg)
31
+ self.logger.error(err_msg)
32
32
  raise ValueError(err_msg)
33
33
  if self.is_value_null_or_empty(val):
34
34
  return None
@@ -32,7 +32,7 @@ class ErrorHandler(IErrorHandler):
32
32
  err_str += ', imageName: <none>'
33
33
  err_str += ', imageVersion: <none>'
34
34
  err_str += ', containerName: <none>'
35
- self.logger.critical(err_str)
35
+ self.logger.error(err_str)
36
36
 
37
37
  def get_error_entity(self, error, method, error_type, status_code, container_info):
38
38
  data = {}
@@ -41,10 +41,10 @@ class RabbitMQConsumer:
41
41
  self.logger.debug("Socket timeout, checking heartbeat...")
42
42
  conn.heartbeat_check()
43
43
  except CONNECTION_ERRORS as e:
44
- self.logger.critical(f"Connection lost: {e}. Reconnecting...")
44
+ self.logger.error(f"Connection lost: {e}. Reconnecting...")
45
45
  return # break loop and re-establish connection
46
46
  except Exception as e:
47
- self.logger.critical(f"Top-level exception in consume loop: {e}. Restarting after delay...")
47
+ self.logger.error(f"Top-level exception in consume loop: {e}. Restarting after delay...")
48
48
  return
49
49
 
50
50
  def _establish_connection(self):
@@ -68,5 +68,5 @@ class RabbitMQConsumer:
68
68
  try:
69
69
  self._consume()
70
70
  except Exception as e:
71
- self.logger.critical(f"Top-level exception in run loop: {e}. Restarting after delay...")
71
+ self.logger.error(f"Top-level exception in run loop: {e}. Restarting after delay...")
72
72
  time.sleep(5)
@@ -5,4 +5,3 @@ class LogLevel(Enum):
5
5
  INFO = 2
6
6
  WARNING = 3
7
7
  ERROR = 4
8
- CRITICAL = 5
@@ -8,5 +8,4 @@ class ILogger(Protocol):
8
8
  def info(self, msg: str) -> None: ...
9
9
  def warning(self, msg: str) -> None: ...
10
10
  def error(self, msg: str) -> None: ...
11
- def critical(self, msg: str) -> None: ...
12
11
  def set_level(self, log_level: LogLevel) -> None: ...
@@ -6,6 +6,7 @@ from atk_common.utils.datetime_utils import \
6
6
  get_utc_date_time_str_with_z, \
7
7
  seconds_to_utc_timestamp, \
8
8
  get_utc_date_from_iso, \
9
+ get_utc_iso_date_time, \
9
10
  adjust_millisescond, \
10
11
  convert_to_utc, \
11
12
  convert_to_utc_image_dt
@@ -25,6 +26,7 @@ __all__ = [
25
26
  'get_utc_date_time_str_with_z',
26
27
  'seconds_to_utc_timestamp',
27
28
  'get_utc_date_from_iso',
29
+ 'get_utc_iso_date_time',
28
30
  'adjust_millisescond',
29
31
  'convert_to_utc',
30
32
  'convert_to_utc_image_dt',
@@ -37,19 +37,19 @@ def create_retry_handler(process_func, connection, exchange, routing_key, should
37
37
  )
38
38
  message.ack()
39
39
  else:
40
- logger.critical("Sending to DLQ...")
40
+ logger.error("Sending to DLQ...")
41
41
  message.reject(requeue=False)
42
42
  else:
43
43
  if should_retry(process_response):
44
- logger.critical("Sending to DLQ...")
44
+ logger.error("Sending to DLQ...")
45
45
  message.reject(requeue=False)
46
- # bo_logger.critical("Requing...")
46
+ # bo_logger.error("Requing...")
47
47
  # message.requeue()
48
48
  else:
49
- logger.critical("Discarding message...")
49
+ logger.error("Discarding message...")
50
50
  message.ack()
51
51
  except Exception as e:
52
- logger.critical(f"Error during processing: {e}, sending to DLQ...")
52
+ logger.error(f"Error during processing: {e}, sending to DLQ...")
53
53
  message.reject(requeue=False)
54
54
 
55
55
  return handler
@@ -18,6 +18,9 @@ def get_utc_date_from_iso(date_time):
18
18
  dt_utc = dt.astimezone(timezone.utc)
19
19
  return str(dt_utc.date())
20
20
 
21
+ def get_utc_iso_date_time():
22
+ return datetime.now(timezone.utc).isoformat().replace('+00:00', 'Z')
23
+
21
24
  def adjust_millisescond(dt_str):
22
25
  if '.' in dt_str:
23
26
  dt_part, frac = dt_str.split('.')
@@ -23,8 +23,8 @@ def decode_message(body, message, logger: ILogger):
23
23
  elif message.content_type.startswith('text/'):
24
24
  return create_response(ResponseStatusType.OK, HTTPStatus.OK, body.decode('utf-8'))
25
25
  else:
26
- logger.critical(f"Unknown message content type {message.content_type}. Cannot decode message.")
26
+ logger.error(f"Unknown message content type {message.content_type}. Cannot decode message.")
27
27
  return create_response(ResponseStatusType.INTERNAL, HTTPStatus.INTERNAL_SERVER_ERROR, get_message(error))
28
28
  except Exception as error:
29
- logger.critical('Error decoding message: ' + get_message(error))
29
+ logger.error('Error decoding message: ' + get_message(error))
30
30
  return create_response(ResponseStatusType.INTERNAL, HTTPStatus.INTERNAL_SERVER_ERROR, get_message(error))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atk_common
3
- Version: 3.3.0
3
+ Version: 3.5.0
4
4
  Summary: ATK common methods
5
5
  Home-page: https://github.com/pypa/atk_common
6
6
  Author: Roger
File without changes
File without changes
File without changes
File without changes