lusid-sdk 2.1.619__py3-none-any.whl → 2.1.620__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/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.7155\n"\
448
+ "Version of the API: 0.11.7163\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/cap_floor.py CHANGED
@@ -18,8 +18,9 @@ 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 Field, StrictBool, StrictFloat, StrictInt, StrictStr, constr, validator
21
+ from typing import Any, Dict, List, Optional, Union
22
+ from pydantic.v1 import Field, StrictBool, StrictFloat, StrictInt, StrictStr, conlist, constr, validator
23
+ from lusid.models.additional_payment import AdditionalPayment
23
24
  from lusid.models.floating_leg import FloatingLeg
24
25
  from lusid.models.lusid_instrument import LusidInstrument
25
26
 
@@ -32,9 +33,10 @@ class CapFloor(LusidInstrument):
32
33
  floor_strike: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="floorStrike", description="Strike rate of the Floor.")
33
34
  include_first_caplet: StrictBool = Field(..., alias="includeFirstCaplet", description="Include first caplet flag.")
34
35
  underlying_floating_leg: FloatingLeg = Field(..., alias="underlyingFloatingLeg")
36
+ additional_payments: Optional[conlist(AdditionalPayment)] = Field(None, alias="additionalPayments", description="Optional additional payments at a given date e.g. to level off an uneven equity swap. The dates must be distinct and either all payments are Pay or all payments are Receive.")
35
37
  instrument_type: StrictStr = Field(..., alias="instrumentType", description="The available values are: QuotedSecurity, InterestRateSwap, FxForward, Future, ExoticInstrument, FxOption, CreditDefaultSwap, InterestRateSwaption, Bond, EquityOption, FixedLeg, FloatingLeg, BespokeCashFlowsLeg, Unknown, TermDeposit, ContractForDifference, EquitySwap, CashPerpetual, CapFloor, CashSettled, CdsIndex, Basket, FundingLeg, FxSwap, ForwardRateAgreement, SimpleInstrument, Repo, Equity, ExchangeTradedOption, ReferenceInstrument, ComplexBond, InflationLinkedBond, InflationSwap, SimpleCashFlowLoan, TotalReturnSwap, InflationLeg, FundShareClass, FlexibleLoan, UnsettledCash, Cash, MasteredInstrument, LoanFacility, FlexibleDeposit")
36
38
  additional_properties: Dict[str, Any] = {}
37
- __properties = ["instrumentType", "capFloorType", "capStrike", "floorStrike", "includeFirstCaplet", "underlyingFloatingLeg"]
39
+ __properties = ["instrumentType", "capFloorType", "capStrike", "floorStrike", "includeFirstCaplet", "underlyingFloatingLeg", "additionalPayments"]
38
40
 
39
41
  @validator('instrument_type')
40
42
  def instrument_type_validate_enum(cls, value):
@@ -71,6 +73,13 @@ class CapFloor(LusidInstrument):
71
73
  # override the default output from pydantic by calling `to_dict()` of underlying_floating_leg
72
74
  if self.underlying_floating_leg:
73
75
  _dict['underlyingFloatingLeg'] = self.underlying_floating_leg.to_dict()
76
+ # override the default output from pydantic by calling `to_dict()` of each item in additional_payments (list)
77
+ _items = []
78
+ if self.additional_payments:
79
+ for _item in self.additional_payments:
80
+ if _item:
81
+ _items.append(_item.to_dict())
82
+ _dict['additionalPayments'] = _items
74
83
  # puts key-value pairs in additional_properties in the top level
75
84
  if self.additional_properties is not None:
76
85
  for _key, _value in self.additional_properties.items():
@@ -86,6 +95,11 @@ class CapFloor(LusidInstrument):
86
95
  if self.floor_strike is None and "floor_strike" in self.__fields_set__:
87
96
  _dict['floorStrike'] = None
88
97
 
98
+ # set to None if additional_payments (nullable) is None
99
+ # and __fields_set__ contains the field
100
+ if self.additional_payments is None and "additional_payments" in self.__fields_set__:
101
+ _dict['additionalPayments'] = None
102
+
89
103
  return _dict
90
104
 
91
105
  @classmethod
@@ -103,7 +117,8 @@ class CapFloor(LusidInstrument):
103
117
  "cap_strike": obj.get("capStrike"),
104
118
  "floor_strike": obj.get("floorStrike"),
105
119
  "include_first_caplet": obj.get("includeFirstCaplet"),
106
- "underlying_floating_leg": FloatingLeg.from_dict(obj.get("underlyingFloatingLeg")) if obj.get("underlyingFloatingLeg") is not None else None
120
+ "underlying_floating_leg": FloatingLeg.from_dict(obj.get("underlyingFloatingLeg")) if obj.get("underlyingFloatingLeg") is not None else None,
121
+ "additional_payments": [AdditionalPayment.from_dict(_item) for _item in obj.get("additionalPayments")] if obj.get("additionalPayments") is not None else None
107
122
  })
108
123
  # store additional fields in additional_properties
109
124
  for _key in obj.keys():
@@ -18,8 +18,8 @@ import re # noqa: F401
18
18
  import json
19
19
 
20
20
 
21
- from typing import Any, Dict, List, Optional
22
- from pydantic.v1 import Field, StrictBool, StrictStr, conlist, constr, validator
21
+ from typing import Any, Dict, List, Optional, Union
22
+ from pydantic.v1 import Field, StrictBool, StrictFloat, StrictInt, StrictStr, conlist, constr, validator
23
23
  from lusid.models.lusid_instrument import LusidInstrument
24
24
  from lusid.models.rounding_convention import RoundingConvention
25
25
  from lusid.models.schedule import Schedule
@@ -32,13 +32,14 @@ class ComplexBond(LusidInstrument):
32
32
  identifiers: Optional[Dict[str, StrictStr]] = Field(None, description="External market codes and identifiers for the bond, e.g. ISIN.")
33
33
  calculation_type: Optional[constr(strict=True, max_length=50, min_length=0)] = Field(None, alias="calculationType", description="The calculation type applied to the bond coupon amount. This is required for bonds that have a particular type of computing the period coupon, such as simple compounding, irregular coupons etc. The default CalculationType is `Standard`, which returns a coupon amount equal to Principal * Coupon Rate / Coupon Frequency. Coupon Frequency is 12M / Payment Frequency. Payment Frequency can be 1M, 3M, 6M, 12M etc. So Coupon Frequency can be 12, 4, 2, 1 respectively. Supported string (enumeration) values are: [Standard, DayCountCoupon, NoCalculationFloater, BrazilFixedCoupon, StandardWithCappedAccruedInterest].")
34
34
  schedules: Optional[conlist(Schedule)] = Field(None, description="schedules.")
35
+ original_issue_price: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="originalIssuePrice", description="The price the complex bond was issued at. This is to be entered as a percentage of par, for example a value of 98.5 would represent 98.5%.")
35
36
  rounding_conventions: Optional[conlist(RoundingConvention)] = Field(None, alias="roundingConventions", description="Rounding conventions for analytics, if any.")
36
37
  asset_backed: Optional[StrictBool] = Field(None, alias="assetBacked", description="If this flag is set to true, then the outstanding notional and principal repayments will be calculated based on pool factors in the quote store. Usually AssetBacked bonds also require a RollConvention setting of within the FlowConventions any given rates schedule (to ensure payment dates always happen on the same day of the month) and US Agency MBSs with Pay Delay features also require their rates schedules to include an ExDividendConfiguration to drive the lag between interest accrual and payment.")
37
38
  asset_pool_identifier: Optional[constr(strict=True, max_length=50, min_length=0)] = Field(None, alias="assetPoolIdentifier", description="Identifier used to retrieve pool factor information about this bond from the quote store. This is typically the bond's ISIN, but can also be ClientInternal. Please ensure you align the MarketDataKeyRule with the correct Quote (Quote.ClientInternal.* or Quote.Isin.*)")
38
39
  trading_conventions: Optional[TradingConventions] = Field(None, alias="tradingConventions")
39
40
  instrument_type: StrictStr = Field(..., alias="instrumentType", description="The available values are: QuotedSecurity, InterestRateSwap, FxForward, Future, ExoticInstrument, FxOption, CreditDefaultSwap, InterestRateSwaption, Bond, EquityOption, FixedLeg, FloatingLeg, BespokeCashFlowsLeg, Unknown, TermDeposit, ContractForDifference, EquitySwap, CashPerpetual, CapFloor, CashSettled, CdsIndex, Basket, FundingLeg, FxSwap, ForwardRateAgreement, SimpleInstrument, Repo, Equity, ExchangeTradedOption, ReferenceInstrument, ComplexBond, InflationLinkedBond, InflationSwap, SimpleCashFlowLoan, TotalReturnSwap, InflationLeg, FundShareClass, FlexibleLoan, UnsettledCash, Cash, MasteredInstrument, LoanFacility, FlexibleDeposit")
40
41
  additional_properties: Dict[str, Any] = {}
41
- __properties = ["instrumentType", "identifiers", "calculationType", "schedules", "roundingConventions", "assetBacked", "assetPoolIdentifier", "tradingConventions"]
42
+ __properties = ["instrumentType", "identifiers", "calculationType", "schedules", "originalIssuePrice", "roundingConventions", "assetBacked", "assetPoolIdentifier", "tradingConventions"]
42
43
 
43
44
  @validator('instrument_type')
44
45
  def instrument_type_validate_enum(cls, value):
@@ -109,6 +110,11 @@ class ComplexBond(LusidInstrument):
109
110
  if self.schedules is None and "schedules" in self.__fields_set__:
110
111
  _dict['schedules'] = None
111
112
 
113
+ # set to None if original_issue_price (nullable) is None
114
+ # and __fields_set__ contains the field
115
+ if self.original_issue_price is None and "original_issue_price" in self.__fields_set__:
116
+ _dict['originalIssuePrice'] = None
117
+
112
118
  # set to None if rounding_conventions (nullable) is None
113
119
  # and __fields_set__ contains the field
114
120
  if self.rounding_conventions is None and "rounding_conventions" in self.__fields_set__:
@@ -140,6 +146,7 @@ class ComplexBond(LusidInstrument):
140
146
  "identifiers": obj.get("identifiers"),
141
147
  "calculation_type": obj.get("calculationType"),
142
148
  "schedules": [Schedule.from_dict(_item) for _item in obj.get("schedules")] if obj.get("schedules") is not None else None,
149
+ "original_issue_price": obj.get("originalIssuePrice"),
143
150
  "rounding_conventions": [RoundingConvention.from_dict(_item) for _item in obj.get("roundingConventions")] if obj.get("roundingConventions") is not None else None,
144
151
  "asset_backed": obj.get("assetBacked"),
145
152
  "asset_pool_identifier": obj.get("assetPoolIdentifier"),
@@ -32,9 +32,10 @@ class FeeAccrual(BaseModel):
32
32
  calculation_base: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="calculationBase", description="The result of the evaluating the fee's calculation base expression.")
33
33
  amount: Optional[Union[StrictFloat, StrictInt]] = Field(None, description="The result of applying the fee to the calculation base, and scaled down to a day.")
34
34
  previous_accrual: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="previousAccrual", description="The previous valuation point's total accrual.")
35
+ previous_total_accrual: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="previousTotalAccrual", description="The previous valuation point's total accrual.")
35
36
  total_accrual: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="totalAccrual", description="The sum of the PreviousAccrual and Amount.")
36
37
  links: Optional[conlist(Link)] = None
37
- __properties = ["effectiveAt", "code", "name", "calculationBase", "amount", "previousAccrual", "totalAccrual", "links"]
38
+ __properties = ["effectiveAt", "code", "name", "calculationBase", "amount", "previousAccrual", "previousTotalAccrual", "totalAccrual", "links"]
38
39
 
39
40
  @validator('code')
40
41
  def code_validate_regular_expression(cls, value):
@@ -97,6 +98,7 @@ class FeeAccrual(BaseModel):
97
98
  "calculation_base": obj.get("calculationBase"),
98
99
  "amount": obj.get("amount"),
99
100
  "previous_accrual": obj.get("previousAccrual"),
101
+ "previous_total_accrual": obj.get("previousTotalAccrual"),
100
102
  "total_accrual": obj.get("totalAccrual"),
101
103
  "links": [Link.from_dict(_item) for _item in obj.get("links")] if obj.get("links") is not None else None
102
104
  })
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lusid-sdk
3
- Version: 2.1.619
3
+ Version: 2.1.620
4
4
  Summary: LUSID API
5
5
  Home-page: https://github.com/finbourne/lusid-sdk-python
6
6
  License: MIT
@@ -72,7 +72,7 @@ lusid/api/translation_api.py,sha256=nIyuLncCvVC5k2d7Nm32zR8AQ1dkrVm1OThkmELY_OM,
72
72
  lusid/api/workspace_api.py,sha256=Yox1q7TDY-_O3HF-N8g5kGuNgp4unWvlSZmRZ6MNZO0,196701
73
73
  lusid/api_client.py,sha256=ewMTmf9SRurY8pYnUx9jy24RdldPCOa4US38pnrVxjA,31140
74
74
  lusid/api_response.py,sha256=6-gnhty6lu8MMAERt3_kTVD7UxQgWFfcjgpcq6iN5IU,855
75
- lusid/configuration.py,sha256=PRX70c6_oik69103ZdLaxqunwR6Y__arc1h6BoJbtAg,17972
75
+ lusid/configuration.py,sha256=1W9NsRldOrjadwepaxuTthpRgawAN2nkWt75lu-DkHk,17972
76
76
  lusid/exceptions.py,sha256=HIQwgmQrszLlcVCLaqex8dO0laVuejUyOMz7U2ZWJ6s,5326
77
77
  lusid/extensions/__init__.py,sha256=dzDHEzpn-9smd2-_UMWQzeyX6Ha4jGf6fnqx7qxKxNI,630
78
78
  lusid/extensions/api_client.py,sha256=GzygWg_h603QK1QS2HvAijuE2R1TnvoF6-Yg0CeM3ug,30943
@@ -200,7 +200,7 @@ lusid/models/cancel_placements_response.py,sha256=xe43QiiMvapew4BvR1C3wj5tYgn-zL
200
200
  lusid/models/cancel_single_holding_adjustment_request.py,sha256=55NQVC3IsJqXN6Cmn7E2y7Pa8OobQc71Dlgl_5-4Hcg,3880
201
201
  lusid/models/cancelled_order_result.py,sha256=ZAwAhNd7IouFTPRwwYvAflZqlYkbweSttNmJ6cHoIkw,2187
202
202
  lusid/models/cancelled_placement_result.py,sha256=eW3lgoyFakoGKcFSp3WN11bpuJyJun9jm8rVS4hdxwg,3127
203
- lusid/models/cap_floor.py,sha256=cEgDxAa_Z91oDsa5HI6v8us0mvvN8gt41VVKDnh99Cs,6692
203
+ lusid/models/cap_floor.py,sha256=l66x7biOKvqacInPheCBfTuBSLsLFrF5T4nxSozg7bw,7862
204
204
  lusid/models/capital_distribution_event.py,sha256=odmRb5SUm-U4DOwNnZURknvtqu5GU8Mu_uz1zn9zwMU,8521
205
205
  lusid/models/cash.py,sha256=_hsaJ_UwziEWxDMUY0DyTth2376VtU__Zrx8f-vA2gs,5099
206
206
  lusid/models/cash_and_security_offer_election.py,sha256=9xxHftE8QRdsizLEXCyvxFdkPpm9KU3fxz8WNjJv430,3933
@@ -242,7 +242,7 @@ lusid/models/comparison_attribute_value_pair.py,sha256=4AYi8WddelHw2hQw-O8z6snCK
242
242
  lusid/models/complete_portfolio.py,sha256=_y1LTAZ7pErx7ioQu20WLK_l3sy55JRoJo8c4yZb3jE,7827
243
243
  lusid/models/complete_relation.py,sha256=T1Wd-knJ0m60ZV82FRinBboqaj0XioTUirK43ozT1q4,3908
244
244
  lusid/models/complete_relationship.py,sha256=oO5LLSMYB6IXIsWZVoooboC0TEo3aaox6zLFdnn1wLk,5168
245
- lusid/models/complex_bond.py,sha256=C1R-4D0lvGAQeP35Bf8Jioobi4dBFU4IG-rwh3QM_u4,10468
245
+ lusid/models/complex_bond.py,sha256=S1J2TYxy6aBYsedlH_4GEuxFWSHDbwHw3u1Ld8OLq_A,11107
246
246
  lusid/models/complex_market_data.py,sha256=p0lDUrbTUaRavdvUAqEWYQioKDkEc8gDXZMAT6DJ-Oo,5865
247
247
  lusid/models/complex_market_data_id.py,sha256=Wy6TsnE2ismNdytM1lV6TxPgl92-wTsfohXYt-dN_yk,3964
248
248
  lusid/models/compliance_breached_order_info.py,sha256=mz1wCMcqXM8dW4LvbPavNCGpXlU4MYg8oOwVK51WcR8,2970
@@ -428,7 +428,7 @@ lusid/models/expanded_group.py,sha256=e1fIiusdlI_VtjJlF4g5O_yg6A_5VDOg2LaW94CUyJ
428
428
  lusid/models/expiry_event.py,sha256=ybsItvlBESIY4OJvH-F6lUKIADTw3P1LqUXa0yOJHdI,6577
429
429
  lusid/models/external_fee_component_filter.py,sha256=MYonxkbn322SfeeMvNUZ4VvjZlqw24SuBPECUkw-1wk,3125
430
430
  lusid/models/fee.py,sha256=QhQeSjYw4h7mpQ4d4bGSnu2WU_A1J8pMJwi8j8fm210,11945
431
- lusid/models/fee_accrual.py,sha256=4u5DYJpuu0mwhpXafCRA1mHCdDhNMjwpuTMllxUiqkI,4319
431
+ lusid/models/fee_accrual.py,sha256=mDri5QECjlRtM3l2g1eGTbkgP0pmdtQNL7vOfpFX3-o,4587
432
432
  lusid/models/fee_properties.py,sha256=Q92whmRw6aIwyxsgLVF9vntTY5WLwtrDdJMw9sSNoEQ,4232
433
433
  lusid/models/fee_request.py,sha256=WiLPnFankXqmxVgg0tBZbFHxvXF-QZMa1TqJsMIUR5Q,10429
434
434
  lusid/models/fee_rule.py,sha256=Ez0GUE-1FlzEO8VF1IbH3p2I6gjMaQ6arWzo3VCyi5Q,6070
@@ -1252,6 +1252,6 @@ lusid/models/workspace_update_request.py,sha256=uUXEpX-dJ5UiL9w1wMxIFeovSBiTJ-vi
1252
1252
  lusid/models/yield_curve_data.py,sha256=SbxvdJ4-GWK9kpMdw4Fnxc7_kvIMwgsRsd_31UJn7nw,6330
1253
1253
  lusid/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1254
1254
  lusid/rest.py,sha256=HQT__5LQEMu6_1sLKvYj-DI4FH1DJXBIPYfZCTTyrY4,13431
1255
- lusid_sdk-2.1.619.dist-info/METADATA,sha256=v0oQX5Iw890EtBbYT-OmD1Btkmz9iFyWiExaQOhL8NU,213873
1256
- lusid_sdk-2.1.619.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
1257
- lusid_sdk-2.1.619.dist-info/RECORD,,
1255
+ lusid_sdk-2.1.620.dist-info/METADATA,sha256=k5BAvz_PUkB24CINQOv8wP-MyEx9f7USkTQXhIrmuQo,213873
1256
+ lusid_sdk-2.1.620.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
1257
+ lusid_sdk-2.1.620.dist-info/RECORD,,