willisapi-client 1.7__tar.gz → 1.8__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.
- {willisapi_client-1.7 → willisapi_client-1.8}/PKG-INFO +1 -1
- {willisapi_client-1.7 → willisapi_client-1.8}/tests/test_auth.py +2 -2
- {willisapi_client-1.7 → willisapi_client-1.8}/tests/test_upload.py +1 -1
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/__version__.py +1 -1
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/auth/login_manager.py +3 -3
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/upload/multipart_upload_handler.py +2 -2
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/upload/upload_utils.py +5 -4
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client.egg-info/PKG-INFO +1 -1
- {willisapi_client-1.7 → willisapi_client-1.8}/LICENSE +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/MANIFEST.in +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/README.md +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/RELEASE.md +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/requirements.txt +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/setup.cfg +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/setup.py +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/tests/test_csv_validation.py +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/tests/test_download.py +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/__init__.py +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/logging_setup.py +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/__init__.py +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/api.py +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/auth/__init__.py +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/auth/auth_utils.py +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/download/__init__.py +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/download/download_handler.py +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/download/download_utils.py +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/exceptions.py +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/upload/__init__.py +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/upload/csv_validation.py +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/upload/language_choices.py +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/upload/utils.py +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/timer.py +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/willisapi_client.py +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client.egg-info/SOURCES.txt +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client.egg-info/dependency_links.txt +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client.egg-info/not-zip-safe +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client.egg-info/requires.txt +0 -0
- {willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client.egg-info/top_level.txt +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
from willisapi_client.services.auth.login_manager import login
|
|
2
2
|
|
|
3
3
|
from unittest.mock import patch
|
|
4
|
-
from datetime import timedelta, datetime
|
|
4
|
+
from datetime import timedelta, datetime, timezone
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
class TestLoginFunction:
|
|
8
8
|
def setup_method(self):
|
|
9
|
-
self.dt = datetime.now()
|
|
9
|
+
self.dt = datetime.now(timezone.utc)
|
|
10
10
|
self.username = "dummy"
|
|
11
11
|
self.password = "password"
|
|
12
12
|
self.id_token = "dummy_token"
|
|
@@ -95,7 +95,7 @@ class TestUpload:
|
|
|
95
95
|
mocked_df.return_value = pd.DataFrame([self.df_row], columns=self.df_cols)
|
|
96
96
|
mock_row_validation.return_value = True, None
|
|
97
97
|
mocked_upload.return_value = True, None
|
|
98
|
-
df = upload(self.key, self.metadata,
|
|
98
|
+
df = upload(self.key, self.metadata, force_upload="true")
|
|
99
99
|
num = len(df[df["upload_status"] == "success"])
|
|
100
100
|
assert num == 1
|
|
101
101
|
assert list(df.columns) == self.response_df_cols
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""Version details for willisapi_client
|
|
2
2
|
"""
|
|
3
3
|
__client__ = "willisapi_client"
|
|
4
|
-
__latestVersion__ = "1.
|
|
4
|
+
__latestVersion__ = "1.8"
|
|
5
5
|
__url__ = "https://github.com/bklynhlth/willsiapi_client"
|
|
6
6
|
__short_description__ = "A Python client for willisapi"
|
|
7
7
|
__content_type__ = "text/markdown"
|
{willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/auth/login_manager.py
RENAMED
|
@@ -3,7 +3,7 @@ from typing import Tuple
|
|
|
3
3
|
from http import HTTPStatus
|
|
4
4
|
|
|
5
5
|
# import datetime
|
|
6
|
-
from datetime import datetime, timedelta
|
|
6
|
+
from datetime import datetime, timedelta, timezone
|
|
7
7
|
|
|
8
8
|
from willisapi_client.willisapi_client import WillisapiClient
|
|
9
9
|
from willisapi_client.services.auth.auth_utils import AuthUtils
|
|
@@ -41,10 +41,10 @@ def login(username: str, password: str, **kwargs) -> Tuple[str, int]:
|
|
|
41
41
|
):
|
|
42
42
|
logger.info("Login Successful; Key acquired")
|
|
43
43
|
logger.info(
|
|
44
|
-
f"Key expiration: {datetime.now() + timedelta(seconds=response['result']['expires_in'])}"
|
|
44
|
+
f"Key expiration: {datetime.now(timezone.utc) + timedelta(seconds=response['result']['expires_in'])}"
|
|
45
45
|
)
|
|
46
46
|
required_format = (
|
|
47
|
-
f"{datetime.now() + timedelta(seconds=response['result']['expires_in'])}"
|
|
47
|
+
f"{datetime.now(timezone.utc) + timedelta(seconds=response['result']['expires_in'])}"
|
|
48
48
|
)
|
|
49
49
|
return (response["result"]["id_token"], required_format)
|
|
50
50
|
else:
|
|
@@ -33,7 +33,7 @@ def upload(key, data, **kwargs):
|
|
|
33
33
|
logger.info(f'{datetime.now().strftime("%H:%M:%S")}: csv check passed')
|
|
34
34
|
dataframe = csv.get_dataframe()
|
|
35
35
|
wc = WillisapiClient(env=kwargs.get("env"))
|
|
36
|
-
|
|
36
|
+
force_upload = "true" if kwargs.get("force_upload") == True else False
|
|
37
37
|
url = wc.get_upload_url()
|
|
38
38
|
headers = wc.get_headers()
|
|
39
39
|
headers["Authorization"] = key
|
|
@@ -43,7 +43,7 @@ def upload(key, data, **kwargs):
|
|
|
43
43
|
(is_valid_row, error) = csv.validate_row(row)
|
|
44
44
|
if is_valid_row:
|
|
45
45
|
(uploaded, error) = UploadUtils.upload(
|
|
46
|
-
index, row, url, headers,
|
|
46
|
+
index, row, url, headers, force_upload
|
|
47
47
|
)
|
|
48
48
|
if uploaded:
|
|
49
49
|
summary.append([row.file_path, "success", None])
|
{willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/upload/upload_utils.py
RENAMED
|
@@ -102,7 +102,7 @@ class UploadUtils:
|
|
|
102
102
|
return number_of_parts
|
|
103
103
|
|
|
104
104
|
def initiate_multi_part_upload(
|
|
105
|
-
index: int, row, url: str, headers: dict,
|
|
105
|
+
index: int, row, url: str, headers: dict, force_upload: str
|
|
106
106
|
) -> Tuple[str, str]:
|
|
107
107
|
"""
|
|
108
108
|
------------------------------------------------------------------------------------------------------
|
|
@@ -146,7 +146,7 @@ class UploadUtils:
|
|
|
146
146
|
|
|
147
147
|
try:
|
|
148
148
|
response = requests.post(
|
|
149
|
-
f"{url}?type=initiate&
|
|
149
|
+
f"{url}?type=initiate&force_upload={force_upload}", json=data, headers=headers
|
|
150
150
|
)
|
|
151
151
|
res_json = response.json()
|
|
152
152
|
except Exception as ex:
|
|
@@ -171,6 +171,7 @@ class UploadUtils:
|
|
|
171
171
|
|
|
172
172
|
else:
|
|
173
173
|
if "message" in res_json and res_json["message"] == "Unauthorized":
|
|
174
|
+
error = res_json["message"]
|
|
174
175
|
logger.error(
|
|
175
176
|
"Your Key is expired. Login again to generate a new key"
|
|
176
177
|
)
|
|
@@ -279,7 +280,7 @@ class UploadUtils:
|
|
|
279
280
|
return SORTED_PARTS
|
|
280
281
|
|
|
281
282
|
@staticmethod
|
|
282
|
-
def upload(index, row, url, headers,
|
|
283
|
+
def upload(index, row, url, headers, force_upload) -> Tuple[bool, str]:
|
|
283
284
|
"""
|
|
284
285
|
------------------------------------------------------------------------------------------------------
|
|
285
286
|
Class: UploadUtils
|
|
@@ -302,7 +303,7 @@ class UploadUtils:
|
|
|
302
303
|
------------------------------------------------------------------------------------------------------
|
|
303
304
|
"""
|
|
304
305
|
(upload_id, record_id, error) = UploadUtils.initiate_multi_part_upload(
|
|
305
|
-
index, row, url, headers,
|
|
306
|
+
index, row, url, headers, force_upload
|
|
306
307
|
)
|
|
307
308
|
uploaded = False
|
|
308
309
|
if upload_id and record_id:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/download/__init__.py
RENAMED
|
File without changes
|
{willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/download/download_handler.py
RENAMED
|
File without changes
|
{willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/download/download_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/upload/csv_validation.py
RENAMED
|
File without changes
|
{willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client/services/upload/language_choices.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{willisapi_client-1.7 → willisapi_client-1.8}/willisapi_client.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|