lusid-sdk 2.1.405__py3-none-any.whl → 2.1.537__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 (294) hide show
  1. lusid/__init__.py +142 -8
  2. lusid/api/__init__.py +2 -2
  3. lusid/api/abor_api.py +126 -133
  4. lusid/api/abor_configuration_api.py +46 -45
  5. lusid/api/address_key_definition_api.py +28 -27
  6. lusid/api/aggregation_api.py +37 -36
  7. lusid/api/allocations_api.py +39 -38
  8. lusid/api/amortisation_rule_sets_api.py +55 -54
  9. lusid/api/application_metadata_api.py +28 -27
  10. lusid/api/blocks_api.py +37 -36
  11. lusid/api/calendars_api.py +469 -111
  12. lusid/api/chart_of_accounts_api.py +454 -279
  13. lusid/api/complex_market_data_api.py +37 -36
  14. lusid/api/compliance_api.py +136 -135
  15. lusid/api/configuration_recipe_api.py +100 -99
  16. lusid/api/conventions_api.py +109 -108
  17. lusid/api/corporate_action_sources_api.py +82 -81
  18. lusid/api/counterparties_api.py +73 -72
  19. lusid/api/custom_entities_api.py +102 -101
  20. lusid/api/custom_entity_definitions_api.py +37 -36
  21. lusid/api/custom_entity_types_api.py +37 -36
  22. lusid/api/cut_label_definitions_api.py +46 -45
  23. lusid/api/data_types_api.py +248 -72
  24. lusid/api/derived_transaction_portfolios_api.py +19 -18
  25. lusid/api/entities_api.py +431 -46
  26. lusid/api/executions_api.py +37 -36
  27. lusid/api/fee_types_api.py +55 -54
  28. lusid/api/{fund_configurations_api.py → fund_configuration_api.py} +222 -46
  29. lusid/api/funds_api.py +337 -162
  30. lusid/api/group_reconciliations_api.py +2182 -63
  31. lusid/api/instrument_event_types_api.py +64 -63
  32. lusid/api/instrument_events_api.py +46 -45
  33. lusid/api/instruments_api.py +374 -186
  34. lusid/api/legacy_compliance_api.py +73 -72
  35. lusid/api/legal_entities_api.py +167 -166
  36. lusid/api/order_graph_api.py +32 -31
  37. lusid/api/order_instructions_api.py +37 -36
  38. lusid/api/order_management_api.py +251 -90
  39. lusid/api/orders_api.py +37 -36
  40. lusid/api/packages_api.py +37 -36
  41. lusid/api/participations_api.py +37 -36
  42. lusid/api/persons_api.py +163 -162
  43. lusid/api/placements_api.py +37 -36
  44. lusid/api/portfolio_groups_api.py +235 -234
  45. lusid/api/portfolios_api.py +307 -309
  46. lusid/api/property_definitions_api.py +100 -99
  47. lusid/api/queryable_keys_api.py +10 -9
  48. lusid/api/quotes_api.py +82 -81
  49. lusid/api/reconciliations_api.py +136 -135
  50. lusid/api/reference_lists_api.py +39 -38
  51. lusid/api/reference_portfolio_api.py +213 -36
  52. lusid/api/relation_definitions_api.py +28 -27
  53. lusid/api/relations_api.py +19 -18
  54. lusid/api/relationship_definitions_api.py +46 -45
  55. lusid/api/relationships_api.py +19 -18
  56. lusid/api/schemas_api.py +37 -36
  57. lusid/api/scopes_api.py +19 -18
  58. lusid/api/scripted_translation_api.py +73 -72
  59. lusid/api/search_api.py +37 -36
  60. lusid/api/sequences_api.py +37 -36
  61. lusid/api/staged_modifications_api.py +37 -36
  62. lusid/api/staging_rule_set_api.py +46 -45
  63. lusid/api/structured_result_data_api.py +82 -81
  64. lusid/api/system_configuration_api.py +64 -63
  65. lusid/api/tax_rule_sets_api.py +46 -45
  66. lusid/api/transaction_configuration_api.py +100 -99
  67. lusid/api/transaction_fees_api.py +46 -45
  68. lusid/api/transaction_portfolios_api.py +771 -328
  69. lusid/api/translation_api.py +19 -18
  70. lusid/api/workspace_api.py +181 -180
  71. lusid/api_client.py +26 -17
  72. lusid/configuration.py +87 -2
  73. lusid/extensions/api_client.py +25 -17
  74. lusid/extensions/api_client_factory.py +14 -5
  75. lusid/extensions/api_configuration.py +50 -1
  76. lusid/extensions/configuration_loaders.py +39 -11
  77. lusid/extensions/configuration_options.py +67 -0
  78. lusid/extensions/rest.py +78 -26
  79. lusid/extensions/retry.py +109 -37
  80. lusid/models/__init__.py +140 -6
  81. lusid/models/access_metadata_value.py +1 -1
  82. lusid/models/accounting_method.py +7 -0
  83. lusid/models/accumulation_event.py +3 -3
  84. lusid/models/address_key_list.py +3 -3
  85. lusid/models/amortisation_event.py +3 -3
  86. lusid/models/amount.py +69 -0
  87. lusid/models/applicable_instrument_event.py +7 -2
  88. lusid/models/asset_leg.py +1 -1
  89. lusid/models/basket.py +3 -3
  90. lusid/models/batch_update_user_review_for_comparison_result_request.py +81 -0
  91. lusid/models/batch_update_user_review_for_comparison_result_response.py +146 -0
  92. lusid/models/batch_upsert_dates_for_calendar_response.py +146 -0
  93. lusid/models/batch_upsert_portfolio_access_metadata_request.py +27 -17
  94. lusid/models/batch_upsert_portfolio_access_metadata_response.py +56 -16
  95. lusid/models/{metadata_key_value.py → batch_upsert_portfolio_access_metadata_response_item.py} +15 -9
  96. lusid/models/bond.py +3 -3
  97. lusid/models/bond_coupon_event.py +10 -5
  98. lusid/models/bond_default_event.py +3 -3
  99. lusid/models/bond_principal_event.py +10 -5
  100. lusid/models/bonus_issue_event.py +166 -0
  101. lusid/models/{component_rule.py → break_code_source.py} +17 -21
  102. lusid/models/call_on_intermediate_securities_event.py +139 -0
  103. lusid/models/cancel_order_and_move_remaining_result.py +84 -0
  104. lusid/models/cancel_orders_and_move_remaining_request.py +83 -0
  105. lusid/models/cancel_orders_and_move_remaining_response.py +153 -0
  106. lusid/models/cap_floor.py +3 -3
  107. lusid/models/capital_distribution_event.py +3 -3
  108. lusid/models/cash.py +3 -3
  109. lusid/models/cash_dividend_event.py +3 -3
  110. lusid/models/cash_flow_event.py +3 -3
  111. lusid/models/cash_perpetual.py +3 -3
  112. lusid/models/cds_credit_event.py +6 -6
  113. lusid/models/cds_index.py +3 -3
  114. lusid/models/cdx_credit_event.py +6 -6
  115. lusid/models/change_interval.py +123 -0
  116. lusid/models/change_interval_with_order_management_detail.py +3 -3
  117. lusid/models/close_event.py +3 -3
  118. lusid/models/comparison_attribute_value_pair.py +71 -0
  119. lusid/models/complex_bond.py +3 -3
  120. lusid/models/component_transaction.py +10 -3
  121. lusid/models/contract_for_difference.py +3 -3
  122. lusid/models/create_derived_transaction_portfolio_request.py +3 -3
  123. lusid/models/create_group_reconciliation_definition_request.py +113 -0
  124. lusid/models/create_staging_rule_set_request.py +1 -6
  125. lusid/models/create_transaction_portfolio_request.py +3 -3
  126. lusid/models/credit_default_swap.py +3 -3
  127. lusid/models/credit_premium_cash_flow_event.py +3 -3
  128. lusid/models/custodian_account_request.py +1 -1
  129. lusid/models/custom_entity_entity.py +146 -0
  130. lusid/models/custom_entity_response.py +7 -1
  131. lusid/models/decimal_list.py +3 -3
  132. lusid/models/delete_instrument_properties_response.py +7 -1
  133. lusid/models/delete_instrument_response.py +7 -1
  134. lusid/models/delete_instruments_response.py +22 -1
  135. lusid/models/deleted_entity_response.py +7 -1
  136. lusid/models/diary_entry_request.py +10 -1
  137. lusid/models/dividend_option_event.py +3 -3
  138. lusid/models/dividend_reinvestment_event.py +9 -4
  139. lusid/models/effective_range.py +71 -0
  140. lusid/models/equity.py +3 -3
  141. lusid/models/equity_option.py +22 -7
  142. lusid/models/equity_swap.py +3 -3
  143. lusid/models/exchange_traded_option.py +3 -3
  144. lusid/models/exchange_traded_option_contract_details.py +1 -1
  145. lusid/models/exercise_event.py +3 -3
  146. lusid/models/exotic_instrument.py +3 -3
  147. lusid/models/expiry_event.py +3 -3
  148. lusid/models/fee.py +17 -10
  149. lusid/models/fee_request.py +20 -13
  150. lusid/models/fee_type.py +4 -4
  151. lusid/models/fee_type_request.py +3 -3
  152. lusid/models/fixed_leg.py +3 -3
  153. lusid/models/fixed_schedule.py +3 -3
  154. lusid/models/flexible_loan.py +3 -3
  155. lusid/models/float_schedule.py +4 -4
  156. lusid/models/floating_leg.py +3 -3
  157. lusid/models/flow_conventions.py +7 -1
  158. lusid/models/forward_rate_agreement.py +3 -3
  159. lusid/models/fund_configuration.py +44 -17
  160. lusid/models/fund_configuration_request.py +31 -19
  161. lusid/models/fund_id_list.py +99 -0
  162. lusid/models/fund_share_class.py +23 -8
  163. lusid/models/funding_leg.py +3 -3
  164. lusid/models/future.py +3 -3
  165. lusid/models/future_expiry_event.py +3 -3
  166. lusid/models/fx_forward.py +3 -3
  167. lusid/models/fx_forward_settlement_event.py +3 -3
  168. lusid/models/fx_option.py +3 -3
  169. lusid/models/fx_swap.py +3 -3
  170. lusid/models/group_reconciliation_aggregate_attribute_rule.py +2 -2
  171. lusid/models/group_reconciliation_aggregate_attribute_values.py +86 -0
  172. lusid/models/group_reconciliation_aggregate_comparison_rule_operand.py +1 -1
  173. lusid/models/group_reconciliation_comparison_result.py +148 -0
  174. lusid/models/group_reconciliation_core_attribute_values.py +86 -0
  175. lusid/models/group_reconciliation_core_comparison_rule_operand.py +1 -1
  176. lusid/models/group_reconciliation_date_pair.py +81 -0
  177. lusid/models/group_reconciliation_dates.py +78 -0
  178. lusid/models/group_reconciliation_definition.py +136 -0
  179. lusid/models/group_reconciliation_definition_comparison_ruleset_ids.py +83 -0
  180. lusid/models/group_reconciliation_definition_currencies.py +71 -0
  181. lusid/models/group_reconciliation_definition_portfolio_entity_ids.py +86 -0
  182. lusid/models/group_reconciliation_definition_recipe_ids.py +78 -0
  183. lusid/models/group_reconciliation_instance_id.py +71 -0
  184. lusid/models/group_reconciliation_result_statuses.py +89 -0
  185. lusid/models/group_reconciliation_result_types.py +96 -0
  186. lusid/models/group_reconciliation_review_statuses.py +96 -0
  187. lusid/models/group_reconciliation_run_details.py +76 -0
  188. lusid/models/group_reconciliation_run_request.py +75 -0
  189. lusid/models/{metadata_key_value_response.py → group_reconciliation_run_response.py} +20 -29
  190. lusid/models/group_reconciliation_summary.py +121 -0
  191. lusid/models/group_reconciliation_user_review.py +112 -0
  192. lusid/models/group_reconciliation_user_review_add.py +88 -0
  193. lusid/models/group_reconciliation_user_review_break_code.py +80 -0
  194. lusid/models/group_reconciliation_user_review_comment.py +80 -0
  195. lusid/models/group_reconciliation_user_review_match_key.py +80 -0
  196. lusid/models/group_reconciliation_user_review_remove.py +88 -0
  197. lusid/models/holding_contributor.py +11 -4
  198. lusid/models/holding_ids_request.py +69 -0
  199. lusid/models/inflation_leg.py +3 -3
  200. lusid/models/inflation_linked_bond.py +3 -3
  201. lusid/models/inflation_swap.py +3 -3
  202. lusid/models/informational_error_event.py +3 -3
  203. lusid/models/informational_event.py +3 -3
  204. lusid/models/instrument.py +7 -1
  205. lusid/models/instrument_definition.py +8 -2
  206. lusid/models/instrument_event.py +17 -5
  207. lusid/models/instrument_event_holder.py +9 -1
  208. lusid/models/instrument_event_type.py +12 -0
  209. lusid/models/instrument_leg.py +3 -3
  210. lusid/models/instrument_list.py +3 -3
  211. lusid/models/instrument_type.py +2 -0
  212. lusid/models/interest_rate_swap.py +3 -3
  213. lusid/models/interest_rate_swaption.py +3 -3
  214. lusid/models/intermediate_securities_distribution_event.py +140 -0
  215. lusid/models/lapse_election.py +73 -0
  216. lusid/models/loan_facility.py +97 -0
  217. lusid/models/lusid_instrument.py +7 -5
  218. lusid/models/market_data_key_rule.py +5 -3
  219. lusid/models/market_data_specific_rule.py +5 -3
  220. lusid/models/mastered_instrument.py +139 -0
  221. lusid/models/maturity_event.py +3 -3
  222. lusid/models/mbs_coupon_event.py +102 -0
  223. lusid/models/mbs_interest_deferral_event.py +102 -0
  224. lusid/models/mbs_interest_shortfall_event.py +102 -0
  225. lusid/models/mbs_principal_event.py +102 -0
  226. lusid/models/mbs_principal_write_off_event.py +102 -0
  227. lusid/models/merger_event.py +22 -22
  228. lusid/models/new_instrument.py +1 -1
  229. lusid/models/open_event.py +3 -3
  230. lusid/models/option_exercise_cash_event.py +144 -0
  231. lusid/models/option_exercise_election.py +73 -0
  232. lusid/models/option_exercise_physical_event.py +149 -0
  233. lusid/models/output_transaction.py +9 -2
  234. lusid/models/paged_resource_list_of_group_reconciliation_comparison_result.py +113 -0
  235. lusid/models/paged_resource_list_of_group_reconciliation_comparison_ruleset.py +113 -0
  236. lusid/models/paged_resource_list_of_group_reconciliation_definition.py +113 -0
  237. lusid/models/portfolio.py +3 -3
  238. lusid/models/portfolio_details.py +3 -3
  239. lusid/models/portfolio_group_id_list.py +3 -3
  240. lusid/models/portfolio_id_list.py +3 -3
  241. lusid/models/portfolio_without_href.py +3 -3
  242. lusid/models/pricing_options.py +8 -2
  243. lusid/models/property_list.py +3 -3
  244. lusid/models/protection_payout_cash_flow_event.py +102 -0
  245. lusid/models/raw_vendor_event.py +3 -3
  246. lusid/models/reference_instrument.py +3 -3
  247. lusid/models/reference_list.py +6 -5
  248. lusid/models/reference_list_type.py +1 -0
  249. lusid/models/repo.py +3 -3
  250. lusid/models/reset_event.py +3 -3
  251. lusid/models/resource_list_of_change_interval.py +113 -0
  252. lusid/models/resource_list_of_output_transaction.py +113 -0
  253. lusid/models/return_zero_pv_options.py +69 -0
  254. lusid/models/reverse_stock_split_event.py +21 -7
  255. lusid/models/scrip_dividend_event.py +3 -3
  256. lusid/models/settlement_cycle.py +79 -0
  257. lusid/models/share_class_dealing_breakdown.py +3 -2
  258. lusid/models/share_class_details.py +18 -1
  259. lusid/models/simple_cash_flow_loan.py +3 -3
  260. lusid/models/simple_instrument.py +3 -3
  261. lusid/models/simple_rounding_convention.py +76 -0
  262. lusid/models/spin_off_event.py +3 -3
  263. lusid/models/staged_modification_effective_range.py +2 -2
  264. lusid/models/stock_dividend_event.py +20 -6
  265. lusid/models/stock_split_event.py +3 -3
  266. lusid/models/string_list.py +3 -3
  267. lusid/models/swap_cash_flow_event.py +3 -3
  268. lusid/models/swap_principal_event.py +3 -3
  269. lusid/models/target_tax_lot.py +23 -2
  270. lusid/models/target_tax_lot_request.py +23 -2
  271. lusid/models/tender_event.py +172 -0
  272. lusid/models/term_deposit.py +3 -3
  273. lusid/models/total_return_swap.py +4 -4
  274. lusid/models/transaction.py +9 -2
  275. lusid/models/transaction_date_windows.py +85 -0
  276. lusid/models/transaction_price.py +3 -3
  277. lusid/models/transaction_price_type.py +2 -0
  278. lusid/models/transaction_request.py +9 -2
  279. lusid/models/transition_event.py +3 -3
  280. lusid/models/trigger_event.py +3 -3
  281. lusid/models/update_fee_type_request.py +4 -4
  282. lusid/models/update_group_reconciliation_comparison_ruleset_request.py +91 -0
  283. lusid/models/update_group_reconciliation_definition_request.py +107 -0
  284. lusid/models/update_reference_data_request.py +87 -0
  285. lusid/models/update_staging_rule_set_request.py +1 -6
  286. lusid/models/upsert_custom_entities_response.py +20 -1
  287. lusid/models/upsert_reference_portfolio_constituent_properties_request.py +84 -0
  288. lusid/models/upsert_reference_portfolio_constituent_properties_response.py +115 -0
  289. lusid/models/valuation_point_data_query_parameters.py +3 -3
  290. lusid/models/valuation_point_data_response.py +8 -13
  291. lusid/rest.py +70 -20
  292. {lusid_sdk-2.1.405.dist-info → lusid_sdk-2.1.537.dist-info}/METADATA +118 -26
  293. {lusid_sdk-2.1.405.dist-info → lusid_sdk-2.1.537.dist-info}/RECORD +294 -226
  294. {lusid_sdk-2.1.405.dist-info → lusid_sdk-2.1.537.dist-info}/WHEEL +0 -0
@@ -18,15 +18,15 @@ import re # noqa: F401
18
18
  import json
19
19
 
20
20
 
21
- from typing import Any, Dict, Optional
22
- from pydantic.v1 import BaseModel
21
+ from typing import Any, Dict
22
+ from pydantic.v1 import BaseModel, Field
23
23
  from lusid.models.date_or_diary_entry import DateOrDiaryEntry
24
24
 
25
25
  class ValuationPointDataQueryParameters(BaseModel):
26
26
  """
27
27
  The parameters used in getting the ValuationPointData. # noqa: E501
28
28
  """
29
- end: Optional[DateOrDiaryEntry] = None
29
+ end: DateOrDiaryEntry = Field(...)
30
30
  __properties = ["end"]
31
31
 
32
32
  class Config:
@@ -42,7 +42,7 @@ class ValuationPointDataResponse(BaseModel):
42
42
  previous_nav: Union[StrictFloat, StrictInt] = Field(..., alias="previousNav", description="DEPRECATED. The Net Asset Value of the Fund at the End of the last Period.")
43
43
  fund_details: FundDetails = Field(..., alias="fundDetails")
44
44
  fund_valuation_point_data: FundValuationPointData = Field(..., alias="fundValuationPointData")
45
- share_class_data: Dict[str, ShareClassData] = Field(..., alias="shareClassData", description="The data for all share classes in fund. Share classes are identified by their short codes.")
45
+ share_class_data: conlist(ShareClassData) = Field(..., alias="shareClassData", description="The data for all share classes in fund. Share classes are identified by their short codes.")
46
46
  valuation_point_code: Optional[StrictStr] = Field(None, alias="valuationPointCode", description="The code of the valuation point.")
47
47
  previous_valuation_point_code: Optional[StrictStr] = Field(None, alias="previousValuationPointCode", description="The code of the previous valuation point.")
48
48
  links: Optional[conlist(Link)] = None
@@ -85,13 +85,13 @@ class ValuationPointDataResponse(BaseModel):
85
85
  # override the default output from pydantic by calling `to_dict()` of fund_valuation_point_data
86
86
  if self.fund_valuation_point_data:
87
87
  _dict['fundValuationPointData'] = self.fund_valuation_point_data.to_dict()
88
- # override the default output from pydantic by calling `to_dict()` of each value in share_class_data (dict)
89
- _field_dict = {}
88
+ # override the default output from pydantic by calling `to_dict()` of each item in share_class_data (list)
89
+ _items = []
90
90
  if self.share_class_data:
91
- for _key in self.share_class_data:
92
- if self.share_class_data[_key]:
93
- _field_dict[_key] = self.share_class_data[_key].to_dict()
94
- _dict['shareClassData'] = _field_dict
91
+ for _item in self.share_class_data:
92
+ if _item:
93
+ _items.append(_item.to_dict())
94
+ _dict['shareClassData'] = _items
95
95
  # override the default output from pydantic by calling `to_dict()` of each item in links (list)
96
96
  _items = []
97
97
  if self.links:
@@ -148,12 +148,7 @@ class ValuationPointDataResponse(BaseModel):
148
148
  "previous_nav": obj.get("previousNav"),
149
149
  "fund_details": FundDetails.from_dict(obj.get("fundDetails")) if obj.get("fundDetails") is not None else None,
150
150
  "fund_valuation_point_data": FundValuationPointData.from_dict(obj.get("fundValuationPointData")) if obj.get("fundValuationPointData") is not None else None,
151
- "share_class_data": dict(
152
- (_k, ShareClassData.from_dict(_v))
153
- for _k, _v in obj.get("shareClassData").items()
154
- )
155
- if obj.get("shareClassData") is not None
156
- else None,
151
+ "share_class_data": [ShareClassData.from_dict(_item) for _item in obj.get("shareClassData")] if obj.get("shareClassData") is not None else None,
157
152
  "valuation_point_code": obj.get("valuationPointCode"),
158
153
  "previous_valuation_point_code": obj.get("previousValuationPointCode"),
159
154
  "links": [Link.from_dict(_item) for _item in obj.get("links")] if obj.get("links") is not None else None
lusid/rest.py CHANGED
@@ -68,6 +68,11 @@ class RESTClientObject:
68
68
 
69
69
  self.proxy = configuration.proxy
70
70
  self.proxy_headers = configuration.proxy_headers
71
+ self.timeout = aiohttp.ClientTimeout(
72
+ total=configuration.timeouts.total_timeout_ms / 1000.0 if configuration.timeouts != None and configuration.timeouts.total_timeout_ms != None else None,
73
+ connect=configuration.timeouts.connect_timeout_ms / 1000.0 if configuration.timeouts != None and configuration.timeouts.connect_timeout_ms != None else None,
74
+ sock_read=configuration.timeouts.read_timeout_ms / 1000.0 if configuration.timeouts != None and configuration.timeouts.read_timeout_ms != None else None,
75
+ )
71
76
 
72
77
  # https pool manager
73
78
  self.pool_manager = aiohttp.ClientSession(
@@ -80,7 +85,7 @@ class RESTClientObject:
80
85
 
81
86
  async def request(self, method, url, query_params=None, headers=None,
82
87
  body=None, post_params=None, _preload_content=True,
83
- _request_timeout=None):
88
+ _request_timeout=None, opts=None):
84
89
  """Execute request
85
90
 
86
91
  :param method: http request method
@@ -93,10 +98,9 @@ class RESTClientObject:
93
98
  and `multipart/form-data`
94
99
  :param _preload_content: this is a non-applicable field for
95
100
  the AiohttpClient.
96
- :param _request_timeout: timeout setting for this request. If one
97
- number provided, it will be total request
98
- timeout. It can also be a pair (tuple) of
99
- (connection, read) timeouts.
101
+ :param _request_timeout: Timeout setting. Do not use - use the opts parameter instead
102
+ :param opts: Configuration options for this request
103
+ :type opts: ConfigurationOptions, optional
100
104
  """
101
105
  method = method.upper()
102
106
  assert method in ['GET', 'HEAD', 'DELETE', 'POST', 'PUT',
@@ -112,7 +116,44 @@ class RESTClientObject:
112
116
  # url already contains the URL query string
113
117
  # so reset query_params to empty dict
114
118
  query_params = {}
115
- timeout = _request_timeout or 5 * 60
119
+
120
+ # _request_timeout param cannot be removed for backwards compatability
121
+ # values from opts override values from _request_timeout
122
+ # try to get values from opts first, then _request_timeout, then self.timeout, else set to None
123
+ # timeout = _request_timeout or self.timeout
124
+ timeout = None
125
+ opts_total_timeout = opts.total_timeout_ms / 1000.0 if opts and opts.total_timeout_ms != None else None
126
+ opts_connect_timeout = opts.connect_timeout_ms / 1000.0 if opts and opts.connect_timeout_ms != None else None
127
+ opts_read_timeout = opts.read_timeout_ms / 1000.0 if opts and opts.read_timeout_ms != None else None
128
+ if not _request_timeout:
129
+ timeout = aiohttp.ClientTimeout(
130
+ total=opts_total_timeout if opts_total_timeout != None
131
+ else self.timeout.total,
132
+ connect=opts_connect_timeout if opts_connect_timeout != None
133
+ else self.timeout.connect,
134
+ sock_read=opts_read_timeout if opts_read_timeout != None
135
+ else self.timeout.sock_read)
136
+ elif isinstance(_request_timeout, aiohttp.ClientTimeout):
137
+ timeout = aiohttp.ClientTimeout(
138
+ total=opts_total_timeout if opts_total_timeout != None
139
+ else _request_timeout.total if _request_timeout.total != None
140
+ else self.timeout.total,
141
+ connect=opts_connect_timeout if opts_connect_timeout != None
142
+ else _request_timeout.connect if _request_timeout.connect != None
143
+ else self.timeout.connect,
144
+ sock_read=opts_read_timeout if opts_read_timeout != None
145
+ else _request_timeout.sock_read if _request_timeout.sock_read != None
146
+ else self.timeout.sock_read)
147
+ elif isinstance(_request_timeout, (int, float)):
148
+ timeout = aiohttp.ClientTimeout(
149
+ total=opts_total_timeout if opts_total_timeout != None
150
+ else _request_timeout,
151
+ connect=opts_connect_timeout if opts_connect_timeout != None
152
+ else self.timeout.connect,
153
+ sock_read=opts_read_timeout if opts_read_timeout != None
154
+ else self.timeout.sock_read)
155
+ else:
156
+ raise f"unexpected type '{type(_request_timeout)}' for _request_timeout"
116
157
 
117
158
  if 'Content-Type' not in headers:
118
159
  headers['Content-Type'] = 'application/json'
@@ -186,69 +227,78 @@ class RESTClientObject:
186
227
  return r
187
228
 
188
229
  async def get_request(self, url, headers=None, query_params=None,
189
- _preload_content=True, _request_timeout=None):
230
+ _preload_content=True, _request_timeout=None, opts=None):
190
231
  return (await self.request("GET", url,
191
232
  headers=headers,
192
233
  _preload_content=_preload_content,
193
234
  _request_timeout=_request_timeout,
194
- query_params=query_params))
235
+ query_params=query_params,
236
+ opts=opts))
195
237
 
196
238
  async def head_request(self, url, headers=None, query_params=None,
197
- _preload_content=True, _request_timeout=None):
239
+ _preload_content=True, _request_timeout=None, opts=None):
198
240
  return (await self.request("HEAD", url,
199
241
  headers=headers,
200
242
  _preload_content=_preload_content,
201
243
  _request_timeout=_request_timeout,
202
- query_params=query_params))
244
+ query_params=query_params,
245
+ opts=opts))
203
246
 
204
247
  async def options_request(self, url, headers=None, query_params=None,
205
248
  post_params=None, body=None, _preload_content=True,
206
- _request_timeout=None):
249
+ _request_timeout=None, opts=None):
207
250
  return (await self.request("OPTIONS", url,
208
251
  headers=headers,
209
252
  query_params=query_params,
210
253
  post_params=post_params,
211
254
  _preload_content=_preload_content,
212
255
  _request_timeout=_request_timeout,
213
- body=body))
256
+ body=body,
257
+ opts=opts))
214
258
 
215
259
  async def delete_request(self, url, headers=None, query_params=None, body=None,
216
- _preload_content=True, _request_timeout=None):
260
+ _preload_content=True, _request_timeout=None,
261
+ opts=None):
217
262
  return (await self.request("DELETE", url,
218
263
  headers=headers,
219
264
  query_params=query_params,
220
265
  _preload_content=_preload_content,
221
266
  _request_timeout=_request_timeout,
222
- body=body))
267
+ body=body,
268
+ opts=opts))
223
269
 
224
270
  async def post_request(self, url, headers=None, query_params=None,
225
271
  post_params=None, body=None, _preload_content=True,
226
- _request_timeout=None):
272
+ _request_timeout=None, opts=None):
227
273
  return (await self.request("POST", url,
228
274
  headers=headers,
229
275
  query_params=query_params,
230
276
  post_params=post_params,
231
277
  _preload_content=_preload_content,
232
278
  _request_timeout=_request_timeout,
233
- body=body))
279
+ body=body,
280
+ opts=opts))
234
281
 
235
282
  async def put_request(self, url, headers=None, query_params=None, post_params=None,
236
- body=None, _preload_content=True, _request_timeout=None):
283
+ body=None, _preload_content=True, _request_timeout=None,
284
+ opts=None):
237
285
  return (await self.request("PUT", url,
238
286
  headers=headers,
239
287
  query_params=query_params,
240
288
  post_params=post_params,
241
289
  _preload_content=_preload_content,
242
290
  _request_timeout=_request_timeout,
243
- body=body))
291
+ body=body,
292
+ opts=opts))
244
293
 
245
294
  async def patch_request(self, url, headers=None, query_params=None,
246
295
  post_params=None, body=None, _preload_content=True,
247
- _request_timeout=None):
296
+ _request_timeout=None, opts=None):
248
297
  return (await self.request("PATCH", url,
249
298
  headers=headers,
250
299
  query_params=query_params,
251
300
  post_params=post_params,
252
301
  _preload_content=_preload_content,
253
302
  _request_timeout=_request_timeout,
254
- body=body))
303
+ body=body,
304
+ opts=opts))