ipulse-shared-core-ftredge 2.6.1__py3-none-any.whl → 2.7.1__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.
Potentially problematic release.
This version of ipulse-shared-core-ftredge might be problematic. Click here for more details.
- ipulse_shared_core_ftredge/__init__.py +10 -9
- ipulse_shared_core_ftredge/enums/__init__.py +12 -7
- ipulse_shared_core_ftredge/enums/enums_common_utils.py +9 -0
- ipulse_shared_core_ftredge/enums/enums_data_eng.py +280 -76
- ipulse_shared_core_ftredge/enums/{enums_logs.py → enums_logging.py} +30 -1
- ipulse_shared_core_ftredge/enums/enums_module_fincore.py +16 -2
- ipulse_shared_core_ftredge/enums/enums_modules.py +6 -0
- ipulse_shared_core_ftredge/enums/{enums_cloud.py → enums_solution_providers.py} +11 -4
- ipulse_shared_core_ftredge/utils/__init__.py +11 -7
- ipulse_shared_core_ftredge/utils/logs/context_log.py +2 -3
- ipulse_shared_core_ftredge/utils/logs/get_logger.py +47 -20
- ipulse_shared_core_ftredge/utils/utils_cloud.py +26 -17
- ipulse_shared_core_ftredge/utils/utils_cloud_gcp.py +311 -180
- ipulse_shared_core_ftredge/utils/utils_cloud_gcp_with_collectors.py +150 -153
- ipulse_shared_core_ftredge/utils/utils_cloud_with_collectors.py +16 -15
- ipulse_shared_core_ftredge/utils/utils_collector_pipelinemon.py +2 -2
- ipulse_shared_core_ftredge/utils/utils_common.py +145 -110
- ipulse_shared_core_ftredge/utils/utils_templates_and_schemas.py +2 -2
- {ipulse_shared_core_ftredge-2.6.1.dist-info → ipulse_shared_core_ftredge-2.7.1.dist-info}/METADATA +1 -1
- ipulse_shared_core_ftredge-2.7.1.dist-info/RECORD +33 -0
- ipulse_shared_core_ftredge-2.6.1.dist-info/RECORD +0 -33
- {ipulse_shared_core_ftredge-2.6.1.dist-info → ipulse_shared_core_ftredge-2.7.1.dist-info}/LICENCE +0 -0
- {ipulse_shared_core_ftredge-2.6.1.dist-info → ipulse_shared_core_ftredge-2.7.1.dist-info}/WHEEL +0 -0
- {ipulse_shared_core_ftredge-2.6.1.dist-info → ipulse_shared_core_ftredge-2.7.1.dist-info}/top_level.txt +0 -0
|
@@ -5,141 +5,176 @@
|
|
|
5
5
|
# pylint: disable=missing-class-docstring
|
|
6
6
|
# pylint: disable=broad-exception-caught
|
|
7
7
|
|
|
8
|
-
import os
|
|
8
|
+
import os
|
|
9
9
|
import json
|
|
10
|
+
from typing import List
|
|
11
|
+
from ipulse_shared_core_ftredge.enums import DuplicationHandling, DuplicationHandlingStatus, MatchConditionType
|
|
12
|
+
# from ipulse_shared_core_ftredge.utils import Pipelinemon, ContextLog
|
|
10
13
|
|
|
11
|
-
|
|
14
|
+
|
|
15
|
+
def log_error(msg,logger=None , print_out=False, exc_info=False):
|
|
16
|
+
if print_out:
|
|
17
|
+
print(msg)
|
|
12
18
|
if logger:
|
|
13
|
-
logger.error(
|
|
14
|
-
elif print_out:
|
|
15
|
-
print(message)
|
|
19
|
+
logger.error(msg, exc_info=exc_info)
|
|
16
20
|
|
|
17
|
-
def log_warning(
|
|
21
|
+
def log_warning(msg, logger=None, print_out=False):
|
|
22
|
+
if print_out:
|
|
23
|
+
print(msg)
|
|
18
24
|
if logger:
|
|
19
|
-
logger.warning(
|
|
20
|
-
|
|
21
|
-
print(message)
|
|
25
|
+
logger.warning(msg)
|
|
26
|
+
|
|
22
27
|
|
|
23
|
-
def log_info(
|
|
28
|
+
def log_info(msg, logger=None, print_out=False):
|
|
29
|
+
if print_out:
|
|
30
|
+
print(msg)
|
|
24
31
|
if logger:
|
|
25
|
-
logger.info(
|
|
26
|
-
elif print_out:
|
|
27
|
-
print(message)
|
|
32
|
+
logger.info(msg)
|
|
28
33
|
|
|
29
34
|
|
|
30
|
-
def
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"""Saves data to a local JSON file.
|
|
35
|
+
def prepare_full_file_path(file_name: str, output_directory: str = None) -> str:
|
|
36
|
+
"""
|
|
37
|
+
Prepares the full file path, ensuring the output directory and subdirectories exist.
|
|
34
38
|
|
|
35
39
|
Args:
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
local_path (str): The directory where the file should be saved.
|
|
39
|
-
file_exists_if_starts_with_prefix (str, optional): If provided, used to check for
|
|
40
|
-
existing files with the given prefix. Defaults to None.
|
|
41
|
-
overwrite_if_exists (bool, optional): If True, overwrites existing files. Defaults to False.
|
|
42
|
-
increment_if_exists (bool, optional): If True, increments the file name if it exists.
|
|
43
|
-
Defaults to False.
|
|
44
|
-
max_deletable_files (int, optional): Maximum number of files to delete when overwriting.
|
|
45
|
-
Defaults to 1.
|
|
40
|
+
file_name (str): The name of the file, which may include subdirectories or a full path.
|
|
41
|
+
output_directory (str, optional): The directory where the file should be saved. Defaults to the current working directory.
|
|
46
42
|
|
|
47
43
|
Returns:
|
|
48
|
-
|
|
49
|
-
- local_path (str): The full path to the saved file (or None if not saved).
|
|
50
|
-
- local_file_already_exists (bool): True if a file with the same name or prefix existed.
|
|
51
|
-
- local_file_overwritten (bool): True if an existing file was overwritten.
|
|
52
|
-
- local_deleted_file_names (str): A comma-separated string of deleted file names (or None).
|
|
53
|
-
- local_file_saved_with_increment (bool): True if the file was saved with an incremented name.
|
|
54
|
-
- local_save_error (bool): True if there was an error saving the file.
|
|
44
|
+
str: The full path to the file.
|
|
55
45
|
"""
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
if overwrite_if_exists and increment_if_exists:
|
|
60
|
-
msg = "Both 'overwrite_if_exists' and 'increment_if_exists' cannot be True simultaneously."
|
|
61
|
-
log_error(msg, logger=logger, print_out=print_out)
|
|
62
|
-
return {"local_save_error" : msg}
|
|
63
|
-
if max_deletable_files > 10:
|
|
64
|
-
msg = "max_deletable_files should be less than 10 for safety. For more, use another method."
|
|
65
|
-
log_error(msg, logger=logger, print_out=print_out)
|
|
66
|
-
return {"local_save_error" : msg}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
# Prepare data
|
|
70
|
-
if isinstance(data, (list, dict)):
|
|
71
|
-
data_str = json.dumps(data, indent=2)
|
|
46
|
+
if os.path.isabs(file_name):
|
|
47
|
+
# If file_name is an absolute path, use it directly
|
|
48
|
+
full_file_path = file_name
|
|
72
49
|
else:
|
|
73
|
-
|
|
50
|
+
# Prepare the output directory
|
|
51
|
+
output_directory = output_directory or os.getcwd()
|
|
52
|
+
full_file_path = os.path.join(output_directory, file_name)
|
|
74
53
|
|
|
54
|
+
# Create the directory if it doesn't exist
|
|
55
|
+
os.makedirs(os.path.dirname(full_file_path), exist_ok=True)
|
|
75
56
|
|
|
76
|
-
|
|
77
|
-
directory = os.path.dirname(file_name)
|
|
78
|
-
full_local_path = os.path.join(local_path, directory)
|
|
57
|
+
return full_file_path
|
|
79
58
|
|
|
80
|
-
# Create the full directory path if it doesn't exist
|
|
81
|
-
os.makedirs(full_local_path, exist_ok=True)
|
|
82
59
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
60
|
+
def save_json_locally_extended(data:dict | list | str, file_name:str,
|
|
61
|
+
duplication_handling:DuplicationHandling ,
|
|
62
|
+
duplication_match_condition_type:MatchConditionType,
|
|
63
|
+
output_directory:str=None,
|
|
64
|
+
duplication_match_condition:str | List[str] = "",
|
|
65
|
+
max_matched_deletable_files:int=1, logger=None, print_out=False, raise_e=False):
|
|
87
66
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
local_file_already_exists = False
|
|
91
|
-
local_file_overwritten = False
|
|
92
|
-
local_file_saved_with_increment = False
|
|
93
|
-
local_deleted_file_names = None
|
|
94
|
-
local_save_error = None
|
|
67
|
+
"""Saves data to a local JSON file.
|
|
68
|
+
"""
|
|
95
69
|
|
|
70
|
+
max_deletable_files_allowed = 3
|
|
71
|
+
|
|
72
|
+
saved_to_file_path = None
|
|
73
|
+
matched_duplicates_count = 0 # Default to 0
|
|
74
|
+
duplication_handling_status = None
|
|
75
|
+
matched_duplicates_deleted = None
|
|
76
|
+
error_during_operation = None
|
|
77
|
+
|
|
78
|
+
response={
|
|
79
|
+
"saved_to_file_path": saved_to_file_path,
|
|
80
|
+
"matched_duplicates_count": matched_duplicates_count,
|
|
81
|
+
"matched_duplicates_deleted": matched_duplicates_deleted,
|
|
82
|
+
"duplication_handling_status": duplication_handling_status,
|
|
83
|
+
"duplication_match_condition_type": duplication_match_condition_type,
|
|
84
|
+
"duplication_match_condition": duplication_match_condition,
|
|
85
|
+
"error_during_operation": error_during_operation
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
supported_match_condition_types = [MatchConditionType.EXACT, MatchConditionType.PREFIX]
|
|
89
|
+
supported_duplication_handling = [DuplicationHandling.RAISE_ERROR, DuplicationHandling.OVERWRITE, DuplicationHandling.INCREMENT, DuplicationHandling.SKIP]
|
|
90
|
+
|
|
96
91
|
try:
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
#
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
92
|
+
|
|
93
|
+
# Use the helper function to get the full file path
|
|
94
|
+
full_file_path = prepare_full_file_path(file_name=file_name, output_directory=output_directory)
|
|
95
|
+
# Extract the directory path, base file name, and extension
|
|
96
|
+
directory_path = os.path.dirname(full_file_path)
|
|
97
|
+
|
|
98
|
+
if max_matched_deletable_files > max_deletable_files_allowed:
|
|
99
|
+
msg = f"Error: max_deletable_files should be less than or equal to {max_deletable_files_allowed} for safety. For more, use specific Delete method."
|
|
100
|
+
raise ValueError(msg)
|
|
101
|
+
|
|
102
|
+
if duplication_handling not in supported_duplication_handling:
|
|
103
|
+
msg = f"Error: Duplication handling not supported. Supported types: {supported_duplication_handling}"
|
|
104
|
+
raise ValueError(msg)
|
|
105
|
+
|
|
106
|
+
if duplication_match_condition_type not in supported_match_condition_types:
|
|
107
|
+
msg = f"Error: Match condition type not supported. Supported types: {supported_match_condition_types}"
|
|
108
|
+
raise ValueError(msg)
|
|
109
|
+
|
|
110
|
+
elif duplication_match_condition_type!=MatchConditionType.EXACT and not duplication_match_condition:
|
|
111
|
+
msg = f"Error: Match condition is required for match condition type: {duplication_match_condition_type}"
|
|
112
|
+
raise ValueError(msg)
|
|
113
|
+
|
|
114
|
+
# Prepare data
|
|
115
|
+
if isinstance(data, (list, dict)):
|
|
116
|
+
data_str = json.dumps(data, indent=2)
|
|
117
|
+
else:
|
|
118
|
+
data_str = data
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
# --- Check if File Exists ---
|
|
122
|
+
if duplication_match_condition_type==MatchConditionType.PREFIX:
|
|
123
|
+
files_matched_on_condition = [
|
|
124
|
+
os.path.join(directory_path, f) for f in os.listdir(directory_path)
|
|
125
|
+
if f.startswith(duplication_match_condition)
|
|
126
|
+
]
|
|
127
|
+
if files_matched_on_condition:
|
|
128
|
+
matched_duplicates_count = len(files_matched_on_condition)
|
|
129
|
+
elif duplication_match_condition_type==MatchConditionType.EXACT:
|
|
130
|
+
if os.path.exists(full_file_path):
|
|
131
|
+
files_matched_on_condition = [full_file_path] # Always assign a list
|
|
132
|
+
matched_duplicates_count = 1
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
if matched_duplicates_count:
|
|
136
|
+
if duplication_handling==DuplicationHandling.RAISE_ERROR:
|
|
137
|
+
msg = f"Error: File already exists at file path: {full_file_path}"
|
|
138
|
+
raise FileExistsError(msg)
|
|
139
|
+
|
|
140
|
+
if duplication_handling == DuplicationHandling.SKIP:
|
|
141
|
+
log_warning(f"Skipping saving to file path: {full_file_path} - file already exists.", logger=logger, print_out=print_out)
|
|
142
|
+
response["duplication_handling_status"] = DuplicationHandlingStatus.SKIPPED.value
|
|
143
|
+
return response # Return here
|
|
144
|
+
# --- Overwrite Logic --> Delete ---
|
|
145
|
+
if duplication_handling==DuplicationHandling.OVERWRITE:
|
|
146
|
+
if matched_duplicates_count > max_matched_deletable_files:
|
|
147
|
+
msg = f"Error: Attempt to delete {len(files_matched_on_condition)} matched files, but limit is {max_matched_deletable_files}. Operation Cancelled."
|
|
148
|
+
raise ValueError(msg)
|
|
149
|
+
|
|
150
|
+
for path in files_matched_on_condition:
|
|
151
|
+
os.remove(path)
|
|
152
|
+
|
|
153
|
+
deleted_files=",,,".join( files_matched_on_condition)
|
|
154
|
+
log_info(f"Deleted {len(files_matched_on_condition)} files that matched condition: {deleted_files}", logger=logger, print_out=print_out)
|
|
155
|
+
response["matched_duplicates_deleted"] = deleted_files
|
|
156
|
+
response["duplication_handling_status"] = DuplicationHandlingStatus.OVERWRITTEN.value
|
|
157
|
+
# --- Increment Logic ---
|
|
158
|
+
elif duplication_handling==DuplicationHandling.INCREMENT:
|
|
159
|
+
increment = 0
|
|
160
|
+
base_file_name, ext = os.path.splitext(os.path.basename(full_file_path))
|
|
161
|
+
while os.path.exists(full_file_path):
|
|
162
|
+
increment += 1
|
|
163
|
+
file_name = f"{base_file_name}_v{increment}{ext}"
|
|
164
|
+
full_file_path = os.path.join(directory_path, file_name)
|
|
165
|
+
response["duplication_handling_status"] = DuplicationHandlingStatus.INCREMENTED.value
|
|
127
166
|
|
|
128
167
|
# --- Save the File ---
|
|
129
168
|
with open(full_file_path, "w", encoding="utf-8") as f:
|
|
130
169
|
f.write(data_str)
|
|
131
|
-
|
|
170
|
+
response["saved_to_file_path"] = full_file_path
|
|
171
|
+
|
|
132
172
|
|
|
133
173
|
except Exception as e:
|
|
134
|
-
|
|
135
|
-
log_error(
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
"local_file_overwritten": local_file_overwritten,
|
|
142
|
-
"local_deleted_file_names": local_deleted_file_names,
|
|
143
|
-
"local_file_saved_with_increment": local_file_saved_with_increment,
|
|
144
|
-
"local_save_error": local_save_error,
|
|
145
|
-
}
|
|
174
|
+
error_during_operation=f"Error occurred while writing JSON to file path: {full_file_path} : {type(e).__name__}-{str(e)}"
|
|
175
|
+
log_error(error_during_operation, logger=logger, print_out=print_out)
|
|
176
|
+
response["error_during_operation"] = error_during_operation
|
|
177
|
+
if raise_e:
|
|
178
|
+
raise e
|
|
179
|
+
|
|
180
|
+
return response # Return response once at the end
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
# pylint: disable=broad-exception-caught
|
|
6
6
|
|
|
7
7
|
import datetime
|
|
8
|
-
from ipulse_shared_core_ftredge.enums
|
|
9
|
-
from ipulse_shared_core_ftredge.utils.logs
|
|
8
|
+
from ipulse_shared_core_ftredge.enums import LogLevel
|
|
9
|
+
from ipulse_shared_core_ftredge.utils.logs import ContextLog
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
def check_format_against_schema_template(data_to_check, schema, dt_ts_to_str=True, check_max_length=True):
|
{ipulse_shared_core_ftredge-2.6.1.dist-info → ipulse_shared_core_ftredge-2.7.1.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ipulse_shared_core_ftredge
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.7.1
|
|
4
4
|
Summary: Shared Core models and Logger util for the Pulse platform project. Using AI for financial advisory and investment management.
|
|
5
5
|
Home-page: https://github.com/TheFutureEdge/ipulse_shared_core
|
|
6
6
|
Author: Russlan Ramdowar
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
ipulse_shared_core_ftredge/__init__.py,sha256=0tmR-zLphsZP6z3uQkF9uMVtry5gYPjiYYzddI_IznM,1222
|
|
2
|
+
ipulse_shared_core_ftredge/enums/__init__.py,sha256=NDv8Vy6_XXRjo0lpTA8SS00KAhb0OtQKJKAvrJhRoK8,1307
|
|
3
|
+
ipulse_shared_core_ftredge/enums/enums_common_utils.py,sha256=O-GE1177xD5tdo7qlKkq38ZoQmnc89uc90KWSDa0FhE,3626
|
|
4
|
+
ipulse_shared_core_ftredge/enums/enums_data_eng.py,sha256=LA4BNTReDXtmLBNQy1z0r4ECOI1LDk2i9MK4XX08ZuU,9960
|
|
5
|
+
ipulse_shared_core_ftredge/enums/enums_logging.py,sha256=N84hR427aJurD1P4XFS1BXuVY-M_rICFsZ03iXR88Zc,4775
|
|
6
|
+
ipulse_shared_core_ftredge/enums/enums_module_fincore.py,sha256=o0sCVjRxr1G_6ZVmvu64VOVIFCkzvJhBOTz8IilkA2s,1621
|
|
7
|
+
ipulse_shared_core_ftredge/enums/enums_modules.py,sha256=8dt6EVYpiyRJ8jaJxz9Wj7_H4ixeX1DK1j4Q0SBayL0,648
|
|
8
|
+
ipulse_shared_core_ftredge/enums/enums_solution_providers.py,sha256=pSmM0JtzR2n0FBJ5Unec0gWMD5zGo6fHwdcCnmGL1oE,497
|
|
9
|
+
ipulse_shared_core_ftredge/enums/pulse_enums.py,sha256=0RjIJbK0pt1Mzo4k_lhhxZL8myEUergQwOY9JOLZIJ4,4716
|
|
10
|
+
ipulse_shared_core_ftredge/models/__init__.py,sha256=MeGH2ZBxkrwldUiWyUaI_TMyfq78tuSwRkN_mEfKD8U,161
|
|
11
|
+
ipulse_shared_core_ftredge/models/organisation.py,sha256=22esRGYuJmKN3papkgozleEmDNJrVwUgIzKp7annvWs,3280
|
|
12
|
+
ipulse_shared_core_ftredge/models/resource_catalog_item.py,sha256=mEGX8AftzrhEHqFVXjr62CuRnXC1vK4z3bHl_XBJodU,4964
|
|
13
|
+
ipulse_shared_core_ftredge/models/user_auth.py,sha256=35HNN7ZW4ZELCqaJrAtoSsVLFAZ1KL2S_VmuzbcEMm4,119
|
|
14
|
+
ipulse_shared_core_ftredge/models/user_profile.py,sha256=D3BB9D6XEv7IVZgsURgf0hWmUZW5rms3uiBXS0ZGLeE,1927
|
|
15
|
+
ipulse_shared_core_ftredge/models/user_profile_update.py,sha256=oKK0XsQDKkgDvjFPhX2XlqEqlKLBQ4AkvPHXEuZbFMY,1712
|
|
16
|
+
ipulse_shared_core_ftredge/models/user_status.py,sha256=8TyRd8tBK9_xb0MPKbI5pn9-lX7ovKbeiuWYYPtIOiw,3202
|
|
17
|
+
ipulse_shared_core_ftredge/utils/__init__.py,sha256=yY4NX-W37xkTWeHOrR-Vni4FNCewaFJ7b9Beejyunyw,887
|
|
18
|
+
ipulse_shared_core_ftredge/utils/utils_cloud.py,sha256=LEsp0L1KfsNqp9nkqxi3TXSuZxXQQenIvagnlJWYytc,2993
|
|
19
|
+
ipulse_shared_core_ftredge/utils/utils_cloud_gcp.py,sha256=5A0qgzFQ2eMe_2uMX4Untxt0G49PX-g-o4XxKENpDQM,22156
|
|
20
|
+
ipulse_shared_core_ftredge/utils/utils_cloud_gcp_with_collectors.py,sha256=Y6_qbZdiVU4kFW3Zk2CjudCUlF1Xrp4m_sLqN7rWCAE,11500
|
|
21
|
+
ipulse_shared_core_ftredge/utils/utils_cloud_with_collectors.py,sha256=vDHt2FrSgj-qmt7Pip-lVbaov8tE3bfQVYKlZ3YcuUE,1612
|
|
22
|
+
ipulse_shared_core_ftredge/utils/utils_collector_pipelinemon.py,sha256=M4Qi1gDxtkPclya64K9JRKWcMhbpcer6LPxDzgpUd04,14995
|
|
23
|
+
ipulse_shared_core_ftredge/utils/utils_common.py,sha256=HTklVthhlMyewR5-qxo6HjMQRokXd-paruoKgENBEKc,8121
|
|
24
|
+
ipulse_shared_core_ftredge/utils/utils_templates_and_schemas.py,sha256=pn2m8IVVjCPKKb9E_SqpUekcwaxyqI3AYn7HjhcVVhM,7489
|
|
25
|
+
ipulse_shared_core_ftredge/utils/logs/__init__.py,sha256=fY6UNr197HYwUDi7uj5fsXw1Ma5gyAFzALxnoDSHFG0,71
|
|
26
|
+
ipulse_shared_core_ftredge/utils/logs/audit_log_firestore.py,sha256=5AwO6NHuOncq65n400eqM8QPrS2EGGaP3Z_6l2rxdBE,261
|
|
27
|
+
ipulse_shared_core_ftredge/utils/logs/context_log.py,sha256=AfDM_R4Xt0nueAMzkwLSPsembseXwSpvnGNv8tbqB1w,8615
|
|
28
|
+
ipulse_shared_core_ftredge/utils/logs/get_logger.py,sha256=u4FTEeNU320s-LJ7-gdhWafWIdWPZsSZl2ymQoc7D3Q,4534
|
|
29
|
+
ipulse_shared_core_ftredge-2.7.1.dist-info/LICENCE,sha256=YBtYAXNqCCOo9Mr2hfkbSPAM9CeAr2j1VZBSwQTrNwE,1060
|
|
30
|
+
ipulse_shared_core_ftredge-2.7.1.dist-info/METADATA,sha256=_pDlpIXITli6boHmvHKLXg4LvrSVBmphutZcAVKHkU4,556
|
|
31
|
+
ipulse_shared_core_ftredge-2.7.1.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
|
32
|
+
ipulse_shared_core_ftredge-2.7.1.dist-info/top_level.txt,sha256=8sgYrptpexkA_6_HyGvho26cVFH9kmtGvaK8tHbsGHk,27
|
|
33
|
+
ipulse_shared_core_ftredge-2.7.1.dist-info/RECORD,,
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
ipulse_shared_core_ftredge/__init__.py,sha256=7yQzgsmIy7SlAwxTxUBIor_OuFfvoCMBBuonDXjMCC4,1188
|
|
2
|
-
ipulse_shared_core_ftredge/enums/__init__.py,sha256=KWDgmon4URp9PpRw4HCwiviggWXzTo-icTuaOWKjrcI,1034
|
|
3
|
-
ipulse_shared_core_ftredge/enums/enums_cloud.py,sha256=svlVyTwOr4C9XuMBSu3_B7nBEyJUT1rnEJaLvt53NjU,375
|
|
4
|
-
ipulse_shared_core_ftredge/enums/enums_common_utils.py,sha256=AtLcAq5_NmVzCmX4WEYw6T0-O3UQQjdyu7XZUizC8Y8,3476
|
|
5
|
-
ipulse_shared_core_ftredge/enums/enums_data_eng.py,sha256=U6SBw3CjoNt29bMOH-aw0yxmWldcwwouT1Hp9x1gSGI,4080
|
|
6
|
-
ipulse_shared_core_ftredge/enums/enums_logs.py,sha256=WR6i9T7EmBAEN_Q4nXe435IHPxoAoPnbVm4joqLTwBs,3881
|
|
7
|
-
ipulse_shared_core_ftredge/enums/enums_module_fincore.py,sha256=W1TkSLu3ryLf_aif2VcKsFznWz0igeMUR_buoGEG6w8,1406
|
|
8
|
-
ipulse_shared_core_ftredge/enums/enums_modules.py,sha256=I-EfnpB7WMPXEQMK18vCO711uq84pt8b3ycSVB7oLcU,548
|
|
9
|
-
ipulse_shared_core_ftredge/enums/pulse_enums.py,sha256=0RjIJbK0pt1Mzo4k_lhhxZL8myEUergQwOY9JOLZIJ4,4716
|
|
10
|
-
ipulse_shared_core_ftredge/models/__init__.py,sha256=MeGH2ZBxkrwldUiWyUaI_TMyfq78tuSwRkN_mEfKD8U,161
|
|
11
|
-
ipulse_shared_core_ftredge/models/organisation.py,sha256=22esRGYuJmKN3papkgozleEmDNJrVwUgIzKp7annvWs,3280
|
|
12
|
-
ipulse_shared_core_ftredge/models/resource_catalog_item.py,sha256=mEGX8AftzrhEHqFVXjr62CuRnXC1vK4z3bHl_XBJodU,4964
|
|
13
|
-
ipulse_shared_core_ftredge/models/user_auth.py,sha256=35HNN7ZW4ZELCqaJrAtoSsVLFAZ1KL2S_VmuzbcEMm4,119
|
|
14
|
-
ipulse_shared_core_ftredge/models/user_profile.py,sha256=D3BB9D6XEv7IVZgsURgf0hWmUZW5rms3uiBXS0ZGLeE,1927
|
|
15
|
-
ipulse_shared_core_ftredge/models/user_profile_update.py,sha256=oKK0XsQDKkgDvjFPhX2XlqEqlKLBQ4AkvPHXEuZbFMY,1712
|
|
16
|
-
ipulse_shared_core_ftredge/models/user_status.py,sha256=8TyRd8tBK9_xb0MPKbI5pn9-lX7ovKbeiuWYYPtIOiw,3202
|
|
17
|
-
ipulse_shared_core_ftredge/utils/__init__.py,sha256=hGi4WtdFSUxI_LQBsRUADS2-FmNifM9BSMTH9KhEmpg,851
|
|
18
|
-
ipulse_shared_core_ftredge/utils/utils_cloud.py,sha256=eWMwr1ZBbUy3TdUSnO2-MGiUeq5RIoG1p_jZJ3f6LOw,2386
|
|
19
|
-
ipulse_shared_core_ftredge/utils/utils_cloud_gcp.py,sha256=8HvizgqXaRjLCvIfsxtfC6SnO7KY7ONScB0_1FqumbE,14162
|
|
20
|
-
ipulse_shared_core_ftredge/utils/utils_cloud_gcp_with_collectors.py,sha256=hiesZhK-UMHMAy9QZZXAHKItLY30EqS-RDeUdEz-uaY,11251
|
|
21
|
-
ipulse_shared_core_ftredge/utils/utils_cloud_with_collectors.py,sha256=5siDvpgHJxfdykS1bjPS5sqtn5SYYPLV4ZYSoniSd0E,1678
|
|
22
|
-
ipulse_shared_core_ftredge/utils/utils_collector_pipelinemon.py,sha256=QTZA0UIXAbYEuwUuYrP4QfELAFEg36ef1iJbAad1nxM,15017
|
|
23
|
-
ipulse_shared_core_ftredge/utils/utils_common.py,sha256=n9TgX1RNVWlXA5AJjtkvVQqL_B2tr0NOZgPLKivyUZ4,6044
|
|
24
|
-
ipulse_shared_core_ftredge/utils/utils_templates_and_schemas.py,sha256=6mtuaGui5y8ECA87eCiaptUi6o-7m_vqaqni7mIxIQU,7512
|
|
25
|
-
ipulse_shared_core_ftredge/utils/logs/__init__.py,sha256=fY6UNr197HYwUDi7uj5fsXw1Ma5gyAFzALxnoDSHFG0,71
|
|
26
|
-
ipulse_shared_core_ftredge/utils/logs/audit_log_firestore.py,sha256=5AwO6NHuOncq65n400eqM8QPrS2EGGaP3Z_6l2rxdBE,261
|
|
27
|
-
ipulse_shared_core_ftredge/utils/logs/context_log.py,sha256=nsUfVmC_DP5QjQuSlBRalqpaaktxedwmx834h4_ZhYA,8673
|
|
28
|
-
ipulse_shared_core_ftredge/utils/logs/get_logger.py,sha256=RPSdqT1O8MbfwAqdIdH8P9fOn39AmDLW8N7sCU2EAbM,3255
|
|
29
|
-
ipulse_shared_core_ftredge-2.6.1.dist-info/LICENCE,sha256=YBtYAXNqCCOo9Mr2hfkbSPAM9CeAr2j1VZBSwQTrNwE,1060
|
|
30
|
-
ipulse_shared_core_ftredge-2.6.1.dist-info/METADATA,sha256=C6xUGmUY19PDLy0o8nz8pfQ5DCGTQ-1fxrqjYvt3aNU,556
|
|
31
|
-
ipulse_shared_core_ftredge-2.6.1.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
|
32
|
-
ipulse_shared_core_ftredge-2.6.1.dist-info/top_level.txt,sha256=8sgYrptpexkA_6_HyGvho26cVFH9kmtGvaK8tHbsGHk,27
|
|
33
|
-
ipulse_shared_core_ftredge-2.6.1.dist-info/RECORD,,
|
{ipulse_shared_core_ftredge-2.6.1.dist-info → ipulse_shared_core_ftredge-2.7.1.dist-info}/LICENCE
RENAMED
|
File without changes
|
{ipulse_shared_core_ftredge-2.6.1.dist-info → ipulse_shared_core_ftredge-2.7.1.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|