python-sdk-remote 0.0.110__tar.gz → 0.0.111__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.110 → python_sdk_remote-0.0.111}/PKG-INFO +2 -2
- {python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote/src/http_response.py +13 -6
- {python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote/src/mini_logger.py +0 -1
- {python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote/src/utilities.py +34 -7
- {python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote/src/validate_environment.py +0 -1
- {python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote.egg-info/PKG-INFO +2 -2
- {python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/setup.py +2 -2
- {python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/README.md +0 -0
- {python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/pyproject.toml +0 -0
- {python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote/src/__init__.py +0 -0
- {python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote/src/constants.py +0 -0
- {python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote/src/item.py +0 -0
- {python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote/src/our_object.py +0 -0
- {python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote/src/unified_json.py +0 -0
- {python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote/src/valid_json_versions.py +0 -0
- {python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote.egg-info/SOURCES.txt +0 -0
- {python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote.egg-info/dependency_links.txt +0 -0
- {python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote.egg-info/requires.txt +0 -0
- {python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote.egg-info/top_level.txt +0 -0
- {python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/setup.cfg +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: python-sdk-remote
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.111
|
|
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
|
|
7
|
-
Author-email: info@circles.
|
|
7
|
+
Author-email: info@circles.ai
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
9
9
|
Classifier: License :: Other/Proprietary License
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
{python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote/src/http_response.py
RENAMED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import json
|
|
2
|
-
|
|
2
|
+
import traceback
|
|
3
3
|
from http import HTTPStatus
|
|
4
|
+
from typing import Any
|
|
4
5
|
|
|
5
6
|
from .mini_logger import MiniLogger as logger
|
|
6
7
|
|
|
@@ -8,6 +9,7 @@ HEADERS_KEY = 'headers'
|
|
|
8
9
|
AUTHORIZATION_KEY = 'authorization'
|
|
9
10
|
AUTHORIZATION_PREFIX = 'Bearer '
|
|
10
11
|
|
|
12
|
+
|
|
11
13
|
# TODO Align those methods with typescript-sdk https://github.com/circles-zone/typescript-sdk-remote-typescript-package/blob/dev/typescript-sdk/src/utils/index.ts
|
|
12
14
|
# TODO Shall we create also createInternalServerErrorHttpResponse(), createOkHttpResponse() like we have in TypeScript?
|
|
13
15
|
|
|
@@ -17,15 +19,18 @@ def get_payload_dict_from_event(event: dict) -> dict:
|
|
|
17
19
|
"""Extracts params sent with payload"""
|
|
18
20
|
return json.loads(event.get('body') or '{}')
|
|
19
21
|
|
|
22
|
+
|
|
20
23
|
def get_path_parameters_dict_from_event(event: dict) -> dict:
|
|
21
24
|
"""Extracts params sent implicitly: `url/param?test=5` -> param
|
|
22
25
|
(when the path is defined with /{param})"""
|
|
23
26
|
return event.get('pathParameters') or {}
|
|
24
27
|
|
|
28
|
+
|
|
25
29
|
def get_query_string_parameters_from_event(event: dict) -> dict:
|
|
26
30
|
"""Extracts params sent explicitly: `url/test?a=1&b=2` -> {'a': '1', 'b': '2'}"""
|
|
27
31
|
return event.get("queryStringParameters") or {} # params sent with ?a=1&b=2
|
|
28
32
|
|
|
33
|
+
|
|
29
34
|
def create_authorization_http_headers(user_jwt: str) -> dict:
|
|
30
35
|
logger.start(object={"user_jwt": user_jwt})
|
|
31
36
|
authorization_http_headers = {
|
|
@@ -55,13 +60,15 @@ def create_return_http_headers() -> dict:
|
|
|
55
60
|
logger.end(object={"return_http_headers": return_http_headers})
|
|
56
61
|
return return_http_headers
|
|
57
62
|
|
|
63
|
+
|
|
58
64
|
def create_error_http_response(exception: Exception, status_code: HTTPStatus = HTTPStatus.BAD_REQUEST) -> dict:
|
|
59
65
|
logger.start(object={"exception": exception})
|
|
60
66
|
error_http_response = {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
67
|
+
"statusCode": status_code.value,
|
|
68
|
+
"headers": create_return_http_headers(),
|
|
69
|
+
"body": create_http_body({"error": str(exception)}),
|
|
70
|
+
"traceback": traceback.format_exc()
|
|
71
|
+
}
|
|
65
72
|
logger.end(object={"error_http_response": error_http_response})
|
|
66
73
|
return error_http_response
|
|
67
74
|
|
|
@@ -84,4 +91,4 @@ def create_http_body(body: Any) -> str:
|
|
|
84
91
|
logger.start(object={"body": body})
|
|
85
92
|
http_body = json.dumps(body)
|
|
86
93
|
logger.end(object={"http_body": http_body})
|
|
87
|
-
return http_body
|
|
94
|
+
return http_body
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
import json
|
|
1
2
|
import os
|
|
2
3
|
from datetime import date, datetime, time, timedelta
|
|
4
|
+
from urllib.parse import urlparse
|
|
5
|
+
|
|
3
6
|
from dotenv import load_dotenv
|
|
4
7
|
from url_remote.environment_name_enum import EnvironmentName
|
|
5
|
-
from urllib.parse import urlparse
|
|
6
8
|
|
|
9
|
+
from .mini_logger import MiniLogger as logger
|
|
7
10
|
from .http_response import (create_authorization_http_headers, get_user_jwt_from_event, # noqa - used for backwards compatibility
|
|
8
11
|
create_return_http_headers, create_error_http_response, create_ok_http_response,
|
|
9
12
|
create_http_body)
|
|
10
|
-
from .mini_logger import MiniLogger as logger
|
|
11
13
|
|
|
12
14
|
load_dotenv()
|
|
13
15
|
# raise Exception("Failed to load environment variables from .env file\n"
|
|
@@ -18,6 +20,28 @@ load_dotenv()
|
|
|
18
20
|
# TODO Use the const/enum from language package
|
|
19
21
|
DEFAULT_LANG_CODE_STR = "en"
|
|
20
22
|
|
|
23
|
+
|
|
24
|
+
def append_if_not_exist(lst: list, item: object) -> None:
|
|
25
|
+
if item not in lst:
|
|
26
|
+
lst.append(item)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def to_dict(data: json or dict or None) -> dict:
|
|
30
|
+
if data is None:
|
|
31
|
+
return {}
|
|
32
|
+
if isinstance(data, dict):
|
|
33
|
+
return data
|
|
34
|
+
return json.loads(data)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def to_json(data: json or dict or None) -> json:
|
|
38
|
+
if data is None:
|
|
39
|
+
data = {}
|
|
40
|
+
if isinstance(data, dict):
|
|
41
|
+
return json.dumps(data)
|
|
42
|
+
return data
|
|
43
|
+
|
|
44
|
+
|
|
21
45
|
def timedelta_to_time_format(time_delta: timedelta) -> str:
|
|
22
46
|
"""
|
|
23
47
|
Convert a timedelta to a time format in HH:MM:SS.
|
|
@@ -120,7 +144,8 @@ def is_valid_datetime_range(datetime_range: tuple) -> bool:
|
|
|
120
144
|
|
|
121
145
|
for datetime_obj in datetime_range:
|
|
122
146
|
if not isinstance(datetime_obj, datetime):
|
|
123
|
-
logger.end(object={"is_valid_datetime_range_result": False,
|
|
147
|
+
logger.end(object={"is_valid_datetime_range_result": False,
|
|
148
|
+
"reason": "datetime_range contains non-datetime objects"})
|
|
124
149
|
return False
|
|
125
150
|
logger.end(object={"is_valid_datetime_range_result": True})
|
|
126
151
|
return True
|
|
@@ -251,11 +276,13 @@ def get_environment_name() -> str:
|
|
|
251
276
|
return environment_name
|
|
252
277
|
|
|
253
278
|
|
|
254
|
-
def our_get_env(key: str, default: str = None, raise_if_not_found: bool = True
|
|
255
|
-
|
|
279
|
+
def our_get_env(key: str, default: str = None, raise_if_not_found: bool = True,
|
|
280
|
+
raise_if_empty: bool = True) -> str:
|
|
281
|
+
logger.start(object={"key": key, "default": default, "raise_if_not_found": raise_if_not_found,
|
|
282
|
+
"raise_if_empty": raise_if_empty})
|
|
256
283
|
env_var = os.getenv(key, default)
|
|
257
|
-
if raise_if_not_found and env_var is None:
|
|
258
|
-
raise Exception(f"Environment variable {key} not found")
|
|
284
|
+
if (raise_if_not_found and env_var is None) or (raise_if_empty and not env_var):
|
|
285
|
+
raise Exception(f"Environment variable {key} not found - please check your .env file")
|
|
259
286
|
logger.end(object={"env_var": env_var})
|
|
260
287
|
return env_var
|
|
261
288
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# deleted as the validation is done in utilities.our_get_env
|
|
2
|
-
from .constants import BRAND_NAME, ENVIRONMENT_NAME, LOGZIO_TOKEN, GOOGLE_PORT_FOR_AUTHENTICATION
|
|
3
2
|
|
|
4
3
|
|
|
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
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: python-sdk-remote
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.111
|
|
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
|
|
7
|
-
Author-email: info@circles.
|
|
7
|
+
Author-email: info@circles.ai
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
9
9
|
Classifier: License :: Other/Proprietary License
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
@@ -7,9 +7,9 @@ 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.111', # https://pypi.org/project/python-sdk-remote/
|
|
11
11
|
author="Circles",
|
|
12
|
-
author_email="info@circles.
|
|
12
|
+
author_email="info@circles.ai",
|
|
13
13
|
description="PyPI Package for Circles Python SDK Local Python",
|
|
14
14
|
long_description="This is a package for sharing common functions used in different repositories",
|
|
15
15
|
long_description_content_type="text/markdown",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote/src/unified_json.py
RENAMED
|
File without changes
|
{python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote/src/valid_json_versions.py
RENAMED
|
File without changes
|
{python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote.egg-info/requires.txt
RENAMED
|
File without changes
|
{python_sdk_remote-0.0.110 → python_sdk_remote-0.0.111}/python_sdk_remote.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|