python-sdk-remote 0.0.67__tar.gz → 0.0.69__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.
- {python-sdk-remote-0.0.67 → python-sdk-remote-0.0.69}/PKG-INFO +1 -1
- {python-sdk-remote-0.0.67 → python-sdk-remote-0.0.69}/README.md +4 -7
- python-sdk-remote-0.0.69/pyproject.toml +12 -0
- python-sdk-remote-0.0.69/python_sdk_remote/src/constants.py +28 -0
- {python-sdk-remote-0.0.67 → python-sdk-remote-0.0.69}/python_sdk_remote/src/mini_logger.py +9 -9
- {python-sdk-remote-0.0.67 → python-sdk-remote-0.0.69}/python_sdk_remote/src/our_object.py +9 -16
- python-sdk-remote-0.0.69/python_sdk_remote/src/unified_json.py +13 -0
- {python-sdk-remote-0.0.67 → python-sdk-remote-0.0.69}/python_sdk_remote/src/utilities.py +44 -63
- {python-sdk-remote-0.0.67 → python-sdk-remote-0.0.69}/python_sdk_remote/src/validate_environment.py +23 -16
- {python-sdk-remote-0.0.67 → python-sdk-remote-0.0.69}/python_sdk_remote.egg-info/PKG-INFO +1 -1
- {python-sdk-remote-0.0.67 → python-sdk-remote-0.0.69}/python_sdk_remote.egg-info/SOURCES.txt +0 -1
- {python-sdk-remote-0.0.67 → python-sdk-remote-0.0.69}/setup.py +2 -2
- python-sdk-remote-0.0.67/pyproject.toml +0 -18
- python-sdk-remote-0.0.67/python_sdk_remote/src/constants.py +0 -28
- python-sdk-remote-0.0.67/python_sdk_remote/src/unified_json.py +0 -27
- python-sdk-remote-0.0.67/python_sdk_remote/src/valid_json_versions.py +0 -4
- {python-sdk-remote-0.0.67 → python-sdk-remote-0.0.69}/python_sdk_remote/src/__init__.py +0 -0
- {python-sdk-remote-0.0.67 → python-sdk-remote-0.0.69}/python_sdk_remote/src/item.py +0 -0
- {python-sdk-remote-0.0.67 → python-sdk-remote-0.0.69}/python_sdk_remote.egg-info/dependency_links.txt +0 -0
- {python-sdk-remote-0.0.67 → python-sdk-remote-0.0.69}/python_sdk_remote.egg-info/requires.txt +0 -0
- {python-sdk-remote-0.0.67 → python-sdk-remote-0.0.69}/python_sdk_remote.egg-info/top_level.txt +0 -0
- {python-sdk-remote-0.0.67 → python-sdk-remote-0.0.69}/setup.cfg +0 -0
|
@@ -1,24 +1,21 @@
|
|
|
1
1
|
# python-package-backend-template
|
|
2
|
-
|
|
3
2
|
To create local package and remote package layers (not to create GraphQL and REST-API layers)
|
|
4
3
|
|
|
5
4
|
#database Python scripts in /db folder
|
|
6
5
|
Please place <table-name>.py in /db<br>
|
|
7
6
|
No need for seperate file for _ml table<br>
|
|
8
7
|
Please delete the example file if not needed<br>
|
|
9
|
-
|
|
8
|
+
|
|
10
9
|
# Create the files to create the database schema, tables, view and populate Meta Data and Test Date
|
|
11
|
-
|
|
12
10
|
/db/<table-name>.py - CREATE SCHEMA ... CREATE TABLE ... CREATE VIEW ...<br>
|
|
13
11
|
/db/<table-name>_insert.py to create records
|
|
14
12
|
|
|
15
13
|
# Update the setup.py (i.e.name, version)
|
|
16
|
-
|
|
14
|
+
|
|
17
15
|
# Please create test directory inside the directory of the project i.e. /<project-name>/tests
|
|
18
16
|
|
|
19
17
|
# Update the serverless.yml in the root directory
|
|
20
|
-
|
|
21
18
|
provider:
|
|
22
|
-
stage: play1
|
|
23
|
-
|
|
19
|
+
stage: play1
|
|
20
|
+
|
|
24
21
|
Update the endpoints in serverless.yml
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[tool.poetry]
|
|
6
|
+
name = "python-sdk-local"
|
|
7
|
+
version = "0.0.69" # https://pypi.org/project/python-sdk-local
|
|
8
|
+
description = "python-sdk-local Python Package"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
authors = [
|
|
11
|
+
"Circlez.ai <info@circlez.ai>",
|
|
12
|
+
]
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import os
|
|
2
|
+
|
|
3
|
+
from logger_local.LoggerComponentEnum import LoggerComponentEnum
|
|
4
|
+
|
|
5
|
+
PYTHON_SDK_LOCAL_COMPONENT_ID = 184
|
|
6
|
+
PYTHON_SDK_LOCAL_COMPONENT_NAME = 'python_sdk_local'
|
|
7
|
+
|
|
8
|
+
ENVIRONMENT_NAME = os.getenv("ENVIRONMENT_NAME")
|
|
9
|
+
BRAND_NAME = os.getenv("BRAND_NAME")
|
|
10
|
+
LOGZIO_TOKEN = os.getenv("LOGZIO_TOKEN")
|
|
11
|
+
# TODO Shall Can we use python-sdk function to get the value from Environment?
|
|
12
|
+
# TODO Shall we get the value from environment here of send the value to the function as @akiva-skolnik did?
|
|
13
|
+
GOOGLE_PORT_FOR_AUTHENTICATION = os.getenv("PORT_FOR_AUTHENTICATION")
|
|
14
|
+
|
|
15
|
+
OBJECT_TO_INSERT_CODE = {
|
|
16
|
+
'component_id': PYTHON_SDK_LOCAL_COMPONENT_ID,
|
|
17
|
+
'component_name': PYTHON_SDK_LOCAL_COMPONENT_NAME,
|
|
18
|
+
'component_category': LoggerComponentEnum.ComponentCategory.Code.value,
|
|
19
|
+
'developer_email': 'sahar.g@circ.zone'
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
OBJECT_TO_INSERT_TEST = {
|
|
23
|
+
'component_id': PYTHON_SDK_LOCAL_COMPONENT_ID,
|
|
24
|
+
'component_name': PYTHON_SDK_LOCAL_COMPONENT_NAME,
|
|
25
|
+
'component_category': LoggerComponentEnum.ComponentCategory.Unit_Test.value,
|
|
26
|
+
'testing_framework': LoggerComponentEnum.testingFramework.pytest.value,
|
|
27
|
+
'developer_email': 'sahar.g@circ.zone'
|
|
28
|
+
}
|
|
@@ -17,7 +17,7 @@ class MiniLogger:
|
|
|
17
17
|
if object is None:
|
|
18
18
|
print(f"{datetime.now()} - START - {message}")
|
|
19
19
|
else:
|
|
20
|
-
print(f"{datetime.now()} - START - {message} - {object}")
|
|
20
|
+
print(f"{datetime.now()} - START - {message} - {str(object)}")
|
|
21
21
|
|
|
22
22
|
@staticmethod
|
|
23
23
|
def end(message: str = "", object: dict = None):
|
|
@@ -30,7 +30,7 @@ class MiniLogger:
|
|
|
30
30
|
if object is None:
|
|
31
31
|
print(f"{datetime.now()} - END - {message}")
|
|
32
32
|
else:
|
|
33
|
-
print(f"{datetime.now()} - END - {message} - {object}")
|
|
33
|
+
print(f"{datetime.now()} - END - {message} - {str(object)}")
|
|
34
34
|
|
|
35
35
|
@staticmethod
|
|
36
36
|
def info(message: str = "", object: dict = None):
|
|
@@ -44,7 +44,7 @@ class MiniLogger:
|
|
|
44
44
|
if object is None:
|
|
45
45
|
print(f"{datetime.now()} - INFO - {message}")
|
|
46
46
|
else:
|
|
47
|
-
print(f"{datetime.now()} - INFO {message} - {object}")
|
|
47
|
+
print(f"{datetime.now()} - INFO {message} - {str(object)}")
|
|
48
48
|
|
|
49
49
|
@staticmethod
|
|
50
50
|
def warning(message: str = "", object: dict = None):
|
|
@@ -58,7 +58,7 @@ class MiniLogger:
|
|
|
58
58
|
if object is None:
|
|
59
59
|
print(f"{datetime.now()} - WARNING - {message}")
|
|
60
60
|
else:
|
|
61
|
-
print(f"{datetime.now()} - WARNING {message} - {object}")
|
|
61
|
+
print(f"{datetime.now()} - WARNING {message} - {str(object)}")
|
|
62
62
|
|
|
63
63
|
@staticmethod
|
|
64
64
|
def error(message: str = "", object: dict = None):
|
|
@@ -70,22 +70,22 @@ class MiniLogger:
|
|
|
70
70
|
object (dict): The object to be printed.
|
|
71
71
|
"""
|
|
72
72
|
if object is None:
|
|
73
|
-
print(f"{datetime.now()} - ERROR - {message}",
|
|
73
|
+
print(f"{datetime.now()} - ERROR - {message}", file=sys.stderr)
|
|
74
74
|
else:
|
|
75
75
|
print(
|
|
76
|
-
f"{datetime.now()} - ERROR - {message} - {object}", file=sys.stderr)
|
|
76
|
+
f"{datetime.now()} - ERROR - {message} - {str(object)}", file=sys.stderr)
|
|
77
77
|
|
|
78
78
|
@staticmethod
|
|
79
|
-
def exception(message: str = "", object:
|
|
79
|
+
def exception(message: str = "", object: dict = None):
|
|
80
80
|
"""
|
|
81
81
|
Print a log error message with the current time.
|
|
82
82
|
|
|
83
83
|
Parameters:
|
|
84
84
|
message (str): The message to be printed.
|
|
85
|
-
object (dict
|
|
85
|
+
object (dict): The object to be printed.
|
|
86
86
|
"""
|
|
87
87
|
if object is None:
|
|
88
88
|
print(f"{datetime.now()} - EXCEPTION - {message}", file=sys.stderr)
|
|
89
89
|
else:
|
|
90
90
|
print(
|
|
91
|
-
f"{datetime.now()} - EXCEPTION- {message} - {object}", file=sys.stderr)
|
|
91
|
+
f"{datetime.now()} - EXCEPTION- {message} - {str(object)}", file=sys.stderr)
|
|
@@ -1,55 +1,48 @@
|
|
|
1
1
|
import json
|
|
2
2
|
from abc import ABC, abstractmethod
|
|
3
3
|
|
|
4
|
-
from .mini_logger import MiniLogger
|
|
4
|
+
from .mini_logger import MiniLogger
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
class OurObject(ABC):
|
|
8
8
|
def __init__(self, **kwargs):
|
|
9
9
|
INIT_METHOD_NAME = '__init__'
|
|
10
|
-
|
|
10
|
+
MiniLogger.start(INIT_METHOD_NAME, object={'kwargs': kwargs})
|
|
11
11
|
self.kwargs = kwargs
|
|
12
|
-
|
|
12
|
+
MiniLogger.end(INIT_METHOD_NAME, object={'kwargs': kwargs})
|
|
13
13
|
|
|
14
14
|
@abstractmethod
|
|
15
15
|
def get_name(self):
|
|
16
|
-
"""Returns the name of the object"""
|
|
17
16
|
raise NotImplementedError(
|
|
18
17
|
"Subclasses must implement the 'get_name' method.")
|
|
19
18
|
|
|
20
19
|
def get(self, attr_name: str):
|
|
21
|
-
"""Returns the value of the attribute with the given name"""
|
|
22
20
|
GET_METHOD_NAME = 'get'
|
|
23
|
-
|
|
21
|
+
MiniLogger.start(GET_METHOD_NAME, object={'attr_name': attr_name})
|
|
24
22
|
arguments = getattr(self, 'kwargs', None)
|
|
25
23
|
value = arguments.get(attr_name, None)
|
|
26
|
-
|
|
24
|
+
MiniLogger.end(GET_METHOD_NAME, object={'attr_name': attr_name})
|
|
27
25
|
return value
|
|
28
26
|
|
|
29
27
|
def get_all_arguments(self):
|
|
30
|
-
"""Returns all the arguments passed to the constructor as a dictionary"""
|
|
31
28
|
return getattr(self, 'kwargs', None)
|
|
32
29
|
|
|
33
30
|
def to_json(self) -> str:
|
|
34
|
-
"""Returns a json string representation of this object"""
|
|
35
31
|
return json.dumps(self.__dict__)
|
|
36
32
|
|
|
37
33
|
def from_json(self, json_string: str) -> 'OurObject':
|
|
38
|
-
"""Returns an instance of the class from a json string"""
|
|
39
34
|
FROM_JSON_METHOD_NAME = 'from_json'
|
|
40
|
-
|
|
41
|
-
|
|
35
|
+
MiniLogger.start(FROM_JSON_METHOD_NAME,
|
|
36
|
+
object={'json_string': json_string})
|
|
42
37
|
self.__dict__ = json.loads(json_string)
|
|
43
|
-
|
|
44
|
-
|
|
38
|
+
MiniLogger.end(FROM_JSON_METHOD_NAME,
|
|
39
|
+
object={'json_dict': self.__dict__})
|
|
45
40
|
return self
|
|
46
41
|
|
|
47
42
|
def __eq__(self, other) -> bool:
|
|
48
|
-
"""Checks if two objects are equal"""
|
|
49
43
|
if not isinstance(other, OurObject):
|
|
50
44
|
return False
|
|
51
45
|
return self.__dict__ == other.__dict__
|
|
52
46
|
|
|
53
47
|
def __ne__(self, other) -> bool:
|
|
54
|
-
"""Checks if two objects are not equal"""
|
|
55
48
|
return not self.__eq__(other)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class UnifiedJson:
|
|
2
|
+
def __init__(self, data: dict, version: str):
|
|
3
|
+
self.version = version
|
|
4
|
+
self.data = data
|
|
5
|
+
|
|
6
|
+
def get_unified_json(self):
|
|
7
|
+
return {"version": self.version, "data": self.data}
|
|
8
|
+
|
|
9
|
+
def __str__(self):
|
|
10
|
+
return self.get_unified_json()
|
|
11
|
+
|
|
12
|
+
def __repr__(self):
|
|
13
|
+
return self.__str__()
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import json
|
|
2
|
-
import os
|
|
3
2
|
from datetime import date, datetime, time, timedelta
|
|
4
3
|
from urllib.parse import urlparse
|
|
5
4
|
|
|
6
|
-
from
|
|
5
|
+
from .mini_logger import MiniLogger
|
|
7
6
|
|
|
8
|
-
from .
|
|
9
|
-
from .validate_environment import validate_brand_name
|
|
10
|
-
from .validate_environment import validate_environment_name
|
|
7
|
+
from .constants import (BRAND_NAME, ENVIRONMENT_NAME) # noqa: E402
|
|
11
8
|
|
|
12
|
-
|
|
9
|
+
from .validate_environment import (validate_brand_name, # noqa: E402
|
|
10
|
+
validate_environment_name)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
RANGE_LENGTH = 2
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
def timedelta_to_time_format(time_delta: timedelta) -> str:
|
|
@@ -32,7 +33,7 @@ def timedelta_to_time_format(time_delta: timedelta) -> str:
|
|
|
32
33
|
'02:30:45'
|
|
33
34
|
"""
|
|
34
35
|
TIMEDELTA_TO_TIME_FORMAT_METHOD_NAME = "timedelta_to_time_format"
|
|
35
|
-
|
|
36
|
+
MiniLogger.start(TIMEDELTA_TO_TIME_FORMAT_METHOD_NAME, object={'time_delta': time_delta})
|
|
36
37
|
|
|
37
38
|
# Calculate the total seconds and convert to HH:MM:SS format
|
|
38
39
|
total_seconds = int(time_delta.total_seconds())
|
|
@@ -43,8 +44,8 @@ def timedelta_to_time_format(time_delta: timedelta) -> str:
|
|
|
43
44
|
# Format as "HH:MM:SS"
|
|
44
45
|
formatted_time = f"{hours:02d}:{minutes:02d}:{seconds:02d}"
|
|
45
46
|
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
MiniLogger.end(TIMEDELTA_TO_TIME_FORMAT_METHOD_NAME,
|
|
48
|
+
object={'formatted_time': formatted_time})
|
|
48
49
|
return formatted_time
|
|
49
50
|
|
|
50
51
|
|
|
@@ -53,25 +54,25 @@ def is_valid_time_range(time_range: tuple) -> bool:
|
|
|
53
54
|
Validate that the time range is in the format 'HH:MM:SS'.
|
|
54
55
|
"""
|
|
55
56
|
IS_VALID_TIME_RANGE_METHOD_NAME = "is_valid_time_range"
|
|
56
|
-
|
|
57
|
+
MiniLogger.start(IS_VALID_TIME_RANGE_METHOD_NAME, object={
|
|
57
58
|
"time_range": time_range.__str__()})
|
|
58
|
-
if len(time_range) !=
|
|
59
|
-
|
|
59
|
+
if len(time_range) != RANGE_LENGTH:
|
|
60
|
+
MiniLogger.end(IS_VALID_TIME_RANGE_METHOD_NAME, object={
|
|
60
61
|
"is_valid_time_range_result": False, "reason": "len(time_range) != 2"})
|
|
61
62
|
return False
|
|
62
63
|
|
|
63
64
|
for time_obj in time_range:
|
|
64
65
|
if not isinstance(time_obj, time):
|
|
65
|
-
|
|
66
|
+
MiniLogger.end(IS_VALID_TIME_RANGE_METHOD_NAME, object={
|
|
66
67
|
"is_valid_time_range_result": False, "reason": "time_range contains non-time objects"})
|
|
67
68
|
return False
|
|
68
69
|
time_str = time_obj.strftime('%H:%M:%S')
|
|
69
70
|
if time_obj.strftime('%H:%M:%S') != time_str:
|
|
70
|
-
|
|
71
|
+
MiniLogger.end(IS_VALID_TIME_RANGE_METHOD_NAME, object={
|
|
71
72
|
"is_valid_time_range_result": False, "reason": "time_range contains invalid time format"})
|
|
72
73
|
return False
|
|
73
74
|
|
|
74
|
-
|
|
75
|
+
MiniLogger.end(IS_VALID_TIME_RANGE_METHOD_NAME, object={
|
|
75
76
|
"is_valid_time_range_result": True})
|
|
76
77
|
return True
|
|
77
78
|
|
|
@@ -88,19 +89,19 @@ def is_valid_date_range(date_range: tuple) -> bool:
|
|
|
88
89
|
Validate that the date range is in the format 'YYYY-MM-DD'.
|
|
89
90
|
"""
|
|
90
91
|
IS_VALID_DATE_RANGE_METHOD_NAME = "is_valid_date_range"
|
|
91
|
-
|
|
92
|
+
MiniLogger.start(IS_VALID_DATE_RANGE_METHOD_NAME, object={
|
|
92
93
|
"date_range": date_range.__str__()})
|
|
93
|
-
if len(date_range) !=
|
|
94
|
-
|
|
94
|
+
if len(date_range) != RANGE_LENGTH:
|
|
95
|
+
MiniLogger.end(IS_VALID_DATE_RANGE_METHOD_NAME, object={
|
|
95
96
|
"is_valid_date_range_result": False, "reason": "len(date_range) != 2"})
|
|
96
97
|
return False
|
|
97
98
|
|
|
98
99
|
for date_obj in date_range:
|
|
99
100
|
if not isinstance(date_obj, date):
|
|
100
|
-
|
|
101
|
+
MiniLogger.end(IS_VALID_DATE_RANGE_METHOD_NAME, object={
|
|
101
102
|
"is_valid_date_range_result": False, "reason": "date_range contains non-date objects"})
|
|
102
103
|
return False
|
|
103
|
-
|
|
104
|
+
MiniLogger.end(IS_VALID_DATE_RANGE_METHOD_NAME, object={
|
|
104
105
|
"is_valid_date_range_result": True})
|
|
105
106
|
return True
|
|
106
107
|
|
|
@@ -110,19 +111,19 @@ def is_valid_datetime_range(datetime_range: tuple) -> bool:
|
|
|
110
111
|
Validate that the datetime range is in the format 'YYYY-MM-DD HH:MM:SS'.
|
|
111
112
|
"""
|
|
112
113
|
IS_VALID_DATETIME_RANGE_METHOD_NAME = "is_valid_datetime_range"
|
|
113
|
-
|
|
114
|
+
MiniLogger.start(IS_VALID_DATETIME_RANGE_METHOD_NAME, object={
|
|
114
115
|
"datetime_range": datetime_range.__str__()})
|
|
115
|
-
if len(datetime_range) !=
|
|
116
|
-
|
|
116
|
+
if len(datetime_range) != RANGE_LENGTH:
|
|
117
|
+
MiniLogger.end(IS_VALID_DATETIME_RANGE_METHOD_NAME, object={
|
|
117
118
|
"is_valid_datetime_range_result": False, "reason": "len(datetime_range) != 2"})
|
|
118
119
|
return False
|
|
119
120
|
|
|
120
121
|
for datetime_obj in datetime_range:
|
|
121
122
|
if not isinstance(datetime_obj, datetime):
|
|
122
|
-
|
|
123
|
+
MiniLogger.end(IS_VALID_DATETIME_RANGE_METHOD_NAME, object={
|
|
123
124
|
"is_valid_datetime_range_result": False, "reason": "datetime_range contains non-datetime objects"})
|
|
124
125
|
return False
|
|
125
|
-
|
|
126
|
+
MiniLogger.end(IS_VALID_DATETIME_RANGE_METHOD_NAME, object={
|
|
126
127
|
"is_valid_datetime_range_result": True})
|
|
127
128
|
return True
|
|
128
129
|
|
|
@@ -151,27 +152,26 @@ def is_list_of_dicts(obj):
|
|
|
151
152
|
False
|
|
152
153
|
"""
|
|
153
154
|
IS_LIST_OF_DICTS_FUNCTION_NAME = "is_list_of_dicts"
|
|
154
|
-
|
|
155
|
+
MiniLogger.start(IS_LIST_OF_DICTS_FUNCTION_NAME, object={"obj": obj})
|
|
155
156
|
try:
|
|
156
157
|
if not isinstance(obj, list):
|
|
157
158
|
is_list_of_dicts_result = False
|
|
158
|
-
|
|
159
|
+
MiniLogger.end(IS_LIST_OF_DICTS_FUNCTION_NAME, object={
|
|
159
160
|
"is_list_of_dicts_result": is_list_of_dicts_result})
|
|
160
161
|
return is_list_of_dicts_result
|
|
161
162
|
for item in obj:
|
|
162
163
|
if not isinstance(item, dict):
|
|
163
164
|
is_list_of_dicts_result = False
|
|
164
|
-
|
|
165
|
+
MiniLogger.end(IS_LIST_OF_DICTS_FUNCTION_NAME, object={
|
|
165
166
|
"is_list_of_dicts_result": is_list_of_dicts_result})
|
|
166
167
|
return is_list_of_dicts_result
|
|
167
168
|
is_list_of_dicts_result = True
|
|
168
|
-
|
|
169
|
+
MiniLogger.end(IS_LIST_OF_DICTS_FUNCTION_NAME, object={
|
|
169
170
|
"is_list_of_dicts_result": is_list_of_dicts_result})
|
|
170
171
|
return is_list_of_dicts_result
|
|
171
|
-
except Exception as
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
raise
|
|
172
|
+
except Exception as e:
|
|
173
|
+
MiniLogger.end(IS_LIST_OF_DICTS_FUNCTION_NAME, exception=e)
|
|
174
|
+
raise e
|
|
175
175
|
|
|
176
176
|
|
|
177
177
|
def is_time_in_time_range(check_time: time, time_range: tuple) -> bool:
|
|
@@ -186,14 +186,14 @@ def is_time_in_time_range(check_time: time, time_range: tuple) -> bool:
|
|
|
186
186
|
bool: True if the check_time is within the time range, False otherwise.
|
|
187
187
|
"""
|
|
188
188
|
IS_TIME_IN_TIME_RANGE_METHOD_NAME = "is_time_in_time_range"
|
|
189
|
-
|
|
189
|
+
MiniLogger.start(IS_TIME_IN_TIME_RANGE_METHOD_NAME, object={
|
|
190
190
|
"check_time": check_time.__str__(), "time_range": time_range.__str__()})
|
|
191
191
|
if not is_valid_time_range(time_range) or not isinstance(check_time, time):
|
|
192
|
-
|
|
192
|
+
MiniLogger.end(IS_TIME_IN_TIME_RANGE_METHOD_NAME, object={
|
|
193
193
|
"is_time_in_time_range_result": False})
|
|
194
194
|
return False
|
|
195
195
|
start_time, end_time = time_range
|
|
196
|
-
|
|
196
|
+
MiniLogger.end(IS_TIME_IN_TIME_RANGE_METHOD_NAME, object={
|
|
197
197
|
"is_time_in_time_range_result": start_time <= check_time <= end_time})
|
|
198
198
|
return start_time <= check_time <= end_time
|
|
199
199
|
|
|
@@ -210,15 +210,15 @@ def is_date_in_date_range(check_date: date, date_range: tuple) -> bool:
|
|
|
210
210
|
bool: True if the check_date is within the date range, False otherwise.
|
|
211
211
|
"""
|
|
212
212
|
IS_DATE_IN_DATE_RANGE_METHOD_NAME = "is_date_in_date_range"
|
|
213
|
-
|
|
213
|
+
MiniLogger.start(IS_DATE_IN_DATE_RANGE_METHOD_NAME, object={
|
|
214
214
|
"check_date": check_date.__str__(), "date_range": date_range.__str__()})
|
|
215
215
|
if not is_valid_date_range(date_range) or not isinstance(check_date, date):
|
|
216
|
-
|
|
216
|
+
MiniLogger.end(IS_DATE_IN_DATE_RANGE_METHOD_NAME, object={
|
|
217
217
|
"is_date_in_date_range_result": False})
|
|
218
218
|
return False
|
|
219
219
|
|
|
220
220
|
start_date, end_date = date_range
|
|
221
|
-
|
|
221
|
+
MiniLogger.end(IS_DATE_IN_DATE_RANGE_METHOD_NAME, object={
|
|
222
222
|
"is_date_in_date_range_result": start_date <= check_date <= end_date})
|
|
223
223
|
return start_date <= check_date <= end_date
|
|
224
224
|
|
|
@@ -235,15 +235,15 @@ def is_datetime_in_datetime_range(check_datetime: datetime, datetime_range: tupl
|
|
|
235
235
|
bool: True if the check_datetime is within the datetime range, False otherwise.
|
|
236
236
|
"""
|
|
237
237
|
IS_DATETIME_IN_DATETIME_RANGE_METHOD_NAME = "is_datetime_in_datetime_range"
|
|
238
|
-
|
|
238
|
+
MiniLogger.start(IS_DATETIME_IN_DATETIME_RANGE_METHOD_NAME)
|
|
239
239
|
if not is_valid_datetime_range(datetime_range) or not isinstance(check_datetime, datetime):
|
|
240
|
-
|
|
240
|
+
MiniLogger.end(IS_DATETIME_IN_DATETIME_RANGE_METHOD_NAME, object={
|
|
241
241
|
"is_valid_datetime_range": False})
|
|
242
242
|
return False
|
|
243
243
|
|
|
244
244
|
start_datetime, end_datetime = datetime_range
|
|
245
245
|
is_datetime_in_datetime_range_result = start_datetime <= check_datetime <= end_datetime
|
|
246
|
-
|
|
246
|
+
MiniLogger.end(IS_DATETIME_IN_DATETIME_RANGE_METHOD_NAME, object={
|
|
247
247
|
"is_datetime_in_datetime_range_result": is_datetime_in_datetime_range_result})
|
|
248
248
|
return is_datetime_in_datetime_range_result
|
|
249
249
|
|
|
@@ -277,28 +277,9 @@ def create_http_body(body):
|
|
|
277
277
|
|
|
278
278
|
def get_brand_name():
|
|
279
279
|
validate_brand_name()
|
|
280
|
-
return
|
|
280
|
+
return BRAND_NAME
|
|
281
281
|
|
|
282
282
|
|
|
283
283
|
def get_environment_name():
|
|
284
284
|
validate_environment_name()
|
|
285
|
-
return
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
def our_get_env(key: str, default: str = None, raise_if_not_found: bool = True) -> str:
|
|
289
|
-
result = os.getenv(key, default)
|
|
290
|
-
if raise_if_not_found and result is None:
|
|
291
|
-
raise Exception(f"Environment variable {key} not found")
|
|
292
|
-
return result
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
def get_sql_hostname() -> str:
|
|
296
|
-
return our_get_env("RDS_HOSTNAME")
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
def get_sql_username() -> str:
|
|
300
|
-
return our_get_env("RDS_USERNAME")
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
def get_sql_password() -> str:
|
|
304
|
-
return our_get_env("RDS_PASSWORD")
|
|
285
|
+
return ENVIRONMENT_NAME
|
{python-sdk-remote-0.0.67 → python-sdk-remote-0.0.69}/python_sdk_remote/src/validate_environment.py
RENAMED
|
@@ -1,35 +1,42 @@
|
|
|
1
|
-
from .constants import BRAND_NAME, ENVIRONMENT_NAME, LOGZIO_TOKEN
|
|
1
|
+
from .constants import BRAND_NAME, ENVIRONMENT_NAME, LOGZIO_TOKEN, GOOGLE_PORT_FOR_AUTHENTICATION
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
# TODO: I think this should be in logger-local, not here (akiva)
|
|
5
4
|
# TODO Align with https://github.com/circles-zone/typescript-sdk-remote-typescript-package/edit/dev/typescript-sdk/src/utils/index.ts validateTenantEnvironmentVariables() # noqa501
|
|
6
|
-
def validate_enviroment_variables(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
validate_environment_name(environment_name)
|
|
5
|
+
def validate_enviroment_variables():
|
|
6
|
+
validate_brand_name()
|
|
7
|
+
validate_environment_name()
|
|
10
8
|
# if(os.getenv("PRODUCT_USER_IDENTIFIER") is None):
|
|
11
9
|
# raise Exception("logger-local-python-package LoggerLocal.py please add Environment Variable called "
|
|
12
10
|
# "PRODUCT_USER_IDENTIFIER (instead of PRODUCT_USERNAME)")
|
|
13
11
|
# removed by Idan because it dont has to be in every project
|
|
12
|
+
#TODO Shall we push those commented lines of code to the repo?
|
|
14
13
|
# if(os.getenv("PRODUCT_PASSWORD") is None):
|
|
15
14
|
# raise Exception("logger-local-python-package LoggerLocal.py please add Environment Variable called PRODUCT_PASSWORD")
|
|
16
|
-
validate_logzio_token(
|
|
15
|
+
validate_logzio_token()
|
|
16
|
+
validate_google_port_for_authentication()
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
def validate_environment_name(
|
|
20
|
-
if
|
|
21
|
-
raise Exception(
|
|
22
|
-
|
|
23
|
-
"ENVIRONMENT_NAME=local or play1 (instead of ENVIRONMENT)")
|
|
19
|
+
def validate_environment_name():
|
|
20
|
+
if ENVIRONMENT_NAME is None:
|
|
21
|
+
raise Exception("logger-local-python-package LoggerLocal.py please add Environment Variable called "
|
|
22
|
+
"ENVIRONMENT_NAME=local or play1 (instead of ENVIRONMENT)")
|
|
24
23
|
|
|
25
24
|
|
|
26
|
-
def validate_brand_name(
|
|
27
|
-
if
|
|
25
|
+
def validate_brand_name():
|
|
26
|
+
if BRAND_NAME is None:
|
|
28
27
|
raise Exception(
|
|
29
28
|
"logger-local-python-package LoggerLocal.py please add Environment Variable called BRAND_NAME=Circlez")
|
|
30
29
|
|
|
31
30
|
|
|
32
|
-
def validate_logzio_token(
|
|
33
|
-
if
|
|
31
|
+
def validate_logzio_token():
|
|
32
|
+
if LOGZIO_TOKEN is None:
|
|
34
33
|
raise Exception("logger-local-python-package LoggerLocal.py please add Environment Variable called"
|
|
35
34
|
" LOGZIO_TOKEN=cXNHuVkkffkilnkKzZlWExECRlSKqopE")
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def validate_google_port_for_authentication():
|
|
38
|
+
if GOOGLE_PORT_FOR_AUTHENTICATION is None:
|
|
39
|
+
# The port is 54219 because the authentication url is http://localhost:54219/
|
|
40
|
+
raise Exception("please add Environment Variable"
|
|
41
|
+
" PORT_FOR_AUTHENTICATION=54219 because"
|
|
42
|
+
" the authentication url is http://localhost:54219/")
|
|
@@ -7,7 +7,7 @@ package_dir = PACKAGE_NAME.replace("-", "_")
|
|
|
7
7
|
# python -m build needs pyproject.toml or setup.py
|
|
8
8
|
setuptools.setup(
|
|
9
9
|
name=PACKAGE_NAME,
|
|
10
|
-
version='0.0.
|
|
10
|
+
version='0.0.69', # https://pypi.org/project/python-sdk-remote/
|
|
11
11
|
author="Circles",
|
|
12
12
|
author_email="info@circles.life",
|
|
13
13
|
description="PyPI Package for Circles Python SDK Local Python",
|
|
@@ -25,4 +25,4 @@ setuptools.setup(
|
|
|
25
25
|
install_requires=[
|
|
26
26
|
"python-dotenv"
|
|
27
27
|
]
|
|
28
|
-
)
|
|
28
|
+
)
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# This file should be in the future instead of setup.py
|
|
2
|
-
# https://python-poetry.org/docs/pyproject
|
|
3
|
-
|
|
4
|
-
# It seems we need to copy this file also to serverless-com repo, as required by dialog-workflow-python-package
|
|
5
|
-
|
|
6
|
-
[build-system]
|
|
7
|
-
requires = ["setuptools>=61.0"]
|
|
8
|
-
build-backend = "setuptools.build_meta"
|
|
9
|
-
|
|
10
|
-
[tool.poetry]
|
|
11
|
-
name = "python-sdk-local"
|
|
12
|
-
# I believe we are still using the version from setup.py and not from here until potery will work
|
|
13
|
-
version = "0.0.1" # https://pypi.org/project/python-sdk-local i.e. https://pypi.org/project/storage-local/
|
|
14
|
-
description = "python-sdk-local Python Package"
|
|
15
|
-
readme = "README.md"
|
|
16
|
-
authors = [
|
|
17
|
-
"Circlez.ai <info@circlez.ai>",
|
|
18
|
-
]
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
|
|
3
|
-
from dotenv import load_dotenv
|
|
4
|
-
|
|
5
|
-
# from logger_local.LoggerComponentEnum import LoggerComponentEnum
|
|
6
|
-
|
|
7
|
-
# PYTHON_SDK_LOCAL_COMPONENT_ID = 184
|
|
8
|
-
# PYTHON_SDK_LOCAL_COMPONENT_NAME = 'python_sdk_local'
|
|
9
|
-
|
|
10
|
-
load_dotenv()
|
|
11
|
-
ENVIRONMENT_NAME = os.getenv("ENVIRONMENT_NAME")
|
|
12
|
-
BRAND_NAME = os.getenv("BRAND_NAME")
|
|
13
|
-
LOGZIO_TOKEN = os.getenv("LOGZIO_TOKEN")
|
|
14
|
-
|
|
15
|
-
# OBJECT_TO_INSERT_CODE = {
|
|
16
|
-
# 'component_id': PYTHON_SDK_LOCAL_COMPONENT_ID,
|
|
17
|
-
# 'component_name': PYTHON_SDK_LOCAL_COMPONENT_NAME,
|
|
18
|
-
# 'component_category': LoggerComponentEnum.ComponentCategory.Code.value,
|
|
19
|
-
# 'developer_email': 'sahar.g@circ.zone'
|
|
20
|
-
# }
|
|
21
|
-
#
|
|
22
|
-
# OBJECT_TO_INSERT_TEST = {
|
|
23
|
-
# 'component_id': PYTHON_SDK_LOCAL_COMPONENT_ID,
|
|
24
|
-
# 'component_name': PYTHON_SDK_LOCAL_COMPONENT_NAME,
|
|
25
|
-
# 'component_category': LoggerComponentEnum.ComponentCategory.Unit_Test.value,
|
|
26
|
-
# 'testing_framework': LoggerComponentEnum.testingFramework.pytest.value,
|
|
27
|
-
# 'developer_email': 'sahar.g@circ.zone'
|
|
28
|
-
# }
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
from .valid_json_versions import valid_json_versions
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class UnifiedJson:
|
|
5
|
-
def __init__(self, data: dict, json_version: str):
|
|
6
|
-
if json_version not in valid_json_versions:
|
|
7
|
-
raise Exception(
|
|
8
|
-
f"version {json_version} is not in valid_json_versions {valid_json_versions}, "
|
|
9
|
-
f"please make sure you run sql2code."
|
|
10
|
-
)
|
|
11
|
-
self.json_version = json_version
|
|
12
|
-
self.data = data
|
|
13
|
-
|
|
14
|
-
def get_unified_json(self):
|
|
15
|
-
return {"version": self.json_version, "data": self.data}
|
|
16
|
-
|
|
17
|
-
def get_data(self):
|
|
18
|
-
return self.data
|
|
19
|
-
|
|
20
|
-
def get_json_version(self):
|
|
21
|
-
return self.json_version
|
|
22
|
-
|
|
23
|
-
def __str__(self):
|
|
24
|
-
return self.get_unified_json()
|
|
25
|
-
|
|
26
|
-
def __repr__(self):
|
|
27
|
-
return self.__str__()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python-sdk-remote-0.0.67 → python-sdk-remote-0.0.69}/python_sdk_remote.egg-info/requires.txt
RENAMED
|
File without changes
|
{python-sdk-remote-0.0.67 → python-sdk-remote-0.0.69}/python_sdk_remote.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|