atk-common 1.52.0__tar.gz → 1.54.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 (58) hide show
  1. {atk_common-1.52.0 → atk_common-1.54.0}/PKG-INFO +1 -1
  2. {atk_common-1.52.0 → atk_common-1.54.0}/setup.py +1 -1
  3. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/__init__.py +9 -1
  4. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/datetime_utils.py +41 -0
  5. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common.egg-info/PKG-INFO +1 -1
  6. {atk_common-1.52.0 → atk_common-1.54.0}/README.md +0 -0
  7. {atk_common-1.52.0 → atk_common-1.54.0}/license.txt +0 -0
  8. {atk_common-1.52.0 → atk_common-1.54.0}/pyproject.toml +0 -0
  9. {atk_common-1.52.0 → atk_common-1.54.0}/setup.cfg +0 -0
  10. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/db_utils.py +0 -0
  11. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/docker_utils.py +0 -0
  12. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/__init__.py +0 -0
  13. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/api_error_type_enum.py +0 -0
  14. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/camera_cabinet_type_enum.py +0 -0
  15. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/camera_role_enum.py +0 -0
  16. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/certificate_issuer_enum.py +0 -0
  17. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/command_status_type_enum.py +0 -0
  18. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/command_type_enum.py +0 -0
  19. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/config_reply_status_type_enum.py +0 -0
  20. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/detection_status_type_enum.py +0 -0
  21. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/encryption_type_enum.py +0 -0
  22. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/file_exists_enum.py +0 -0
  23. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/history_status_type_enum.py +0 -0
  24. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/image_encoding_type_enum.py +0 -0
  25. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/image_part_category_enum.py +0 -0
  26. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/image_part_type_enum.py +0 -0
  27. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/image_shelf_type_enum.py +0 -0
  28. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/metering_direction_enum.py +0 -0
  29. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/multimotor_status_type_enum.py +0 -0
  30. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/piezo_vehicle_type_enum.py +0 -0
  31. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/process_status_type_enum.py +0 -0
  32. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/response_status_type_enum.py +0 -0
  33. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/section_role_enum.py +0 -0
  34. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/sensor_order_enum.py +0 -0
  35. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/sensor_type_enum.py +0 -0
  36. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/speed_control_status_type_enum.py +0 -0
  37. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/speed_control_stop_reason.py +0 -0
  38. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/test_image_type_enum.py +0 -0
  39. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/enums/violation_type_enum.py +0 -0
  40. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/env_utils.py +0 -0
  41. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/error_utils.py +0 -0
  42. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/file_utils.py +0 -0
  43. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/hash_utils.py +0 -0
  44. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/http_response_utils.py +0 -0
  45. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/http_utils.py +0 -0
  46. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/internal_response_utils.py +0 -0
  47. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/log_utils.py +0 -0
  48. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/mq_utils.py +0 -0
  49. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common/rabbitmq_consumer.py +0 -0
  50. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common.egg-info/SOURCES.txt +0 -0
  51. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common.egg-info/dependency_links.txt +0 -0
  52. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common.egg-info/requires.txt +0 -0
  53. {atk_common-1.52.0 → atk_common-1.54.0}/src/atk_common.egg-info/top_level.txt +0 -0
  54. {atk_common-1.52.0 → atk_common-1.54.0}/src/shared_python_atk_enforcement/__init__.py +0 -0
  55. {atk_common-1.52.0 → atk_common-1.54.0}/tests/test_docker_utils.py +0 -0
  56. {atk_common-1.52.0 → atk_common-1.54.0}/tests/test_error_utils.py +0 -0
  57. {atk_common-1.52.0 → atk_common-1.54.0}/tests/test_http_utils.py +0 -0
  58. {atk_common-1.52.0 → atk_common-1.54.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: 1.52.0
3
+ Version: 1.54.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="1.52.0", # Required
39
+ version="1.54.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
@@ -1,5 +1,12 @@
1
1
  # __init__.py
2
- from atk_common.datetime_utils import get_utc_date_time, get_utc_date_time_str, seconds_to_utc_timestamp, get_utc_date_from_iso, adjust_millisescond, convert_to_utc
2
+ from atk_common.datetime_utils import \
3
+ get_utc_date_time, \
4
+ get_utc_date_time_str, \
5
+ seconds_to_utc_timestamp, \
6
+ get_utc_date_from_iso, \
7
+ adjust_millisescond, \
8
+ convert_to_utc, \
9
+ convert_to_utc_image_dt
3
10
  from atk_common.db_utils import sql, sql_with_record, convert_none_to_null, date_time_utc_column
4
11
  from atk_common.docker_utils import get_current_container_info
5
12
  from atk_common.env_utils import get_env_value
@@ -20,6 +27,7 @@ __all__ = [
20
27
  'get_utc_date_from_iso',
21
28
  'adjust_millisescond',
22
29
  'convert_to_utc',
30
+ 'convert_to_utc_image_dt',
23
31
  'sql',
24
32
  'sql_with_record',
25
33
  'convert_none_to_null',
@@ -60,3 +60,44 @@ def convert_to_utc(dt_str):
60
60
  # Convert to UTC
61
61
  dt_utc =dt_with_tz.astimezone(timezone.utc)
62
62
  return dt_utc.strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
63
+
64
+ # Original datetime string, handles:
65
+ # dt_str = '2023-02-01 14:13:08.653133 +01:00'
66
+ def convert_to_utc_image_dt(dt_str):
67
+ dt_str = dt_str.strip()
68
+ # Detect offset
69
+ if '+' in dt_str:
70
+ parts = dt_str.split('+')
71
+ sign = '+'
72
+ elif '-' in dt_str[10:]: # avoid confusion with date part
73
+ parts = dt_str.split('-')
74
+ sign = '-'
75
+ else:
76
+ parts = [dt_str]
77
+ sign = None
78
+
79
+ if len(parts) == 2:
80
+ dt_part = parts[0].strip()
81
+ offset_part = parts[1].strip()
82
+ if sign == '-':
83
+ offset_part = '-' + offset_part
84
+ else:
85
+ offset_part = '+' + offset_part
86
+ else:
87
+ dt_part = parts[0].strip()
88
+ offset_part = None
89
+
90
+ dt_part = adjust_millisescond(dt_part)
91
+ dt_naive = datetime.fromisoformat(dt_part)
92
+
93
+ if offset_part is None:
94
+ dt_aware = dt_naive.replace(tzinfo=ZoneInfo("Europe/Berlin"))
95
+ dt_utc = dt_aware.astimezone(ZoneInfo("UTC"))
96
+ else:
97
+ offset_hours, offset_minutes = map(int, offset_part.split(':'))
98
+ delta = timedelta(hours=offset_hours, minutes=offset_minutes)
99
+ tz = timezone(delta)
100
+ dt_aware = dt_naive.replace(tzinfo=tz)
101
+ dt_utc = dt_aware.astimezone(timezone.utc)
102
+
103
+ return dt_utc.strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atk_common
3
- Version: 1.52.0
3
+ Version: 1.54.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