lusid-sdk 2.0.50b0__py3-none-any.whl → 2.0.470__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of lusid-sdk might be problematic. Click here for more details.

Files changed (332) hide show
  1. lusid/__init__.py +1117 -14
  2. lusid/api/__init__.py +69 -0
  3. lusid/api/abor_api.py +513 -179
  4. lusid/api/abor_configuration_api.py +25 -24
  5. lusid/api/allocations_api.py +12 -20
  6. lusid/api/blocks_api.py +6 -6
  7. lusid/api/calendars_api.py +16 -24
  8. lusid/api/chart_of_accounts_api.py +1745 -441
  9. lusid/api/compliance_api.py +71 -62
  10. lusid/api/configuration_recipe_api.py +1198 -56
  11. lusid/api/corporate_action_sources_api.py +8 -8
  12. lusid/api/custom_entities_api.py +6 -6
  13. lusid/api/cut_label_definitions_api.py +9 -17
  14. lusid/api/data_types_api.py +16 -32
  15. lusid/api/executions_api.py +6 -6
  16. lusid/api/funds_api.py +1119 -0
  17. lusid/api/instrument_event_types_api.py +1287 -0
  18. lusid/api/instruments_api.py +12 -20
  19. lusid/api/legacy_compliance_api.py +12 -12
  20. lusid/api/legal_entities_api.py +12 -12
  21. lusid/api/order_graph_api.py +12 -12
  22. lusid/api/order_instructions_api.py +6 -6
  23. lusid/api/order_management_api.py +495 -14
  24. lusid/api/orders_api.py +16 -24
  25. lusid/api/packages_api.py +6 -6
  26. lusid/api/persons_api.py +16 -24
  27. lusid/api/placements_api.py +12 -12
  28. lusid/api/portfolio_groups_api.py +6 -6
  29. lusid/api/portfolios_api.py +23 -39
  30. lusid/api/property_definitions_api.py +205 -0
  31. lusid/api/queryable_keys_api.py +211 -0
  32. lusid/api/quotes_api.py +20 -36
  33. lusid/api/reconciliations_api.py +410 -1978
  34. lusid/api/schemas_api.py +7 -15
  35. lusid/api/scopes_api.py +151 -0
  36. lusid/api/scripted_translation_api.py +30 -28
  37. lusid/api/staging_rule_set_api.py +885 -0
  38. lusid/api/transaction_configuration_api.py +22 -22
  39. lusid/api/transaction_portfolios_api.py +282 -577
  40. lusid/api_client.py +5 -3
  41. lusid/configuration.py +1 -1
  42. lusid/extensions/__init__.py +10 -7
  43. lusid/extensions/api_client.py +3 -1
  44. lusid/extensions/api_client_factory.py +156 -45
  45. lusid/extensions/api_configuration.py +124 -15
  46. lusid/extensions/configuration_loaders.py +2 -4
  47. lusid/extensions/proxy_config.py +8 -5
  48. lusid/extensions/socket_keep_alive.py +14 -15
  49. lusid/extensions/tcp_keep_alive_connector.py +93 -46
  50. lusid/models/__init__.py +1028 -13
  51. lusid/models/abor.py +9 -2
  52. lusid/models/abor_configuration.py +8 -8
  53. lusid/models/abor_configuration_request.py +9 -9
  54. lusid/models/abor_request.py +1 -1
  55. lusid/models/account.py +6 -1
  56. lusid/models/accumulation_event.py +104 -0
  57. lusid/models/address_key_compliance_parameter.py +5 -12
  58. lusid/models/address_key_list_compliance_parameter.py +3 -3
  59. lusid/models/address_key_option_definition.py +3 -1
  60. lusid/models/amortisation_event.py +4 -6
  61. lusid/models/{underlying_leg.py → asset_leg.py} +15 -15
  62. lusid/models/basket.py +3 -3
  63. lusid/models/block_and_order_id_request.py +78 -0
  64. lusid/models/block_and_orders.py +83 -0
  65. lusid/models/block_and_orders_create_request.py +77 -0
  66. lusid/models/block_and_orders_request.py +134 -0
  67. lusid/models/blocked_order_request.py +130 -0
  68. lusid/models/bond.py +13 -6
  69. lusid/models/bond_coupon_event.py +97 -0
  70. lusid/models/bond_default_event.py +8 -18
  71. lusid/models/bond_principal_event.py +97 -0
  72. lusid/models/book_transactions_request.py +97 -0
  73. lusid/models/bool_compliance_parameter.py +3 -3
  74. lusid/models/bool_list_compliance_parameter.py +3 -3
  75. lusid/models/branch_step.py +101 -0
  76. lusid/models/cap_floor.py +3 -3
  77. lusid/models/cash_dividend_event.py +32 -10
  78. lusid/models/cash_election.py +91 -0
  79. lusid/models/cash_flow_event.py +5 -7
  80. lusid/models/cash_perpetual.py +3 -3
  81. lusid/models/cds_flow_conventions.py +1 -1
  82. lusid/models/cds_index.py +4 -4
  83. lusid/models/check_step.py +110 -0
  84. lusid/models/cleardown_module_details.py +95 -0
  85. lusid/models/cleardown_module_request.py +117 -0
  86. lusid/models/cleardown_module_response.py +139 -0
  87. lusid/models/cleardown_module_rule.py +94 -0
  88. lusid/models/{reconciliation_run_break.py → cleardown_module_rules_updated_response.py} +30 -36
  89. lusid/models/close_event.py +3 -3
  90. lusid/models/close_period_diary_entry_request.py +149 -0
  91. lusid/models/complete_portfolio.py +8 -1
  92. lusid/models/complex_bond.py +4 -4
  93. lusid/models/complex_market_data.py +6 -5
  94. lusid/models/compliance_parameter.py +8 -5
  95. lusid/models/compliance_parameter_type.py +3 -0
  96. lusid/models/compliance_rule_breakdown.py +16 -8
  97. lusid/models/compliance_rule_breakdown_request.py +12 -4
  98. lusid/models/compliance_rule_result_v2.py +85 -0
  99. lusid/models/compliance_step.py +99 -0
  100. lusid/models/compliance_step_type.py +42 -0
  101. lusid/models/compliance_summary_rule_result.py +12 -15
  102. lusid/models/compliance_summary_rule_result_request.py +12 -15
  103. lusid/models/compliance_template_variation.py +12 -2
  104. lusid/models/component_transaction.py +92 -0
  105. lusid/models/composite_dispersion.py +30 -5
  106. lusid/models/compounding.py +4 -4
  107. lusid/models/configuration_recipe.py +10 -19
  108. lusid/models/constant_volatility_surface.py +102 -0
  109. lusid/models/contract_for_difference.py +3 -3
  110. lusid/models/create_derived_property_definition_request.py +3 -3
  111. lusid/models/create_derived_transaction_portfolio_request.py +10 -3
  112. lusid/models/create_property_definition_request.py +12 -5
  113. lusid/models/create_staging_rule_set_request.py +91 -0
  114. lusid/models/create_trade_tickets_response.py +87 -0
  115. lusid/models/create_transaction_portfolio_request.py +16 -3
  116. lusid/models/credit_default_swap.py +4 -4
  117. lusid/models/credit_spread_curve_data.py +4 -4
  118. lusid/models/custom_entity_definition.py +8 -2
  119. lusid/models/custom_entity_type.py +8 -2
  120. lusid/models/cut_label_definition.py +7 -1
  121. lusid/models/data_type.py +7 -1
  122. lusid/models/data_type_summary.py +8 -2
  123. lusid/models/date_time_compliance_parameter.py +3 -3
  124. lusid/models/date_time_list_compliance_parameter.py +3 -3
  125. lusid/models/{upsert_reconciliation_run_request.py → day_month.py} +15 -15
  126. lusid/models/decimal_compliance_parameter.py +3 -3
  127. lusid/models/decimal_list_compliance_parameter.py +3 -3
  128. lusid/models/dialect.py +9 -3
  129. lusid/models/diary_entry.py +1 -1
  130. lusid/models/diary_entry_request.py +1 -1
  131. lusid/models/discount_factor_curve_data.py +3 -3
  132. lusid/models/dividend_option_event.py +129 -0
  133. lusid/models/dividend_reinvestment_event.py +124 -0
  134. lusid/models/election_specification.py +73 -0
  135. lusid/models/eligibility_calculation.py +71 -0
  136. lusid/models/empty_model_options.py +3 -3
  137. lusid/models/equity.py +8 -6
  138. lusid/models/equity_curve_by_prices_data.py +3 -3
  139. lusid/models/equity_model_options.py +3 -3
  140. lusid/models/equity_option.py +3 -3
  141. lusid/models/equity_swap.py +4 -4
  142. lusid/models/equity_vol_surface_data.py +3 -3
  143. lusid/models/exchange_traded_option.py +3 -3
  144. lusid/models/exercise_event.py +5 -7
  145. lusid/models/exotic_instrument.py +3 -3
  146. lusid/models/expiry_event.py +91 -0
  147. lusid/models/filter_predicate_compliance_parameter.py +91 -0
  148. lusid/models/filter_step.py +101 -0
  149. lusid/models/fixed_leg.py +3 -3
  150. lusid/models/fixed_schedule.py +4 -9
  151. lusid/models/flexible_loan.py +105 -0
  152. lusid/models/float_schedule.py +20 -12
  153. lusid/models/floating_leg.py +3 -3
  154. lusid/models/flow_convention_name.py +1 -1
  155. lusid/models/flow_conventions.py +1 -1
  156. lusid/models/forward_rate_agreement.py +3 -3
  157. lusid/models/from_recipe.py +81 -0
  158. lusid/models/fund.py +182 -0
  159. lusid/models/fund_properties.py +115 -0
  160. lusid/models/fund_request.py +165 -0
  161. lusid/models/fund_share_class.py +99 -0
  162. lusid/models/funding_leg.py +3 -3
  163. lusid/models/funding_leg_options.py +3 -3
  164. lusid/models/future.py +3 -3
  165. lusid/models/fx_conventions.py +73 -0
  166. lusid/models/fx_forward.py +8 -6
  167. lusid/models/fx_forward_curve_by_quote_reference.py +4 -4
  168. lusid/models/fx_forward_curve_data.py +3 -3
  169. lusid/models/fx_forward_model_options.py +3 -3
  170. lusid/models/fx_forward_pips_curve_data.py +3 -3
  171. lusid/models/fx_forward_settlement_event.py +136 -0
  172. lusid/models/fx_forward_tenor_curve_data.py +4 -4
  173. lusid/models/fx_forward_tenor_pips_curve_data.py +4 -4
  174. lusid/models/fx_linked_notional_schedule.py +108 -0
  175. lusid/models/fx_option.py +3 -3
  176. lusid/models/fx_rate_schedule.py +3 -3
  177. lusid/models/fx_swap.py +4 -4
  178. lusid/models/fx_vol_surface_data.py +3 -3
  179. lusid/models/{reconciliation_run.py → get_recipe_composer_response.py} +15 -15
  180. lusid/models/group_by_selector_compliance_parameter.py +91 -0
  181. lusid/models/group_by_step.py +101 -0
  182. lusid/models/group_filter_predicate_compliance_parameter.py +91 -0
  183. lusid/models/group_filter_step.py +110 -0
  184. lusid/models/group_of_market_data_key_rules.py +79 -0
  185. lusid/models/index_convention.py +1 -1
  186. lusid/models/index_model_options.py +3 -3
  187. lusid/models/inflation_index_conventions.py +2 -2
  188. lusid/models/inflation_leg.py +3 -3
  189. lusid/models/inflation_linked_bond.py +3 -3
  190. lusid/models/inflation_swap.py +4 -4
  191. lusid/models/informational_error_event.py +3 -3
  192. lusid/models/informational_event.py +4 -6
  193. lusid/models/instrument_event.py +13 -5
  194. lusid/models/instrument_event_configuration.py +74 -0
  195. lusid/models/instrument_event_holder.py +12 -3
  196. lusid/models/instrument_event_type.py +8 -0
  197. lusid/models/instrument_leg.py +3 -3
  198. lusid/models/instrument_list_compliance_parameter.py +3 -3
  199. lusid/models/instrument_payment_diary_leg.py +5 -3
  200. lusid/models/instrument_resolution_detail.py +105 -0
  201. lusid/models/instrument_type.py +2 -0
  202. lusid/models/interest_rate_swap.py +4 -4
  203. lusid/models/interest_rate_swaption.py +3 -3
  204. lusid/models/intermediate_compliance_step.py +110 -0
  205. lusid/models/ir_vol_cube_data.py +3 -3
  206. lusid/models/journal_entry_line.py +34 -3
  207. lusid/models/journal_entry_lines_query_parameters.py +1 -1
  208. lusid/models/label_value_set.py +1 -1
  209. lusid/models/leg_definition.py +16 -3
  210. lusid/models/lineage_member.py +87 -0
  211. lusid/models/lock_period_diary_entry_request.py +91 -0
  212. lusid/models/lusid_instrument.py +7 -5
  213. lusid/models/lusid_trade_ticket.py +8 -1
  214. lusid/models/market_context.py +17 -2
  215. lusid/models/market_data_type.py +1 -0
  216. lusid/models/maturity_event.py +91 -0
  217. lusid/models/model_options.py +5 -6
  218. lusid/models/model_options_type.py +0 -1
  219. lusid/models/model_selection.py +3 -3
  220. lusid/models/move_orders_to_different_blocks_request.py +77 -0
  221. lusid/models/moved_order_to_different_block_response.py +85 -0
  222. lusid/models/movement_type.py +2 -0
  223. lusid/models/multi_currency_amounts.py +71 -0
  224. lusid/models/opaque_market_data.py +3 -3
  225. lusid/models/opaque_model_options.py +3 -3
  226. lusid/models/open_event.py +3 -3
  227. lusid/models/optionality_schedule.py +3 -3
  228. lusid/models/order_graph_block.py +4 -2
  229. lusid/models/order_graph_block_order_detail.py +16 -2
  230. lusid/models/output_transaction.py +9 -2
  231. lusid/models/paged_resource_list_of_cleardown_module_response.py +113 -0
  232. lusid/models/{paged_resource_list_of_reconciliation_run_break.py → paged_resource_list_of_cleardown_module_rule.py} +11 -11
  233. lusid/models/{paged_resource_list_of_reconciliation_run.py → paged_resource_list_of_fund.py} +11 -11
  234. lusid/models/paged_resource_list_of_property_definition.py +113 -0
  235. lusid/models/paged_resource_list_of_staging_rule_set.py +113 -0
  236. lusid/models/paged_resource_list_of_transaction_template.py +113 -0
  237. lusid/models/paged_resource_list_of_transaction_template_specification.py +113 -0
  238. lusid/models/participation_request.py +3 -9
  239. lusid/models/performance_returns_metric.py +1 -1
  240. lusid/models/period_diary_entries_reopened_response.py +104 -0
  241. lusid/models/place_blocks_request.py +77 -0
  242. lusid/models/portfolio.py +15 -2
  243. lusid/models/portfolio_details.py +15 -2
  244. lusid/models/portfolio_group_id_compliance_parameter.py +3 -3
  245. lusid/models/portfolio_group_id_list_compliance_parameter.py +3 -3
  246. lusid/models/portfolio_holding.py +27 -2
  247. lusid/models/portfolio_id_compliance_parameter.py +3 -3
  248. lusid/models/portfolio_id_list_compliance_parameter.py +3 -3
  249. lusid/models/posting_module_rule.py +29 -4
  250. lusid/models/pricing_model.py +2 -1
  251. lusid/models/property_definition.py +17 -4
  252. lusid/models/property_definition_search_result.py +3 -3
  253. lusid/models/property_domain.py +3 -0
  254. lusid/models/property_key_compliance_parameter.py +3 -3
  255. lusid/models/property_key_list_compliance_parameter.py +3 -3
  256. lusid/models/queryable_key.py +124 -0
  257. lusid/models/raw_vendor_event.py +5 -7
  258. lusid/models/re_open_period_diary_entry_request.py +84 -0
  259. lusid/models/recipe_block.py +87 -0
  260. lusid/models/recipe_composer.py +100 -0
  261. lusid/models/{reconciliation_break_id.py → recipe_value.py} +22 -23
  262. lusid/models/recombine_step.py +101 -0
  263. lusid/models/reference_instrument.py +3 -3
  264. lusid/models/relative_date_offset.py +71 -0
  265. lusid/models/repo.py +3 -3
  266. lusid/models/reset_event.py +4 -6
  267. lusid/models/resource_list_of_block_and_orders.py +113 -0
  268. lusid/models/resource_list_of_get_recipe_composer_response.py +113 -0
  269. lusid/models/resource_list_of_moved_order_to_different_block_response.py +113 -0
  270. lusid/models/resource_list_of_queryable_key.py +113 -0
  271. lusid/models/schedule.py +6 -5
  272. lusid/models/schedule_type.py +1 -0
  273. lusid/models/script_map_reference.py +94 -0
  274. lusid/models/security_election.py +86 -0
  275. lusid/models/set_share_class_instruments_request.py +79 -0
  276. lusid/models/side_definition.py +1 -8
  277. lusid/models/sides_definition_request.py +1 -8
  278. lusid/models/simple_cash_flow_loan.py +3 -3
  279. lusid/models/simple_instrument.py +3 -3
  280. lusid/models/staging_rule.py +90 -0
  281. lusid/models/staging_rule_approval_criteria.py +81 -0
  282. lusid/models/staging_rule_match_criteria.py +95 -0
  283. lusid/models/staging_rule_set.py +103 -0
  284. lusid/models/step_schedule.py +3 -3
  285. lusid/models/stock_split_event.py +3 -3
  286. lusid/models/string_compliance_parameter.py +3 -3
  287. lusid/models/string_list_compliance_parameter.py +3 -3
  288. lusid/models/template_field.py +77 -0
  289. lusid/models/term_deposit.py +3 -3
  290. lusid/models/total_return_swap.py +16 -16
  291. lusid/models/transaction_configuration_movement_data.py +3 -3
  292. lusid/models/transaction_configuration_movement_data_request.py +3 -3
  293. lusid/models/transaction_currency_and_amount.py +81 -0
  294. lusid/models/transaction_field_map.py +97 -0
  295. lusid/models/transaction_price.py +3 -3
  296. lusid/models/transaction_price_and_type.py +81 -0
  297. lusid/models/transaction_price_type.py +1 -0
  298. lusid/models/transaction_property_map.py +80 -0
  299. lusid/models/transaction_template.py +100 -0
  300. lusid/models/transaction_template_request.py +79 -0
  301. lusid/models/transaction_template_specification.py +99 -0
  302. lusid/models/transaction_type_alias.py +0 -7
  303. lusid/models/transaction_type_calculation.py +1 -1
  304. lusid/models/transition_event.py +3 -3
  305. lusid/models/translation_context.py +75 -0
  306. lusid/models/translation_script.py +9 -3
  307. lusid/models/trial_balance.py +46 -11
  308. lusid/models/trial_balance_query_parameters.py +15 -6
  309. lusid/models/trigger_event.py +3 -3
  310. lusid/models/units_ratio.py +71 -0
  311. lusid/models/update_staging_rule_set_request.py +91 -0
  312. lusid/models/{compliance_run_summary.py → upsert_compliance_run_summary_result.py} +8 -8
  313. lusid/models/upsert_dialect_request.py +79 -0
  314. lusid/models/upsert_instrument_event_request.py +12 -3
  315. lusid/models/upsert_quote_request.py +1 -1
  316. lusid/models/upsert_recipe_composer_request.py +73 -0
  317. lusid/models/upsert_recipe_request.py +3 -9
  318. lusid/models/upsert_translation_script_request.py +75 -0
  319. lusid/models/valuation_schedule.py +10 -3
  320. lusid/models/weighted_instrument.py +13 -2
  321. lusid/models/weighted_instrument_in_line_lookup_identifiers.py +89 -0
  322. lusid/models/yield_curve_data.py +3 -3
  323. lusid/rest.py +1 -1
  324. {lusid_sdk-2.0.50b0.dist-info → lusid_sdk-2.0.470.dist-info}/METADATA +245 -48
  325. {lusid_sdk-2.0.50b0.dist-info → lusid_sdk-2.0.470.dist-info}/RECORD +326 -235
  326. {lusid_sdk-2.0.50b0.dist-info → lusid_sdk-2.0.470.dist-info}/WHEEL +1 -1
  327. lusid/extensions/api_client_builder.py +0 -138
  328. lusid/models/configuration_recipe_snippet.py +0 -139
  329. lusid/models/je_lines_query_parameters.py +0 -105
  330. lusid/models/look_up_pricing_model_options.py +0 -93
  331. lusid/models/reconciliation_run_id.py +0 -85
  332. lusid/models/upsert_reconciliation_break_request.py +0 -98
@@ -20,20 +20,19 @@ import json
20
20
 
21
21
  from typing import Any, Dict, List, Optional
22
22
  from pydantic import BaseModel, Field, StrictStr, conlist
23
+ from lusid.models.cleardown_module_rule import CleardownModuleRule
23
24
  from lusid.models.link import Link
24
- from lusid.models.reconciliation_break_id import ReconciliationBreakId
25
+ from lusid.models.version import Version
25
26
 
26
- class ReconciliationRunBreak(BaseModel):
27
+ class CleardownModuleRulesUpdatedResponse(BaseModel):
27
28
  """
28
- ReconciliationRunBreak
29
+ A Cleardown Module rules update response # noqa: E501
29
30
  """
30
- id: Optional[ReconciliationBreakId] = None
31
+ rules: Optional[conlist(CleardownModuleRule)] = Field(None, description="The Cleardown Rules that apply for the Cleardown Module. Rules are evaluated in the order they occur in this collection.")
32
+ version: Optional[Version] = None
31
33
  href: Optional[StrictStr] = Field(None, description="The specific Uniform Resource Identifier (URI) for this resource at the requested effective and asAt datetime.")
32
- left_fields: Optional[Dict[str, StrictStr]] = Field(None, alias="leftFields", description="Fields for the left hand side of the reconciliation")
33
- right_fields: Optional[Dict[str, StrictStr]] = Field(None, alias="rightFields", description="Fields for the right hand side of the reconciliation")
34
- diff: Optional[StrictStr] = Field(None, description="The difference between two matching fields")
35
34
  links: Optional[conlist(Link)] = None
36
- __properties = ["id", "href", "leftFields", "rightFields", "diff", "links"]
35
+ __properties = ["rules", "version", "href", "links"]
37
36
 
38
37
  class Config:
39
38
  """Pydantic configuration"""
@@ -49,8 +48,8 @@ class ReconciliationRunBreak(BaseModel):
49
48
  return json.dumps(self.to_dict())
50
49
 
51
50
  @classmethod
52
- def from_json(cls, json_str: str) -> ReconciliationRunBreak:
53
- """Create an instance of ReconciliationRunBreak from a JSON string"""
51
+ def from_json(cls, json_str: str) -> CleardownModuleRulesUpdatedResponse:
52
+ """Create an instance of CleardownModuleRulesUpdatedResponse from a JSON string"""
54
53
  return cls.from_dict(json.loads(json_str))
55
54
 
56
55
  def to_dict(self):
@@ -59,9 +58,16 @@ class ReconciliationRunBreak(BaseModel):
59
58
  exclude={
60
59
  },
61
60
  exclude_none=True)
62
- # override the default output from pydantic by calling `to_dict()` of id
63
- if self.id:
64
- _dict['id'] = self.id.to_dict()
61
+ # override the default output from pydantic by calling `to_dict()` of each item in rules (list)
62
+ _items = []
63
+ if self.rules:
64
+ for _item in self.rules:
65
+ if _item:
66
+ _items.append(_item.to_dict())
67
+ _dict['rules'] = _items
68
+ # override the default output from pydantic by calling `to_dict()` of version
69
+ if self.version:
70
+ _dict['version'] = self.version.to_dict()
65
71
  # override the default output from pydantic by calling `to_dict()` of each item in links (list)
66
72
  _items = []
67
73
  if self.links:
@@ -69,26 +75,16 @@ class ReconciliationRunBreak(BaseModel):
69
75
  if _item:
70
76
  _items.append(_item.to_dict())
71
77
  _dict['links'] = _items
78
+ # set to None if rules (nullable) is None
79
+ # and __fields_set__ contains the field
80
+ if self.rules is None and "rules" in self.__fields_set__:
81
+ _dict['rules'] = None
82
+
72
83
  # set to None if href (nullable) is None
73
84
  # and __fields_set__ contains the field
74
85
  if self.href is None and "href" in self.__fields_set__:
75
86
  _dict['href'] = None
76
87
 
77
- # set to None if left_fields (nullable) is None
78
- # and __fields_set__ contains the field
79
- if self.left_fields is None and "left_fields" in self.__fields_set__:
80
- _dict['leftFields'] = None
81
-
82
- # set to None if right_fields (nullable) is None
83
- # and __fields_set__ contains the field
84
- if self.right_fields is None and "right_fields" in self.__fields_set__:
85
- _dict['rightFields'] = None
86
-
87
- # set to None if diff (nullable) is None
88
- # and __fields_set__ contains the field
89
- if self.diff is None and "diff" in self.__fields_set__:
90
- _dict['diff'] = None
91
-
92
88
  # set to None if links (nullable) is None
93
89
  # and __fields_set__ contains the field
94
90
  if self.links is None and "links" in self.__fields_set__:
@@ -97,20 +93,18 @@ class ReconciliationRunBreak(BaseModel):
97
93
  return _dict
98
94
 
99
95
  @classmethod
100
- def from_dict(cls, obj: dict) -> ReconciliationRunBreak:
101
- """Create an instance of ReconciliationRunBreak from a dict"""
96
+ def from_dict(cls, obj: dict) -> CleardownModuleRulesUpdatedResponse:
97
+ """Create an instance of CleardownModuleRulesUpdatedResponse from a dict"""
102
98
  if obj is None:
103
99
  return None
104
100
 
105
101
  if not isinstance(obj, dict):
106
- return ReconciliationRunBreak.parse_obj(obj)
102
+ return CleardownModuleRulesUpdatedResponse.parse_obj(obj)
107
103
 
108
- _obj = ReconciliationRunBreak.parse_obj({
109
- "id": ReconciliationBreakId.from_dict(obj.get("id")) if obj.get("id") is not None else None,
104
+ _obj = CleardownModuleRulesUpdatedResponse.parse_obj({
105
+ "rules": [CleardownModuleRule.from_dict(_item) for _item in obj.get("rules")] if obj.get("rules") is not None else None,
106
+ "version": Version.from_dict(obj.get("version")) if obj.get("version") is not None else None,
110
107
  "href": obj.get("href"),
111
- "left_fields": obj.get("leftFields"),
112
- "right_fields": obj.get("rightFields"),
113
- "diff": obj.get("diff"),
114
108
  "links": [Link.from_dict(_item) for _item in obj.get("links")] if obj.get("links") is not None else None
115
109
  })
116
110
  return _obj
@@ -28,15 +28,15 @@ class CloseEvent(InstrumentEvent):
28
28
  """
29
29
  start_date: Optional[datetime] = Field(None, alias="startDate", description="The first date on which the instrument could close")
30
30
  end_date: Optional[datetime] = Field(None, alias="endDate", description="The last date on which the instrument could close")
31
- 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")
31
+ 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")
32
32
  additional_properties: Dict[str, Any] = {}
33
33
  __properties = ["instrumentEventType", "startDate", "endDate"]
34
34
 
35
35
  @validator('instrument_event_type')
36
36
  def instrument_event_type_validate_enum(cls, value):
37
37
  """Validates the enum"""
38
- if value not in ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent'):
39
- raise ValueError("must be one of enum values ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent')")
38
+ if value not in ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent'):
39
+ raise ValueError("must be one of enum values ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent')")
40
40
  return value
41
41
 
42
42
  class Config:
@@ -0,0 +1,149 @@
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
+ from datetime import datetime
21
+ from typing import Any, Dict, List, Optional
22
+ from pydantic import BaseModel, Field, StrictStr, conlist, constr, validator
23
+ from lusid.models.model_property import ModelProperty
24
+
25
+ class ClosePeriodDiaryEntryRequest(BaseModel):
26
+ """
27
+ A definition for the period you wish to close # noqa: E501
28
+ """
29
+ diary_entry_code: Optional[constr(strict=True, max_length=64, min_length=1)] = Field(None, alias="diaryEntryCode", description="Unique code assigned to a period. When left blank a code will be created by the system in the format 'yyyyMMDD'.")
30
+ name: Optional[constr(strict=True, max_length=512, min_length=1)] = Field(None, description="Identifiable Name assigned to the period. Where left blank, the system will generate a name in the format 'yyyyMMDD'.")
31
+ effective_at: Optional[datetime] = Field(None, alias="effectiveAt", description="The effective time of the diary entry.")
32
+ query_as_at: Optional[datetime] = Field(None, alias="queryAsAt", description="The query time of the diary entry. Defaults to latest.")
33
+ status: Optional[StrictStr] = Field(None, description="The status of the diary entry. Defaults to 'Undefined' for valuation points and 'Estimate' for closing periods.")
34
+ properties: Optional[Dict[str, ModelProperty]] = Field(None, description="A set of properties for the diary entry.")
35
+ closing_options: Optional[conlist(StrictStr)] = Field(None, alias="closingOptions", description="The options which will be executed once a period is closed or locked.")
36
+ __properties = ["diaryEntryCode", "name", "effectiveAt", "queryAsAt", "status", "properties", "closingOptions"]
37
+
38
+ @validator('diary_entry_code')
39
+ def diary_entry_code_validate_regular_expression(cls, value):
40
+ """Validates the regular expression"""
41
+ if value is None:
42
+ return value
43
+
44
+ if not re.match(r"^[a-zA-Z0-9\-_]+$", value):
45
+ raise ValueError(r"must validate the regular expression /^[a-zA-Z0-9\-_]+$/")
46
+ return value
47
+
48
+ @validator('name')
49
+ def name_validate_regular_expression(cls, value):
50
+ """Validates the regular expression"""
51
+ if value is None:
52
+ return value
53
+
54
+ if not re.match(r"^[\s\S]*$", value):
55
+ raise ValueError(r"must validate the regular expression /^[\s\S]*$/")
56
+ return value
57
+
58
+ class Config:
59
+ """Pydantic configuration"""
60
+ allow_population_by_field_name = True
61
+ validate_assignment = True
62
+
63
+ def to_str(self) -> str:
64
+ """Returns the string representation of the model using alias"""
65
+ return pprint.pformat(self.dict(by_alias=True))
66
+
67
+ def to_json(self) -> str:
68
+ """Returns the JSON representation of the model using alias"""
69
+ return json.dumps(self.to_dict())
70
+
71
+ @classmethod
72
+ def from_json(cls, json_str: str) -> ClosePeriodDiaryEntryRequest:
73
+ """Create an instance of ClosePeriodDiaryEntryRequest from a JSON string"""
74
+ return cls.from_dict(json.loads(json_str))
75
+
76
+ def to_dict(self):
77
+ """Returns the dictionary representation of the model using alias"""
78
+ _dict = self.dict(by_alias=True,
79
+ exclude={
80
+ },
81
+ exclude_none=True)
82
+ # override the default output from pydantic by calling `to_dict()` of each value in properties (dict)
83
+ _field_dict = {}
84
+ if self.properties:
85
+ for _key in self.properties:
86
+ if self.properties[_key]:
87
+ _field_dict[_key] = self.properties[_key].to_dict()
88
+ _dict['properties'] = _field_dict
89
+ # set to None if diary_entry_code (nullable) is None
90
+ # and __fields_set__ contains the field
91
+ if self.diary_entry_code is None and "diary_entry_code" in self.__fields_set__:
92
+ _dict['diaryEntryCode'] = None
93
+
94
+ # set to None if name (nullable) is None
95
+ # and __fields_set__ contains the field
96
+ if self.name is None and "name" in self.__fields_set__:
97
+ _dict['name'] = None
98
+
99
+ # set to None if effective_at (nullable) is None
100
+ # and __fields_set__ contains the field
101
+ if self.effective_at is None and "effective_at" in self.__fields_set__:
102
+ _dict['effectiveAt'] = None
103
+
104
+ # set to None if query_as_at (nullable) is None
105
+ # and __fields_set__ contains the field
106
+ if self.query_as_at is None and "query_as_at" in self.__fields_set__:
107
+ _dict['queryAsAt'] = None
108
+
109
+ # set to None if status (nullable) is None
110
+ # and __fields_set__ contains the field
111
+ if self.status is None and "status" in self.__fields_set__:
112
+ _dict['status'] = None
113
+
114
+ # set to None if properties (nullable) is None
115
+ # and __fields_set__ contains the field
116
+ if self.properties is None and "properties" in self.__fields_set__:
117
+ _dict['properties'] = None
118
+
119
+ # set to None if closing_options (nullable) is None
120
+ # and __fields_set__ contains the field
121
+ if self.closing_options is None and "closing_options" in self.__fields_set__:
122
+ _dict['closingOptions'] = None
123
+
124
+ return _dict
125
+
126
+ @classmethod
127
+ def from_dict(cls, obj: dict) -> ClosePeriodDiaryEntryRequest:
128
+ """Create an instance of ClosePeriodDiaryEntryRequest from a dict"""
129
+ if obj is None:
130
+ return None
131
+
132
+ if not isinstance(obj, dict):
133
+ return ClosePeriodDiaryEntryRequest.parse_obj(obj)
134
+
135
+ _obj = ClosePeriodDiaryEntryRequest.parse_obj({
136
+ "diary_entry_code": obj.get("diaryEntryCode"),
137
+ "name": obj.get("name"),
138
+ "effective_at": obj.get("effectiveAt"),
139
+ "query_as_at": obj.get("queryAsAt"),
140
+ "status": obj.get("status"),
141
+ "properties": dict(
142
+ (_k, ModelProperty.from_dict(_v))
143
+ for _k, _v in obj.get("properties").items()
144
+ )
145
+ if obj.get("properties") is not None
146
+ else None,
147
+ "closing_options": obj.get("closingOptions")
148
+ })
149
+ return _obj
@@ -40,8 +40,9 @@ class CompletePortfolio(BaseModel):
40
40
  version: Version = Field(...)
41
41
  properties: Optional[conlist(ModelProperty)] = Field(None, description="The requested portfolio properties. These will be from the 'Portfolio' domain.")
42
42
  base_currency: Optional[StrictStr] = Field(None, alias="baseCurrency", description="If the portfolio is a transaction portfolio or derived transaction portfolio, this is the base currency of the portfolio.")
43
+ sub_holding_keys: Optional[conlist(StrictStr)] = Field(None, alias="subHoldingKeys", description="The sub holding key properties configured for the portfolio")
43
44
  links: Optional[conlist(Link)] = None
44
- __properties = ["id", "href", "description", "displayName", "created", "parentPortfolioId", "isDerived", "type", "version", "properties", "baseCurrency", "links"]
45
+ __properties = ["id", "href", "description", "displayName", "created", "parentPortfolioId", "isDerived", "type", "version", "properties", "baseCurrency", "subHoldingKeys", "links"]
45
46
 
46
47
  @validator('type')
47
48
  def type_validate_enum(cls, value):
@@ -126,6 +127,11 @@ class CompletePortfolio(BaseModel):
126
127
  if self.base_currency is None and "base_currency" in self.__fields_set__:
127
128
  _dict['baseCurrency'] = None
128
129
 
130
+ # set to None if sub_holding_keys (nullable) is None
131
+ # and __fields_set__ contains the field
132
+ if self.sub_holding_keys is None and "sub_holding_keys" in self.__fields_set__:
133
+ _dict['subHoldingKeys'] = None
134
+
129
135
  # set to None if links (nullable) is None
130
136
  # and __fields_set__ contains the field
131
137
  if self.links is None and "links" in self.__fields_set__:
@@ -154,6 +160,7 @@ class CompletePortfolio(BaseModel):
154
160
  "version": Version.from_dict(obj.get("version")) if obj.get("version") is not None else None,
155
161
  "properties": [ModelProperty.from_dict(_item) for _item in obj.get("properties")] if obj.get("properties") is not None else None,
156
162
  "base_currency": obj.get("baseCurrency"),
163
+ "sub_holding_keys": obj.get("subHoldingKeys"),
157
164
  "links": [Link.from_dict(_item) for _item in obj.get("links")] if obj.get("links") is not None else None
158
165
  })
159
166
  return _obj
@@ -33,16 +33,16 @@ class ComplexBond(LusidInstrument):
33
33
  schedules: Optional[conlist(Schedule)] = Field(None, description="schedules.")
34
34
  rounding_conventions: Optional[conlist(RoundingConvention)] = Field(None, alias="roundingConventions", description="Rounding conventions for analytics, if any.")
35
35
  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.")
36
- 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 expected to be the bond's ISIN as the pricer for asset backed securities will specifically look for an identifier of ISIN identifier type when searching for pool factor reset values in the quote store.")
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")
36
+ 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.*)")
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")
38
38
  additional_properties: Dict[str, Any] = {}
39
39
  __properties = ["instrumentType", "identifiers", "calculationType", "schedules", "roundingConventions", "assetBacked", "assetPoolIdentifier"]
40
40
 
41
41
  @validator('instrument_type')
42
42
  def instrument_type_validate_enum(cls, value):
43
43
  """Validates the enum"""
44
- if value not in ('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'):
45
- raise ValueError("must be one of enum values ('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')")
44
+ if value not in ('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'):
45
+ raise ValueError("must be one of enum values ('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')")
46
46
  return value
47
47
 
48
48
  class Config:
@@ -26,14 +26,14 @@ class ComplexMarketData(BaseModel):
26
26
  """
27
27
  Base class for representing complex market data in LUSID. Generally speaking, market data is complex when it cannot be represented as a single quote. Examples include discounting curves, projection curves, and volatility surfaces, which are used to compute instrument analytics. This base class should not be directly instantiated; each supported MarketDataType has a corresponding inherited class. # noqa: E501
28
28
  """
29
- market_data_type: StrictStr = Field(..., alias="marketDataType", description="The available values are: DiscountFactorCurveData, EquityVolSurfaceData, FxVolSurfaceData, IrVolCubeData, OpaqueMarketData, YieldCurveData, FxForwardCurveData, FxForwardPipsCurveData, FxForwardTenorCurveData, FxForwardTenorPipsCurveData, FxForwardCurveByQuoteReference, CreditSpreadCurveData, EquityCurveByPricesData")
29
+ market_data_type: StrictStr = Field(..., alias="marketDataType", description="The available values are: DiscountFactorCurveData, EquityVolSurfaceData, FxVolSurfaceData, IrVolCubeData, OpaqueMarketData, YieldCurveData, FxForwardCurveData, FxForwardPipsCurveData, FxForwardTenorCurveData, FxForwardTenorPipsCurveData, FxForwardCurveByQuoteReference, CreditSpreadCurveData, EquityCurveByPricesData, ConstantVolatilitySurface")
30
30
  __properties = ["marketDataType"]
31
31
 
32
32
  @validator('market_data_type')
33
33
  def market_data_type_validate_enum(cls, value):
34
34
  """Validates the enum"""
35
- if value not in ('DiscountFactorCurveData', 'EquityVolSurfaceData', 'FxVolSurfaceData', 'IrVolCubeData', 'OpaqueMarketData', 'YieldCurveData', 'FxForwardCurveData', 'FxForwardPipsCurveData', 'FxForwardTenorCurveData', 'FxForwardTenorPipsCurveData', 'FxForwardCurveByQuoteReference', 'CreditSpreadCurveData', 'EquityCurveByPricesData'):
36
- raise ValueError("must be one of enum values ('DiscountFactorCurveData', 'EquityVolSurfaceData', 'FxVolSurfaceData', 'IrVolCubeData', 'OpaqueMarketData', 'YieldCurveData', 'FxForwardCurveData', 'FxForwardPipsCurveData', 'FxForwardTenorCurveData', 'FxForwardTenorPipsCurveData', 'FxForwardCurveByQuoteReference', 'CreditSpreadCurveData', 'EquityCurveByPricesData')")
35
+ if value not in ('DiscountFactorCurveData', 'EquityVolSurfaceData', 'FxVolSurfaceData', 'IrVolCubeData', 'OpaqueMarketData', 'YieldCurveData', 'FxForwardCurveData', 'FxForwardPipsCurveData', 'FxForwardTenorCurveData', 'FxForwardTenorPipsCurveData', 'FxForwardCurveByQuoteReference', 'CreditSpreadCurveData', 'EquityCurveByPricesData', 'ConstantVolatilitySurface'):
36
+ raise ValueError("must be one of enum values ('DiscountFactorCurveData', 'EquityVolSurfaceData', 'FxVolSurfaceData', 'IrVolCubeData', 'OpaqueMarketData', 'YieldCurveData', 'FxForwardCurveData', 'FxForwardPipsCurveData', 'FxForwardTenorCurveData', 'FxForwardTenorPipsCurveData', 'FxForwardCurveByQuoteReference', 'CreditSpreadCurveData', 'EquityCurveByPricesData', 'ConstantVolatilitySurface')")
37
37
  return value
38
38
 
39
39
  class Config:
@@ -46,6 +46,7 @@ class ComplexMarketData(BaseModel):
46
46
 
47
47
  # discriminator mappings
48
48
  __discriminator_value_class_map = {
49
+ 'ConstantVolatilitySurface': 'ConstantVolatilitySurface',
49
50
  'CreditSpreadCurveData': 'CreditSpreadCurveData',
50
51
  'DiscountFactorCurveData': 'DiscountFactorCurveData',
51
52
  'EquityCurveByPricesData': 'EquityCurveByPricesData',
@@ -79,7 +80,7 @@ class ComplexMarketData(BaseModel):
79
80
  return json.dumps(self.to_dict())
80
81
 
81
82
  @classmethod
82
- def from_json(cls, json_str: str) -> Union(CreditSpreadCurveData, DiscountFactorCurveData, EquityCurveByPricesData, EquityVolSurfaceData, FxForwardCurveByQuoteReference, FxForwardCurveData, FxForwardPipsCurveData, FxForwardTenorCurveData, FxForwardTenorPipsCurveData, FxVolSurfaceData, IrVolCubeData, OpaqueMarketData, YieldCurveData):
83
+ def from_json(cls, json_str: str) -> Union(ConstantVolatilitySurface, CreditSpreadCurveData, DiscountFactorCurveData, EquityCurveByPricesData, EquityVolSurfaceData, FxForwardCurveByQuoteReference, FxForwardCurveData, FxForwardPipsCurveData, FxForwardTenorCurveData, FxForwardTenorPipsCurveData, FxVolSurfaceData, IrVolCubeData, OpaqueMarketData, YieldCurveData):
83
84
  """Create an instance of ComplexMarketData from a JSON string"""
84
85
  return cls.from_dict(json.loads(json_str))
85
86
 
@@ -92,7 +93,7 @@ class ComplexMarketData(BaseModel):
92
93
  return _dict
93
94
 
94
95
  @classmethod
95
- def from_dict(cls, obj: dict) -> Union(CreditSpreadCurveData, DiscountFactorCurveData, EquityCurveByPricesData, EquityVolSurfaceData, FxForwardCurveByQuoteReference, FxForwardCurveData, FxForwardPipsCurveData, FxForwardTenorCurveData, FxForwardTenorPipsCurveData, FxVolSurfaceData, IrVolCubeData, OpaqueMarketData, YieldCurveData):
96
+ def from_dict(cls, obj: dict) -> Union(ConstantVolatilitySurface, CreditSpreadCurveData, DiscountFactorCurveData, EquityCurveByPricesData, EquityVolSurfaceData, FxForwardCurveByQuoteReference, FxForwardCurveData, FxForwardPipsCurveData, FxForwardTenorCurveData, FxForwardTenorPipsCurveData, FxVolSurfaceData, IrVolCubeData, OpaqueMarketData, YieldCurveData):
96
97
  """Create an instance of ComplexMarketData from a dict"""
97
98
  # look up the object type based on discriminator mapping
98
99
  object_type = cls.get_discriminator_value(obj)
@@ -26,14 +26,14 @@ class ComplianceParameter(BaseModel):
26
26
  """
27
27
  ComplianceParameter
28
28
  """
29
- compliance_parameter_type: StrictStr = Field(..., alias="complianceParameterType", description="The parameter type. The available values are: BoolComplianceParameter, StringComplianceParameter, DecimalComplianceParameter, DateTimeComplianceParameter, PropertyKeyComplianceParameter, AddressKeyComplianceParameter, PortfolioIdComplianceParameter, PortfolioGroupIdComplianceParameter, StringListComplianceParameter, BoolListComplianceParameter, DateTimeListComplianceParameter, DecimalListComplianceParameter, PropertyKeyListComplianceParameter, AddressKeyListComplianceParameter, PortfolioIdListComplianceParameter, PortfolioGroupIdListComplianceParameter, InstrumentListComplianceParameter")
29
+ compliance_parameter_type: StrictStr = Field(..., alias="complianceParameterType", description="The parameter type. The available values are: BoolComplianceParameter, StringComplianceParameter, DecimalComplianceParameter, DateTimeComplianceParameter, PropertyKeyComplianceParameter, AddressKeyComplianceParameter, PortfolioIdComplianceParameter, PortfolioGroupIdComplianceParameter, StringListComplianceParameter, BoolListComplianceParameter, DateTimeListComplianceParameter, DecimalListComplianceParameter, PropertyKeyListComplianceParameter, AddressKeyListComplianceParameter, PortfolioIdListComplianceParameter, PortfolioGroupIdListComplianceParameter, InstrumentListComplianceParameter, FilterPredicateComplianceParameter, GroupFilterPredicateComplianceParameter, GroupBySelectorComplianceParameter")
30
30
  __properties = ["complianceParameterType"]
31
31
 
32
32
  @validator('compliance_parameter_type')
33
33
  def compliance_parameter_type_validate_enum(cls, value):
34
34
  """Validates the enum"""
35
- if value not in ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter'):
36
- raise ValueError("must be one of enum values ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter')")
35
+ if value not in ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter', 'FilterPredicateComplianceParameter', 'GroupFilterPredicateComplianceParameter', 'GroupBySelectorComplianceParameter'):
36
+ raise ValueError("must be one of enum values ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter', 'FilterPredicateComplianceParameter', 'GroupFilterPredicateComplianceParameter', 'GroupBySelectorComplianceParameter')")
37
37
  return value
38
38
 
39
39
  class Config:
@@ -54,6 +54,9 @@ class ComplianceParameter(BaseModel):
54
54
  'DateTimeListComplianceParameter': 'DateTimeListComplianceParameter',
55
55
  'DecimalComplianceParameter': 'DecimalComplianceParameter',
56
56
  'DecimalListComplianceParameter': 'DecimalListComplianceParameter',
57
+ 'FilterPredicateComplianceParameter': 'FilterPredicateComplianceParameter',
58
+ 'GroupBySelectorComplianceParameter': 'GroupBySelectorComplianceParameter',
59
+ 'GroupFilterPredicateComplianceParameter': 'GroupFilterPredicateComplianceParameter',
57
60
  'InstrumentListComplianceParameter': 'InstrumentListComplianceParameter',
58
61
  'PortfolioGroupIdComplianceParameter': 'PortfolioGroupIdComplianceParameter',
59
62
  'PortfolioGroupIdListComplianceParameter': 'PortfolioGroupIdListComplianceParameter',
@@ -83,7 +86,7 @@ class ComplianceParameter(BaseModel):
83
86
  return json.dumps(self.to_dict())
84
87
 
85
88
  @classmethod
86
- def from_json(cls, json_str: str) -> Union(AddressKeyComplianceParameter, AddressKeyListComplianceParameter, BoolComplianceParameter, BoolListComplianceParameter, DateTimeComplianceParameter, DateTimeListComplianceParameter, DecimalComplianceParameter, DecimalListComplianceParameter, InstrumentListComplianceParameter, PortfolioGroupIdComplianceParameter, PortfolioGroupIdListComplianceParameter, PortfolioIdComplianceParameter, PortfolioIdListComplianceParameter, PropertyKeyComplianceParameter, PropertyKeyListComplianceParameter, StringComplianceParameter, StringListComplianceParameter):
89
+ def from_json(cls, json_str: str) -> Union(AddressKeyComplianceParameter, AddressKeyListComplianceParameter, BoolComplianceParameter, BoolListComplianceParameter, DateTimeComplianceParameter, DateTimeListComplianceParameter, DecimalComplianceParameter, DecimalListComplianceParameter, FilterPredicateComplianceParameter, GroupBySelectorComplianceParameter, GroupFilterPredicateComplianceParameter, InstrumentListComplianceParameter, PortfolioGroupIdComplianceParameter, PortfolioGroupIdListComplianceParameter, PortfolioIdComplianceParameter, PortfolioIdListComplianceParameter, PropertyKeyComplianceParameter, PropertyKeyListComplianceParameter, StringComplianceParameter, StringListComplianceParameter):
87
90
  """Create an instance of ComplianceParameter from a JSON string"""
88
91
  return cls.from_dict(json.loads(json_str))
89
92
 
@@ -96,7 +99,7 @@ class ComplianceParameter(BaseModel):
96
99
  return _dict
97
100
 
98
101
  @classmethod
99
- def from_dict(cls, obj: dict) -> Union(AddressKeyComplianceParameter, AddressKeyListComplianceParameter, BoolComplianceParameter, BoolListComplianceParameter, DateTimeComplianceParameter, DateTimeListComplianceParameter, DecimalComplianceParameter, DecimalListComplianceParameter, InstrumentListComplianceParameter, PortfolioGroupIdComplianceParameter, PortfolioGroupIdListComplianceParameter, PortfolioIdComplianceParameter, PortfolioIdListComplianceParameter, PropertyKeyComplianceParameter, PropertyKeyListComplianceParameter, StringComplianceParameter, StringListComplianceParameter):
102
+ def from_dict(cls, obj: dict) -> Union(AddressKeyComplianceParameter, AddressKeyListComplianceParameter, BoolComplianceParameter, BoolListComplianceParameter, DateTimeComplianceParameter, DateTimeListComplianceParameter, DecimalComplianceParameter, DecimalListComplianceParameter, FilterPredicateComplianceParameter, GroupBySelectorComplianceParameter, GroupFilterPredicateComplianceParameter, InstrumentListComplianceParameter, PortfolioGroupIdComplianceParameter, PortfolioGroupIdListComplianceParameter, PortfolioIdComplianceParameter, PortfolioIdListComplianceParameter, PropertyKeyComplianceParameter, PropertyKeyListComplianceParameter, StringComplianceParameter, StringListComplianceParameter):
100
103
  """Create an instance of ComplianceParameter from a dict"""
101
104
  # look up the object type based on discriminator mapping
102
105
  object_type = cls.get_discriminator_value(obj)
@@ -46,6 +46,9 @@ class ComplianceParameterType(str, Enum):
46
46
  PORTFOLIOIDLISTCOMPLIANCEPARAMETER = 'PortfolioIdListComplianceParameter'
47
47
  PORTFOLIOGROUPIDLISTCOMPLIANCEPARAMETER = 'PortfolioGroupIdListComplianceParameter'
48
48
  INSTRUMENTLISTCOMPLIANCEPARAMETER = 'InstrumentListComplianceParameter'
49
+ FILTERPREDICATECOMPLIANCEPARAMETER = 'FilterPredicateComplianceParameter'
50
+ GROUPFILTERPREDICATECOMPLIANCEPARAMETER = 'GroupFilterPredicateComplianceParameter'
51
+ GROUPBYSELECTORCOMPLIANCEPARAMETER = 'GroupBySelectorComplianceParameter'
49
52
 
50
53
  @classmethod
51
54
  def from_json(cls, json_str: str) -> ComplianceParameterType:
@@ -20,18 +20,19 @@ import json
20
20
 
21
21
  from typing import Any, Dict, List, Union
22
22
  from pydantic import BaseModel, Field, StrictFloat, StrictInt, StrictStr, conlist, constr
23
+ from lusid.models.lineage_member import LineageMember
23
24
  from lusid.models.model_property import ModelProperty
24
25
 
25
26
  class ComplianceRuleBreakdown(BaseModel):
26
27
  """
27
28
  ComplianceRuleBreakdown
28
29
  """
29
- group_status: constr(strict=True, min_length=1) = Field(..., alias="groupStatus")
30
- results_used: Dict[str, Union[StrictFloat, StrictInt]] = Field(..., alias="resultsUsed")
31
- properties_used: Dict[str, conlist(ModelProperty)] = Field(..., alias="propertiesUsed")
32
- parameters_used: Dict[str, StrictStr] = Field(..., alias="parametersUsed")
33
- missing_data_information: conlist(StrictStr) = Field(..., alias="missingDataInformation")
34
- __properties = ["groupStatus", "resultsUsed", "propertiesUsed", "parametersUsed", "missingDataInformation"]
30
+ group_status: constr(strict=True, min_length=1) = Field(..., alias="groupStatus", description="The status of this subset of results.")
31
+ results_used: Dict[str, Union[StrictFloat, StrictInt]] = Field(..., alias="resultsUsed", description="Dictionary of AddressKey (as string) and their corresponding decimal values, that were used in this rule.")
32
+ properties_used: Dict[str, conlist(ModelProperty)] = Field(..., alias="propertiesUsed", description="Dictionary of PropertyKey (as string) and their corresponding Properties, that were used in this rule")
33
+ missing_data_information: conlist(StrictStr) = Field(..., alias="missingDataInformation", description="List of string information detailing data that was missing from contributions processed in this rule")
34
+ lineage: conlist(LineageMember) = Field(...)
35
+ __properties = ["groupStatus", "resultsUsed", "propertiesUsed", "missingDataInformation", "lineage"]
35
36
 
36
37
  class Config:
37
38
  """Pydantic configuration"""
@@ -66,6 +67,13 @@ class ComplianceRuleBreakdown(BaseModel):
66
67
  _item.to_dict() for _item in self.properties_used[_key]
67
68
  ]
68
69
  _dict['propertiesUsed'] = _field_dict_of_array
70
+ # override the default output from pydantic by calling `to_dict()` of each item in lineage (list)
71
+ _items = []
72
+ if self.lineage:
73
+ for _item in self.lineage:
74
+ if _item:
75
+ _items.append(_item.to_dict())
76
+ _dict['lineage'] = _items
69
77
  return _dict
70
78
 
71
79
  @classmethod
@@ -88,7 +96,7 @@ class ComplianceRuleBreakdown(BaseModel):
88
96
  )
89
97
  for _k, _v in obj.get("propertiesUsed").items()
90
98
  ),
91
- "parameters_used": obj.get("parametersUsed"),
92
- "missing_data_information": obj.get("missingDataInformation")
99
+ "missing_data_information": obj.get("missingDataInformation"),
100
+ "lineage": [LineageMember.from_dict(_item) for _item in obj.get("lineage")] if obj.get("lineage") is not None else None
93
101
  })
94
102
  return _obj
@@ -20,6 +20,7 @@ import json
20
20
 
21
21
  from typing import Any, Dict, List, Union
22
22
  from pydantic import BaseModel, Field, StrictFloat, StrictInt, StrictStr, conlist, constr
23
+ from lusid.models.lineage_member import LineageMember
23
24
  from lusid.models.model_property import ModelProperty
24
25
 
25
26
  class ComplianceRuleBreakdownRequest(BaseModel):
@@ -29,9 +30,9 @@ class ComplianceRuleBreakdownRequest(BaseModel):
29
30
  group_status: constr(strict=True, max_length=6000, min_length=0) = Field(..., alias="groupStatus")
30
31
  results_used: Dict[str, Union[StrictFloat, StrictInt]] = Field(..., alias="resultsUsed")
31
32
  properties_used: Dict[str, conlist(ModelProperty)] = Field(..., alias="propertiesUsed")
32
- parameters_used: Dict[str, StrictStr] = Field(..., alias="parametersUsed")
33
33
  missing_data_information: conlist(StrictStr) = Field(..., alias="missingDataInformation")
34
- __properties = ["groupStatus", "resultsUsed", "propertiesUsed", "parametersUsed", "missingDataInformation"]
34
+ lineage: conlist(LineageMember) = Field(...)
35
+ __properties = ["groupStatus", "resultsUsed", "propertiesUsed", "missingDataInformation", "lineage"]
35
36
 
36
37
  class Config:
37
38
  """Pydantic configuration"""
@@ -66,6 +67,13 @@ class ComplianceRuleBreakdownRequest(BaseModel):
66
67
  _item.to_dict() for _item in self.properties_used[_key]
67
68
  ]
68
69
  _dict['propertiesUsed'] = _field_dict_of_array
70
+ # override the default output from pydantic by calling `to_dict()` of each item in lineage (list)
71
+ _items = []
72
+ if self.lineage:
73
+ for _item in self.lineage:
74
+ if _item:
75
+ _items.append(_item.to_dict())
76
+ _dict['lineage'] = _items
69
77
  return _dict
70
78
 
71
79
  @classmethod
@@ -88,7 +96,7 @@ class ComplianceRuleBreakdownRequest(BaseModel):
88
96
  )
89
97
  for _k, _v in obj.get("propertiesUsed").items()
90
98
  ),
91
- "parameters_used": obj.get("parametersUsed"),
92
- "missing_data_information": obj.get("missingDataInformation")
99
+ "missing_data_information": obj.get("missingDataInformation"),
100
+ "lineage": [LineageMember.from_dict(_item) for _item in obj.get("lineage")] if obj.get("lineage") is not None else None
93
101
  })
94
102
  return _obj