bw-essentials-core 0.0.5__tar.gz → 0.0.7__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 bw-essentials-core might be problematic. Click here for more details.
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/PKG-INFO +1 -1
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/data_loch/data_loch.py +11 -9
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/services/master_data.py +24 -2
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials_core.egg-info/PKG-INFO +1 -1
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/setup.py +1 -1
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/README.md +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/__init__.py +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/constants/__init__.py +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/constants/services.py +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/data_loch/__init__.py +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/email_client/__init__.py +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/email_client/email_client.py +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/notifications/__init__.py +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/notifications/teams_notification_schemas.py +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/notifications/teams_notifications.py +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/s3_utils/__init__.py +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/s3_utils/s3_utils.py +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/services/__init__.py +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/services/api_client.py +1 -1
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/services/broker.py +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/services/market_pricer.py +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/services/model_portfolio_reporting.py +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/services/trade_placement.py +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/services/user_portfolio.py +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/services/user_portfolio_reporting.py +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials_core.egg-info/SOURCES.txt +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials_core.egg-info/dependency_links.txt +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials_core.egg-info/requires.txt +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials_core.egg-info/top_level.txt +0 -0
- {bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/setup.cfg +0 -0
|
@@ -132,15 +132,17 @@ class DataLoch:
|
|
|
132
132
|
file_name (str): File name to use in LakeFS.
|
|
133
133
|
commit (bool): Whether to commit the change after upload. Defaults to True.
|
|
134
134
|
"""
|
|
135
|
-
logger.info(f"Uploading
|
|
136
|
-
|
|
137
|
-
self.
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
135
|
+
logger.info(f"Uploading {file_name=} from {local_file_path=}")
|
|
136
|
+
logger.info(f"{file_name=} uploading to LakeFS")
|
|
137
|
+
branch_obj = self._get_branch(branch=branch, repository=repository)
|
|
138
|
+
obj = branch_obj.object(path=f"{file_name}")
|
|
139
|
+
with open(local_file_path, mode='rb') as reader, obj.writer("wb") as writer:
|
|
140
|
+
writer.write(reader.read())
|
|
141
|
+
commit_response = branch_obj.commit(
|
|
142
|
+
message=f"{file_name=} uploaded to data lake.",
|
|
143
|
+
metadata=self._get_meta_data(branch=branch,repository=repository)
|
|
144
|
+
)
|
|
145
|
+
logger.info(f"Changes committed: {commit_response=}")
|
|
144
146
|
|
|
145
147
|
def download_data(self, repository, branch, local_file_path, file_name):
|
|
146
148
|
"""
|
|
@@ -44,7 +44,8 @@ class MasterData(ApiClient):
|
|
|
44
44
|
"constant": "constants",
|
|
45
45
|
"broker_config": "broker/config/keys",
|
|
46
46
|
"broker_details": "securities/{}/details",
|
|
47
|
-
"isin_details": "company/details/isin"
|
|
47
|
+
"isin_details": "company/details/isin",
|
|
48
|
+
"shorten_url": "shorten-url"
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
def get_security_details(self, securities: List[str]) -> Optional[Dict[str, Any]]:
|
|
@@ -107,7 +108,8 @@ class MasterData(ApiClient):
|
|
|
107
108
|
Returns:
|
|
108
109
|
Optional[Dict[str, Any]]: Configuration key data or None.
|
|
109
110
|
"""
|
|
110
|
-
logger.info(
|
|
111
|
+
logger.info(
|
|
112
|
+
f"Fetching broker config keys for broker={broker}, product_type={product_type}, category={category}")
|
|
111
113
|
params = {k: v for k, v in {'broker': broker, 'product': product_type, 'category': category}.items() if v}
|
|
112
114
|
response = self._get(url=self.base_url,
|
|
113
115
|
endpoint=self.urls["broker_config"],
|
|
@@ -255,3 +257,23 @@ class MasterData(ApiClient):
|
|
|
255
257
|
|
|
256
258
|
logger.info("Market is closed based on hours and/or holiday check.")
|
|
257
259
|
return False
|
|
260
|
+
|
|
261
|
+
def shorten_url(self, long_url: str) -> Dict[str, Any]:
|
|
262
|
+
"""Shorten a long URL using the configured URL-shortening service.
|
|
263
|
+
|
|
264
|
+
Args:
|
|
265
|
+
long_url (str): The long URL to shorten.
|
|
266
|
+
|
|
267
|
+
Returns:
|
|
268
|
+
dict: A dictionary containing the shortened URL or any error data.
|
|
269
|
+
|
|
270
|
+
Logs:
|
|
271
|
+
Information about the long_url being shortened.
|
|
272
|
+
|
|
273
|
+
"""
|
|
274
|
+
logger.info(f"Shortening URL: {long_url}")
|
|
275
|
+
response = self._post(url=self.base_url,
|
|
276
|
+
endpoint=self.urls["shorten_url"],
|
|
277
|
+
data={"long_url": long_url})
|
|
278
|
+
logger.info(f"Shortening URL {response =}")
|
|
279
|
+
return response.get("data", {})
|
|
@@ -10,7 +10,7 @@ from setuptools import setup, find_packages
|
|
|
10
10
|
|
|
11
11
|
setup(
|
|
12
12
|
name="bw-essentials-core",
|
|
13
|
-
version="0.0.
|
|
13
|
+
version="0.0.7",
|
|
14
14
|
author="InvestorAI",
|
|
15
15
|
author_email="support+tech@investorai.in",
|
|
16
16
|
description="Reusable utilities for S3, email, Data Loch, Microsoft Teams Notifications and more.",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/email_client/__init__.py
RENAMED
|
File without changes
|
{bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/email_client/email_client.py
RENAMED
|
File without changes
|
{bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/notifications/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -158,9 +158,9 @@ class ApiClient:
|
|
|
158
158
|
try:
|
|
159
159
|
response = requests.request(method, formatted_url, headers=self.headers, **kwargs)
|
|
160
160
|
elapsed_time_ms = (time.time() - start) * 1000
|
|
161
|
-
response.raise_for_status()
|
|
162
161
|
json_data = response.json()
|
|
163
162
|
self._log_response(method, formatted_url, response.status_code, elapsed_time_ms, json_data)
|
|
163
|
+
response.raise_for_status()
|
|
164
164
|
return json_data
|
|
165
165
|
except Exception as exc:
|
|
166
166
|
elapsed_time_ms = (time.time() - start) * 1000
|
|
File without changes
|
{bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/services/market_pricer.py
RENAMED
|
File without changes
|
|
File without changes
|
{bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/services/trade_placement.py
RENAMED
|
File without changes
|
{bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials/services/user_portfolio.py
RENAMED
|
File without changes
|
|
File without changes
|
{bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials_core.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials_core.egg-info/requires.txt
RENAMED
|
File without changes
|
{bw_essentials_core-0.0.5 → bw_essentials_core-0.0.7}/bw_essentials_core.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|