bw-essentials-core 0.0.6__py3-none-any.whl → 0.0.8__py3-none-any.whl

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.

@@ -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
@@ -44,7 +44,9 @@ 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",
49
+ "broker_partner_mapping_details": "partner/{}/broker/{}/"
48
50
  }
49
51
 
50
52
  def get_security_details(self, securities: List[str]) -> Optional[Dict[str, Any]]:
@@ -107,7 +109,8 @@ class MasterData(ApiClient):
107
109
  Returns:
108
110
  Optional[Dict[str, Any]]: Configuration key data or None.
109
111
  """
110
- logger.info(f"Fetching broker config keys for broker={broker}, product_type={product_type}, category={category}")
112
+ logger.info(
113
+ f"Fetching broker config keys for broker={broker}, product_type={product_type}, category={category}")
111
114
  params = {k: v for k, v in {'broker': broker, 'product': product_type, 'category': category}.items() if v}
112
115
  response = self._get(url=self.base_url,
113
116
  endpoint=self.urls["broker_config"],
@@ -255,3 +258,44 @@ class MasterData(ApiClient):
255
258
 
256
259
  logger.info("Market is closed based on hours and/or holiday check.")
257
260
  return False
261
+
262
+ def shorten_url(self, long_url: str) -> Dict[str, Any]:
263
+ """Shorten a long URL using the configured URL-shortening service.
264
+
265
+ Args:
266
+ long_url (str): The long URL to shorten.
267
+
268
+ Returns:
269
+ dict: A dictionary containing the shortened URL or any error data.
270
+
271
+ Logs:
272
+ Information about the long_url being shortened.
273
+
274
+ """
275
+ logger.info(f"Shortening URL: {long_url}")
276
+ response = self._post(url=self.base_url,
277
+ endpoint=self.urls["shorten_url"],
278
+ data={"long_url": long_url})
279
+ logger.info(f"Shortening URL {response =}")
280
+ return response.get("data", {})
281
+
282
+ def get_or_create_broker_partner_mapping(self, broker_partner: str, broker: str) -> Dict[str, Any]:
283
+ """
284
+ Fetches or creates a broker-partner mapping from master data constants table.
285
+
286
+ This method sends a GET request to retrieve the mapping details for a given
287
+ broker and broker partner. If the mapping does not exist, the API
288
+ is expected to create it automatically (based on implementation).
289
+
290
+ Parameters:
291
+ - broker_partner (str): The identifier of the broker partner.
292
+ - broker (str): The identifier of the broker.
293
+
294
+ Returns:
295
+ - Dict[str, Any]: The mapping data returned from the service, or an empty
296
+ dictionary if no data is available.
297
+ """
298
+ logger.info(f"In - get_or_create_broker_partner_mapping | broker_partner={broker_partner} broker={broker}")
299
+ response = self._get(url=self.base_url, endpoint=self.urls["broker_partner_mapping_details"].format(broker_partner, broker))
300
+ logger.info(f"Broker partner mapping {response =}")
301
+ return response.get('data', {})
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bw-essentials-core
3
- Version: 0.0.6
3
+ Version: 0.0.8
4
4
  Summary: Reusable utilities for S3, email, Data Loch, Microsoft Teams Notifications and more.
5
5
  Author: InvestorAI
6
6
  Author-email: support+tech@investorai.in
@@ -11,15 +11,15 @@ bw_essentials/notifications/teams_notifications.py,sha256=1tkS3tTJQZ5ByMwK2WXpFg
11
11
  bw_essentials/s3_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  bw_essentials/s3_utils/s3_utils.py,sha256=wzjVrTX22_8PMX86svKFYGMZwgjBHbOaeEsxO-lR7BY,12922
13
13
  bw_essentials/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- bw_essentials/services/api_client.py,sha256=2aTysB4AfHqCILz2o4qOb5Z-GK5GtzhmFe3NFUfAsto,7793
14
+ bw_essentials/services/api_client.py,sha256=74tKxhY_HiVCN3kgtk27a4GNznMaRphAspt9CWecuiY,7793
15
15
  bw_essentials/services/broker.py,sha256=As-VT1MxkCD9p-13dQJDwf0_aEJVA6H0wNqL-EYHO4g,8718
16
16
  bw_essentials/services/market_pricer.py,sha256=WAFcG5JfnqWxjzXRPrMdovPuKqWJIwa3ENvGAyEyjeM,8712
17
- bw_essentials/services/master_data.py,sha256=tJ-OyG9j94Piw2-rByhvkz6aVds4t6b5aprkT1TUPJQ,10068
17
+ bw_essentials/services/master_data.py,sha256=2o_r2gdhIKBeTFgn5IIY-becgCEpYBymO4BKmixdV1g,11987
18
18
  bw_essentials/services/model_portfolio_reporting.py,sha256=iOtm4gyfU8P7C0R1gp6gUJI4ZRxJD5K2GLOalI_gToM,3249
19
19
  bw_essentials/services/trade_placement.py,sha256=PrzeU2XXC9HF1IQ1dMDM_ZHxmC491sOl-JbA6GWPwII,20772
20
20
  bw_essentials/services/user_portfolio.py,sha256=_5M6yPfQt4MXedINBawEoPkb_o7IGzxPeHkvZkoQm8k,16191
21
21
  bw_essentials/services/user_portfolio_reporting.py,sha256=QaZzcw912Uos5ZafEaxLXDmCyetTFiVX3at3cTAv6MA,6003
22
- bw_essentials_core-0.0.6.dist-info/METADATA,sha256=5uvp58qqjWxL1k4YkYVp3awSDACqHf0b5a3dK-ZTeck,7501
23
- bw_essentials_core-0.0.6.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
24
- bw_essentials_core-0.0.6.dist-info/top_level.txt,sha256=gDc5T_y5snwKGXDQUusEus-FEt0RFwG644Yn_58wQOQ,14
25
- bw_essentials_core-0.0.6.dist-info/RECORD,,
22
+ bw_essentials_core-0.0.8.dist-info/METADATA,sha256=GHHKudJ8VIoZ0nOUAeAnpQy0FYXXuPMSTQYA_aa3Wt0,7501
23
+ bw_essentials_core-0.0.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
24
+ bw_essentials_core-0.0.8.dist-info/top_level.txt,sha256=gDc5T_y5snwKGXDQUusEus-FEt0RFwG644Yn_58wQOQ,14
25
+ bw_essentials_core-0.0.8.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.8.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5