bw-essentials-core 0.1.1__tar.gz → 0.1.3__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.
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/PKG-INFO +1 -1
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/data_loch/data_loch.py +16 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/services/notification.py +70 -4
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials_core.egg-info/PKG-INFO +1 -1
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/setup.py +1 -1
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/README.md +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/__init__.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/constants/__init__.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/constants/services.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/data_loch/__init__.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/email_client/__init__.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/email_client/email_client.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/notifications/__init__.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/notifications/teams_notification_schemas.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/notifications/teams_notifications.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/s3_utils/__init__.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/s3_utils/s3_utils.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/services/__init__.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/services/api_client.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/services/broker.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/services/market_pricer.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/services/master_data.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/services/model_portfolio_reporting.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/services/trade_placement.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/services/user_app.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/services/user_portfolio.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/services/user_portfolio_reporting.py +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials_core.egg-info/SOURCES.txt +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials_core.egg-info/dependency_links.txt +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials_core.egg-info/requires.txt +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials_core.egg-info/top_level.txt +0 -0
- {bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/setup.cfg +0 -0
|
@@ -279,3 +279,19 @@ class DataLoch:
|
|
|
279
279
|
prefix = f"{branch}/{server_path}"
|
|
280
280
|
self.s3.delete_files_by_prefix(repository, prefix)
|
|
281
281
|
logger.info(f"Deleted all files under prefix {prefix}")
|
|
282
|
+
|
|
283
|
+
def delete_single_file(self, repository: str, branch: str, server_path: str) -> None:
|
|
284
|
+
"""
|
|
285
|
+
Delete a single file at the specified path in a LakeFS branch.
|
|
286
|
+
|
|
287
|
+
Args:
|
|
288
|
+
repository (str): The name of the LakeFS repository.
|
|
289
|
+
branch (str): The name of the branch within the repository.
|
|
290
|
+
server_path (str): The file path (relative to the branch) to delete.
|
|
291
|
+
"""
|
|
292
|
+
full_path = f"{branch}/{server_path}"
|
|
293
|
+
logger.info(f"Attempting to delete file at path: {full_path} in repository: {repository}")
|
|
294
|
+
|
|
295
|
+
self.s3.delete_file(repository, full_path)
|
|
296
|
+
|
|
297
|
+
logger.info(f"Successfully deleted file: {full_path} from repository: {repository}")
|
{bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/services/notification.py
RENAMED
|
@@ -28,10 +28,11 @@ class NotificationService(ApiClient):
|
|
|
28
28
|
self.name = Services.NOTIFICATION.value
|
|
29
29
|
self.base_url = self.get_base_url(self.name)
|
|
30
30
|
self.urls = {
|
|
31
|
-
"whatsapp": "whatsapp"
|
|
31
|
+
"whatsapp": "whatsapp",
|
|
32
|
+
"email": "email"
|
|
32
33
|
}
|
|
33
34
|
|
|
34
|
-
def _whatsapp(self, title, template, platform, params, to, user_id):
|
|
35
|
+
def _whatsapp(self, title, template, platform, params, to, user_id) -> None:
|
|
35
36
|
"""
|
|
36
37
|
Sends a WhatsApp notification.
|
|
37
38
|
|
|
@@ -66,12 +67,77 @@ class NotificationService(ApiClient):
|
|
|
66
67
|
resp_data = self._post(url=self.base_url, endpoint=self.urls.get('whatsapp'), data=payload)
|
|
67
68
|
logger.info(f"Whatsapp response {resp_data =}")
|
|
68
69
|
|
|
69
|
-
def send_whatsapp(self, template, title, params, to, user_id):
|
|
70
|
-
|
|
70
|
+
def send_whatsapp(self, template, title, params, to, user_id) -> None:
|
|
71
|
+
"""
|
|
72
|
+
|
|
73
|
+
Args:
|
|
74
|
+
template (str): Template for the WhatsApp message.
|
|
75
|
+
title (str): Title of the notification.
|
|
76
|
+
params: Parameters for the notification message.
|
|
77
|
+
to (str): Recipient's whatsapp number.
|
|
78
|
+
user_id (str): The ID of the user receiving the notification.
|
|
71
79
|
|
|
80
|
+
Returns:
|
|
81
|
+
None
|
|
82
|
+
"""
|
|
83
|
+
logger.info(f"In - send_whatsapp_notification {user_id =} {title = } {params = } {to = }")
|
|
72
84
|
self._whatsapp(title=title,
|
|
73
85
|
template=template,
|
|
74
86
|
platform=self._get_env_var(NotificationService.PLATFORM),
|
|
75
87
|
params=params,
|
|
76
88
|
to=to,
|
|
77
89
|
user_id=user_id)
|
|
90
|
+
|
|
91
|
+
def _email(self, title: str, content: str, platform: str, to: str, user_id: str) -> None:
|
|
92
|
+
"""
|
|
93
|
+
Sends an email notification using the internal notification service.
|
|
94
|
+
|
|
95
|
+
Args:
|
|
96
|
+
title (str): The subject or title of the email.
|
|
97
|
+
content (str): The HTML or plain text body of the email.
|
|
98
|
+
platform (str): The platform identifier from which the email is sent (e.g., 'prometheus').
|
|
99
|
+
to (str): Recipient's email address.
|
|
100
|
+
user_id (str): The ID of the user for tracking or logging purposes.
|
|
101
|
+
|
|
102
|
+
Returns:
|
|
103
|
+
None
|
|
104
|
+
|
|
105
|
+
"""
|
|
106
|
+
logger.info(f"In - email {user_id =}, {to =}, {title =}, {platform =}, {content =}")
|
|
107
|
+
payload = {
|
|
108
|
+
"to": to,
|
|
109
|
+
"userId": user_id,
|
|
110
|
+
"platform": platform,
|
|
111
|
+
"title": title,
|
|
112
|
+
"content": content
|
|
113
|
+
}
|
|
114
|
+
logger.info(f"email {payload =}")
|
|
115
|
+
headers = {
|
|
116
|
+
'api-key': self._get_env_var(NotificationService.NOTIFICATION_API_KEY),
|
|
117
|
+
'Content-Type': 'application/json'
|
|
118
|
+
}
|
|
119
|
+
self.set_headers(headers)
|
|
120
|
+
resp_data = self._post(url=self.base_url, endpoint=self.urls.get('email'), json=payload)
|
|
121
|
+
logger.info(f"Email response {resp_data =}")
|
|
122
|
+
|
|
123
|
+
def send_email(self, title: str, content: str, to: str, user_id: str) -> None:
|
|
124
|
+
"""
|
|
125
|
+
Sends an email notification to the specified recipient.
|
|
126
|
+
|
|
127
|
+
Args:
|
|
128
|
+
title (str): The subject or title of the email.
|
|
129
|
+
content (str): The HTML or plain text content of the email.
|
|
130
|
+
to (str): The recipient's email address.
|
|
131
|
+
user_id (str): The ID of the user associated with the notification.
|
|
132
|
+
|
|
133
|
+
Returns:
|
|
134
|
+
None
|
|
135
|
+
"""
|
|
136
|
+
logger.info(f"In - send_email {user_id =}, {title =}, {to =}")
|
|
137
|
+
self._email(
|
|
138
|
+
title=title,
|
|
139
|
+
content=content,
|
|
140
|
+
platform=self._get_env_var(NotificationService.PLATFORM),
|
|
141
|
+
to=to,
|
|
142
|
+
user_id=user_id
|
|
143
|
+
)
|
|
@@ -10,7 +10,7 @@ from setuptools import setup, find_packages
|
|
|
10
10
|
|
|
11
11
|
setup(
|
|
12
12
|
name="bw-essentials-core",
|
|
13
|
-
version="0.1.
|
|
13
|
+
version="0.1.3",
|
|
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.1.1 → bw_essentials_core-0.1.3}/bw_essentials/email_client/__init__.py
RENAMED
|
File without changes
|
{bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/email_client/email_client.py
RENAMED
|
File without changes
|
{bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/notifications/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/services/market_pricer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/services/trade_placement.py
RENAMED
|
File without changes
|
|
File without changes
|
{bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials/services/user_portfolio.py
RENAMED
|
File without changes
|
|
File without changes
|
{bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials_core.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials_core.egg-info/requires.txt
RENAMED
|
File without changes
|
{bw_essentials_core-0.1.1 → bw_essentials_core-0.1.3}/bw_essentials_core.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|