lusid-sdk 2.1.242__py3-none-any.whl → 2.1.320__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.
Files changed (104) hide show
  1. lusid/__init__.py +66 -0
  2. lusid/api/__init__.py +2 -0
  3. lusid/api/compliance_api.py +191 -0
  4. lusid/api/entities_api.py +360 -0
  5. lusid/api/fee_types_api.py +143 -0
  6. lusid/api/fund_configurations_api.py +944 -0
  7. lusid/api/funds_api.py +1 -1
  8. lusid/api/order_management_api.py +479 -1
  9. lusid/api/scopes_api.py +38 -9
  10. lusid/configuration.py +1 -1
  11. lusid/extensions/configuration_loaders.py +9 -1
  12. lusid/models/__init__.py +64 -0
  13. lusid/models/accounting_method.py +3 -0
  14. lusid/models/accumulation_event.py +3 -3
  15. lusid/models/amortisation_event.py +3 -3
  16. lusid/models/bond_coupon_event.py +3 -3
  17. lusid/models/bond_default_event.py +3 -3
  18. lusid/models/bond_principal_event.py +3 -3
  19. lusid/models/cancel_orders_response.py +153 -0
  20. lusid/models/cancel_placements_response.py +153 -0
  21. lusid/models/cancelled_order_result.py +73 -0
  22. lusid/models/cancelled_placement_result.py +83 -0
  23. lusid/models/capital_distribution_event.py +3 -3
  24. lusid/models/cash.py +93 -0
  25. lusid/models/cash_dividend_event.py +3 -3
  26. lusid/models/cash_flow_event.py +3 -3
  27. lusid/models/close_event.py +3 -3
  28. lusid/models/compliance_run_configuration.py +73 -0
  29. lusid/models/component_filter.py +85 -0
  30. lusid/models/component_rule.py +77 -0
  31. lusid/models/contract_for_difference.py +4 -2
  32. lusid/models/create_derived_transaction_portfolio_request.py +3 -3
  33. lusid/models/create_transaction_portfolio_request.py +3 -3
  34. lusid/models/dependency_source_filter.py +9 -2
  35. lusid/models/dividend_option_event.py +3 -3
  36. lusid/models/dividend_reinvestment_event.py +3 -3
  37. lusid/models/exercise_event.py +3 -3
  38. lusid/models/expiry_event.py +3 -3
  39. lusid/models/fee_transaction_template_specification.py +79 -0
  40. lusid/models/fund.py +6 -1
  41. lusid/models/fund_amount.py +69 -0
  42. lusid/models/fund_configuration.py +151 -0
  43. lusid/models/fund_configuration_properties.py +115 -0
  44. lusid/models/fund_configuration_request.py +136 -0
  45. lusid/models/fund_pnl_breakdown.py +110 -0
  46. lusid/models/fund_previous_nav.py +69 -0
  47. lusid/models/fund_request.py +6 -1
  48. lusid/models/fund_valuation_point_data.py +152 -0
  49. lusid/models/future_expiry_event.py +100 -0
  50. lusid/models/futures_contract_details.py +9 -2
  51. lusid/models/fx_forward_settlement_event.py +3 -3
  52. lusid/models/informational_error_event.py +3 -3
  53. lusid/models/informational_event.py +3 -3
  54. lusid/models/instrument_entity.py +146 -0
  55. lusid/models/instrument_event.py +6 -5
  56. lusid/models/instrument_event_type.py +1 -0
  57. lusid/models/lusid_instrument.py +3 -2
  58. lusid/models/market_data_key_rule.py +3 -3
  59. lusid/models/market_data_specific_rule.py +3 -3
  60. lusid/models/market_quote.py +3 -3
  61. lusid/models/maturity_event.py +3 -3
  62. lusid/models/merger_event.py +3 -3
  63. lusid/models/model_selection.py +3 -3
  64. lusid/models/open_event.py +3 -3
  65. lusid/models/paged_resource_list_of_fund_configuration.py +113 -0
  66. lusid/models/placement_update_request.py +116 -0
  67. lusid/models/portfolio.py +3 -3
  68. lusid/models/portfolio_details.py +3 -3
  69. lusid/models/portfolio_without_href.py +3 -3
  70. lusid/models/pre_trade_configuration.py +69 -0
  71. lusid/models/previous_fund_valuation_point_data.py +79 -0
  72. lusid/models/previous_nav.py +73 -0
  73. lusid/models/previous_share_class_breakdown.py +81 -0
  74. lusid/models/pricing_model.py +1 -0
  75. lusid/models/property_definition.py +7 -1
  76. lusid/models/property_definition_entity.py +146 -0
  77. lusid/models/quote_series_id.py +4 -20
  78. lusid/models/quote_type.py +3 -0
  79. lusid/models/raw_vendor_event.py +3 -3
  80. lusid/models/reset_event.py +3 -3
  81. lusid/models/reverse_stock_split_event.py +3 -3
  82. lusid/models/scrip_dividend_event.py +3 -3
  83. lusid/models/share_class_amount.py +73 -0
  84. lusid/models/share_class_breakdown.py +163 -0
  85. lusid/models/share_class_data.py +79 -0
  86. lusid/models/share_class_details.py +108 -0
  87. lusid/models/share_class_pnl_breakdown.py +110 -0
  88. lusid/models/spin_off_event.py +3 -3
  89. lusid/models/staged_modification.py +8 -1
  90. lusid/models/stock_dividend_event.py +3 -3
  91. lusid/models/stock_split_event.py +3 -3
  92. lusid/models/template_field.py +3 -1
  93. lusid/models/transaction_configuration_movement_data.py +2 -2
  94. lusid/models/transaction_configuration_movement_data_request.py +1 -1
  95. lusid/models/transaction_field_map.py +8 -3
  96. lusid/models/transaction_type_movement.py +2 -2
  97. lusid/models/transition_event.py +3 -3
  98. lusid/models/trigger_event.py +3 -3
  99. lusid/models/unitisation_data.py +73 -0
  100. lusid/models/update_placements_response.py +153 -0
  101. lusid/models/valuation_point_data_response.py +30 -9
  102. {lusid_sdk-2.1.242.dist-info → lusid_sdk-2.1.320.dist-info}/METADATA +53 -215
  103. {lusid_sdk-2.1.242.dist-info → lusid_sdk-2.1.320.dist-info}/RECORD +104 -71
  104. {lusid_sdk-2.1.242.dist-info → lusid_sdk-2.1.320.dist-info}/WHEEL +0 -0
@@ -0,0 +1,153 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, Dict, List, Optional
22
+ from pydantic.v1 import BaseModel, Field, StrictStr, conlist
23
+ from lusid.models.cancelled_placement_result import CancelledPlacementResult
24
+ from lusid.models.error_detail import ErrorDetail
25
+ from lusid.models.link import Link
26
+ from lusid.models.response_meta_data import ResponseMetaData
27
+
28
+ class CancelPlacementsResponse(BaseModel):
29
+ """
30
+ CancelPlacementsResponse
31
+ """
32
+ href: Optional[StrictStr] = Field(None, description="The specific Uniform Resource Identifier (URI) for this resource at the requested effective and asAt datetime.")
33
+ values: Optional[Dict[str, CancelledPlacementResult]] = Field(None, description="The placements which have been successfully cancelled.")
34
+ failed: Optional[Dict[str, ErrorDetail]] = Field(None, description="The placements that could not be cancelled, along with a reason for their failure.")
35
+ metadata: Optional[Dict[str, conlist(ResponseMetaData)]] = Field(None, description="Meta data associated with the cancellation event.")
36
+ links: Optional[conlist(Link)] = None
37
+ __properties = ["href", "values", "failed", "metadata", "links"]
38
+
39
+ class Config:
40
+ """Pydantic configuration"""
41
+ allow_population_by_field_name = True
42
+ validate_assignment = True
43
+
44
+ def to_str(self) -> str:
45
+ """Returns the string representation of the model using alias"""
46
+ return pprint.pformat(self.dict(by_alias=True))
47
+
48
+ def to_json(self) -> str:
49
+ """Returns the JSON representation of the model using alias"""
50
+ return json.dumps(self.to_dict())
51
+
52
+ @classmethod
53
+ def from_json(cls, json_str: str) -> CancelPlacementsResponse:
54
+ """Create an instance of CancelPlacementsResponse from a JSON string"""
55
+ return cls.from_dict(json.loads(json_str))
56
+
57
+ def to_dict(self):
58
+ """Returns the dictionary representation of the model using alias"""
59
+ _dict = self.dict(by_alias=True,
60
+ exclude={
61
+ },
62
+ exclude_none=True)
63
+ # override the default output from pydantic by calling `to_dict()` of each value in values (dict)
64
+ _field_dict = {}
65
+ if self.values:
66
+ for _key in self.values:
67
+ if self.values[_key]:
68
+ _field_dict[_key] = self.values[_key].to_dict()
69
+ _dict['values'] = _field_dict
70
+ # override the default output from pydantic by calling `to_dict()` of each value in failed (dict)
71
+ _field_dict = {}
72
+ if self.failed:
73
+ for _key in self.failed:
74
+ if self.failed[_key]:
75
+ _field_dict[_key] = self.failed[_key].to_dict()
76
+ _dict['failed'] = _field_dict
77
+ # override the default output from pydantic by calling `to_dict()` of each value in metadata (dict of array)
78
+ _field_dict_of_array = {}
79
+ if self.metadata:
80
+ for _key in self.metadata:
81
+ if self.metadata[_key]:
82
+ _field_dict_of_array[_key] = [
83
+ _item.to_dict() for _item in self.metadata[_key]
84
+ ]
85
+ _dict['metadata'] = _field_dict_of_array
86
+ # override the default output from pydantic by calling `to_dict()` of each item in links (list)
87
+ _items = []
88
+ if self.links:
89
+ for _item in self.links:
90
+ if _item:
91
+ _items.append(_item.to_dict())
92
+ _dict['links'] = _items
93
+ # set to None if href (nullable) is None
94
+ # and __fields_set__ contains the field
95
+ if self.href is None and "href" in self.__fields_set__:
96
+ _dict['href'] = None
97
+
98
+ # set to None if values (nullable) is None
99
+ # and __fields_set__ contains the field
100
+ if self.values is None and "values" in self.__fields_set__:
101
+ _dict['values'] = None
102
+
103
+ # set to None if failed (nullable) is None
104
+ # and __fields_set__ contains the field
105
+ if self.failed is None and "failed" in self.__fields_set__:
106
+ _dict['failed'] = None
107
+
108
+ # set to None if metadata (nullable) is None
109
+ # and __fields_set__ contains the field
110
+ if self.metadata is None and "metadata" in self.__fields_set__:
111
+ _dict['metadata'] = None
112
+
113
+ # set to None if links (nullable) is None
114
+ # and __fields_set__ contains the field
115
+ if self.links is None and "links" in self.__fields_set__:
116
+ _dict['links'] = None
117
+
118
+ return _dict
119
+
120
+ @classmethod
121
+ def from_dict(cls, obj: dict) -> CancelPlacementsResponse:
122
+ """Create an instance of CancelPlacementsResponse from a dict"""
123
+ if obj is None:
124
+ return None
125
+
126
+ if not isinstance(obj, dict):
127
+ return CancelPlacementsResponse.parse_obj(obj)
128
+
129
+ _obj = CancelPlacementsResponse.parse_obj({
130
+ "href": obj.get("href"),
131
+ "values": dict(
132
+ (_k, CancelledPlacementResult.from_dict(_v))
133
+ for _k, _v in obj.get("values").items()
134
+ )
135
+ if obj.get("values") is not None
136
+ else None,
137
+ "failed": dict(
138
+ (_k, ErrorDetail.from_dict(_v))
139
+ for _k, _v in obj.get("failed").items()
140
+ )
141
+ if obj.get("failed") is not None
142
+ else None,
143
+ "metadata": dict(
144
+ (_k,
145
+ [ResponseMetaData.from_dict(_item) for _item in _v]
146
+ if _v is not None
147
+ else None
148
+ )
149
+ for _k, _v in obj.get("metadata").items()
150
+ ),
151
+ "links": [Link.from_dict(_item) for _item in obj.get("links")] if obj.get("links") is not None else None
152
+ })
153
+ return _obj
@@ -0,0 +1,73 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, Dict, Optional
22
+ from pydantic.v1 import BaseModel, Field
23
+ from lusid.models.order import Order
24
+
25
+ class CancelledOrderResult(BaseModel):
26
+ """
27
+ CancelledOrderResult
28
+ """
29
+ order_state: Optional[Order] = Field(None, alias="orderState")
30
+ __properties = ["orderState"]
31
+
32
+ class Config:
33
+ """Pydantic configuration"""
34
+ allow_population_by_field_name = True
35
+ validate_assignment = True
36
+
37
+ def to_str(self) -> str:
38
+ """Returns the string representation of the model using alias"""
39
+ return pprint.pformat(self.dict(by_alias=True))
40
+
41
+ def to_json(self) -> str:
42
+ """Returns the JSON representation of the model using alias"""
43
+ return json.dumps(self.to_dict())
44
+
45
+ @classmethod
46
+ def from_json(cls, json_str: str) -> CancelledOrderResult:
47
+ """Create an instance of CancelledOrderResult from a JSON string"""
48
+ return cls.from_dict(json.loads(json_str))
49
+
50
+ def to_dict(self):
51
+ """Returns the dictionary representation of the model using alias"""
52
+ _dict = self.dict(by_alias=True,
53
+ exclude={
54
+ },
55
+ exclude_none=True)
56
+ # override the default output from pydantic by calling `to_dict()` of order_state
57
+ if self.order_state:
58
+ _dict['orderState'] = self.order_state.to_dict()
59
+ return _dict
60
+
61
+ @classmethod
62
+ def from_dict(cls, obj: dict) -> CancelledOrderResult:
63
+ """Create an instance of CancelledOrderResult from a dict"""
64
+ if obj is None:
65
+ return None
66
+
67
+ if not isinstance(obj, dict):
68
+ return CancelledOrderResult.parse_obj(obj)
69
+
70
+ _obj = CancelledOrderResult.parse_obj({
71
+ "order_state": Order.from_dict(obj.get("orderState")) if obj.get("orderState") is not None else None
72
+ })
73
+ return _obj
@@ -0,0 +1,83 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, Dict, List, Optional
22
+ from pydantic.v1 import BaseModel, Field, conlist
23
+ from lusid.models.placement import Placement
24
+ from lusid.models.resource_id import ResourceId
25
+
26
+ class CancelledPlacementResult(BaseModel):
27
+ """
28
+ CancelledPlacementResult
29
+ """
30
+ placement_state: Optional[Placement] = Field(None, alias="placementState")
31
+ cancelled_child_placements: conlist(ResourceId) = Field(..., alias="cancelledChildPlacements", description="Child placements which have also been cancelled following cancellation of the parent")
32
+ __properties = ["placementState", "cancelledChildPlacements"]
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) -> CancelledPlacementResult:
49
+ """Create an instance of CancelledPlacementResult 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 placement_state
59
+ if self.placement_state:
60
+ _dict['placementState'] = self.placement_state.to_dict()
61
+ # override the default output from pydantic by calling `to_dict()` of each item in cancelled_child_placements (list)
62
+ _items = []
63
+ if self.cancelled_child_placements:
64
+ for _item in self.cancelled_child_placements:
65
+ if _item:
66
+ _items.append(_item.to_dict())
67
+ _dict['cancelledChildPlacements'] = _items
68
+ return _dict
69
+
70
+ @classmethod
71
+ def from_dict(cls, obj: dict) -> CancelledPlacementResult:
72
+ """Create an instance of CancelledPlacementResult from a dict"""
73
+ if obj is None:
74
+ return None
75
+
76
+ if not isinstance(obj, dict):
77
+ return CancelledPlacementResult.parse_obj(obj)
78
+
79
+ _obj = CancelledPlacementResult.parse_obj({
80
+ "placement_state": Placement.from_dict(obj.get("placementState")) if obj.get("placementState") is not None else None,
81
+ "cancelled_child_placements": [ResourceId.from_dict(_item) for _item in obj.get("cancelledChildPlacements")] if obj.get("cancelledChildPlacements") is not None else None
82
+ })
83
+ return _obj
@@ -32,15 +32,15 @@ class CapitalDistributionEvent(InstrumentEvent):
32
32
  ex_date: datetime = Field(..., alias="exDate", description="The first business day on which the dividend is not owed to the buying party.")
33
33
  payment_date: datetime = Field(..., alias="paymentDate", description="The date the company begins distributing the dividend.")
34
34
  record_date: Optional[datetime] = Field(None, alias="recordDate", description="Date you have to be the holder of record in order to participate in the tender.")
35
- 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")
35
+ 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")
36
36
  additional_properties: Dict[str, Any] = {}
37
37
  __properties = ["instrumentEventType", "announcementDate", "cashElections", "exDate", "paymentDate", "recordDate"]
38
38
 
39
39
  @validator('instrument_event_type')
40
40
  def instrument_event_type_validate_enum(cls, value):
41
41
  """Validates the enum"""
42
- 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', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent'):
43
- 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', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent')")
42
+ 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', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent'):
43
+ 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', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent')")
44
44
  return value
45
45
 
46
46
  class Config:
lusid/models/cash.py ADDED
@@ -0,0 +1,93 @@
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, Union
22
+ from pydantic.v1 import Field, StrictFloat, StrictInt, StrictStr, validator
23
+ from lusid.models.lusid_instrument import LusidInstrument
24
+
25
+ class Cash(LusidInstrument):
26
+ """
27
+ LUSID representation of Cash which is the sum of one or more cashflows from the past. # noqa: E501
28
+ """
29
+ dom_ccy: StrictStr = Field(..., alias="domCcy", description="The domestic currency of the instrument.")
30
+ amount: Union[StrictFloat, StrictInt] = Field(..., description="Cash amount.")
31
+ 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")
32
+ additional_properties: Dict[str, Any] = {}
33
+ __properties = ["instrumentType", "domCcy", "amount"]
34
+
35
+ @validator('instrument_type')
36
+ def instrument_type_validate_enum(cls, value):
37
+ """Validates the enum"""
38
+ 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', 'UnsettledCash', 'Cash'):
39
+ 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', 'UnsettledCash', 'Cash')")
40
+ return value
41
+
42
+ class Config:
43
+ """Pydantic configuration"""
44
+ allow_population_by_field_name = True
45
+ validate_assignment = True
46
+
47
+ def to_str(self) -> str:
48
+ """Returns the string representation of the model using alias"""
49
+ return pprint.pformat(self.dict(by_alias=True))
50
+
51
+ def to_json(self) -> str:
52
+ """Returns the JSON representation of the model using alias"""
53
+ return json.dumps(self.to_dict())
54
+
55
+ @classmethod
56
+ def from_json(cls, json_str: str) -> Cash:
57
+ """Create an instance of Cash from a JSON string"""
58
+ return cls.from_dict(json.loads(json_str))
59
+
60
+ def to_dict(self):
61
+ """Returns the dictionary representation of the model using alias"""
62
+ _dict = self.dict(by_alias=True,
63
+ exclude={
64
+ "additional_properties"
65
+ },
66
+ exclude_none=True)
67
+ # puts key-value pairs in additional_properties in the top level
68
+ if self.additional_properties is not None:
69
+ for _key, _value in self.additional_properties.items():
70
+ _dict[_key] = _value
71
+
72
+ return _dict
73
+
74
+ @classmethod
75
+ def from_dict(cls, obj: dict) -> Cash:
76
+ """Create an instance of Cash from a dict"""
77
+ if obj is None:
78
+ return None
79
+
80
+ if not isinstance(obj, dict):
81
+ return Cash.parse_obj(obj)
82
+
83
+ _obj = Cash.parse_obj({
84
+ "instrument_type": obj.get("instrumentType"),
85
+ "dom_ccy": obj.get("domCcy"),
86
+ "amount": obj.get("amount")
87
+ })
88
+ # store additional fields in additional_properties
89
+ for _key in obj.keys():
90
+ if _key not in cls.__properties:
91
+ _obj.additional_properties[_key] = obj.get(_key)
92
+
93
+ return _obj
@@ -32,15 +32,15 @@ class CashDividendEvent(InstrumentEvent):
32
32
  cash_elections: conlist(CashElection) = Field(..., alias="cashElections", description="Possible elections for this event, each keyed with a unique identifier.")
33
33
  announcement_date: Optional[datetime] = Field(None, alias="announcementDate", description="Date on which the dividend is announced by the company.")
34
34
  record_date: Optional[datetime] = Field(None, alias="recordDate", description="Date you have to be the holder of record in order to participate in the tender.")
35
- 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")
35
+ 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")
36
36
  additional_properties: Dict[str, Any] = {}
37
37
  __properties = ["instrumentEventType", "paymentDate", "exDate", "cashElections", "announcementDate", "recordDate"]
38
38
 
39
39
  @validator('instrument_event_type')
40
40
  def instrument_event_type_validate_enum(cls, value):
41
41
  """Validates the enum"""
42
- 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', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent'):
43
- 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', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent')")
42
+ 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', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent'):
43
+ 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', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent')")
44
44
  return value
45
45
 
46
46
  class Config:
@@ -29,15 +29,15 @@ class CashFlowEvent(InstrumentEvent):
29
29
  """
30
30
  cash_flow_value: CashFlowValue = Field(..., alias="cashFlowValue")
31
31
  event_type: constr(strict=True, min_length=1) = Field(..., alias="eventType", description="What type of internal event does this represent; coupon, principal, premium etc.")
32
- 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")
32
+ 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")
33
33
  additional_properties: Dict[str, Any] = {}
34
34
  __properties = ["instrumentEventType", "cashFlowValue", "eventType"]
35
35
 
36
36
  @validator('instrument_event_type')
37
37
  def instrument_event_type_validate_enum(cls, value):
38
38
  """Validates the enum"""
39
- 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', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent'):
40
- 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', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent')")
39
+ 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', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent'):
40
+ 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', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent')")
41
41
  return value
42
42
 
43
43
  class Config:
@@ -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, BondCouponEvent, DividendReinvestmentEvent, AccumulationEvent, BondPrincipalEvent, DividendOptionEvent, MaturityEvent, FxForwardSettlementEvent, ExpiryEvent, ScripDividendEvent, StockDividendEvent, ReverseStockSplitEvent, CapitalDistributionEvent, SpinOffEvent, MergerEvent")
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, ScripDividendEvent, StockDividendEvent, ReverseStockSplitEvent, CapitalDistributionEvent, SpinOffEvent, MergerEvent, FutureExpiryEvent")
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', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent'):
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', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent')")
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', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent'):
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', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent')")
40
40
  return value
41
41
 
42
42
  class Config:
@@ -0,0 +1,73 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, Dict
22
+ from pydantic.v1 import BaseModel, Field
23
+ from lusid.models.pre_trade_configuration import PreTradeConfiguration
24
+
25
+ class ComplianceRunConfiguration(BaseModel):
26
+ """
27
+ Specification object for the configuration parameters of a compliance run # noqa: E501
28
+ """
29
+ pre_trade_configuration: PreTradeConfiguration = Field(..., alias="preTradeConfiguration")
30
+ __properties = ["preTradeConfiguration"]
31
+
32
+ class Config:
33
+ """Pydantic configuration"""
34
+ allow_population_by_field_name = True
35
+ validate_assignment = True
36
+
37
+ def to_str(self) -> str:
38
+ """Returns the string representation of the model using alias"""
39
+ return pprint.pformat(self.dict(by_alias=True))
40
+
41
+ def to_json(self) -> str:
42
+ """Returns the JSON representation of the model using alias"""
43
+ return json.dumps(self.to_dict())
44
+
45
+ @classmethod
46
+ def from_json(cls, json_str: str) -> ComplianceRunConfiguration:
47
+ """Create an instance of ComplianceRunConfiguration from a JSON string"""
48
+ return cls.from_dict(json.loads(json_str))
49
+
50
+ def to_dict(self):
51
+ """Returns the dictionary representation of the model using alias"""
52
+ _dict = self.dict(by_alias=True,
53
+ exclude={
54
+ },
55
+ exclude_none=True)
56
+ # override the default output from pydantic by calling `to_dict()` of pre_trade_configuration
57
+ if self.pre_trade_configuration:
58
+ _dict['preTradeConfiguration'] = self.pre_trade_configuration.to_dict()
59
+ return _dict
60
+
61
+ @classmethod
62
+ def from_dict(cls, obj: dict) -> ComplianceRunConfiguration:
63
+ """Create an instance of ComplianceRunConfiguration from a dict"""
64
+ if obj is None:
65
+ return None
66
+
67
+ if not isinstance(obj, dict):
68
+ return ComplianceRunConfiguration.parse_obj(obj)
69
+
70
+ _obj = ComplianceRunConfiguration.parse_obj({
71
+ "pre_trade_configuration": PreTradeConfiguration.from_dict(obj.get("preTradeConfiguration")) if obj.get("preTradeConfiguration") is not None else None
72
+ })
73
+ return _obj