lusid-sdk 2.1.568__py3-none-any.whl → 2.1.570__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
@@ -423,6 +423,7 @@ from lusid.models.exercise_event import ExerciseEvent
423
423
  from lusid.models.exotic_instrument import ExoticInstrument
424
424
  from lusid.models.expanded_group import ExpandedGroup
425
425
  from lusid.models.expiry_event import ExpiryEvent
426
+ from lusid.models.external_fee_component_filter import ExternalFeeComponentFilter
426
427
  from lusid.models.fee import Fee
427
428
  from lusid.models.fee_accrual import FeeAccrual
428
429
  from lusid.models.fee_properties import FeeProperties
@@ -1046,6 +1047,7 @@ from lusid.models.staging_rule_set import StagingRuleSet
1046
1047
  from lusid.models.step_schedule import StepSchedule
1047
1048
  from lusid.models.stock_dividend_event import StockDividendEvent
1048
1049
  from lusid.models.stock_split_event import StockSplitEvent
1050
+ from lusid.models.strategy import Strategy
1049
1051
  from lusid.models.stream import Stream
1050
1052
  from lusid.models.string_comparison_type import StringComparisonType
1051
1053
  from lusid.models.string_compliance_parameter import StringComplianceParameter
@@ -1642,6 +1644,7 @@ __all__ = [
1642
1644
  "ExoticInstrument",
1643
1645
  "ExpandedGroup",
1644
1646
  "ExpiryEvent",
1647
+ "ExternalFeeComponentFilter",
1645
1648
  "Fee",
1646
1649
  "FeeAccrual",
1647
1650
  "FeeProperties",
@@ -2265,6 +2268,7 @@ __all__ = [
2265
2268
  "StepSchedule",
2266
2269
  "StockDividendEvent",
2267
2270
  "StockSplitEvent",
2271
+ "Strategy",
2268
2272
  "Stream",
2269
2273
  "StringComparisonType",
2270
2274
  "StringComplianceParameter",
lusid/configuration.py CHANGED
@@ -445,7 +445,7 @@ class Configuration:
445
445
  return "Python SDK Debug Report:\n"\
446
446
  "OS: {env}\n"\
447
447
  "Python Version: {pyversion}\n"\
448
- "Version of the API: 0.11.6999\n"\
448
+ "Version of the API: 0.11.7025\n"\
449
449
  "SDK Package Version: {package_version}".\
450
450
  format(env=sys.platform, pyversion=sys.version, package_version=package_version)
451
451
 
lusid/models/__init__.py CHANGED
@@ -342,6 +342,7 @@ from lusid.models.exercise_event import ExerciseEvent
342
342
  from lusid.models.exotic_instrument import ExoticInstrument
343
343
  from lusid.models.expanded_group import ExpandedGroup
344
344
  from lusid.models.expiry_event import ExpiryEvent
345
+ from lusid.models.external_fee_component_filter import ExternalFeeComponentFilter
345
346
  from lusid.models.fee import Fee
346
347
  from lusid.models.fee_accrual import FeeAccrual
347
348
  from lusid.models.fee_properties import FeeProperties
@@ -965,6 +966,7 @@ from lusid.models.staging_rule_set import StagingRuleSet
965
966
  from lusid.models.step_schedule import StepSchedule
966
967
  from lusid.models.stock_dividend_event import StockDividendEvent
967
968
  from lusid.models.stock_split_event import StockSplitEvent
969
+ from lusid.models.strategy import Strategy
968
970
  from lusid.models.stream import Stream
969
971
  from lusid.models.string_comparison_type import StringComparisonType
970
972
  from lusid.models.string_compliance_parameter import StringComplianceParameter
@@ -1481,6 +1483,7 @@ __all__ = [
1481
1483
  "ExoticInstrument",
1482
1484
  "ExpandedGroup",
1483
1485
  "ExpiryEvent",
1486
+ "ExternalFeeComponentFilter",
1484
1487
  "Fee",
1485
1488
  "FeeAccrual",
1486
1489
  "FeeProperties",
@@ -2104,6 +2107,7 @@ __all__ = [
2104
2107
  "StepSchedule",
2105
2108
  "StockDividendEvent",
2106
2109
  "StockSplitEvent",
2110
+ "Strategy",
2107
2111
  "Stream",
2108
2112
  "StringComparisonType",
2109
2113
  "StringComplianceParameter",
@@ -18,15 +18,15 @@ import re # noqa: F401
18
18
  import json
19
19
 
20
20
 
21
- from typing import Any, Dict
22
- from pydantic.v1 import BaseModel, Field, constr
21
+ from typing import Any, Dict, Optional
22
+ from pydantic.v1 import BaseModel, Field, StrictStr, constr
23
23
 
24
24
  class ComparisonAttributeValuePair(BaseModel):
25
25
  """
26
26
  ComparisonAttributeValuePair
27
27
  """
28
28
  attribute_name: constr(strict=True, min_length=1) = Field(..., alias="attributeName", description="Comparison rule attribute name.")
29
- value: constr(strict=True, min_length=1) = Field(..., description="Computed value for the comparison rule attribute.")
29
+ value: Optional[StrictStr] = Field(None, description="Computed value for the comparison rule attribute.")
30
30
  __properties = ["attributeName", "value"]
31
31
 
32
32
  class Config:
@@ -53,6 +53,11 @@ class ComparisonAttributeValuePair(BaseModel):
53
53
  exclude={
54
54
  },
55
55
  exclude_none=True)
56
+ # set to None if value (nullable) is None
57
+ # and __fields_set__ contains the field
58
+ if self.value is None and "value" in self.__fields_set__:
59
+ _dict['value'] = None
60
+
56
61
  return _dict
57
62
 
58
63
  @classmethod
@@ -0,0 +1,94 @@
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, constr, validator
23
+
24
+ class ExternalFeeComponentFilter(BaseModel):
25
+ """
26
+ ExternalFeeComponentFilter
27
+ """
28
+ filter_id: constr(strict=True, max_length=16384, min_length=1) = Field(..., alias="filterId")
29
+ filter: constr(strict=True, max_length=16384, min_length=1) = Field(...)
30
+ applies_to: constr(strict=True, max_length=16384, min_length=1) = Field(..., alias="appliesTo")
31
+ __properties = ["filterId", "filter", "appliesTo"]
32
+
33
+ @validator('filter_id')
34
+ def filter_id_validate_regular_expression(cls, value):
35
+ """Validates the regular expression"""
36
+ if not re.match(r"^[\s\S]*$", value):
37
+ raise ValueError(r"must validate the regular expression /^[\s\S]*$/")
38
+ return value
39
+
40
+ @validator('filter')
41
+ def filter_validate_regular_expression(cls, value):
42
+ """Validates the regular expression"""
43
+ if not re.match(r"^[\s\S]*$", value):
44
+ raise ValueError(r"must validate the regular expression /^[\s\S]*$/")
45
+ return value
46
+
47
+ @validator('applies_to')
48
+ def applies_to_validate_regular_expression(cls, value):
49
+ """Validates the regular expression"""
50
+ if not re.match(r"^[\s\S]*$", value):
51
+ raise ValueError(r"must validate the regular expression /^[\s\S]*$/")
52
+ return value
53
+
54
+ class Config:
55
+ """Pydantic configuration"""
56
+ allow_population_by_field_name = True
57
+ validate_assignment = True
58
+
59
+ def to_str(self) -> str:
60
+ """Returns the string representation of the model using alias"""
61
+ return pprint.pformat(self.dict(by_alias=True))
62
+
63
+ def to_json(self) -> str:
64
+ """Returns the JSON representation of the model using alias"""
65
+ return json.dumps(self.to_dict())
66
+
67
+ @classmethod
68
+ def from_json(cls, json_str: str) -> ExternalFeeComponentFilter:
69
+ """Create an instance of ExternalFeeComponentFilter from a JSON string"""
70
+ return cls.from_dict(json.loads(json_str))
71
+
72
+ def to_dict(self):
73
+ """Returns the dictionary representation of the model using alias"""
74
+ _dict = self.dict(by_alias=True,
75
+ exclude={
76
+ },
77
+ exclude_none=True)
78
+ return _dict
79
+
80
+ @classmethod
81
+ def from_dict(cls, obj: dict) -> ExternalFeeComponentFilter:
82
+ """Create an instance of ExternalFeeComponentFilter from a dict"""
83
+ if obj is None:
84
+ return None
85
+
86
+ if not isinstance(obj, dict):
87
+ return ExternalFeeComponentFilter.parse_obj(obj)
88
+
89
+ _obj = ExternalFeeComponentFilter.parse_obj({
90
+ "filter_id": obj.get("filterId"),
91
+ "filter": obj.get("filter"),
92
+ "applies_to": obj.get("appliesTo")
93
+ })
94
+ return _obj
@@ -21,6 +21,7 @@ import json
21
21
  from typing import Any, Dict, List, Optional
22
22
  from pydantic.v1 import BaseModel, Field, StrictStr, conlist
23
23
  from lusid.models.component_filter import ComponentFilter
24
+ from lusid.models.external_fee_component_filter import ExternalFeeComponentFilter
24
25
  from lusid.models.link import Link
25
26
  from lusid.models.model_property import ModelProperty
26
27
  from lusid.models.resource_id import ResourceId
@@ -37,10 +38,11 @@ class FundConfiguration(BaseModel):
37
38
  dealing_filters: Optional[conlist(ComponentFilter)] = Field(None, alias="dealingFilters", description="The set of filters used to decide which JE lines are included in the dealing.")
38
39
  pnl_filters: Optional[conlist(ComponentFilter)] = Field(None, alias="pnlFilters", description="The set of filters used to decide which JE lines are included in the PnL.")
39
40
  back_out_filters: Optional[conlist(ComponentFilter)] = Field(None, alias="backOutFilters", description="The set of filters used to decide which JE lines are included in the back outs.")
41
+ external_fee_filters: Optional[conlist(ExternalFeeComponentFilter)] = Field(None, alias="externalFeeFilters", description="The set of filters used to decide which JE lines are used for inputting fees from an external source.")
40
42
  properties: Optional[Dict[str, ModelProperty]] = Field(None, description="A set of properties for the Fund Configuration.")
41
43
  version: Optional[Version] = None
42
44
  links: Optional[conlist(Link)] = None
43
- __properties = ["href", "id", "displayName", "description", "dealingFilters", "pnlFilters", "backOutFilters", "properties", "version", "links"]
45
+ __properties = ["href", "id", "displayName", "description", "dealingFilters", "pnlFilters", "backOutFilters", "externalFeeFilters", "properties", "version", "links"]
44
46
 
45
47
  class Config:
46
48
  """Pydantic configuration"""
@@ -90,6 +92,13 @@ class FundConfiguration(BaseModel):
90
92
  if _item:
91
93
  _items.append(_item.to_dict())
92
94
  _dict['backOutFilters'] = _items
95
+ # override the default output from pydantic by calling `to_dict()` of each item in external_fee_filters (list)
96
+ _items = []
97
+ if self.external_fee_filters:
98
+ for _item in self.external_fee_filters:
99
+ if _item:
100
+ _items.append(_item.to_dict())
101
+ _dict['externalFeeFilters'] = _items
93
102
  # override the default output from pydantic by calling `to_dict()` of each value in properties (dict)
94
103
  _field_dict = {}
95
104
  if self.properties:
@@ -137,6 +146,11 @@ class FundConfiguration(BaseModel):
137
146
  if self.back_out_filters is None and "back_out_filters" in self.__fields_set__:
138
147
  _dict['backOutFilters'] = None
139
148
 
149
+ # set to None if external_fee_filters (nullable) is None
150
+ # and __fields_set__ contains the field
151
+ if self.external_fee_filters is None and "external_fee_filters" in self.__fields_set__:
152
+ _dict['externalFeeFilters'] = None
153
+
140
154
  # set to None if properties (nullable) is None
141
155
  # and __fields_set__ contains the field
142
156
  if self.properties is None and "properties" in self.__fields_set__:
@@ -166,6 +180,7 @@ class FundConfiguration(BaseModel):
166
180
  "dealing_filters": [ComponentFilter.from_dict(_item) for _item in obj.get("dealingFilters")] if obj.get("dealingFilters") is not None else None,
167
181
  "pnl_filters": [ComponentFilter.from_dict(_item) for _item in obj.get("pnlFilters")] if obj.get("pnlFilters") is not None else None,
168
182
  "back_out_filters": [ComponentFilter.from_dict(_item) for _item in obj.get("backOutFilters")] if obj.get("backOutFilters") is not None else None,
183
+ "external_fee_filters": [ExternalFeeComponentFilter.from_dict(_item) for _item in obj.get("externalFeeFilters")] if obj.get("externalFeeFilters") is not None else None,
169
184
  "properties": dict(
170
185
  (_k, ModelProperty.from_dict(_v))
171
186
  for _k, _v in obj.get("properties").items()
@@ -21,6 +21,7 @@ import json
21
21
  from typing import Any, Dict, List, Optional
22
22
  from pydantic.v1 import BaseModel, Field, conlist, constr, validator
23
23
  from lusid.models.component_filter import ComponentFilter
24
+ from lusid.models.external_fee_component_filter import ExternalFeeComponentFilter
24
25
  from lusid.models.model_property import ModelProperty
25
26
 
26
27
  class FundConfigurationRequest(BaseModel):
@@ -33,8 +34,9 @@ class FundConfigurationRequest(BaseModel):
33
34
  dealing_filters: conlist(ComponentFilter) = Field(..., alias="dealingFilters", description="The set of filters used to decide which JE lines are included in the dealing.")
34
35
  pnl_filters: conlist(ComponentFilter) = Field(..., alias="pnlFilters", description="The set of filters used to decide which JE lines are included in the PnL.")
35
36
  back_out_filters: conlist(ComponentFilter) = Field(..., alias="backOutFilters", description="The set of filters used to decide which JE lines are included in the back outs.")
37
+ external_fee_filters: Optional[conlist(ExternalFeeComponentFilter)] = Field(None, alias="externalFeeFilters", description="The set of filters used to decide which JE lines are used for inputting fees from an external source.")
36
38
  properties: Optional[Dict[str, ModelProperty]] = Field(None, description="A set of properties for the Fund Configuration.")
37
- __properties = ["code", "displayName", "description", "dealingFilters", "pnlFilters", "backOutFilters", "properties"]
39
+ __properties = ["code", "displayName", "description", "dealingFilters", "pnlFilters", "backOutFilters", "externalFeeFilters", "properties"]
38
40
 
39
41
  @validator('code')
40
42
  def code_validate_regular_expression(cls, value):
@@ -98,6 +100,13 @@ class FundConfigurationRequest(BaseModel):
98
100
  if _item:
99
101
  _items.append(_item.to_dict())
100
102
  _dict['backOutFilters'] = _items
103
+ # override the default output from pydantic by calling `to_dict()` of each item in external_fee_filters (list)
104
+ _items = []
105
+ if self.external_fee_filters:
106
+ for _item in self.external_fee_filters:
107
+ if _item:
108
+ _items.append(_item.to_dict())
109
+ _dict['externalFeeFilters'] = _items
101
110
  # override the default output from pydantic by calling `to_dict()` of each value in properties (dict)
102
111
  _field_dict = {}
103
112
  if self.properties:
@@ -115,6 +124,11 @@ class FundConfigurationRequest(BaseModel):
115
124
  if self.description is None and "description" in self.__fields_set__:
116
125
  _dict['description'] = None
117
126
 
127
+ # set to None if external_fee_filters (nullable) is None
128
+ # and __fields_set__ contains the field
129
+ if self.external_fee_filters is None and "external_fee_filters" in self.__fields_set__:
130
+ _dict['externalFeeFilters'] = None
131
+
118
132
  # set to None if properties (nullable) is None
119
133
  # and __fields_set__ contains the field
120
134
  if self.properties is None and "properties" in self.__fields_set__:
@@ -138,6 +152,7 @@ class FundConfigurationRequest(BaseModel):
138
152
  "dealing_filters": [ComponentFilter.from_dict(_item) for _item in obj.get("dealingFilters")] if obj.get("dealingFilters") is not None else None,
139
153
  "pnl_filters": [ComponentFilter.from_dict(_item) for _item in obj.get("pnlFilters")] if obj.get("pnlFilters") is not None else None,
140
154
  "back_out_filters": [ComponentFilter.from_dict(_item) for _item in obj.get("backOutFilters")] if obj.get("backOutFilters") is not None else None,
155
+ "external_fee_filters": [ExternalFeeComponentFilter.from_dict(_item) for _item in obj.get("externalFeeFilters")] if obj.get("externalFeeFilters") is not None else None,
141
156
  "properties": dict(
142
157
  (_k, ModelProperty.from_dict(_v))
143
158
  for _k, _v in obj.get("properties").items()
@@ -29,6 +29,7 @@ class OptionExerciseCashEvent(InstrumentEvent):
29
29
  """
30
30
  cash_flow_per_unit: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="cashFlowPerUnit", description="The cashflow per unit")
31
31
  exercise_date: Optional[datetime] = Field(None, alias="exerciseDate", description="The exercise date of the option.")
32
+ delivery_date: Optional[datetime] = Field(None, alias="deliveryDate", description="The delivery date of the option.")
32
33
  exercise_type: constr(strict=True, min_length=1) = Field(..., alias="exerciseType", description="The optionality type of the underlying option e.g. American, European. Supported string (enumeration) values are: [European, Bermudan, American].")
33
34
  maturity_date: datetime = Field(..., alias="maturityDate", description="The maturity date of the option.")
34
35
  moneyness: Optional[StrictStr] = Field(None, description="The moneyness of the option e.g. InTheMoney, OutOfTheMoney. Supported string (enumeration) values are: [InTheMoney, OutOfTheMoney, AtTheMoney].")
@@ -40,7 +41,7 @@ class OptionExerciseCashEvent(InstrumentEvent):
40
41
  underlying_value_per_unit: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="underlyingValuePerUnit", description="The underlying price times the number of shares to exchange if exercised.")
41
42
  instrument_event_type: StrictStr = Field(..., alias="instrumentEventType", description="The Type of Event. The available values are: TransitionEvent, InformationalEvent, OpenEvent, CloseEvent, StockSplitEvent, BondDefaultEvent, CashDividendEvent, AmortisationEvent, CashFlowEvent, ExerciseEvent, ResetEvent, TriggerEvent, RawVendorEvent, InformationalErrorEvent, BondCouponEvent, DividendReinvestmentEvent, AccumulationEvent, BondPrincipalEvent, DividendOptionEvent, MaturityEvent, FxForwardSettlementEvent, ExpiryEvent, ScripDividendEvent, StockDividendEvent, ReverseStockSplitEvent, CapitalDistributionEvent, SpinOffEvent, MergerEvent, FutureExpiryEvent, SwapCashFlowEvent, SwapPrincipalEvent, CreditPremiumCashFlowEvent, CdsCreditEvent, CdxCreditEvent, MbsCouponEvent, MbsPrincipalEvent, BonusIssueEvent, MbsPrincipalWriteOffEvent, MbsInterestDeferralEvent, MbsInterestShortfallEvent, TenderEvent, CallOnIntermediateSecuritiesEvent, IntermediateSecuritiesDistributionEvent, OptionExercisePhysicalEvent, OptionExerciseCashEvent, ProtectionPayoutCashFlowEvent, TermDepositInterestEvent, TermDepositPrincipalEvent")
42
43
  additional_properties: Dict[str, Any] = {}
43
- __properties = ["instrumentEventType", "cashFlowPerUnit", "exerciseDate", "exerciseType", "maturityDate", "moneyness", "optionExerciseElections", "optionType", "startDate", "strikeCurrency", "strikePerUnit", "underlyingValuePerUnit"]
44
+ __properties = ["instrumentEventType", "cashFlowPerUnit", "exerciseDate", "deliveryDate", "exerciseType", "maturityDate", "moneyness", "optionExerciseElections", "optionType", "startDate", "strikeCurrency", "strikePerUnit", "underlyingValuePerUnit"]
44
45
 
45
46
  @validator('instrument_event_type')
46
47
  def instrument_event_type_validate_enum(cls, value):
@@ -96,6 +97,11 @@ class OptionExerciseCashEvent(InstrumentEvent):
96
97
  if self.exercise_date is None and "exercise_date" in self.__fields_set__:
97
98
  _dict['exerciseDate'] = None
98
99
 
100
+ # set to None if delivery_date (nullable) is None
101
+ # and __fields_set__ contains the field
102
+ if self.delivery_date is None and "delivery_date" in self.__fields_set__:
103
+ _dict['deliveryDate'] = None
104
+
99
105
  # set to None if moneyness (nullable) is None
100
106
  # and __fields_set__ contains the field
101
107
  if self.moneyness is None and "moneyness" in self.__fields_set__:
@@ -126,6 +132,7 @@ class OptionExerciseCashEvent(InstrumentEvent):
126
132
  "instrument_event_type": obj.get("instrumentEventType"),
127
133
  "cash_flow_per_unit": obj.get("cashFlowPerUnit"),
128
134
  "exercise_date": obj.get("exerciseDate"),
135
+ "delivery_date": obj.get("deliveryDate"),
129
136
  "exercise_type": obj.get("exerciseType"),
130
137
  "maturity_date": obj.get("maturityDate"),
131
138
  "moneyness": obj.get("moneyness"),
@@ -30,6 +30,7 @@ class OptionExercisePhysicalEvent(InstrumentEvent):
30
30
  Event for physical option exercises. # noqa: E501
31
31
  """
32
32
  exercise_date: Optional[datetime] = Field(None, alias="exerciseDate", description="The exercise date of the option.")
33
+ delivery_date: Optional[datetime] = Field(None, alias="deliveryDate", description="The delivery date of the option.")
33
34
  exercise_type: constr(strict=True, min_length=1) = Field(..., alias="exerciseType", description="The optionality type of the underlying option e.g. American, European. Supported string (enumeration) values are: [European, Bermudan, American].")
34
35
  maturity_date: datetime = Field(..., alias="maturityDate", description="The maturity date of the option.")
35
36
  moneyness: Optional[StrictStr] = Field(None, description="The moneyness of the option e.g. InTheMoney, OutOfTheMoney. Supported string (enumeration) values are: [InTheMoney, OutOfTheMoney, AtTheMoney].")
@@ -43,7 +44,7 @@ class OptionExercisePhysicalEvent(InstrumentEvent):
43
44
  units_ratio: UnitsRatio = Field(..., alias="unitsRatio")
44
45
  instrument_event_type: StrictStr = Field(..., alias="instrumentEventType", description="The Type of Event. The available values are: TransitionEvent, InformationalEvent, OpenEvent, CloseEvent, StockSplitEvent, BondDefaultEvent, CashDividendEvent, AmortisationEvent, CashFlowEvent, ExerciseEvent, ResetEvent, TriggerEvent, RawVendorEvent, InformationalErrorEvent, BondCouponEvent, DividendReinvestmentEvent, AccumulationEvent, BondPrincipalEvent, DividendOptionEvent, MaturityEvent, FxForwardSettlementEvent, ExpiryEvent, ScripDividendEvent, StockDividendEvent, ReverseStockSplitEvent, CapitalDistributionEvent, SpinOffEvent, MergerEvent, FutureExpiryEvent, SwapCashFlowEvent, SwapPrincipalEvent, CreditPremiumCashFlowEvent, CdsCreditEvent, CdxCreditEvent, MbsCouponEvent, MbsPrincipalEvent, BonusIssueEvent, MbsPrincipalWriteOffEvent, MbsInterestDeferralEvent, MbsInterestShortfallEvent, TenderEvent, CallOnIntermediateSecuritiesEvent, IntermediateSecuritiesDistributionEvent, OptionExercisePhysicalEvent, OptionExerciseCashEvent, ProtectionPayoutCashFlowEvent, TermDepositInterestEvent, TermDepositPrincipalEvent")
45
46
  additional_properties: Dict[str, Any] = {}
46
- __properties = ["instrumentEventType", "exerciseDate", "exerciseType", "maturityDate", "moneyness", "newInstrument", "optionExerciseElections", "optionType", "startDate", "strikeCurrency", "strikePerUnit", "underlyingValuePerUnit", "unitsRatio"]
47
+ __properties = ["instrumentEventType", "exerciseDate", "deliveryDate", "exerciseType", "maturityDate", "moneyness", "newInstrument", "optionExerciseElections", "optionType", "startDate", "strikeCurrency", "strikePerUnit", "underlyingValuePerUnit", "unitsRatio"]
47
48
 
48
49
  @validator('instrument_event_type')
49
50
  def instrument_event_type_validate_enum(cls, value):
@@ -100,6 +101,11 @@ class OptionExercisePhysicalEvent(InstrumentEvent):
100
101
  if self.exercise_date is None and "exercise_date" in self.__fields_set__:
101
102
  _dict['exerciseDate'] = None
102
103
 
104
+ # set to None if delivery_date (nullable) is None
105
+ # and __fields_set__ contains the field
106
+ if self.delivery_date is None and "delivery_date" in self.__fields_set__:
107
+ _dict['deliveryDate'] = None
108
+
103
109
  # set to None if moneyness (nullable) is None
104
110
  # and __fields_set__ contains the field
105
111
  if self.moneyness is None and "moneyness" in self.__fields_set__:
@@ -129,6 +135,7 @@ class OptionExercisePhysicalEvent(InstrumentEvent):
129
135
  _obj = OptionExercisePhysicalEvent.parse_obj({
130
136
  "instrument_event_type": obj.get("instrumentEventType"),
131
137
  "exercise_date": obj.get("exerciseDate"),
138
+ "delivery_date": obj.get("deliveryDate"),
132
139
  "exercise_type": obj.get("exerciseType"),
133
140
  "maturity_date": obj.get("maturityDate"),
134
141
  "moneyness": obj.get("moneyness"),
@@ -0,0 +1,81 @@
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, Union
22
+ from pydantic.v1 import BaseModel, Field, StrictFloat, StrictInt, conlist, constr
23
+ from lusid.models.perpetual_property import PerpetualProperty
24
+
25
+ class Strategy(BaseModel):
26
+ """
27
+ Strategy
28
+ """
29
+ keys: conlist(PerpetualProperty, min_items=1) = Field(...)
30
+ value_type: constr(strict=True, min_length=1) = Field(..., alias="valueType")
31
+ value: Union[StrictFloat, StrictInt] = Field(...)
32
+ __properties = ["keys", "valueType", "value"]
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) -> Strategy:
49
+ """Create an instance of Strategy 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 item in keys (list)
59
+ _items = []
60
+ if self.keys:
61
+ for _item in self.keys:
62
+ if _item:
63
+ _items.append(_item.to_dict())
64
+ _dict['keys'] = _items
65
+ return _dict
66
+
67
+ @classmethod
68
+ def from_dict(cls, obj: dict) -> Strategy:
69
+ """Create an instance of Strategy from a dict"""
70
+ if obj is None:
71
+ return None
72
+
73
+ if not isinstance(obj, dict):
74
+ return Strategy.parse_obj(obj)
75
+
76
+ _obj = Strategy.parse_obj({
77
+ "keys": [PerpetualProperty.from_dict(_item) for _item in obj.get("keys")] if obj.get("keys") is not None else None,
78
+ "value_type": obj.get("valueType"),
79
+ "value": obj.get("value")
80
+ })
81
+ return _obj
@@ -18,12 +18,13 @@ import re # noqa: F401
18
18
  import json
19
19
 
20
20
 
21
- from typing import Any, Dict, Optional, Union
22
- from pydantic.v1 import BaseModel, Field, StrictFloat, StrictInt, StrictStr, constr
21
+ from typing import Any, Dict, List, Optional, Union
22
+ from pydantic.v1 import BaseModel, Field, StrictFloat, StrictInt, StrictStr, conlist, constr
23
23
  from lusid.models.currency_and_amount import CurrencyAndAmount
24
24
  from lusid.models.otc_confirmation import OtcConfirmation
25
25
  from lusid.models.perpetual_property import PerpetualProperty
26
26
  from lusid.models.resource_id import ResourceId
27
+ from lusid.models.strategy import Strategy
27
28
  from lusid.models.transaction_price import TransactionPrice
28
29
 
29
30
  class TransactionRequest(BaseModel):
@@ -48,7 +49,8 @@ class TransactionRequest(BaseModel):
48
49
  allocation_id: Optional[ResourceId] = Field(None, alias="allocationId")
49
50
  custodian_account_id: Optional[ResourceId] = Field(None, alias="custodianAccountId")
50
51
  transaction_group_id: Optional[constr(strict=True, max_length=64, min_length=1)] = Field(None, alias="transactionGroupId", description="The identifier for grouping economic events across multiple transactions")
51
- __properties = ["transactionId", "type", "instrumentIdentifiers", "transactionDate", "settlementDate", "units", "transactionPrice", "totalConsideration", "exchangeRate", "transactionCurrency", "properties", "counterpartyId", "source", "otcConfirmation", "orderId", "allocationId", "custodianAccountId", "transactionGroupId"]
52
+ strategy_tag: Optional[conlist(Strategy)] = Field(None, alias="strategyTag", description="A Json representing the allocation of units accross multiple sub-holding keys")
53
+ __properties = ["transactionId", "type", "instrumentIdentifiers", "transactionDate", "settlementDate", "units", "transactionPrice", "totalConsideration", "exchangeRate", "transactionCurrency", "properties", "counterpartyId", "source", "otcConfirmation", "orderId", "allocationId", "custodianAccountId", "transactionGroupId", "strategyTag"]
52
54
 
53
55
  class Config:
54
56
  """Pydantic configuration"""
@@ -99,6 +101,13 @@ class TransactionRequest(BaseModel):
99
101
  # override the default output from pydantic by calling `to_dict()` of custodian_account_id
100
102
  if self.custodian_account_id:
101
103
  _dict['custodianAccountId'] = self.custodian_account_id.to_dict()
104
+ # override the default output from pydantic by calling `to_dict()` of each item in strategy_tag (list)
105
+ _items = []
106
+ if self.strategy_tag:
107
+ for _item in self.strategy_tag:
108
+ if _item:
109
+ _items.append(_item.to_dict())
110
+ _dict['strategyTag'] = _items
102
111
  # set to None if exchange_rate (nullable) is None
103
112
  # and __fields_set__ contains the field
104
113
  if self.exchange_rate is None and "exchange_rate" in self.__fields_set__:
@@ -129,6 +138,11 @@ class TransactionRequest(BaseModel):
129
138
  if self.transaction_group_id is None and "transaction_group_id" in self.__fields_set__:
130
139
  _dict['transactionGroupId'] = None
131
140
 
141
+ # set to None if strategy_tag (nullable) is None
142
+ # and __fields_set__ contains the field
143
+ if self.strategy_tag is None and "strategy_tag" in self.__fields_set__:
144
+ _dict['strategyTag'] = None
145
+
132
146
  return _dict
133
147
 
134
148
  @classmethod
@@ -163,6 +177,7 @@ class TransactionRequest(BaseModel):
163
177
  "order_id": ResourceId.from_dict(obj.get("orderId")) if obj.get("orderId") is not None else None,
164
178
  "allocation_id": ResourceId.from_dict(obj.get("allocationId")) if obj.get("allocationId") is not None else None,
165
179
  "custodian_account_id": ResourceId.from_dict(obj.get("custodianAccountId")) if obj.get("custodianAccountId") is not None else None,
166
- "transaction_group_id": obj.get("transactionGroupId")
180
+ "transaction_group_id": obj.get("transactionGroupId"),
181
+ "strategy_tag": [Strategy.from_dict(_item) for _item in obj.get("strategyTag")] if obj.get("strategyTag") is not None else None
167
182
  })
168
183
  return _obj
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lusid-sdk
3
- Version: 2.1.568
3
+ Version: 2.1.570
4
4
  Summary: LUSID API
5
5
  Home-page: https://github.com/finbourne/lusid-sdk-python
6
6
  License: MIT
@@ -956,6 +956,7 @@ Class | Method | HTTP request | Description
956
956
  - [ExoticInstrument](docs/ExoticInstrument.md)
957
957
  - [ExpandedGroup](docs/ExpandedGroup.md)
958
958
  - [ExpiryEvent](docs/ExpiryEvent.md)
959
+ - [ExternalFeeComponentFilter](docs/ExternalFeeComponentFilter.md)
959
960
  - [Fee](docs/Fee.md)
960
961
  - [FeeAccrual](docs/FeeAccrual.md)
961
962
  - [FeeProperties](docs/FeeProperties.md)
@@ -1579,6 +1580,7 @@ Class | Method | HTTP request | Description
1579
1580
  - [StepSchedule](docs/StepSchedule.md)
1580
1581
  - [StockDividendEvent](docs/StockDividendEvent.md)
1581
1582
  - [StockSplitEvent](docs/StockSplitEvent.md)
1583
+ - [Strategy](docs/Strategy.md)
1582
1584
  - [Stream](docs/Stream.md)
1583
1585
  - [StringComparisonType](docs/StringComparisonType.md)
1584
1586
  - [StringComplianceParameter](docs/StringComplianceParameter.md)
@@ -1,4 +1,4 @@
1
- lusid/__init__.py,sha256=RIhOPtL52VtGmkzRZIWKpMn5VEkvqz2kQVofl2V95Eg,127998
1
+ lusid/__init__.py,sha256=8ygon1YnAaEg8-1lZQ9Kw2m-ydURNqgR-0BSUhuK1pY,128173
2
2
  lusid/api/__init__.py,sha256=6h2et93uMZgjdpV3C3_ITp_VbSBlwYu5BtqZ2puZPoI,5821
3
3
  lusid/api/abor_api.py,sha256=CC0f6Aqqiqkgmpguvoqe8teU0bRRuc771AdUSyI4rJw,158222
4
4
  lusid/api/abor_configuration_api.py,sha256=TmssMn5ni0mZV1q7LyPXYhBqqUGJqLYZapo8By8DFuI,63875
@@ -70,7 +70,7 @@ lusid/api/translation_api.py,sha256=nIyuLncCvVC5k2d7Nm32zR8AQ1dkrVm1OThkmELY_OM,
70
70
  lusid/api/workspace_api.py,sha256=mYQPqFUVf1VKYeWQUV5VkcdSqwejSmPDGd66Az86-_E,191319
71
71
  lusid/api_client.py,sha256=ewMTmf9SRurY8pYnUx9jy24RdldPCOa4US38pnrVxjA,31140
72
72
  lusid/api_response.py,sha256=6-gnhty6lu8MMAERt3_kTVD7UxQgWFfcjgpcq6iN5IU,855
73
- lusid/configuration.py,sha256=7BX72ahbO8EJeVpPd3yOOJHjanQlgrBd-Zut-ikHErc,17972
73
+ lusid/configuration.py,sha256=uQfpVoQDan7N9oMEAop8BIVNNZdfdLQBM963Fk01B2A,17972
74
74
  lusid/exceptions.py,sha256=HIQwgmQrszLlcVCLaqex8dO0laVuejUyOMz7U2ZWJ6s,5326
75
75
  lusid/extensions/__init__.py,sha256=dzDHEzpn-9smd2-_UMWQzeyX6Ha4jGf6fnqx7qxKxNI,630
76
76
  lusid/extensions/api_client.py,sha256=GzygWg_h603QK1QS2HvAijuE2R1TnvoF6-Yg0CeM3ug,30943
@@ -85,7 +85,7 @@ lusid/extensions/rest.py,sha256=dp-bD_LMR2zAL1tmC3-urhWKLomXx7r5iGN1VteMBVQ,1601
85
85
  lusid/extensions/retry.py,sha256=EhW9OKJmGHipxN3H7eROH5DiMlAnfBVl95NQrttcsdg,14834
86
86
  lusid/extensions/socket_keep_alive.py,sha256=NGlqsv-E25IjJOLGZhXZY6kUdx51nEF8qCQyVdzayRk,1653
87
87
  lusid/extensions/tcp_keep_alive_connector.py,sha256=zaGtUsygRsxB1_4B3x39K3ILwztdhMLDv5bFZV7zmGE,3877
88
- lusid/models/__init__.py,sha256=liI_KFxHI9BgnlJOHA_bhPNyvl4MG7-iSPjwGhV1RIk,121145
88
+ lusid/models/__init__.py,sha256=13vESVXa-spgKv7bkBEZkI5iHNwsz9ZW7Hn9txX8O_E,121320
89
89
  lusid/models/a2_b_breakdown.py,sha256=Txi12EIQw3mH6NM-25QkOnHSQc3BVAWrP7yl9bZswSY,2947
90
90
  lusid/models/a2_b_category.py,sha256=k6NPAACi0CUjKyhdQac4obQSrPmp2PXD6lkAtCnyEFM,2725
91
91
  lusid/models/a2_b_data_record.py,sha256=zKGS2P4fzNpzdcGJiSIpkY4P3d_jAcawYfyuPCDeQgk,9737
@@ -234,7 +234,7 @@ lusid/models/cleardown_module_rules_updated_response.py,sha256=gVxjkztmGxvnHaGMQ
234
234
  lusid/models/client.py,sha256=C-cuudkA8GKpa3GKnbetJFu8kE5E88Ap1h_72UHqKVA,1980
235
235
  lusid/models/close_event.py,sha256=roAW8-T8hMu71QCDCLrCGgg3rn9AkSJdFWSMZQ7n24s,6483
236
236
  lusid/models/close_period_diary_entry_request.py,sha256=sD2X7MALlyW6tCr7Y2voUINkNVqF6YpcYdkMsQubaa0,6490
237
- lusid/models/comparison_attribute_value_pair.py,sha256=jnEdtUm45pyetOejxEb3VMEOKH-pSNKZx1Lps_6xNrQ,2218
237
+ lusid/models/comparison_attribute_value_pair.py,sha256=4AYi8WddelHw2hQw-O8z6snCKZBBFxA946o0MZjE-mc,2425
238
238
  lusid/models/complete_portfolio.py,sha256=_y1LTAZ7pErx7ioQu20WLK_l3sy55JRoJo8c4yZb3jE,7827
239
239
  lusid/models/complete_relation.py,sha256=T1Wd-knJ0m60ZV82FRinBboqaj0XioTUirK43ozT1q4,3908
240
240
  lusid/models/complete_relationship.py,sha256=oO5LLSMYB6IXIsWZVoooboC0TEo3aaox6zLFdnn1wLk,5168
@@ -414,6 +414,7 @@ lusid/models/exercise_event.py,sha256=Oq9OUIRdPpzaHeORRXzlqQxEnzOQe2SS3fx7Fh8SH_
414
414
  lusid/models/exotic_instrument.py,sha256=TSm124GJMpAHSfxhNyLDOwWgTZKqNqW21mwcs4nfFKA,5886
415
415
  lusid/models/expanded_group.py,sha256=e1fIiusdlI_VtjJlF4g5O_yg6A_5VDOg2LaW94CUyJU,5931
416
416
  lusid/models/expiry_event.py,sha256=pnBngOXyKP0OAPxe40_b53eZWzReDGh1wKwLi1lOvMg,6197
417
+ lusid/models/external_fee_component_filter.py,sha256=MYonxkbn322SfeeMvNUZ4VvjZlqw24SuBPECUkw-1wk,3125
417
418
  lusid/models/fee.py,sha256=QhQeSjYw4h7mpQ4d4bGSnu2WU_A1J8pMJwi8j8fm210,11945
418
419
  lusid/models/fee_accrual.py,sha256=4u5DYJpuu0mwhpXafCRA1mHCdDhNMjwpuTMllxUiqkI,4319
419
420
  lusid/models/fee_properties.py,sha256=Q92whmRw6aIwyxsgLVF9vntTY5WLwtrDdJMw9sSNoEQ,4232
@@ -443,9 +444,9 @@ lusid/models/forward_rate_agreement.py,sha256=y6AWOQLqEP88OkiRkYFM7_pw-GokH69602
443
444
  lusid/models/from_recipe.py,sha256=paSou6poZf5CHkswKhZXc8jXmVcxj7s7kJXRw4ucbfQ,2261
444
445
  lusid/models/fund.py,sha256=4FENDtVBRDI59lTQ_LdffuIYIPGj7C-LUkL0Wtzn0cc,8958
445
446
  lusid/models/fund_amount.py,sha256=qaAEXheAqYVXXcdxSKsNuzY9FY0lG-AjNUrAS_15i3w,1900
446
- lusid/models/fund_configuration.py,sha256=v_ySM4ssehaZ4gYlhV5x9anPrboiglxfTyCDeU2HqGw,8208
447
+ lusid/models/fund_configuration.py,sha256=23ojBK8bYghK_nPbvurQ7gH91Wlkj5Rh_2qbI_kkI00,9336
447
448
  lusid/models/fund_configuration_properties.py,sha256=hqKaBSMkSYC5UcWxkgDos41GYnm__6-Q23Z6SDsBgM4,4373
448
- lusid/models/fund_configuration_request.py,sha256=8WTwkz9VKkY77QW1aib7EjhfYYjPiNQ0z3SxD4IHkTc,6544
449
+ lusid/models/fund_configuration_request.py,sha256=joOd-krDftkkQUk7hjS8vAOFXnHL9yySQgYEBdEVr_k,7672
449
450
  lusid/models/fund_details.py,sha256=5VcFaIfA7FyX0tB9kOkDKYiHxR-ms6CPTn_T2SotxkI,2176
450
451
  lusid/models/fund_id_list.py,sha256=B0Zsyn-q7SFuhXtrug0Z4nBmAIM1jo88V3fYVcwIOhE,3706
451
452
  lusid/models/fund_pnl_breakdown.py,sha256=FVWePhLbtAjdikBOG3yipSUD4fIbNnmsM7PsOe1cL4w,4421
@@ -663,9 +664,9 @@ lusid/models/operation.py,sha256=LtqUFww2hQy0sa9kdCpHPz3XSvtHxqsWtRKjRDku2TA,251
663
664
  lusid/models/operation_type.py,sha256=kUOhDAUWv4sYAaZwRlXwaowlr_jBw9uUmsW1ffRsMv8,644
664
665
  lusid/models/operator.py,sha256=pET4TePqHQQxhblcnIQjtda3Y7a5H864MUFMJBE4loE,797
665
666
  lusid/models/option_entry.py,sha256=KJfFze7xIJxeIJ7hXxJhkUydFhg9KJU4rIAfLdBaT8k,2136
666
- lusid/models/option_exercise_cash_event.py,sha256=nViNbPUYVS1h3ERy49a6R-mSJsVSboQzDBqMoeCptxI,10622
667
+ lusid/models/option_exercise_cash_event.py,sha256=jy-QjvfcznBRLkqoZ72JGSwiVnuQMMmbwkb20XAtJ_Y,11044
667
668
  lusid/models/option_exercise_election.py,sha256=XeES3Uy1-Vpj5VjmxZjJsaU5hbgvELp9FWWZl__Cnew,2546
668
- lusid/models/option_exercise_physical_event.py,sha256=XXlaE-Q1u3Fu01teR4-83amf3FmXVSb7jq5_MaU31Pk,11071
669
+ lusid/models/option_exercise_physical_event.py,sha256=0ERq50QEyeI_ZnCmi6jVBjDOtdRzp-Z9IvgnKLYCPjM,11493
669
670
  lusid/models/optionality_schedule.py,sha256=lZh9nWhUmmkcfzAjsM8qvTAtXf4Fm97vhIbqD-EIboU,5501
670
671
  lusid/models/order.py,sha256=-47dm6-P-pNB--pBRn6UxGCv7Az7ECBAgoykBdR3agM,9659
671
672
  lusid/models/order_by_spec.py,sha256=9RyLPdTBImMEcjhN2mq-BtMykndyNLZSpJ3xO_biaZk,2319
@@ -1037,6 +1038,7 @@ lusid/models/staging_rule_set.py,sha256=05h5vV_9s3V2MYoH7o1K8pmjlUq15jJSsmyJ5ObR
1037
1038
  lusid/models/step_schedule.py,sha256=1xCC_C_GzTIOY8GPUIaF75YoieJ6fwV4qQFQHTsJypg,4580
1038
1039
  lusid/models/stock_dividend_event.py,sha256=IbteGDGFk7P0yrAuGtu4nRXKktQLgcBSN2Ytm0S1gq0,9065
1039
1040
  lusid/models/stock_split_event.py,sha256=gP0-rWXwy23Kj6zV934xYCHq4dpO8DSeyYIFCvz-pjw,9045
1041
+ lusid/models/strategy.py,sha256=qDZ8BGyMP_xsEH1ipTEdB9WnkHU4DChb416gm2rdzEU,2522
1040
1042
  lusid/models/stream.py,sha256=TGFloyewF3hi9RLyg0K3z13zxgvqAlHt46_AJuP9l7E,2865
1041
1043
  lusid/models/string_comparison_type.py,sha256=4_CrV7WlDTrgAR866IyYXJZyVUXSNHBn7YrRdyiWKj0,799
1042
1044
  lusid/models/string_compliance_parameter.py,sha256=_DVIosVMDhLYoONZUcMuIre5Ku8JAfIWjHB_okBu-DU,5318
@@ -1080,7 +1082,7 @@ lusid/models/transaction_query_mode.py,sha256=q3QNcFSP-LwfdQF_yRUOZMd6ElemQm03yO
1080
1082
  lusid/models/transaction_query_parameters.py,sha256=sYKAouptXvwNtAzz2SdOi7F-9M5q2xOwqT1kjz8vSNE,3365
1081
1083
  lusid/models/transaction_reconciliation_request.py,sha256=pys1JU22geF_MiZwGBlzhiXQ_daHZ0Cffpce8Wvq7ec,4294
1082
1084
  lusid/models/transaction_reconciliation_request_v2.py,sha256=YjOKUfgsoXVlXLbAP2qDc8wsRV-Te-sxtsvKGJe1cjg,5946
1083
- lusid/models/transaction_request.py,sha256=F3Pj-YjwWEZsT_3GuTz6NAJv4-tuO5e5XAfKGlx_pl4,9896
1085
+ lusid/models/transaction_request.py,sha256=DzbZiQbPT8k40M8Ey1CEqXWMNUIo21mBmKXNVwHsIlc,10834
1084
1086
  lusid/models/transaction_roles.py,sha256=1r-BzcchffLl6p4lSUhRAUmsVdrl7Bvce2cCiwxJanE,839
1085
1087
  lusid/models/transaction_set_configuration_data.py,sha256=CmMrtyOxpcJd5LXW2egsTf4yPCkoJ7yGUA-WFL07zI4,4411
1086
1088
  lusid/models/transaction_set_configuration_data_request.py,sha256=YWx3s0gvxI-6Zh9HmrbcUw9SO2t7OoEq5rXYJyNOFYU,3947
@@ -1224,6 +1226,6 @@ lusid/models/workspace_update_request.py,sha256=uUXEpX-dJ5UiL9w1wMxIFeovSBiTJ-vi
1224
1226
  lusid/models/yield_curve_data.py,sha256=SbxvdJ4-GWK9kpMdw4Fnxc7_kvIMwgsRsd_31UJn7nw,6330
1225
1227
  lusid/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1226
1228
  lusid/rest.py,sha256=HQT__5LQEMu6_1sLKvYj-DI4FH1DJXBIPYfZCTTyrY4,13431
1227
- lusid_sdk-2.1.568.dist-info/METADATA,sha256=_YDCeyctR7PbicIQFSEQJsCSxqCt_8fYoJsW7IBKOrU,208988
1228
- lusid_sdk-2.1.568.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1229
- lusid_sdk-2.1.568.dist-info/RECORD,,
1229
+ lusid_sdk-2.1.570.dist-info/METADATA,sha256=lmTDdXJNeGp_7nmBHMuHfEsE5XAByu8MBuZKXHJe38Q,209088
1230
+ lusid_sdk-2.1.570.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1231
+ lusid_sdk-2.1.570.dist-info/RECORD,,