lusid-sdk 2.1.310__py3-none-any.whl → 2.1.319__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.
lusid/__init__.py CHANGED
@@ -185,7 +185,9 @@ from lusid.models.calculation_info import CalculationInfo
185
185
  from lusid.models.calendar import Calendar
186
186
  from lusid.models.calendar_date import CalendarDate
187
187
  from lusid.models.calendar_dependency import CalendarDependency
188
+ from lusid.models.cancel_orders_response import CancelOrdersResponse
188
189
  from lusid.models.cancel_placements_response import CancelPlacementsResponse
190
+ from lusid.models.cancelled_order_result import CancelledOrderResult
189
191
  from lusid.models.cancelled_placement_result import CancelledPlacementResult
190
192
  from lusid.models.cap_floor import CapFloor
191
193
  from lusid.models.capital_distribution_event import CapitalDistributionEvent
@@ -427,6 +429,7 @@ from lusid.models.fund_amount import FundAmount
427
429
  from lusid.models.fund_configuration import FundConfiguration
428
430
  from lusid.models.fund_configuration_properties import FundConfigurationProperties
429
431
  from lusid.models.fund_configuration_request import FundConfigurationRequest
432
+ from lusid.models.fund_pnl_breakdown import FundPnlBreakdown
430
433
  from lusid.models.fund_previous_nav import FundPreviousNAV
431
434
  from lusid.models.fund_properties import FundProperties
432
435
  from lusid.models.fund_request import FundRequest
@@ -928,6 +931,7 @@ from lusid.models.share_class_amount import ShareClassAmount
928
931
  from lusid.models.share_class_breakdown import ShareClassBreakdown
929
932
  from lusid.models.share_class_data import ShareClassData
930
933
  from lusid.models.share_class_details import ShareClassDetails
934
+ from lusid.models.share_class_pnl_breakdown import ShareClassPnlBreakdown
931
935
  from lusid.models.side_configuration_data import SideConfigurationData
932
936
  from lusid.models.side_configuration_data_request import SideConfigurationDataRequest
933
937
  from lusid.models.side_definition import SideDefinition
@@ -1290,7 +1294,9 @@ __all__ = [
1290
1294
  "Calendar",
1291
1295
  "CalendarDate",
1292
1296
  "CalendarDependency",
1297
+ "CancelOrdersResponse",
1293
1298
  "CancelPlacementsResponse",
1299
+ "CancelledOrderResult",
1294
1300
  "CancelledPlacementResult",
1295
1301
  "CapFloor",
1296
1302
  "CapitalDistributionEvent",
@@ -1532,6 +1538,7 @@ __all__ = [
1532
1538
  "FundConfiguration",
1533
1539
  "FundConfigurationProperties",
1534
1540
  "FundConfigurationRequest",
1541
+ "FundPnlBreakdown",
1535
1542
  "FundPreviousNAV",
1536
1543
  "FundProperties",
1537
1544
  "FundRequest",
@@ -2033,6 +2040,7 @@ __all__ = [
2033
2040
  "ShareClassBreakdown",
2034
2041
  "ShareClassData",
2035
2042
  "ShareClassDetails",
2043
+ "ShareClassPnlBreakdown",
2036
2044
  "SideConfigurationData",
2037
2045
  "SideConfigurationDataRequest",
2038
2046
  "SideDefinition",
@@ -28,6 +28,7 @@ from lusid.models.allocation_service_run_response import AllocationServiceRunRes
28
28
  from lusid.models.block_and_orders_create_request import BlockAndOrdersCreateRequest
29
29
  from lusid.models.book_transactions_request import BookTransactionsRequest
30
30
  from lusid.models.book_transactions_response import BookTransactionsResponse
31
+ from lusid.models.cancel_orders_response import CancelOrdersResponse
31
32
  from lusid.models.cancel_placements_response import CancelPlacementsResponse
32
33
  from lusid.models.move_orders_to_different_blocks_request import MoveOrdersToDifferentBlocksRequest
33
34
  from lusid.models.place_blocks_request import PlaceBlocksRequest
@@ -224,6 +225,164 @@ class OrderManagementApi:
224
225
  collection_formats=_collection_formats,
225
226
  _request_auth=_params.get('_request_auth'))
226
227
 
228
+ @overload
229
+ async def cancel_orders(self, request_body : Annotated[Dict[str, ResourceId], Field(..., description="The request containing the ids of the orders to be cancelled.")], **kwargs) -> CancelOrdersResponse: # noqa: E501
230
+ ...
231
+
232
+ @overload
233
+ def cancel_orders(self, request_body : Annotated[Dict[str, ResourceId], Field(..., description="The request containing the ids of the orders to be cancelled.")], async_req: Optional[bool]=True, **kwargs) -> CancelOrdersResponse: # noqa: E501
234
+ ...
235
+
236
+ @validate_arguments
237
+ def cancel_orders(self, request_body : Annotated[Dict[str, ResourceId], Field(..., description="The request containing the ids of the orders to be cancelled.")], async_req: Optional[bool]=None, **kwargs) -> Union[CancelOrdersResponse, Awaitable[CancelOrdersResponse]]: # noqa: E501
238
+ """[EARLY ACCESS] CancelOrders: Cancel existing orders # noqa: E501
239
+
240
+ The response returns both the collection of successfully canceled orders, as well as those that failed. For each failure, a reason is provided. It is important to check the failed set for unsuccessful results. # noqa: E501
241
+ This method makes a synchronous HTTP request by default. To make an
242
+ asynchronous HTTP request, please pass async_req=True
243
+
244
+ >>> thread = api.cancel_orders(request_body, async_req=True)
245
+ >>> result = thread.get()
246
+
247
+ :param request_body: The request containing the ids of the orders to be cancelled. (required)
248
+ :type request_body: Dict[str, ResourceId]
249
+ :param async_req: Whether to execute the request asynchronously.
250
+ :type async_req: bool, optional
251
+ :param _request_timeout: timeout setting for this request.
252
+ If one number provided, it will be total request
253
+ timeout. It can also be a pair (tuple) of
254
+ (connection, read) timeouts.
255
+ :return: Returns the result object.
256
+ If the method is called asynchronously,
257
+ returns the request thread.
258
+ :rtype: CancelOrdersResponse
259
+ """
260
+ kwargs['_return_http_data_only'] = True
261
+ if '_preload_content' in kwargs:
262
+ message = "Error! Please call the cancel_orders_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
263
+ raise ValueError(message)
264
+ if async_req is not None:
265
+ kwargs['async_req'] = async_req
266
+ return self.cancel_orders_with_http_info(request_body, **kwargs) # noqa: E501
267
+
268
+ @validate_arguments
269
+ def cancel_orders_with_http_info(self, request_body : Annotated[Dict[str, ResourceId], Field(..., description="The request containing the ids of the orders to be cancelled.")], **kwargs) -> ApiResponse: # noqa: E501
270
+ """[EARLY ACCESS] CancelOrders: Cancel existing orders # noqa: E501
271
+
272
+ The response returns both the collection of successfully canceled orders, as well as those that failed. For each failure, a reason is provided. It is important to check the failed set for unsuccessful results. # noqa: E501
273
+ This method makes a synchronous HTTP request by default. To make an
274
+ asynchronous HTTP request, please pass async_req=True
275
+
276
+ >>> thread = api.cancel_orders_with_http_info(request_body, async_req=True)
277
+ >>> result = thread.get()
278
+
279
+ :param request_body: The request containing the ids of the orders to be cancelled. (required)
280
+ :type request_body: Dict[str, ResourceId]
281
+ :param async_req: Whether to execute the request asynchronously.
282
+ :type async_req: bool, optional
283
+ :param _preload_content: if False, the ApiResponse.data will
284
+ be set to none and raw_data will store the
285
+ HTTP response body without reading/decoding.
286
+ Default is True.
287
+ :type _preload_content: bool, optional
288
+ :param _return_http_data_only: response data instead of ApiResponse
289
+ object with status code, headers, etc
290
+ :type _return_http_data_only: bool, optional
291
+ :param _request_timeout: timeout setting for this request. If one
292
+ number provided, it will be total request
293
+ timeout. It can also be a pair (tuple) of
294
+ (connection, read) timeouts.
295
+ :param _request_auth: set to override the auth_settings for an a single
296
+ request; this effectively ignores the authentication
297
+ in the spec for a single request.
298
+ :type _request_auth: dict, optional
299
+ :type _content_type: string, optional: force content-type for the request
300
+ :return: Returns the result object.
301
+ If the method is called asynchronously,
302
+ returns the request thread.
303
+ :rtype: tuple(CancelOrdersResponse, status_code(int), headers(HTTPHeaderDict))
304
+ """
305
+
306
+ _params = locals()
307
+
308
+ _all_params = [
309
+ 'request_body'
310
+ ]
311
+ _all_params.extend(
312
+ [
313
+ 'async_req',
314
+ '_return_http_data_only',
315
+ '_preload_content',
316
+ '_request_timeout',
317
+ '_request_auth',
318
+ '_content_type',
319
+ '_headers'
320
+ ]
321
+ )
322
+
323
+ # validate the arguments
324
+ for _key, _val in _params['kwargs'].items():
325
+ if _key not in _all_params:
326
+ raise ApiTypeError(
327
+ "Got an unexpected keyword argument '%s'"
328
+ " to method cancel_orders" % _key
329
+ )
330
+ _params[_key] = _val
331
+ del _params['kwargs']
332
+
333
+ _collection_formats = {}
334
+
335
+ # process the path parameters
336
+ _path_params = {}
337
+
338
+ # process the query parameters
339
+ _query_params = []
340
+ # process the header parameters
341
+ _header_params = dict(_params.get('_headers', {}))
342
+ # process the form parameters
343
+ _form_params = []
344
+ _files = {}
345
+ # process the body parameter
346
+ _body_params = None
347
+ if _params['request_body'] is not None:
348
+ _body_params = _params['request_body']
349
+
350
+ # set the HTTP header `Accept`
351
+ _header_params['Accept'] = self.api_client.select_header_accept(
352
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
353
+
354
+ # set the HTTP header `Content-Type`
355
+ _content_types_list = _params.get('_content_type',
356
+ self.api_client.select_header_content_type(
357
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
358
+ if _content_types_list:
359
+ _header_params['Content-Type'] = _content_types_list
360
+
361
+ # authentication setting
362
+ _auth_settings = ['oauth2'] # noqa: E501
363
+
364
+ _response_types_map = {
365
+ '200': "CancelOrdersResponse",
366
+ '400': "LusidValidationProblemDetails",
367
+ }
368
+
369
+ return self.api_client.call_api(
370
+ '/api/ordermanagement/cancelorders', 'POST',
371
+ _path_params,
372
+ _query_params,
373
+ _header_params,
374
+ body=_body_params,
375
+ post_params=_form_params,
376
+ files=_files,
377
+ response_types_map=_response_types_map,
378
+ auth_settings=_auth_settings,
379
+ async_req=_params.get('async_req'),
380
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
381
+ _preload_content=_params.get('_preload_content', True),
382
+ _request_timeout=_params.get('_request_timeout'),
383
+ collection_formats=_collection_formats,
384
+ _request_auth=_params.get('_request_auth'))
385
+
227
386
  @overload
228
387
  async def cancel_placements(self, request_body : Annotated[Dict[str, ResourceId], Field(..., description="The request containing the ids of the placements to be cancelled.")], **kwargs) -> CancelPlacementsResponse: # noqa: E501
229
388
  ...
lusid/configuration.py CHANGED
@@ -373,7 +373,7 @@ class Configuration:
373
373
  return "Python SDK Debug Report:\n"\
374
374
  "OS: {env}\n"\
375
375
  "Python Version: {pyversion}\n"\
376
- "Version of the API: 0.11.6741\n"\
376
+ "Version of the API: 0.11.6750\n"\
377
377
  "SDK Package Version: {package_version}".\
378
378
  format(env=sys.platform, pyversion=sys.version, package_version=package_version)
379
379
 
@@ -10,7 +10,8 @@ logger = logging.getLogger(__name__)
10
10
 
11
11
  ENVIRONMENT_CONFIG_KEYS = {
12
12
  "token_url": "FBN_TOKEN_URL",
13
- "api_url": "FBN_LUSID_API_URL",
13
+ "api_url": "FBN_LUSID_URL",
14
+ "previous_api_url": "FBN_LUSID_API_URL",
14
15
  "username": "FBN_USERNAME",
15
16
  "password": "FBN_PASSWORD",
16
17
  "client_id": "FBN_CLIENT_ID",
@@ -26,6 +27,7 @@ ENVIRONMENT_CONFIG_KEYS = {
26
27
  SECRETS_FILE_CONFIG_KEYS = {
27
28
  "token_url": "tokenUrl",
28
29
  "api_url": "lusidUrl",
30
+ "previous_api_url": "lusidUrl",
29
31
  "username": "username",
30
32
  "password": "password",
31
33
  "client_id": "clientId",
@@ -96,6 +98,9 @@ class SecretsFileConfigurationLoader:
96
98
  for key, value in SECRETS_FILE_CONFIG_KEYS.items()
97
99
  if "proxy" not in key
98
100
  }
101
+ if not populated_api_config_values["api_url"]:
102
+ populated_api_config_values["api_url"] = populated_api_config_values["previous_api_url"]
103
+ del(populated_api_config_values["previous_api_url"])
99
104
  proxy_config_section = config.get(proxy_config_key, {})
100
105
  populated_proxy_values = {
101
106
  key: proxy_config_section.get(value)
@@ -127,6 +132,9 @@ class EnvironmentVariablesConfigurationLoader:
127
132
  for key, value in ENVIRONMENT_CONFIG_KEYS.items()
128
133
  if "proxy" not in key
129
134
  }
135
+ if not populated_api_config_values["api_url"]:
136
+ populated_api_config_values["api_url"] = populated_api_config_values["previous_api_url"]
137
+ del(populated_api_config_values["previous_api_url"])
130
138
  populated_proxy_values = {
131
139
  key: os.environ.get(value)
132
140
  for key, value in ENVIRONMENT_CONFIG_KEYS.items()
lusid/models/__init__.py CHANGED
@@ -106,7 +106,9 @@ from lusid.models.calculation_info import CalculationInfo
106
106
  from lusid.models.calendar import Calendar
107
107
  from lusid.models.calendar_date import CalendarDate
108
108
  from lusid.models.calendar_dependency import CalendarDependency
109
+ from lusid.models.cancel_orders_response import CancelOrdersResponse
109
110
  from lusid.models.cancel_placements_response import CancelPlacementsResponse
111
+ from lusid.models.cancelled_order_result import CancelledOrderResult
110
112
  from lusid.models.cancelled_placement_result import CancelledPlacementResult
111
113
  from lusid.models.cap_floor import CapFloor
112
114
  from lusid.models.capital_distribution_event import CapitalDistributionEvent
@@ -348,6 +350,7 @@ from lusid.models.fund_amount import FundAmount
348
350
  from lusid.models.fund_configuration import FundConfiguration
349
351
  from lusid.models.fund_configuration_properties import FundConfigurationProperties
350
352
  from lusid.models.fund_configuration_request import FundConfigurationRequest
353
+ from lusid.models.fund_pnl_breakdown import FundPnlBreakdown
351
354
  from lusid.models.fund_previous_nav import FundPreviousNAV
352
355
  from lusid.models.fund_properties import FundProperties
353
356
  from lusid.models.fund_request import FundRequest
@@ -849,6 +852,7 @@ from lusid.models.share_class_amount import ShareClassAmount
849
852
  from lusid.models.share_class_breakdown import ShareClassBreakdown
850
853
  from lusid.models.share_class_data import ShareClassData
851
854
  from lusid.models.share_class_details import ShareClassDetails
855
+ from lusid.models.share_class_pnl_breakdown import ShareClassPnlBreakdown
852
856
  from lusid.models.side_configuration_data import SideConfigurationData
853
857
  from lusid.models.side_configuration_data_request import SideConfigurationDataRequest
854
858
  from lusid.models.side_definition import SideDefinition
@@ -1133,7 +1137,9 @@ __all__ = [
1133
1137
  "Calendar",
1134
1138
  "CalendarDate",
1135
1139
  "CalendarDependency",
1140
+ "CancelOrdersResponse",
1136
1141
  "CancelPlacementsResponse",
1142
+ "CancelledOrderResult",
1137
1143
  "CancelledPlacementResult",
1138
1144
  "CapFloor",
1139
1145
  "CapitalDistributionEvent",
@@ -1375,6 +1381,7 @@ __all__ = [
1375
1381
  "FundConfiguration",
1376
1382
  "FundConfigurationProperties",
1377
1383
  "FundConfigurationRequest",
1384
+ "FundPnlBreakdown",
1378
1385
  "FundPreviousNAV",
1379
1386
  "FundProperties",
1380
1387
  "FundRequest",
@@ -1876,6 +1883,7 @@ __all__ = [
1876
1883
  "ShareClassBreakdown",
1877
1884
  "ShareClassData",
1878
1885
  "ShareClassDetails",
1886
+ "ShareClassPnlBreakdown",
1879
1887
  "SideConfigurationData",
1880
1888
  "SideConfigurationDataRequest",
1881
1889
  "SideDefinition",
@@ -0,0 +1,153 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, Dict, List, Optional
22
+ from pydantic.v1 import BaseModel, Field, StrictStr, conlist
23
+ from lusid.models.cancelled_order_result import CancelledOrderResult
24
+ from lusid.models.error_detail import ErrorDetail
25
+ from lusid.models.link import Link
26
+ from lusid.models.response_meta_data import ResponseMetaData
27
+
28
+ class CancelOrdersResponse(BaseModel):
29
+ """
30
+ CancelOrdersResponse
31
+ """
32
+ href: Optional[StrictStr] = Field(None, description="The specific Uniform Resource Identifier (URI) for this resource at the requested effective and asAt datetime.")
33
+ values: Optional[Dict[str, CancelledOrderResult]] = Field(None, description="The orders which have been successfully cancelled.")
34
+ failed: Optional[Dict[str, ErrorDetail]] = Field(None, description="The orders that could not be cancelled, along with a reason for their failure.")
35
+ metadata: Optional[Dict[str, conlist(ResponseMetaData)]] = Field(None, description="Meta data associated with the cancellation event.")
36
+ links: Optional[conlist(Link)] = None
37
+ __properties = ["href", "values", "failed", "metadata", "links"]
38
+
39
+ class Config:
40
+ """Pydantic configuration"""
41
+ allow_population_by_field_name = True
42
+ validate_assignment = True
43
+
44
+ def to_str(self) -> str:
45
+ """Returns the string representation of the model using alias"""
46
+ return pprint.pformat(self.dict(by_alias=True))
47
+
48
+ def to_json(self) -> str:
49
+ """Returns the JSON representation of the model using alias"""
50
+ return json.dumps(self.to_dict())
51
+
52
+ @classmethod
53
+ def from_json(cls, json_str: str) -> CancelOrdersResponse:
54
+ """Create an instance of CancelOrdersResponse from a JSON string"""
55
+ return cls.from_dict(json.loads(json_str))
56
+
57
+ def to_dict(self):
58
+ """Returns the dictionary representation of the model using alias"""
59
+ _dict = self.dict(by_alias=True,
60
+ exclude={
61
+ },
62
+ exclude_none=True)
63
+ # override the default output from pydantic by calling `to_dict()` of each value in values (dict)
64
+ _field_dict = {}
65
+ if self.values:
66
+ for _key in self.values:
67
+ if self.values[_key]:
68
+ _field_dict[_key] = self.values[_key].to_dict()
69
+ _dict['values'] = _field_dict
70
+ # override the default output from pydantic by calling `to_dict()` of each value in failed (dict)
71
+ _field_dict = {}
72
+ if self.failed:
73
+ for _key in self.failed:
74
+ if self.failed[_key]:
75
+ _field_dict[_key] = self.failed[_key].to_dict()
76
+ _dict['failed'] = _field_dict
77
+ # override the default output from pydantic by calling `to_dict()` of each value in metadata (dict of array)
78
+ _field_dict_of_array = {}
79
+ if self.metadata:
80
+ for _key in self.metadata:
81
+ if self.metadata[_key]:
82
+ _field_dict_of_array[_key] = [
83
+ _item.to_dict() for _item in self.metadata[_key]
84
+ ]
85
+ _dict['metadata'] = _field_dict_of_array
86
+ # override the default output from pydantic by calling `to_dict()` of each item in links (list)
87
+ _items = []
88
+ if self.links:
89
+ for _item in self.links:
90
+ if _item:
91
+ _items.append(_item.to_dict())
92
+ _dict['links'] = _items
93
+ # set to None if href (nullable) is None
94
+ # and __fields_set__ contains the field
95
+ if self.href is None and "href" in self.__fields_set__:
96
+ _dict['href'] = None
97
+
98
+ # set to None if values (nullable) is None
99
+ # and __fields_set__ contains the field
100
+ if self.values is None and "values" in self.__fields_set__:
101
+ _dict['values'] = None
102
+
103
+ # set to None if failed (nullable) is None
104
+ # and __fields_set__ contains the field
105
+ if self.failed is None and "failed" in self.__fields_set__:
106
+ _dict['failed'] = None
107
+
108
+ # set to None if metadata (nullable) is None
109
+ # and __fields_set__ contains the field
110
+ if self.metadata is None and "metadata" in self.__fields_set__:
111
+ _dict['metadata'] = None
112
+
113
+ # set to None if links (nullable) is None
114
+ # and __fields_set__ contains the field
115
+ if self.links is None and "links" in self.__fields_set__:
116
+ _dict['links'] = None
117
+
118
+ return _dict
119
+
120
+ @classmethod
121
+ def from_dict(cls, obj: dict) -> CancelOrdersResponse:
122
+ """Create an instance of CancelOrdersResponse from a dict"""
123
+ if obj is None:
124
+ return None
125
+
126
+ if not isinstance(obj, dict):
127
+ return CancelOrdersResponse.parse_obj(obj)
128
+
129
+ _obj = CancelOrdersResponse.parse_obj({
130
+ "href": obj.get("href"),
131
+ "values": dict(
132
+ (_k, CancelledOrderResult.from_dict(_v))
133
+ for _k, _v in obj.get("values").items()
134
+ )
135
+ if obj.get("values") is not None
136
+ else None,
137
+ "failed": dict(
138
+ (_k, ErrorDetail.from_dict(_v))
139
+ for _k, _v in obj.get("failed").items()
140
+ )
141
+ if obj.get("failed") is not None
142
+ else None,
143
+ "metadata": dict(
144
+ (_k,
145
+ [ResponseMetaData.from_dict(_item) for _item in _v]
146
+ if _v is not None
147
+ else None
148
+ )
149
+ for _k, _v in obj.get("metadata").items()
150
+ ),
151
+ "links": [Link.from_dict(_item) for _item in obj.get("links")] if obj.get("links") is not None else None
152
+ })
153
+ return _obj
@@ -0,0 +1,73 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, Dict, Optional
22
+ from pydantic.v1 import BaseModel, Field
23
+ from lusid.models.order import Order
24
+
25
+ class CancelledOrderResult(BaseModel):
26
+ """
27
+ CancelledOrderResult
28
+ """
29
+ order_state: Optional[Order] = Field(None, alias="orderState")
30
+ __properties = ["orderState"]
31
+
32
+ class Config:
33
+ """Pydantic configuration"""
34
+ allow_population_by_field_name = True
35
+ validate_assignment = True
36
+
37
+ def to_str(self) -> str:
38
+ """Returns the string representation of the model using alias"""
39
+ return pprint.pformat(self.dict(by_alias=True))
40
+
41
+ def to_json(self) -> str:
42
+ """Returns the JSON representation of the model using alias"""
43
+ return json.dumps(self.to_dict())
44
+
45
+ @classmethod
46
+ def from_json(cls, json_str: str) -> CancelledOrderResult:
47
+ """Create an instance of CancelledOrderResult from a JSON string"""
48
+ return cls.from_dict(json.loads(json_str))
49
+
50
+ def to_dict(self):
51
+ """Returns the dictionary representation of the model using alias"""
52
+ _dict = self.dict(by_alias=True,
53
+ exclude={
54
+ },
55
+ exclude_none=True)
56
+ # override the default output from pydantic by calling `to_dict()` of order_state
57
+ if self.order_state:
58
+ _dict['orderState'] = self.order_state.to_dict()
59
+ return _dict
60
+
61
+ @classmethod
62
+ def from_dict(cls, obj: dict) -> CancelledOrderResult:
63
+ """Create an instance of CancelledOrderResult from a dict"""
64
+ if obj is None:
65
+ return None
66
+
67
+ if not isinstance(obj, dict):
68
+ return CancelledOrderResult.parse_obj(obj)
69
+
70
+ _obj = CancelledOrderResult.parse_obj({
71
+ "order_state": Order.from_dict(obj.get("orderState")) if obj.get("orderState") is not None else None
72
+ })
73
+ return _obj
@@ -0,0 +1,110 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, Dict
22
+ from pydantic.v1 import BaseModel, Field
23
+ from lusid.models.fund_amount import FundAmount
24
+
25
+ class FundPnlBreakdown(BaseModel):
26
+ """
27
+ The breakdown of PnL for a Fund on a specified date. # noqa: E501
28
+ """
29
+ non_class_specific_pnl: Dict[str, FundAmount] = Field(..., alias="nonClassSpecificPnl", description="Bucket of detail for PnL within the queried period that is not specific to any share class.")
30
+ aggregated_class_pnl: Dict[str, FundAmount] = Field(..., alias="aggregatedClassPnl", description="Bucket of detail for the sum of class PnL across all share classes in a fund and within the queried period.")
31
+ total_pnl: Dict[str, FundAmount] = Field(..., alias="totalPnl", description="Bucket of detail for the sum of class PnL and PnL not specific to a class within the queried period.")
32
+ __properties = ["nonClassSpecificPnl", "aggregatedClassPnl", "totalPnl"]
33
+
34
+ class Config:
35
+ """Pydantic configuration"""
36
+ allow_population_by_field_name = True
37
+ validate_assignment = True
38
+
39
+ def to_str(self) -> str:
40
+ """Returns the string representation of the model using alias"""
41
+ return pprint.pformat(self.dict(by_alias=True))
42
+
43
+ def to_json(self) -> str:
44
+ """Returns the JSON representation of the model using alias"""
45
+ return json.dumps(self.to_dict())
46
+
47
+ @classmethod
48
+ def from_json(cls, json_str: str) -> FundPnlBreakdown:
49
+ """Create an instance of FundPnlBreakdown from a JSON string"""
50
+ return cls.from_dict(json.loads(json_str))
51
+
52
+ def to_dict(self):
53
+ """Returns the dictionary representation of the model using alias"""
54
+ _dict = self.dict(by_alias=True,
55
+ exclude={
56
+ },
57
+ exclude_none=True)
58
+ # override the default output from pydantic by calling `to_dict()` of each value in non_class_specific_pnl (dict)
59
+ _field_dict = {}
60
+ if self.non_class_specific_pnl:
61
+ for _key in self.non_class_specific_pnl:
62
+ if self.non_class_specific_pnl[_key]:
63
+ _field_dict[_key] = self.non_class_specific_pnl[_key].to_dict()
64
+ _dict['nonClassSpecificPnl'] = _field_dict
65
+ # override the default output from pydantic by calling `to_dict()` of each value in aggregated_class_pnl (dict)
66
+ _field_dict = {}
67
+ if self.aggregated_class_pnl:
68
+ for _key in self.aggregated_class_pnl:
69
+ if self.aggregated_class_pnl[_key]:
70
+ _field_dict[_key] = self.aggregated_class_pnl[_key].to_dict()
71
+ _dict['aggregatedClassPnl'] = _field_dict
72
+ # override the default output from pydantic by calling `to_dict()` of each value in total_pnl (dict)
73
+ _field_dict = {}
74
+ if self.total_pnl:
75
+ for _key in self.total_pnl:
76
+ if self.total_pnl[_key]:
77
+ _field_dict[_key] = self.total_pnl[_key].to_dict()
78
+ _dict['totalPnl'] = _field_dict
79
+ return _dict
80
+
81
+ @classmethod
82
+ def from_dict(cls, obj: dict) -> FundPnlBreakdown:
83
+ """Create an instance of FundPnlBreakdown from a dict"""
84
+ if obj is None:
85
+ return None
86
+
87
+ if not isinstance(obj, dict):
88
+ return FundPnlBreakdown.parse_obj(obj)
89
+
90
+ _obj = FundPnlBreakdown.parse_obj({
91
+ "non_class_specific_pnl": dict(
92
+ (_k, FundAmount.from_dict(_v))
93
+ for _k, _v in obj.get("nonClassSpecificPnl").items()
94
+ )
95
+ if obj.get("nonClassSpecificPnl") is not None
96
+ else None,
97
+ "aggregated_class_pnl": dict(
98
+ (_k, FundAmount.from_dict(_v))
99
+ for _k, _v in obj.get("aggregatedClassPnl").items()
100
+ )
101
+ if obj.get("aggregatedClassPnl") is not None
102
+ else None,
103
+ "total_pnl": dict(
104
+ (_k, FundAmount.from_dict(_v))
105
+ for _k, _v in obj.get("totalPnl").items()
106
+ )
107
+ if obj.get("totalPnl") is not None
108
+ else None
109
+ })
110
+ return _obj
@@ -22,6 +22,7 @@ from typing import Any, Dict, Optional, Union
22
22
  from pydantic.v1 import BaseModel, Field, StrictFloat, StrictInt
23
23
  from lusid.models.fee_accrual import FeeAccrual
24
24
  from lusid.models.fund_amount import FundAmount
25
+ from lusid.models.fund_pnl_breakdown import FundPnlBreakdown
25
26
  from lusid.models.previous_fund_valuation_point_data import PreviousFundValuationPointData
26
27
  from lusid.models.unitisation_data import UnitisationData
27
28
 
@@ -31,7 +32,7 @@ class FundValuationPointData(BaseModel):
31
32
  """
32
33
  back_out: Dict[str, FundAmount] = Field(..., alias="backOut", description="Bucket of detail for the Valuation Point where data points have been 'backed out'.")
33
34
  dealing: Dict[str, FundAmount] = Field(..., description="Bucket of detail for any 'Dealing' that has occured inside the queried period.")
34
- pn_l: Dict[str, FundAmount] = Field(..., alias="pnL", description="Bucket of detail for 'PnL' that has occured inside the queried period.")
35
+ pn_l: FundPnlBreakdown = Field(..., alias="pnL")
35
36
  gav: Union[StrictFloat, StrictInt] = Field(..., description="The Gross Asset Value of the Fund or Share Class at the Valuation Point. This is effectively a summation of all Trial balance entries linked to accounts of types 'Asset' and 'Liabilities'.")
36
37
  fees: Dict[str, FeeAccrual] = Field(..., description="Bucket of detail for any 'Fees' that have been charged in the selected period.")
37
38
  nav: Union[StrictFloat, StrictInt] = Field(..., description="The Net Asset Value of the Fund or Share Class at the Valuation Point. This represents the GAV with any fees applied in the period.")
@@ -78,13 +79,9 @@ class FundValuationPointData(BaseModel):
78
79
  if self.dealing[_key]:
79
80
  _field_dict[_key] = self.dealing[_key].to_dict()
80
81
  _dict['dealing'] = _field_dict
81
- # override the default output from pydantic by calling `to_dict()` of each value in pn_l (dict)
82
- _field_dict = {}
82
+ # override the default output from pydantic by calling `to_dict()` of pn_l
83
83
  if self.pn_l:
84
- for _key in self.pn_l:
85
- if self.pn_l[_key]:
86
- _field_dict[_key] = self.pn_l[_key].to_dict()
87
- _dict['pnL'] = _field_dict
84
+ _dict['pnL'] = self.pn_l.to_dict()
88
85
  # override the default output from pydantic by calling `to_dict()` of each value in fees (dict)
89
86
  _field_dict = {}
90
87
  if self.fees:
@@ -134,12 +131,7 @@ class FundValuationPointData(BaseModel):
134
131
  )
135
132
  if obj.get("dealing") is not None
136
133
  else None,
137
- "pn_l": dict(
138
- (_k, FundAmount.from_dict(_v))
139
- for _k, _v in obj.get("pnL").items()
140
- )
141
- if obj.get("pnL") is not None
142
- else None,
134
+ "pn_l": FundPnlBreakdown.from_dict(obj.get("pnL")) if obj.get("pnL") is not None else None,
143
135
  "gav": obj.get("gav"),
144
136
  "fees": dict(
145
137
  (_k, FeeAccrual.from_dict(_v))
@@ -24,6 +24,7 @@ from lusid.models.fee_accrual import FeeAccrual
24
24
  from lusid.models.multi_currency_amounts import MultiCurrencyAmounts
25
25
  from lusid.models.previous_share_class_breakdown import PreviousShareClassBreakdown
26
26
  from lusid.models.share_class_amount import ShareClassAmount
27
+ from lusid.models.share_class_pnl_breakdown import ShareClassPnlBreakdown
27
28
  from lusid.models.unitisation_data import UnitisationData
28
29
 
29
30
  class ShareClassBreakdown(BaseModel):
@@ -32,7 +33,7 @@ class ShareClassBreakdown(BaseModel):
32
33
  """
33
34
  back_out: Dict[str, ShareClassAmount] = Field(..., alias="backOut", description="Bucket of detail for the Valuation Point where data points have been 'backed out'.")
34
35
  dealing: Dict[str, ShareClassAmount] = Field(..., description="Bucket of detail for any 'Dealing' that has occured inside the queried period.")
35
- pn_l: Dict[str, ShareClassAmount] = Field(..., alias="pnL", description="Bucket of detail for 'PnL' that has occured inside the queried period.")
36
+ pn_l: ShareClassPnlBreakdown = Field(..., alias="pnL")
36
37
  gav: MultiCurrencyAmounts = Field(...)
37
38
  fees: Dict[str, FeeAccrual] = Field(..., description="Bucket of detail for any 'Fees' that have been charged in the selected period.")
38
39
  nav: MultiCurrencyAmounts = Field(...)
@@ -81,13 +82,9 @@ class ShareClassBreakdown(BaseModel):
81
82
  if self.dealing[_key]:
82
83
  _field_dict[_key] = self.dealing[_key].to_dict()
83
84
  _dict['dealing'] = _field_dict
84
- # override the default output from pydantic by calling `to_dict()` of each value in pn_l (dict)
85
- _field_dict = {}
85
+ # override the default output from pydantic by calling `to_dict()` of pn_l
86
86
  if self.pn_l:
87
- for _key in self.pn_l:
88
- if self.pn_l[_key]:
89
- _field_dict[_key] = self.pn_l[_key].to_dict()
90
- _dict['pnL'] = _field_dict
87
+ _dict['pnL'] = self.pn_l.to_dict()
91
88
  # override the default output from pydantic by calling `to_dict()` of gav
92
89
  if self.gav:
93
90
  _dict['gav'] = self.gav.to_dict()
@@ -143,12 +140,7 @@ class ShareClassBreakdown(BaseModel):
143
140
  )
144
141
  if obj.get("dealing") is not None
145
142
  else None,
146
- "pn_l": dict(
147
- (_k, ShareClassAmount.from_dict(_v))
148
- for _k, _v in obj.get("pnL").items()
149
- )
150
- if obj.get("pnL") is not None
151
- else None,
143
+ "pn_l": ShareClassPnlBreakdown.from_dict(obj.get("pnL")) if obj.get("pnL") is not None else None,
152
144
  "gav": MultiCurrencyAmounts.from_dict(obj.get("gav")) if obj.get("gav") is not None else None,
153
145
  "fees": dict(
154
146
  (_k, FeeAccrual.from_dict(_v))
@@ -0,0 +1,110 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, Dict
22
+ from pydantic.v1 import BaseModel, Field
23
+ from lusid.models.share_class_amount import ShareClassAmount
24
+
25
+ class ShareClassPnlBreakdown(BaseModel):
26
+ """
27
+ The breakdown of PnL for a Share Class on a specified date. # noqa: E501
28
+ """
29
+ apportioned_non_class_specific_pnl: Dict[str, ShareClassAmount] = Field(..., alias="apportionedNonClassSpecificPnl", description="Bucket of detail for PnL within the queried period not explicitly allocated to any share class but has been apportioned to the share class.")
30
+ class_pnl: Dict[str, ShareClassAmount] = Field(..., alias="classPnl", description="Bucket of detail for PnL specific to the share class within the queried period.")
31
+ total_pnl: Dict[str, ShareClassAmount] = Field(..., alias="totalPnl", description="Bucket of detail for the sum of class PnL and PnL not specific to a class within the queried period.")
32
+ __properties = ["apportionedNonClassSpecificPnl", "classPnl", "totalPnl"]
33
+
34
+ class Config:
35
+ """Pydantic configuration"""
36
+ allow_population_by_field_name = True
37
+ validate_assignment = True
38
+
39
+ def to_str(self) -> str:
40
+ """Returns the string representation of the model using alias"""
41
+ return pprint.pformat(self.dict(by_alias=True))
42
+
43
+ def to_json(self) -> str:
44
+ """Returns the JSON representation of the model using alias"""
45
+ return json.dumps(self.to_dict())
46
+
47
+ @classmethod
48
+ def from_json(cls, json_str: str) -> ShareClassPnlBreakdown:
49
+ """Create an instance of ShareClassPnlBreakdown from a JSON string"""
50
+ return cls.from_dict(json.loads(json_str))
51
+
52
+ def to_dict(self):
53
+ """Returns the dictionary representation of the model using alias"""
54
+ _dict = self.dict(by_alias=True,
55
+ exclude={
56
+ },
57
+ exclude_none=True)
58
+ # override the default output from pydantic by calling `to_dict()` of each value in apportioned_non_class_specific_pnl (dict)
59
+ _field_dict = {}
60
+ if self.apportioned_non_class_specific_pnl:
61
+ for _key in self.apportioned_non_class_specific_pnl:
62
+ if self.apportioned_non_class_specific_pnl[_key]:
63
+ _field_dict[_key] = self.apportioned_non_class_specific_pnl[_key].to_dict()
64
+ _dict['apportionedNonClassSpecificPnl'] = _field_dict
65
+ # override the default output from pydantic by calling `to_dict()` of each value in class_pnl (dict)
66
+ _field_dict = {}
67
+ if self.class_pnl:
68
+ for _key in self.class_pnl:
69
+ if self.class_pnl[_key]:
70
+ _field_dict[_key] = self.class_pnl[_key].to_dict()
71
+ _dict['classPnl'] = _field_dict
72
+ # override the default output from pydantic by calling `to_dict()` of each value in total_pnl (dict)
73
+ _field_dict = {}
74
+ if self.total_pnl:
75
+ for _key in self.total_pnl:
76
+ if self.total_pnl[_key]:
77
+ _field_dict[_key] = self.total_pnl[_key].to_dict()
78
+ _dict['totalPnl'] = _field_dict
79
+ return _dict
80
+
81
+ @classmethod
82
+ def from_dict(cls, obj: dict) -> ShareClassPnlBreakdown:
83
+ """Create an instance of ShareClassPnlBreakdown from a dict"""
84
+ if obj is None:
85
+ return None
86
+
87
+ if not isinstance(obj, dict):
88
+ return ShareClassPnlBreakdown.parse_obj(obj)
89
+
90
+ _obj = ShareClassPnlBreakdown.parse_obj({
91
+ "apportioned_non_class_specific_pnl": dict(
92
+ (_k, ShareClassAmount.from_dict(_v))
93
+ for _k, _v in obj.get("apportionedNonClassSpecificPnl").items()
94
+ )
95
+ if obj.get("apportionedNonClassSpecificPnl") is not None
96
+ else None,
97
+ "class_pnl": dict(
98
+ (_k, ShareClassAmount.from_dict(_v))
99
+ for _k, _v in obj.get("classPnl").items()
100
+ )
101
+ if obj.get("classPnl") is not None
102
+ else None,
103
+ "total_pnl": dict(
104
+ (_k, ShareClassAmount.from_dict(_v))
105
+ for _k, _v in obj.get("totalPnl").items()
106
+ )
107
+ if obj.get("totalPnl") is not None
108
+ else None
109
+ })
110
+ return _obj
@@ -29,8 +29,9 @@ class TemplateField(BaseModel):
29
29
  specificity: constr(strict=True, min_length=1) = Field(...)
30
30
  description: constr(strict=True, min_length=1) = Field(...)
31
31
  type: constr(strict=True, min_length=1) = Field(...)
32
+ availability: constr(strict=True, min_length=1) = Field(...)
32
33
  usage: conlist(StrictStr) = Field(...)
33
- __properties = ["fieldName", "specificity", "description", "type", "usage"]
34
+ __properties = ["fieldName", "specificity", "description", "type", "availability", "usage"]
34
35
 
35
36
  class Config:
36
37
  """Pydantic configuration"""
@@ -72,6 +73,7 @@ class TemplateField(BaseModel):
72
73
  "specificity": obj.get("specificity"),
73
74
  "description": obj.get("description"),
74
75
  "type": obj.get("type"),
76
+ "availability": obj.get("availability"),
75
77
  "usage": obj.get("usage")
76
78
  })
77
79
  return _obj
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lusid-sdk
3
- Version: 2.1.310
3
+ Version: 2.1.319
4
4
  Summary: LUSID API
5
5
  Home-page: https://github.com/finbourne/lusid-sdk-python
6
6
  License: MIT
@@ -24,194 +24,7 @@ Requires-Dist: urllib3 (>=1.25.3,<2.0.0)
24
24
  Project-URL: Repository, https://github.com/finbourne/lusid-sdk-python
25
25
  Description-Content-Type: text/markdown
26
26
 
27
- # lusid-sdk
28
- FINBOURNE Technology
29
-
30
- This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
31
-
32
- - API version: 0.11.6741
33
- - Package version: 2.1.310
34
- - Build package: org.openapitools.codegen.languages.PythonClientCodegen
35
- For more information, please visit [https://www.finbourne.com](https://www.finbourne.com)
36
-
37
- ## Requirements.
38
-
39
- Python 3.7+
40
-
41
- ## Installation & Usage
42
- ### pip install
43
-
44
- If the python package is hosted on a repository, you can install directly using:
45
-
46
- ```sh
47
- pip install git+https://github.com/finbourne/lusid-sdk-python.git
48
- ```
49
- (you may need to run `pip` with root permission: `sudo pip install git+https://github.com/finbourne/lusid-sdk-python.git`)
50
-
51
- Then import the package:
52
- ```python
53
- import lusid
54
- ```
55
-
56
- ### Setuptools
57
-
58
- Install via [Setuptools](http://pypi.python.org/pypi/setuptools).
59
-
60
- ```sh
61
- python setup.py install --user
62
- ```
63
- (or `sudo python setup.py install` to install the package for all users)
64
-
65
- Then import the package:
66
- ```python
67
- import lusid
68
- ```
69
-
70
- ### Tests
71
-
72
- Execute `pytest` to run the tests.
73
-
74
- ## Getting Started
75
-
76
- You'll need to provide some configuration to connect to the lusid application.
77
- These can be provided using a secrets file or environment variables.
78
-
79
- ### Environment variables
80
-
81
- In order to use [short lived access tokens](https://support.lusid.com/knowledgebase/article/KA-01654/en-us) you will need to have appropriate values set for the following environment variables:
82
-
83
- ```
84
- FBN_TOKEN_URL,
85
- FBN_LUSID_API_URL,
86
- FBN_USERNAME,
87
- FBN_PASSWORD,
88
- FBN_CLIENT_ID,
89
- FBN_CLIENT_SECRET
90
- ```
91
-
92
- To use a long lived Personal Access Token, you must provide the following environment variables:
93
- ```
94
- FBN_LUSID_API_URL,
95
- FBN_ACCESS_TOKEN
96
- ```
97
-
98
- You can send your requests to lusid via a proxy, by setting `FBN_PROXY_ADDRESS`.
99
- If your proxy has basic auth enabled, you must akso supply `FBN_PROXY_USERNAME` and `FBN_PROXY_PASSWORD`
100
-
101
- ### Secrets file
102
-
103
- In order to use [short lived access tokens](https://support.lusid.com/knowledgebase/article/KA-01654/en-us) you will need to have appropriate values set in a `secrets.json` file in the same folder as your script.
104
-
105
- ```
106
- {
107
- "api":
108
- {
109
- "tokenUrl":"<your-token-url>",
110
- "lusidUrl":"<FINBOURNE-application-url>",
111
- "username":"<your-username>",
112
- "password":"<your-password>",
113
- "clientId":"<your-client-id>",
114
- "clientSecret":"<your-client-secret>",
115
- }
116
- }
117
- ```
118
-
119
- To use a long lived Personal Access Token, you must provide a `secrets.json` with the following variables:
120
- ```
121
- {
122
- "api":
123
- {
124
- "lusidUrl":"<FINBOURNE-application-url>",
125
- "accessToken":"<your-access-token>"
126
- }
127
- }
128
- ```
129
-
130
- You can send your requests to lusid via a proxy, by adding a proxy section to your `secrets.json`.
131
- If your proxy has basic auth enabled, you must also supply a `username` and `password` in this section.
132
-
133
- ```
134
- {
135
- "api":
136
- {
137
- "lusidUrl":"<FINBOURNE-application-url>",
138
- "accessToken":"<your-access-token>"
139
- },
140
- "proxy":
141
- {
142
- "address":"<your-proxy-address>",
143
- "username":"<your-proxy-username>",
144
- "password":"<your-proxy-password>"
145
- }
146
- }
147
- ```
148
-
149
- ### Using the SDK
150
-
151
- Please follow the [installation procedure](#installation--usage) and then run the following:
152
-
153
- ```python
154
-
155
- import time
156
- import lusid
157
- from lusid.exceptions import ApiException
158
- from pprint import pprint
159
-
160
- import os
161
- from lusid import (
162
- ApiClientFactory,
163
- AborApi,
164
- EnvironmentVariablesConfigurationLoader,
165
- SecretsFileConfigurationLoader,
166
- ArgsConfigurationLoader
167
- )
168
-
169
- # Use the lusid ApiClientFactory to build Api instances with a configured api client
170
- # By default this will read config from environment variables
171
- # Then from a secrets.json file found in the current working directory
172
- api_client_factory = ApiClientFactory()
173
-
174
- # The ApiClientFactory can be passed an iterable of configuration loaders to read configuration from
175
-
176
- api_url = "https://www.lusid.com/api"
177
- # Path to a secrets.json file containing authentication credentials
178
- # See https://support.lusid.com/knowledgebase/article/KA-01667/en-us
179
- # for a detailed guide to setting up the SDK make authenticated calls to LUSID APIs
180
- secrets_path = os.getenv("FBN_SECRETS_PATH")
181
- app_name="LusidJupyterNotebook"
182
-
183
- config_loaders = [
184
- EnvironmentVariablesConfigurationLoader(),
185
- SecretsFileConfigurationLoader(api_secrets_file=secrets_path),
186
- ArgsConfigurationLoader(api_url=api_url, app_name=app_name)
187
- ]
188
- api_client_factory = ApiClientFactory(config_loaders=config_loaders)
189
-
190
-
191
- # The client must configure the authentication and authorization parameters
192
- # in accordance with the API server security policy.
193
-
194
-
195
-
196
- # Enter a context with an instance of the ApiClientFactory to ensure the connection pool is closed after use
197
- async with api_client_factory:
198
- # Create an instance of the API class
199
- api_instance = api_client_factory.build(AborApi)
200
- scope = 'scope_example' # str | The scope of the Abor.
201
- code = 'code_example' # str | The code of the Abor.
202
- diary_entry_code = 'diary_entry_code_example' # str | Diary entry code
203
- diary_entry_request = {"name":"2023_Q1","status":"Estimate","effectiveAt":"2023-04-02T15:10:10.0000000+00:00","queryAsAt":"2023-04-15T15:10:10.0000000+00:00","properties":{"DiaryEntry/AccountingDiary/Reports":{"key":"DiaryEntry/AccountingDiary/Reports","value":{"labelValue":"Some comments"}}}} # DiaryEntryRequest | The diary entry to add.
204
-
205
- try:
206
- # [EXPERIMENTAL] AddDiaryEntry: Add a diary entry to the specified Abor.
207
- api_response = await api_instance.add_diary_entry(scope, code, diary_entry_code, diary_entry_request)
208
- print("The response of AborApi->add_diary_entry:\n")
209
- pprint(api_response)
210
- except ApiException as e:
211
- print("Exception when calling AborApi->add_diary_entry: %s\n" % e)
212
-
213
- ```
214
-
27
+ <a id="documentation-for-api-endpoints"></a>
215
28
  ## Documentation for API Endpoints
216
29
 
217
30
  All URIs are relative to *https://www.lusid.com/api*
@@ -240,7 +53,7 @@ Class | Method | HTTP request | Description
240
53
  *AddressKeyDefinitionApi* | [**get_address_key_definition**](docs/AddressKeyDefinitionApi.md#get_address_key_definition) | **GET** /api/addresskeydefinitions/{key} | [EARLY ACCESS] GetAddressKeyDefinition: Get an AddressKeyDefinition.
241
54
  *AddressKeyDefinitionApi* | [**list_address_key_definitions**](docs/AddressKeyDefinitionApi.md#list_address_key_definitions) | **GET** /api/addresskeydefinitions | [EARLY ACCESS] ListAddressKeyDefinitions: List AddressKeyDefinitions.
242
55
  *AggregationApi* | [**generate_configuration_recipe**](docs/AggregationApi.md#generate_configuration_recipe) | **POST** /api/aggregation/{scope}/{code}/$generateconfigurationrecipe | [EXPERIMENTAL] GenerateConfigurationRecipe: Generates a recipe sufficient to perform valuations for the given portfolio.
243
- *AggregationApi* | [**get_queryable_keys**](docs/AggregationApi.md#get_queryable_keys) | **GET** /api/results/queryable/keys | GetQueryableKeys: Query the set of supported \&quot;addresses\&quot; that can be queried from the aggregation endpoint.
56
+ *AggregationApi* | [**get_queryable_keys**](docs/AggregationApi.md#get_queryable_keys) | **GET** /api/results/queryable/keys | GetQueryableKeys: Query the set of supported \"addresses\" that can be queried from the aggregation endpoint.
244
57
  *AggregationApi* | [**get_valuation**](docs/AggregationApi.md#get_valuation) | **POST** /api/aggregation/$valuation | GetValuation: Perform valuation for a list of portfolios and/or portfolio groups
245
58
  *AggregationApi* | [**get_valuation_of_weighted_instruments**](docs/AggregationApi.md#get_valuation_of_weighted_instruments) | **POST** /api/aggregation/$valuationinlined | GetValuationOfWeightedInstruments: Perform valuation for an inlined portfolio
246
59
  *AllocationsApi* | [**delete_allocation**](docs/AllocationsApi.md#delete_allocation) | **DELETE** /api/allocations/{scope}/{code} | [EARLY ACCESS] DeleteAllocation: Delete allocation
@@ -268,7 +81,7 @@ Class | Method | HTTP request | Description
268
81
  *CalendarsApi* | [**generate_schedule**](docs/CalendarsApi.md#generate_schedule) | **POST** /api/calendars/schedule/{scope} | [EARLY ACCESS] GenerateSchedule: Generate an ordered schedule of dates.
269
82
  *CalendarsApi* | [**get_calendar**](docs/CalendarsApi.md#get_calendar) | **GET** /api/calendars/generic/{scope}/{code} | GetCalendar: Get a calendar in its generic form
270
83
  *CalendarsApi* | [**get_dates**](docs/CalendarsApi.md#get_dates) | **GET** /api/calendars/generic/{scope}/{code}/dates | [EARLY ACCESS] GetDates: Get dates for a specific calendar
271
- *CalendarsApi* | [**is_business_date_time**](docs/CalendarsApi.md#is_business_date_time) | **GET** /api/calendars/businessday/{scope}/{code} | [EARLY ACCESS] IsBusinessDateTime: Check whether a DateTime is a \&quot;Business DateTime\&quot;
84
+ *CalendarsApi* | [**is_business_date_time**](docs/CalendarsApi.md#is_business_date_time) | **GET** /api/calendars/businessday/{scope}/{code} | [EARLY ACCESS] IsBusinessDateTime: Check whether a DateTime is a \"Business DateTime\"
272
85
  *CalendarsApi* | [**list_calendars**](docs/CalendarsApi.md#list_calendars) | **GET** /api/calendars/generic | [EARLY ACCESS] ListCalendars: List Calendars
273
86
  *CalendarsApi* | [**list_calendars_in_scope**](docs/CalendarsApi.md#list_calendars_in_scope) | **GET** /api/calendars/generic/{scope} | ListCalendarsInScope: List all calenders in a specified scope
274
87
  *CalendarsApi* | [**update_calendar**](docs/CalendarsApi.md#update_calendar) | **POST** /api/calendars/generic/{scope}/{code} | [EARLY ACCESS] UpdateCalendar: Update a calendar
@@ -497,6 +310,7 @@ Class | Method | HTTP request | Description
497
310
  *OrderInstructionsApi* | [**list_order_instructions**](docs/OrderInstructionsApi.md#list_order_instructions) | **GET** /api/orderinstructions | [EXPERIMENTAL] ListOrderInstructions: List OrderInstructions
498
311
  *OrderInstructionsApi* | [**upsert_order_instructions**](docs/OrderInstructionsApi.md#upsert_order_instructions) | **POST** /api/orderinstructions | [EXPERIMENTAL] UpsertOrderInstructions: Upsert OrderInstruction
499
312
  *OrderManagementApi* | [**book_transactions**](docs/OrderManagementApi.md#book_transactions) | **POST** /api/ordermanagement/booktransactions | [EXPERIMENTAL] BookTransactions: Books transactions using specific allocations as a source.
313
+ *OrderManagementApi* | [**cancel_orders**](docs/OrderManagementApi.md#cancel_orders) | **POST** /api/ordermanagement/cancelorders | [EARLY ACCESS] CancelOrders: Cancel existing orders
500
314
  *OrderManagementApi* | [**cancel_placements**](docs/OrderManagementApi.md#cancel_placements) | **POST** /api/ordermanagement/$cancelplacements | [EARLY ACCESS] CancelPlacements: Cancel existing placements
501
315
  *OrderManagementApi* | [**create_orders**](docs/OrderManagementApi.md#create_orders) | **POST** /api/ordermanagement/createorders | [EARLY ACCESS] CreateOrders: Upsert a Block and associated orders
502
316
  *OrderManagementApi* | [**move_orders**](docs/OrderManagementApi.md#move_orders) | **POST** /api/ordermanagement/moveorders | [EARLY ACCESS] MoveOrders: Move orders to new or existing block
@@ -604,7 +418,7 @@ Class | Method | HTTP request | Description
604
418
  *PropertyDefinitionsApi* | [**update_derived_property_definition**](docs/PropertyDefinitionsApi.md#update_derived_property_definition) | **PUT** /api/propertydefinitions/derived/{domain}/{scope}/{code} | [EARLY ACCESS] UpdateDerivedPropertyDefinition: Update a pre-existing derived property definition
605
419
  *PropertyDefinitionsApi* | [**update_property_definition**](docs/PropertyDefinitionsApi.md#update_property_definition) | **PUT** /api/propertydefinitions/{domain}/{scope}/{code} | UpdatePropertyDefinition: Update property definition
606
420
  *PropertyDefinitionsApi* | [**upsert_property_definition_properties**](docs/PropertyDefinitionsApi.md#upsert_property_definition_properties) | **POST** /api/propertydefinitions/{domain}/{scope}/{code}/properties | UpsertPropertyDefinitionProperties: Upsert properties to a property definition
607
- *QueryableKeysApi* | [**get_all_queryable_keys**](docs/QueryableKeysApi.md#get_all_queryable_keys) | **GET** /api/queryablekeys | [EARLY ACCESS] GetAllQueryableKeys: Query the set of supported \&quot;addresses\&quot; that can be queried from all endpoints.
421
+ *QueryableKeysApi* | [**get_all_queryable_keys**](docs/QueryableKeysApi.md#get_all_queryable_keys) | **GET** /api/queryablekeys | [EARLY ACCESS] GetAllQueryableKeys: Query the set of supported \"addresses\" that can be queried from all endpoints.
608
422
  *QuotesApi* | [**delete_quote_access_metadata_rule**](docs/QuotesApi.md#delete_quote_access_metadata_rule) | **DELETE** /api/metadata/quotes/rules/{scope} | [EXPERIMENTAL] DeleteQuoteAccessMetadataRule: Delete a Quote Access Metadata Rule
609
423
  *QuotesApi* | [**delete_quotes**](docs/QuotesApi.md#delete_quotes) | **POST** /api/quotes/{scope}/$delete | DeleteQuotes: Delete quotes
610
424
  *QuotesApi* | [**get_quotes**](docs/QuotesApi.md#get_quotes) | **POST** /api/quotes/{scope}/$get | GetQuotes: Get quotes
@@ -621,7 +435,7 @@ Class | Method | HTTP request | Description
621
435
  *ReconciliationsApi* | [**get_reconciliation_mapping**](docs/ReconciliationsApi.md#get_reconciliation_mapping) | **GET** /api/portfolios/mapping/{scope}/{code} | [EARLY ACCESS] GetReconciliationMapping: Get a mapping
622
436
  *ReconciliationsApi* | [**list_reconciliation_mappings**](docs/ReconciliationsApi.md#list_reconciliation_mappings) | **GET** /api/portfolios/mapping | [EARLY ACCESS] ListReconciliationMappings: List the reconciliation mappings
623
437
  *ReconciliationsApi* | [**list_reconciliations**](docs/ReconciliationsApi.md#list_reconciliations) | **GET** /api/portfolios/$scheduledReconciliations | [EXPERIMENTAL] ListReconciliations: List scheduled reconciliations
624
- *ReconciliationsApi* | [**reconcile_generic**](docs/ReconciliationsApi.md#reconcile_generic) | **POST** /api/portfolios/$reconcileGeneric | ReconcileGeneric: Reconcile either holdings or valuations performed on one or two sets of holdings using one or two configuration recipes. The output is configurable for various types of comparisons, to allow tolerances on numerical and date-time data or case-insensitivity on strings, and elision of resulting differences where they are &#39;empty&#39; or null or zero.
438
+ *ReconciliationsApi* | [**reconcile_generic**](docs/ReconciliationsApi.md#reconcile_generic) | **POST** /api/portfolios/$reconcileGeneric | ReconcileGeneric: Reconcile either holdings or valuations performed on one or two sets of holdings using one or two configuration recipes. The output is configurable for various types of comparisons, to allow tolerances on numerical and date-time data or case-insensitivity on strings, and elision of resulting differences where they are 'empty' or null or zero.
625
439
  *ReconciliationsApi* | [**reconcile_holdings**](docs/ReconciliationsApi.md#reconcile_holdings) | **POST** /api/portfolios/$reconcileholdings | [EARLY ACCESS] ReconcileHoldings: Reconcile portfolio holdings
626
440
  *ReconciliationsApi* | [**reconcile_inline**](docs/ReconciliationsApi.md#reconcile_inline) | **POST** /api/portfolios/$reconcileInline | ReconcileInline: Reconcile valuations performed on one or two sets of inline instruments using one or two configuration recipes.
627
441
  *ReconciliationsApi* | [**reconcile_transactions**](docs/ReconciliationsApi.md#reconcile_transactions) | **POST** /api/portfolios/$reconcileTransactions | [EARLY ACCESS] ReconcileTransactions: Perform a Transactions Reconciliation.
@@ -757,7 +571,8 @@ Class | Method | HTTP request | Description
757
571
  *TranslationApi* | [**translate_trade_tickets**](docs/TranslationApi.md#translate_trade_tickets) | **POST** /api/translation/tradetickets | [EXPERIMENTAL] TranslateTradeTickets: Translate trade ticket
758
572
 
759
573
 
760
- ## Documentation For Models
574
+ <a id="documentation-for-models"></a>
575
+ ## Documentation for Models
761
576
 
762
577
  - [A2BBreakdown](docs/A2BBreakdown.md)
763
578
  - [A2BCategory](docs/A2BCategory.md)
@@ -851,7 +666,9 @@ Class | Method | HTTP request | Description
851
666
  - [Calendar](docs/Calendar.md)
852
667
  - [CalendarDate](docs/CalendarDate.md)
853
668
  - [CalendarDependency](docs/CalendarDependency.md)
669
+ - [CancelOrdersResponse](docs/CancelOrdersResponse.md)
854
670
  - [CancelPlacementsResponse](docs/CancelPlacementsResponse.md)
671
+ - [CancelledOrderResult](docs/CancelledOrderResult.md)
855
672
  - [CancelledPlacementResult](docs/CancelledPlacementResult.md)
856
673
  - [CapFloor](docs/CapFloor.md)
857
674
  - [CapitalDistributionEvent](docs/CapitalDistributionEvent.md)
@@ -1093,6 +910,7 @@ Class | Method | HTTP request | Description
1093
910
  - [FundConfiguration](docs/FundConfiguration.md)
1094
911
  - [FundConfigurationProperties](docs/FundConfigurationProperties.md)
1095
912
  - [FundConfigurationRequest](docs/FundConfigurationRequest.md)
913
+ - [FundPnlBreakdown](docs/FundPnlBreakdown.md)
1096
914
  - [FundPreviousNAV](docs/FundPreviousNAV.md)
1097
915
  - [FundProperties](docs/FundProperties.md)
1098
916
  - [FundRequest](docs/FundRequest.md)
@@ -1594,6 +1412,7 @@ Class | Method | HTTP request | Description
1594
1412
  - [ShareClassBreakdown](docs/ShareClassBreakdown.md)
1595
1413
  - [ShareClassData](docs/ShareClassData.md)
1596
1414
  - [ShareClassDetails](docs/ShareClassDetails.md)
1415
+ - [ShareClassPnlBreakdown](docs/ShareClassPnlBreakdown.md)
1597
1416
  - [SideConfigurationData](docs/SideConfigurationData.md)
1598
1417
  - [SideConfigurationDataRequest](docs/SideConfigurationDataRequest.md)
1599
1418
  - [SideDefinition](docs/SideDefinition.md)
@@ -1785,23 +1604,3 @@ Class | Method | HTTP request | Description
1785
1604
  - [YieldCurveData](docs/YieldCurveData.md)
1786
1605
 
1787
1606
 
1788
- <a id="documentation-for-authorization"></a>
1789
- ## Documentation For Authorization
1790
-
1791
-
1792
- Authentication schemes defined for the API:
1793
- <a id="oauth2"></a>
1794
- ### oauth2
1795
-
1796
- - **Type**: OAuth
1797
- - **Flow**: implicit
1798
- - **Authorization URL**: https://lusid.okta.com/oauth2/default/v1/authorize
1799
- - **Scopes**: N/A
1800
-
1801
-
1802
- ## Author
1803
-
1804
- info@finbourne.com
1805
-
1806
-
1807
-
@@ -1,4 +1,4 @@
1
- lusid/__init__.py,sha256=DK7MQXQVc3LyFRUWNVJcJ6zM6-F-G3yoZK9wRipZWdY,113615
1
+ lusid/__init__.py,sha256=ISA3XY7Oek2VGwUe-Oihg0f1avsl9h69ONkP9A19__s,113998
2
2
  lusid/api/__init__.py,sha256=EuHJI-4kmmibn1IVmY9akKMT-R1Bnth9msFll5hlBGY,5652
3
3
  lusid/api/abor_api.py,sha256=AvgsHuWE7qRSYJhKveBE2htSjHpqqS0VNJrysAfwME0,159655
4
4
  lusid/api/abor_configuration_api.py,sha256=G2bKPtMYOZ2GhUrg-nPJtCa9XIZdZYK7oafcbJWDMP8,64033
@@ -34,7 +34,7 @@ lusid/api/legacy_compliance_api.py,sha256=EjYqCQTemq71q2_sfHU9ptr-ULhNk1EJ0Vejrf
34
34
  lusid/api/legal_entities_api.py,sha256=DFpQxYU_illhMl8_CnlmpLKcBEaxOt7ECiHT51Xl49Q,267854
35
35
  lusid/api/order_graph_api.py,sha256=YcL-SdC42ufKcFgbzD_qwVpWRZKkRDRijGpBviizbVU,45280
36
36
  lusid/api/order_instructions_api.py,sha256=HZn9ZwVgp6bF32GIHpBwaejKKri0tG_KLfgHWfllR8U,46091
37
- lusid/api/order_management_api.py,sha256=ZP2j83vzITgo_sSkhoKS84E6EEKjAFsXIBn29wiCmzo,60753
37
+ lusid/api/order_management_api.py,sha256=c8TqR7NdABfR-FRE0k0D9eo4D9aLYjhwlztX9BJ9D4o,68646
38
38
  lusid/api/orders_api.py,sha256=PjkqtLhbS6lQEEfZiXXAiIa5ls0jLokiqizseg7_nx0,43527
39
39
  lusid/api/packages_api.py,sha256=-2mdoL2HSQ2aCXqYUMxt-1rrlezyQhgCNtevVazqM9o,43985
40
40
  lusid/api/participations_api.py,sha256=nlVzeyfE33X9Ue9HC9rqCW3WACEPKBvcrEjFEmT8wlk,45263
@@ -68,13 +68,13 @@ lusid/api/transaction_portfolios_api.py,sha256=7G5m6iTQXTKCc6ASdxnlVJjvFascHxEgD
68
68
  lusid/api/translation_api.py,sha256=xTAaKEW96JTDIZBXCjxSguCa7Gz4oVd5jdObUE2egwo,20092
69
69
  lusid/api_client.py,sha256=dF6l9RAsdxdQjf6Qn4ny6LB-QXlJmsscWiozCvyyBFA,30709
70
70
  lusid/api_response.py,sha256=6-gnhty6lu8MMAERt3_kTVD7UxQgWFfcjgpcq6iN5IU,855
71
- lusid/configuration.py,sha256=RLaV9bgvbMMGLW9pOe7mwuG1eyF3mwKeaC8Ah0p98ds,14404
71
+ lusid/configuration.py,sha256=OjAoRUPvUiCsSkl6P7k8-MHd1DkEERbftQqV4L52uw8,14404
72
72
  lusid/exceptions.py,sha256=HIQwgmQrszLlcVCLaqex8dO0laVuejUyOMz7U2ZWJ6s,5326
73
73
  lusid/extensions/__init__.py,sha256=dzDHEzpn-9smd2-_UMWQzeyX6Ha4jGf6fnqx7qxKxNI,630
74
74
  lusid/extensions/api_client.py,sha256=Ob06urm4Em3MLzgP_geyeeGsPCkU225msW_1kpIeABM,30567
75
75
  lusid/extensions/api_client_factory.py,sha256=qPlqYe8AMzXUZrQPMbO5YJrKWLYy01rWNdNcKZVi1Xg,9772
76
76
  lusid/extensions/api_configuration.py,sha256=LbuhaM-PcrY0a4cZ-ff7GBP8UybSqI5Ys2WQOBcr_8I,8052
77
- lusid/extensions/configuration_loaders.py,sha256=yIDvKX6XpHRHovgA0vZvw8OeT-PGynHdRJX8rSf6j28,9248
77
+ lusid/extensions/configuration_loaders.py,sha256=avW3Xrl4BMLp4BbsM8w1zb20PGwlMWLFG_PB3Hv2rds,9759
78
78
  lusid/extensions/file_access_token.py,sha256=Qfk_tl2bBh9kpxYhNZ-9XlVuV36udeWT97mazZYI1ns,1469
79
79
  lusid/extensions/proxy_config.py,sha256=UUHQhd8ub-mKVIVbzDbmNQYLLemPX1b209ZcDrCFOWw,2187
80
80
  lusid/extensions/refreshing_token.py,sha256=i5z2-LS8WG_VKWuFX1IM_f4waAr-fAQOzusFv2Vc7NA,11032
@@ -82,7 +82,7 @@ lusid/extensions/rest.py,sha256=tjVCu-cRrYcjp-ttB975vebPKtBNyBWaeoAdO3QXG2I,1269
82
82
  lusid/extensions/retry.py,sha256=orBJ1uF1iT1IncjWX1iGHVqsCgTh0SBe9rtiV_sPnwk,11564
83
83
  lusid/extensions/socket_keep_alive.py,sha256=NGlqsv-E25IjJOLGZhXZY6kUdx51nEF8qCQyVdzayRk,1653
84
84
  lusid/extensions/tcp_keep_alive_connector.py,sha256=zaGtUsygRsxB1_4B3x39K3ILwztdhMLDv5bFZV7zmGE,3877
85
- lusid/models/__init__.py,sha256=g0_5oFHveza3kSXyQDwbIEbZeofj6FbyGgPctzg3Sow,106931
85
+ lusid/models/__init__.py,sha256=2H_-odxZOoZHJBLzWc7235Wy2YrrUo-ybMykyvuCA_8,107314
86
86
  lusid/models/a2_b_breakdown.py,sha256=Txi12EIQw3mH6NM-25QkOnHSQc3BVAWrP7yl9bZswSY,2947
87
87
  lusid/models/a2_b_category.py,sha256=k6NPAACi0CUjKyhdQac4obQSrPmp2PXD6lkAtCnyEFM,2725
88
88
  lusid/models/a2_b_data_record.py,sha256=zKGS2P4fzNpzdcGJiSIpkY4P3d_jAcawYfyuPCDeQgk,9737
@@ -175,7 +175,9 @@ lusid/models/calculation_info.py,sha256=ZdZp4VUza1yaBFDfPGZi6UHn4iy2N-pTbeVLdoNI
175
175
  lusid/models/calendar.py,sha256=ZxD15NO_vvFHi6CTvYvYn0-oUOesbyGsRFzO47viJn4,3961
176
176
  lusid/models/calendar_date.py,sha256=CtQHbrmTnJdrjtVTL5AWd6rYn6bl5rtPi1-Lm5KFEUE,3688
177
177
  lusid/models/calendar_dependency.py,sha256=XYN9AYoLnwuL234DkyDbXArsWalMIdG8U2iU_3dBXrY,3871
178
+ lusid/models/cancel_orders_response.py,sha256=dbef36DqyiejdxVA9NwzQ5e0DGT9g7IfA4s6ZpfM4Xg,6033
178
179
  lusid/models/cancel_placements_response.py,sha256=xe43QiiMvapew4BvR1C3wj5tYgn-zLy3cX54sdjbt3o,6089
180
+ lusid/models/cancelled_order_result.py,sha256=ZAwAhNd7IouFTPRwwYvAflZqlYkbweSttNmJ6cHoIkw,2187
179
181
  lusid/models/cancelled_placement_result.py,sha256=eW3lgoyFakoGKcFSp3WN11bpuJyJun9jm8rVS4hdxwg,3127
180
182
  lusid/models/cap_floor.py,sha256=njXRS6hQ-0fmlpaX7VVzLaxB5NpJHTYn_4HMp9e6BSA,6051
181
183
  lusid/models/capital_distribution_event.py,sha256=UXD4-9IBaDXgMWueV-ivEeJ8RDDbPsPAq6Xx4bH5dyg,6691
@@ -417,11 +419,12 @@ lusid/models/fund_amount.py,sha256=F298PikXvooYgorqtdWwwOmSclzxqNfu6Q1BUK5Yt_E,1
417
419
  lusid/models/fund_configuration.py,sha256=LjXCL02_v9d2MlAFq_a2lHZPMwCTLQKHszt0yHSk5y0,6659
418
420
  lusid/models/fund_configuration_properties.py,sha256=hqKaBSMkSYC5UcWxkgDos41GYnm__6-Q23Z6SDsBgM4,4373
419
421
  lusid/models/fund_configuration_request.py,sha256=pE74oPYKgMuNVGANRIqUV5I4j47VMQc7swDHIHFScNo,5681
422
+ lusid/models/fund_pnl_breakdown.py,sha256=FVWePhLbtAjdikBOG3yipSUD4fIbNnmsM7PsOe1cL4w,4421
420
423
  lusid/models/fund_previous_nav.py,sha256=Vd6qd-nvikHAMjutM1QSYA4xYGWz45NGyLyg2v8pAsE,1930
421
424
  lusid/models/fund_properties.py,sha256=f2PxknZIPrfAXR1MHSJxO1sdj_wNJfmulzYYEqdCByA,4242
422
425
  lusid/models/fund_request.py,sha256=fBU3prGytCvKWfAzP0gHj4VUANarueKwB7r9evPoIEI,8345
423
426
  lusid/models/fund_share_class.py,sha256=06VL9vb5vKCEmNFQbKPmj_uvJjn9QAyk9WjdD5ICBAA,6623
424
- lusid/models/fund_valuation_point_data.py,sha256=JbV3QXY-RW_ZleatER0FgXmG4nwdTEucBbjsUMD7unc,7546
427
+ lusid/models/fund_valuation_point_data.py,sha256=iAuj4b7Kz8Ty67myYntjROcZBkhckc552Qj8YcpXDog,7240
425
428
  lusid/models/funding_leg.py,sha256=b_0D_GqQCPqOllNvb6VSqyjBO4H2v7YYefAj7joTsBI,7455
426
429
  lusid/models/funding_leg_options.py,sha256=_GxHVcvcsd96OaNcb7iHs43UUfrwVno_x2cNowUSwjw,3515
427
430
  lusid/models/future.py,sha256=9jcXTZJxaijpVAz-8-65Jv9yig4qYQEeU2z9oRdEPaU,9084
@@ -915,9 +918,10 @@ lusid/models/set_transaction_configuration_alias.py,sha256=FTa9WQPxzZYO6DguFirEw
915
918
  lusid/models/set_transaction_configuration_source_request.py,sha256=Sz1Kp__LcFo1ubK2S7lf5_NTjFL9Ab23kHikaj8DWxQ,4226
916
919
  lusid/models/settlement_schedule.py,sha256=59PJAHeLK6_fxSRjQ7wGk4zUbyIMjZhiZ-RJ1aH22FY,2420
917
920
  lusid/models/share_class_amount.py,sha256=l-3zCMzmy84d1c0co0t_DgXOCk8t2RKBZ1XljO1jOks,2133
918
- lusid/models/share_class_breakdown.py,sha256=dJC6vIXKbmVHZec9P159OMZT_db6YNxHYdSmTLMKRMA,8351
921
+ lusid/models/share_class_breakdown.py,sha256=IrD_nQ6cMUod_fA8V_vWAVGgbPh8ccQgP6xQ_hodTJk,8058
919
922
  lusid/models/share_class_data.py,sha256=dQp2IM-pzSazRdXT4aIHN3BsWiso360CemAwWmu_UH0,2903
920
923
  lusid/models/share_class_details.py,sha256=dBbEwt4rC4zox8dzf0XiZQwJv_s8kSqgNWmXIqJTym4,4040
924
+ lusid/models/share_class_pnl_breakdown.py,sha256=fKJrgNp-Fn9c52DXeNdwAWz-WZ2suJ8-LdyAl5iZRrY,4551
921
925
  lusid/models/side_configuration_data.py,sha256=iv4nyDEEAYA2TUfY-dlqOGwn-mft8qMGVQk6itgxqe4,3518
922
926
  lusid/models/side_configuration_data_request.py,sha256=qWt-UDjQbcoPpHCUpRwcSN8NFfcZ4TpHMn2dRuR3WVw,2842
923
927
  lusid/models/side_definition.py,sha256=GpAnmArPMxwMe_BHZVihoYi9-Dl8HbQJ3nW4QAxXXow,4149
@@ -954,7 +958,7 @@ lusid/models/target_tax_lot.py,sha256=0rexGWPhEdOaj5_Z6OLxb-7AVTMYL4PfaI_Xcw5ZLm
954
958
  lusid/models/target_tax_lot_request.py,sha256=UwhPoC9hMlbjBZ3dL28Yq2orn1v3vJ7eLctnEGkjKy4,4290
955
959
  lusid/models/tax_rule.py,sha256=Mwc712YrMyeqXxJB6aUgNjCxy872or0_dtoNUZFNOBw,3530
956
960
  lusid/models/tax_rule_set.py,sha256=aBWdkCHrurQHB4ZdyVUxOj0CJaZ6muaCcCenCtpJlqc,5007
957
- lusid/models/template_field.py,sha256=z8NN65iGlPTrP-jo99MIn8_Z4pNLP8Xs0i3LO0iyv00,2339
961
+ lusid/models/template_field.py,sha256=uwh7AKQ-BnT54KvMZrVmyi3o0NUUzmtLvxwoXHwNs9A,2473
958
962
  lusid/models/term_deposit.py,sha256=HiLQimepReB53MDPkupZ3TFpRuvks2LNYJjvSJtr3ik,6727
959
963
  lusid/models/total_return_swap.py,sha256=PnMrI8rROBNQTcOy7pz72aPiPIMz1LlBnD0_t6biLz4,7122
960
964
  lusid/models/touch.py,sha256=OECUpEFcCT1kPT5SJIsoNHtR8k2AhEAbDd6P86NcF4s,2726
@@ -1109,6 +1113,6 @@ lusid/models/weighted_instruments.py,sha256=1y_y_vw4-LPsbkQx4FOzWdZc5fJnzhVkf1D3
1109
1113
  lusid/models/yield_curve_data.py,sha256=SbxvdJ4-GWK9kpMdw4Fnxc7_kvIMwgsRsd_31UJn7nw,6330
1110
1114
  lusid/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1111
1115
  lusid/rest.py,sha256=TNUzQ3yLNT2L053EdR7R0vNzQh2J3TlYD1T56Dye0W0,10138
1112
- lusid_sdk-2.1.310.dist-info/METADATA,sha256=OIAFBwFjeGTyB8av395xwrx1gtosbfwvyg1qaJy2XXo,193452
1113
- lusid_sdk-2.1.310.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1114
- lusid_sdk-2.1.310.dist-info/RECORD,,
1116
+ lusid_sdk-2.1.319.dist-info/METADATA,sha256=K-YfXK-0xxb49vOWYwWARK6MTZ8PgCAz3gEdo5okuBs,187771
1117
+ lusid_sdk-2.1.319.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1118
+ lusid_sdk-2.1.319.dist-info/RECORD,,