lusid-sdk 2.0.445__py3-none-any.whl → 2.0.446__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.

lusid/__init__.py CHANGED
@@ -57,6 +57,7 @@ from lusid.api.placements_api import PlacementsApi
57
57
  from lusid.api.portfolio_groups_api import PortfolioGroupsApi
58
58
  from lusid.api.portfolios_api import PortfoliosApi
59
59
  from lusid.api.property_definitions_api import PropertyDefinitionsApi
60
+ from lusid.api.queryable_keys_api import QueryableKeysApi
60
61
  from lusid.api.quotes_api import QuotesApi
61
62
  from lusid.api.reconciliations_api import ReconciliationsApi
62
63
  from lusid.api.reference_lists_api import ReferenceListsApi
@@ -692,6 +693,7 @@ from lusid.models.query_bucketed_cash_flows_request import QueryBucketedCashFlow
692
693
  from lusid.models.query_cash_flows_request import QueryCashFlowsRequest
693
694
  from lusid.models.query_instrument_events_request import QueryInstrumentEventsRequest
694
695
  from lusid.models.query_trade_tickets_request import QueryTradeTicketsRequest
696
+ from lusid.models.queryable_key import QueryableKey
695
697
  from lusid.models.quote import Quote
696
698
  from lusid.models.quote_access_metadata_rule import QuoteAccessMetadataRule
697
699
  from lusid.models.quote_access_metadata_rule_id import QuoteAccessMetadataRuleId
@@ -792,6 +794,7 @@ from lusid.models.resource_list_of_processed_command import ResourceListOfProces
792
794
  from lusid.models.resource_list_of_property import ResourceListOfProperty
793
795
  from lusid.models.resource_list_of_property_definition import ResourceListOfPropertyDefinition
794
796
  from lusid.models.resource_list_of_property_interval import ResourceListOfPropertyInterval
797
+ from lusid.models.resource_list_of_queryable_key import ResourceListOfQueryableKey
795
798
  from lusid.models.resource_list_of_quote import ResourceListOfQuote
796
799
  from lusid.models.resource_list_of_quote_access_metadata_rule import ResourceListOfQuoteAccessMetadataRule
797
800
  from lusid.models.resource_list_of_reconciliation_break import ResourceListOfReconciliationBreak
@@ -1053,6 +1056,7 @@ __all__ = [
1053
1056
  "PortfolioGroupsApi",
1054
1057
  "PortfoliosApi",
1055
1058
  "PropertyDefinitionsApi",
1059
+ "QueryableKeysApi",
1056
1060
  "QuotesApi",
1057
1061
  "ReconciliationsApi",
1058
1062
  "ReferenceListsApi",
@@ -1678,6 +1682,7 @@ __all__ = [
1678
1682
  "QueryCashFlowsRequest",
1679
1683
  "QueryInstrumentEventsRequest",
1680
1684
  "QueryTradeTicketsRequest",
1685
+ "QueryableKey",
1681
1686
  "Quote",
1682
1687
  "QuoteAccessMetadataRule",
1683
1688
  "QuoteAccessMetadataRuleId",
@@ -1778,6 +1783,7 @@ __all__ = [
1778
1783
  "ResourceListOfProperty",
1779
1784
  "ResourceListOfPropertyDefinition",
1780
1785
  "ResourceListOfPropertyInterval",
1786
+ "ResourceListOfQueryableKey",
1781
1787
  "ResourceListOfQuote",
1782
1788
  "ResourceListOfQuoteAccessMetadataRule",
1783
1789
  "ResourceListOfReconciliationBreak",
lusid/api/__init__.py CHANGED
@@ -41,6 +41,7 @@ from lusid.api.placements_api import PlacementsApi
41
41
  from lusid.api.portfolio_groups_api import PortfolioGroupsApi
42
42
  from lusid.api.portfolios_api import PortfoliosApi
43
43
  from lusid.api.property_definitions_api import PropertyDefinitionsApi
44
+ from lusid.api.queryable_keys_api import QueryableKeysApi
44
45
  from lusid.api.quotes_api import QuotesApi
45
46
  from lusid.api.reconciliations_api import ReconciliationsApi
46
47
  from lusid.api.reference_lists_api import ReferenceListsApi
@@ -104,6 +105,7 @@ __all__ = [
104
105
  "PortfolioGroupsApi",
105
106
  "PortfoliosApi",
106
107
  "PropertyDefinitionsApi",
108
+ "QueryableKeysApi",
107
109
  "QuotesApi",
108
110
  "ReconciliationsApi",
109
111
  "ReferenceListsApi",
@@ -0,0 +1,211 @@
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
+ import re # noqa: F401
16
+ import io
17
+ import warnings
18
+
19
+ from pydantic import validate_arguments, ValidationError
20
+ from typing import overload, Optional, Union, Awaitable
21
+
22
+ from typing_extensions import Annotated
23
+ from datetime import datetime
24
+
25
+ from pydantic import Field, constr, validator
26
+
27
+ from typing import Optional
28
+
29
+ from lusid.models.resource_list_of_queryable_key import ResourceListOfQueryableKey
30
+
31
+ from lusid.api_client import ApiClient
32
+ from lusid.api_response import ApiResponse
33
+ from lusid.exceptions import ( # noqa: F401
34
+ ApiTypeError,
35
+ ApiValueError
36
+ )
37
+
38
+
39
+ class QueryableKeysApi:
40
+ """NOTE: This class is auto generated by OpenAPI Generator
41
+ Ref: https://openapi-generator.tech
42
+
43
+ Do not edit the class manually.
44
+ """
45
+
46
+ def __init__(self, api_client=None) -> None:
47
+ if api_client is None:
48
+ api_client = ApiClient.get_default()
49
+ self.api_client = api_client
50
+
51
+ @overload
52
+ async def get_all_queryable_keys(self, as_at : Annotated[Optional[datetime], Field(description="For user defined DerivedValuation keys.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set. Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.")] = None, **kwargs) -> ResourceListOfQueryableKey: # noqa: E501
53
+ ...
54
+
55
+ @overload
56
+ def get_all_queryable_keys(self, as_at : Annotated[Optional[datetime], Field(description="For user defined DerivedValuation keys.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set. Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.")] = None, async_req: Optional[bool]=True, **kwargs) -> ResourceListOfQueryableKey: # noqa: E501
57
+ ...
58
+
59
+ @validate_arguments
60
+ def get_all_queryable_keys(self, as_at : Annotated[Optional[datetime], Field(description="For user defined DerivedValuation keys.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set. Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[ResourceListOfQueryableKey, Awaitable[ResourceListOfQueryableKey]]: # noqa: E501
61
+ """[EARLY ACCESS] GetAllQueryableKeys: Query the set of supported \"addresses\" that can be queried from all endpoints. # noqa: E501
62
+
63
+ When a request is made, the user needs to know what keys can be passed to it for queryable data. This endpoint provides all supported keys, # noqa: E501
64
+ This method makes a synchronous HTTP request by default. To make an
65
+ asynchronous HTTP request, please pass async_req=True
66
+
67
+ >>> thread = api.get_all_queryable_keys(as_at, filter, async_req=True)
68
+ >>> result = thread.get()
69
+
70
+ :param as_at: For user defined DerivedValuation keys.
71
+ :type as_at: datetime
72
+ :param filter: Expression to filter the result set. Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.
73
+ :type filter: str
74
+ :param async_req: Whether to execute the request asynchronously.
75
+ :type async_req: bool, optional
76
+ :param _request_timeout: timeout setting for this request.
77
+ If one number provided, it will be total request
78
+ timeout. It can also be a pair (tuple) of
79
+ (connection, read) timeouts.
80
+ :return: Returns the result object.
81
+ If the method is called asynchronously,
82
+ returns the request thread.
83
+ :rtype: ResourceListOfQueryableKey
84
+ """
85
+ kwargs['_return_http_data_only'] = True
86
+ if '_preload_content' in kwargs:
87
+ message = "Error! Please call the get_all_queryable_keys_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
88
+ raise ValueError(message)
89
+ if async_req is not None:
90
+ kwargs['async_req'] = async_req
91
+ return self.get_all_queryable_keys_with_http_info(as_at, filter, **kwargs) # noqa: E501
92
+
93
+ @validate_arguments
94
+ def get_all_queryable_keys_with_http_info(self, as_at : Annotated[Optional[datetime], Field(description="For user defined DerivedValuation keys.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set. Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.")] = None, **kwargs) -> ApiResponse: # noqa: E501
95
+ """[EARLY ACCESS] GetAllQueryableKeys: Query the set of supported \"addresses\" that can be queried from all endpoints. # noqa: E501
96
+
97
+ When a request is made, the user needs to know what keys can be passed to it for queryable data. This endpoint provides all supported keys, # noqa: E501
98
+ This method makes a synchronous HTTP request by default. To make an
99
+ asynchronous HTTP request, please pass async_req=True
100
+
101
+ >>> thread = api.get_all_queryable_keys_with_http_info(as_at, filter, async_req=True)
102
+ >>> result = thread.get()
103
+
104
+ :param as_at: For user defined DerivedValuation keys.
105
+ :type as_at: datetime
106
+ :param filter: Expression to filter the result set. Read more about filtering results from LUSID here https://support.lusid.com/filtering-results-from-lusid.
107
+ :type filter: str
108
+ :param async_req: Whether to execute the request asynchronously.
109
+ :type async_req: bool, optional
110
+ :param _preload_content: if False, the ApiResponse.data will
111
+ be set to none and raw_data will store the
112
+ HTTP response body without reading/decoding.
113
+ Default is True.
114
+ :type _preload_content: bool, optional
115
+ :param _return_http_data_only: response data instead of ApiResponse
116
+ object with status code, headers, etc
117
+ :type _return_http_data_only: bool, optional
118
+ :param _request_timeout: timeout setting for this request. If one
119
+ number provided, it will be total request
120
+ timeout. It can also be a pair (tuple) of
121
+ (connection, read) timeouts.
122
+ :param _request_auth: set to override the auth_settings for an a single
123
+ request; this effectively ignores the authentication
124
+ in the spec for a single request.
125
+ :type _request_auth: dict, optional
126
+ :type _content_type: string, optional: force content-type for the request
127
+ :return: Returns the result object.
128
+ If the method is called asynchronously,
129
+ returns the request thread.
130
+ :rtype: tuple(ResourceListOfQueryableKey, status_code(int), headers(HTTPHeaderDict))
131
+ """
132
+
133
+ _params = locals()
134
+
135
+ _all_params = [
136
+ 'as_at',
137
+ 'filter'
138
+ ]
139
+ _all_params.extend(
140
+ [
141
+ 'async_req',
142
+ '_return_http_data_only',
143
+ '_preload_content',
144
+ '_request_timeout',
145
+ '_request_auth',
146
+ '_content_type',
147
+ '_headers'
148
+ ]
149
+ )
150
+
151
+ # validate the arguments
152
+ for _key, _val in _params['kwargs'].items():
153
+ if _key not in _all_params:
154
+ raise ApiTypeError(
155
+ "Got an unexpected keyword argument '%s'"
156
+ " to method get_all_queryable_keys" % _key
157
+ )
158
+ _params[_key] = _val
159
+ del _params['kwargs']
160
+
161
+ _collection_formats = {}
162
+
163
+ # process the path parameters
164
+ _path_params = {}
165
+
166
+ # process the query parameters
167
+ _query_params = []
168
+ if _params.get('as_at') is not None: # noqa: E501
169
+ if isinstance(_params['as_at'], datetime):
170
+ _query_params.append(('asAt', _params['as_at'].strftime(self.api_client.configuration.datetime_format)))
171
+ else:
172
+ _query_params.append(('asAt', _params['as_at']))
173
+
174
+ if _params.get('filter') is not None: # noqa: E501
175
+ _query_params.append(('filter', _params['filter']))
176
+
177
+ # process the header parameters
178
+ _header_params = dict(_params.get('_headers', {}))
179
+ # process the form parameters
180
+ _form_params = []
181
+ _files = {}
182
+ # process the body parameter
183
+ _body_params = None
184
+ # set the HTTP header `Accept`
185
+ _header_params['Accept'] = self.api_client.select_header_accept(
186
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
187
+
188
+ # authentication setting
189
+ _auth_settings = ['oauth2'] # noqa: E501
190
+
191
+ _response_types_map = {
192
+ '200': "ResourceListOfQueryableKey",
193
+ '400': "LusidValidationProblemDetails",
194
+ }
195
+
196
+ return self.api_client.call_api(
197
+ '/api/queryablekeys', 'GET',
198
+ _path_params,
199
+ _query_params,
200
+ _header_params,
201
+ body=_body_params,
202
+ post_params=_form_params,
203
+ files=_files,
204
+ response_types_map=_response_types_map,
205
+ auth_settings=_auth_settings,
206
+ async_req=_params.get('async_req'),
207
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
208
+ _preload_content=_params.get('_preload_content', True),
209
+ _request_timeout=_params.get('_request_timeout'),
210
+ collection_formats=_collection_formats,
211
+ _request_auth=_params.get('_request_auth'))
lusid/configuration.py CHANGED
@@ -373,7 +373,7 @@ class Configuration:
373
373
  return "Python SDK Debug Report:\n"\
374
374
  "OS: {env}\n"\
375
375
  "Python Version: {pyversion}\n"\
376
- "Version of the API: 0.11.6392\n"\
376
+ "Version of the API: 0.11.6393\n"\
377
377
  "SDK Package Version: {package_version}".\
378
378
  format(env=sys.platform, pyversion=sys.version, package_version=package_version)
379
379
 
lusid/models/__init__.py CHANGED
@@ -619,6 +619,7 @@ from lusid.models.query_bucketed_cash_flows_request import QueryBucketedCashFlow
619
619
  from lusid.models.query_cash_flows_request import QueryCashFlowsRequest
620
620
  from lusid.models.query_instrument_events_request import QueryInstrumentEventsRequest
621
621
  from lusid.models.query_trade_tickets_request import QueryTradeTicketsRequest
622
+ from lusid.models.queryable_key import QueryableKey
622
623
  from lusid.models.quote import Quote
623
624
  from lusid.models.quote_access_metadata_rule import QuoteAccessMetadataRule
624
625
  from lusid.models.quote_access_metadata_rule_id import QuoteAccessMetadataRuleId
@@ -719,6 +720,7 @@ from lusid.models.resource_list_of_processed_command import ResourceListOfProces
719
720
  from lusid.models.resource_list_of_property import ResourceListOfProperty
720
721
  from lusid.models.resource_list_of_property_definition import ResourceListOfPropertyDefinition
721
722
  from lusid.models.resource_list_of_property_interval import ResourceListOfPropertyInterval
723
+ from lusid.models.resource_list_of_queryable_key import ResourceListOfQueryableKey
722
724
  from lusid.models.resource_list_of_quote import ResourceListOfQuote
723
725
  from lusid.models.resource_list_of_quote_access_metadata_rule import ResourceListOfQuoteAccessMetadataRule
724
726
  from lusid.models.resource_list_of_reconciliation_break import ResourceListOfReconciliationBreak
@@ -1534,6 +1536,7 @@ __all__ = [
1534
1536
  "QueryCashFlowsRequest",
1535
1537
  "QueryInstrumentEventsRequest",
1536
1538
  "QueryTradeTicketsRequest",
1539
+ "QueryableKey",
1537
1540
  "Quote",
1538
1541
  "QuoteAccessMetadataRule",
1539
1542
  "QuoteAccessMetadataRuleId",
@@ -1634,6 +1637,7 @@ __all__ = [
1634
1637
  "ResourceListOfProperty",
1635
1638
  "ResourceListOfPropertyDefinition",
1636
1639
  "ResourceListOfPropertyInterval",
1640
+ "ResourceListOfQueryableKey",
1637
1641
  "ResourceListOfQuote",
1638
1642
  "ResourceListOfQuoteAccessMetadataRule",
1639
1643
  "ResourceListOfReconciliationBreak",
@@ -0,0 +1,124 @@
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
23
+ from lusid.models.address_key_option_definition import AddressKeyOptionDefinition
24
+
25
+ class QueryableKey(BaseModel):
26
+ """
27
+ QueryableKey
28
+ """
29
+ address_key: constr(strict=True, min_length=1) = Field(..., alias="addressKey", description="The address that is the query to be made into the system. e.g. a Valuation/PV or Instrument/MaturityDate")
30
+ description: Optional[StrictStr] = Field(None, description="What does the information that is being queried by the address mean. What is the address for.")
31
+ display_name: constr(strict=True, min_length=1) = Field(..., alias="displayName", description="The suggested name that the user would wish to put on to the returned information for visualisation in preference to the address.")
32
+ type: constr(strict=True, min_length=1) = Field(..., description="Financially meaningful results can be presented as either simple flat types or more complex expanded types. This field gives the type of the more complex representation. For example, the present value (PV) of a holding could be represented either as a simple decimal (with currency implied) or as a decimal-currency pair. In this example, the type returned in this field would be \"Result0D\", the decimal-currency pair.")
33
+ flattened_type: constr(strict=True, min_length=1) = Field(..., alias="flattenedType", description="Financially meaningful results can be presented as either simple flat types or more complex expanded types. This field gives the type of the simpler representation. For example, the present value (PV) of a holding could be represented either as a simple decimal (with currency implied) or as a decimal-currency pair. In this example, the type returned in this field would be \"Decimal\".")
34
+ holding_quantity_scaling: constr(strict=True, min_length=1) = Field(..., alias="holdingQuantityScaling", description="Is the data scaled when it is for, e.g. a holding in an instrument. A key example would be the difference between price and PV. The present value of an instrument would scale with the quantity held. The price would be that for a hypothetical unit of that instrument, typically associated with the contract size.")
35
+ supported_usages: conlist(StrictStr) = Field(..., alias="supportedUsages", description="The types of queries that support this key.")
36
+ supported_operations: conlist(StrictStr) = Field(..., alias="supportedOperations", description="When performing an aggregation operation, what column type operations can be performed on the data. For example, it makes sense to sum decimals but not strings. Either can be counted. With more complex types, e.g. ResultValues, operations may be linked to a semantic meaning such as the currency of the result. In such cases the operations may be supported but context specific. For example, it makes sense to sum PVs in a single currency but not when the currency is different. In such cases, an error would result (it being assumed that no fx rates for currency conversion were implicit in the context).")
37
+ life_cycle_status: constr(strict=True, min_length=1) = Field(..., alias="lifeCycleStatus", description="Within an API where an item can be accessed through an address or property, there is an associated status that determines whether the item is stable or likely to change. This status is one of [Experimental, Beta, EAP, Prod, Deprecated]. If the item is deprecated it will be removed on or after the associated DateTime RemovalDate field. That field will not otherwise be set.")
38
+ removal_date: Optional[datetime] = Field(None, alias="removalDate", description="If the life cycle status is set to deprecated then this will be populated with the date on or after which removal of the address query will happen")
39
+ applicable_options: Optional[Dict[str, AddressKeyOptionDefinition]] = Field(None, alias="applicableOptions", description="A mapping from option names to the definition that the corresponding option value must match.")
40
+ derivation_formula: Optional[StrictStr] = Field(None, alias="derivationFormula", description="Derivation formula for when the for when the query key represents a DerivedValuation property.")
41
+ __properties = ["addressKey", "description", "displayName", "type", "flattenedType", "holdingQuantityScaling", "supportedUsages", "supportedOperations", "lifeCycleStatus", "removalDate", "applicableOptions", "derivationFormula"]
42
+
43
+ class Config:
44
+ """Pydantic configuration"""
45
+ allow_population_by_field_name = True
46
+ validate_assignment = True
47
+
48
+ def to_str(self) -> str:
49
+ """Returns the string representation of the model using alias"""
50
+ return pprint.pformat(self.dict(by_alias=True))
51
+
52
+ def to_json(self) -> str:
53
+ """Returns the JSON representation of the model using alias"""
54
+ return json.dumps(self.to_dict())
55
+
56
+ @classmethod
57
+ def from_json(cls, json_str: str) -> QueryableKey:
58
+ """Create an instance of QueryableKey from a JSON string"""
59
+ return cls.from_dict(json.loads(json_str))
60
+
61
+ def to_dict(self):
62
+ """Returns the dictionary representation of the model using alias"""
63
+ _dict = self.dict(by_alias=True,
64
+ exclude={
65
+ },
66
+ exclude_none=True)
67
+ # override the default output from pydantic by calling `to_dict()` of each value in applicable_options (dict)
68
+ _field_dict = {}
69
+ if self.applicable_options:
70
+ for _key in self.applicable_options:
71
+ if self.applicable_options[_key]:
72
+ _field_dict[_key] = self.applicable_options[_key].to_dict()
73
+ _dict['applicableOptions'] = _field_dict
74
+ # set to None if description (nullable) is None
75
+ # and __fields_set__ contains the field
76
+ if self.description is None and "description" in self.__fields_set__:
77
+ _dict['description'] = None
78
+
79
+ # set to None if removal_date (nullable) is None
80
+ # and __fields_set__ contains the field
81
+ if self.removal_date is None and "removal_date" in self.__fields_set__:
82
+ _dict['removalDate'] = None
83
+
84
+ # set to None if applicable_options (nullable) is None
85
+ # and __fields_set__ contains the field
86
+ if self.applicable_options is None and "applicable_options" in self.__fields_set__:
87
+ _dict['applicableOptions'] = None
88
+
89
+ # set to None if derivation_formula (nullable) is None
90
+ # and __fields_set__ contains the field
91
+ if self.derivation_formula is None and "derivation_formula" in self.__fields_set__:
92
+ _dict['derivationFormula'] = None
93
+
94
+ return _dict
95
+
96
+ @classmethod
97
+ def from_dict(cls, obj: dict) -> QueryableKey:
98
+ """Create an instance of QueryableKey from a dict"""
99
+ if obj is None:
100
+ return None
101
+
102
+ if not isinstance(obj, dict):
103
+ return QueryableKey.parse_obj(obj)
104
+
105
+ _obj = QueryableKey.parse_obj({
106
+ "address_key": obj.get("addressKey"),
107
+ "description": obj.get("description"),
108
+ "display_name": obj.get("displayName"),
109
+ "type": obj.get("type"),
110
+ "flattened_type": obj.get("flattenedType"),
111
+ "holding_quantity_scaling": obj.get("holdingQuantityScaling"),
112
+ "supported_usages": obj.get("supportedUsages"),
113
+ "supported_operations": obj.get("supportedOperations"),
114
+ "life_cycle_status": obj.get("lifeCycleStatus"),
115
+ "removal_date": obj.get("removalDate"),
116
+ "applicable_options": dict(
117
+ (_k, AddressKeyOptionDefinition.from_dict(_v))
118
+ for _k, _v in obj.get("applicableOptions").items()
119
+ )
120
+ if obj.get("applicableOptions") is not None
121
+ else None,
122
+ "derivation_formula": obj.get("derivationFormula")
123
+ })
124
+ return _obj
@@ -0,0 +1,113 @@
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 import BaseModel, Field, StrictStr, conlist
23
+ from lusid.models.link import Link
24
+ from lusid.models.queryable_key import QueryableKey
25
+
26
+ class ResourceListOfQueryableKey(BaseModel):
27
+ """
28
+ ResourceListOfQueryableKey
29
+ """
30
+ values: conlist(QueryableKey) = Field(...)
31
+ href: Optional[StrictStr] = None
32
+ links: Optional[conlist(Link)] = None
33
+ next_page: Optional[StrictStr] = Field(None, alias="nextPage")
34
+ previous_page: Optional[StrictStr] = Field(None, alias="previousPage")
35
+ __properties = ["values", "href", "links", "nextPage", "previousPage"]
36
+
37
+ class Config:
38
+ """Pydantic configuration"""
39
+ allow_population_by_field_name = True
40
+ validate_assignment = True
41
+
42
+ def to_str(self) -> str:
43
+ """Returns the string representation of the model using alias"""
44
+ return pprint.pformat(self.dict(by_alias=True))
45
+
46
+ def to_json(self) -> str:
47
+ """Returns the JSON representation of the model using alias"""
48
+ return json.dumps(self.to_dict())
49
+
50
+ @classmethod
51
+ def from_json(cls, json_str: str) -> ResourceListOfQueryableKey:
52
+ """Create an instance of ResourceListOfQueryableKey from a JSON string"""
53
+ return cls.from_dict(json.loads(json_str))
54
+
55
+ def to_dict(self):
56
+ """Returns the dictionary representation of the model using alias"""
57
+ _dict = self.dict(by_alias=True,
58
+ exclude={
59
+ },
60
+ exclude_none=True)
61
+ # override the default output from pydantic by calling `to_dict()` of each item in values (list)
62
+ _items = []
63
+ if self.values:
64
+ for _item in self.values:
65
+ if _item:
66
+ _items.append(_item.to_dict())
67
+ _dict['values'] = _items
68
+ # override the default output from pydantic by calling `to_dict()` of each item in links (list)
69
+ _items = []
70
+ if self.links:
71
+ for _item in self.links:
72
+ if _item:
73
+ _items.append(_item.to_dict())
74
+ _dict['links'] = _items
75
+ # set to None if href (nullable) is None
76
+ # and __fields_set__ contains the field
77
+ if self.href is None and "href" in self.__fields_set__:
78
+ _dict['href'] = None
79
+
80
+ # set to None if links (nullable) is None
81
+ # and __fields_set__ contains the field
82
+ if self.links is None and "links" in self.__fields_set__:
83
+ _dict['links'] = None
84
+
85
+ # set to None if next_page (nullable) is None
86
+ # and __fields_set__ contains the field
87
+ if self.next_page is None and "next_page" in self.__fields_set__:
88
+ _dict['nextPage'] = None
89
+
90
+ # set to None if previous_page (nullable) is None
91
+ # and __fields_set__ contains the field
92
+ if self.previous_page is None and "previous_page" in self.__fields_set__:
93
+ _dict['previousPage'] = None
94
+
95
+ return _dict
96
+
97
+ @classmethod
98
+ def from_dict(cls, obj: dict) -> ResourceListOfQueryableKey:
99
+ """Create an instance of ResourceListOfQueryableKey from a dict"""
100
+ if obj is None:
101
+ return None
102
+
103
+ if not isinstance(obj, dict):
104
+ return ResourceListOfQueryableKey.parse_obj(obj)
105
+
106
+ _obj = ResourceListOfQueryableKey.parse_obj({
107
+ "values": [QueryableKey.from_dict(_item) for _item in obj.get("values")] if obj.get("values") is not None else None,
108
+ "href": obj.get("href"),
109
+ "links": [Link.from_dict(_item) for _item in obj.get("links")] if obj.get("links") is not None else None,
110
+ "next_page": obj.get("nextPage"),
111
+ "previous_page": obj.get("previousPage")
112
+ })
113
+ return _obj
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lusid-sdk
3
- Version: 2.0.445
3
+ Version: 2.0.446
4
4
  Summary: LUSID API
5
5
  Home-page: https://github.com/finbourne/lusid-sdk-python
6
6
  License: MIT
@@ -29,8 +29,8 @@ FINBOURNE Technology
29
29
 
30
30
  This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
31
31
 
32
- - API version: 0.11.6392
33
- - Package version: 2.0.445
32
+ - API version: 0.11.6393
33
+ - Package version: 2.0.446
34
34
  - Build package: org.openapitools.codegen.languages.PythonClientCodegen
35
35
  For more information, please visit [https://www.finbourne.com](https://www.finbourne.com)
36
36
 
@@ -558,6 +558,7 @@ Class | Method | HTTP request | Description
558
558
  *PropertyDefinitionsApi* | [**update_derived_property_definition**](docs/PropertyDefinitionsApi.md#update_derived_property_definition) | **PUT** /api/propertydefinitions/derived/{domain}/{scope}/{code} | [EARLY ACCESS] UpdateDerivedPropertyDefinition: Update a pre-existing derived property definition
559
559
  *PropertyDefinitionsApi* | [**update_property_definition**](docs/PropertyDefinitionsApi.md#update_property_definition) | **PUT** /api/propertydefinitions/{domain}/{scope}/{code} | UpdatePropertyDefinition: Update property definition
560
560
  *PropertyDefinitionsApi* | [**upsert_property_definition_properties**](docs/PropertyDefinitionsApi.md#upsert_property_definition_properties) | **POST** /api/propertydefinitions/{domain}/{scope}/{code}/properties | [EARLY ACCESS] UpsertPropertyDefinitionProperties: Upsert properties to a property definition
561
+ *QueryableKeysApi* | [**get_all_queryable_keys**](docs/QueryableKeysApi.md#get_all_queryable_keys) | **GET** /api/queryablekeys | [EARLY ACCESS] GetAllQueryableKeys: Query the set of supported \"addresses\" that can be queried from all endpoints.
561
562
  *QuotesApi* | [**delete_quote_access_metadata_rule**](docs/QuotesApi.md#delete_quote_access_metadata_rule) | **DELETE** /api/metadata/quotes/rules/{scope} | [EXPERIMENTAL] DeleteQuoteAccessMetadataRule: Delete a Quote Access Metadata Rule
562
563
  *QuotesApi* | [**delete_quotes**](docs/QuotesApi.md#delete_quotes) | **POST** /api/quotes/{scope}/$delete | DeleteQuotes: Delete quotes
563
564
  *QuotesApi* | [**get_quotes**](docs/QuotesApi.md#get_quotes) | **POST** /api/quotes/{scope}/$get | [EARLY ACCESS] GetQuotes: Get quotes
@@ -1308,6 +1309,7 @@ Class | Method | HTTP request | Description
1308
1309
  - [QueryCashFlowsRequest](docs/QueryCashFlowsRequest.md)
1309
1310
  - [QueryInstrumentEventsRequest](docs/QueryInstrumentEventsRequest.md)
1310
1311
  - [QueryTradeTicketsRequest](docs/QueryTradeTicketsRequest.md)
1312
+ - [QueryableKey](docs/QueryableKey.md)
1311
1313
  - [Quote](docs/Quote.md)
1312
1314
  - [QuoteAccessMetadataRule](docs/QuoteAccessMetadataRule.md)
1313
1315
  - [QuoteAccessMetadataRuleId](docs/QuoteAccessMetadataRuleId.md)
@@ -1408,6 +1410,7 @@ Class | Method | HTTP request | Description
1408
1410
  - [ResourceListOfProperty](docs/ResourceListOfProperty.md)
1409
1411
  - [ResourceListOfPropertyDefinition](docs/ResourceListOfPropertyDefinition.md)
1410
1412
  - [ResourceListOfPropertyInterval](docs/ResourceListOfPropertyInterval.md)
1413
+ - [ResourceListOfQueryableKey](docs/ResourceListOfQueryableKey.md)
1411
1414
  - [ResourceListOfQuote](docs/ResourceListOfQuote.md)
1412
1415
  - [ResourceListOfQuoteAccessMetadataRule](docs/ResourceListOfQuoteAccessMetadataRule.md)
1413
1416
  - [ResourceListOfReconciliationBreak](docs/ResourceListOfReconciliationBreak.md)
@@ -1,5 +1,5 @@
1
- lusid/__init__.py,sha256=uB1LijWMu7XTx5uvOXB3te6znHvdvXhoA4u0Gma5a6k,101025
2
- lusid/api/__init__.py,sha256=RdfLWVjdUAASrYQnF0XXzX83daJEf7u6uwnwHegMs_c,5115
1
+ lusid/__init__.py,sha256=fFxgIut2LAGI-8L9A3-gXvTQ6d4JtFHhkYovTTU4lEw,101296
2
+ lusid/api/__init__.py,sha256=5WU9TKhE3y6cW1xynqURpX8nMUAADmb92Sa3RXtRMWE,5197
3
3
  lusid/api/abor_api.py,sha256=c7jUtAQLrgCgnkNCLLTkelIoU-Yd674I3-4kVDnIJlc,149936
4
4
  lusid/api/abor_configuration_api.py,sha256=SBpk45BSb-XcS06xkpycyg6Q2U4hpiuftgmF4v9L7x0,64027
5
5
  lusid/api/address_key_definition_api.py,sha256=7f7UvEzHKEfQLcR_NgABxJmfIIz2ujTM__wnUdJCqyg,31634
@@ -40,6 +40,7 @@ lusid/api/placements_api.py,sha256=SRjL8iZ27bGd3mfKon1Ukzpe63fM-fn8DK8m_naJn-4,4
40
40
  lusid/api/portfolio_groups_api.py,sha256=T0KcrgEimgFDUTaM-vU0MhvTOKwI6_pjJzBitykslyQ,378947
41
41
  lusid/api/portfolios_api.py,sha256=liuI1sZN1RMB0uebq4kRGhLMxKZZynnZu9fUUSggUQg,367109
42
42
  lusid/api/property_definitions_api.py,sha256=tBUF--jzLbZq9GmmY9NN0NSzt4a_rhSLKqb4ybIOmuc,140383
43
+ lusid/api/queryable_keys_api.py,sha256=4x7A1Ioyudg10_5eEv948wHnNxE2vbgrEgoYjsvSijI,10275
43
44
  lusid/api/quotes_api.py,sha256=Vzq35czDG07ReDj3RuhLk0hewd73EB9Jhcm5vjWRCuY,115619
44
45
  lusid/api/reconciliations_api.py,sha256=NDtX7cQq8YhTxtzhAC8qHEypxlMDaNE5lHjUtvRGXcg,143278
45
46
  lusid/api/reference_lists_api.py,sha256=bqjsW-gTYDWNN-F5m2E04nYIrxnO1kOn6BA_y_5sPlc,39833
@@ -62,7 +63,7 @@ lusid/api/transaction_portfolios_api.py,sha256=Q-RvuNmYL4drz4LeytNHRCmvrWwxfnPnT
62
63
  lusid/api/translation_api.py,sha256=8_YL07_CYCI-FV4jMdiq7zlsDXqvkPMFQPyT6NL4jvU,20086
63
64
  lusid/api_client.py,sha256=dF6l9RAsdxdQjf6Qn4ny6LB-QXlJmsscWiozCvyyBFA,30709
64
65
  lusid/api_response.py,sha256=uCehWdXXDnAO2HAHGKe0SgpQ_mJiGDbcu-BHDF3n_IM,852
65
- lusid/configuration.py,sha256=UedUEHS-xXgSJ5dP3H7ODrZC0X8rmv-csmdtu3ioZHU,14404
66
+ lusid/configuration.py,sha256=oRPTsyBJJLike1RYAQ42eiutSBYoQzGvuM76hwvPzdk,14404
66
67
  lusid/exceptions.py,sha256=HIQwgmQrszLlcVCLaqex8dO0laVuejUyOMz7U2ZWJ6s,5326
67
68
  lusid/extensions/__init__.py,sha256=DeUuQP7yTcklJH7LT-bw9wQhKEggcs1KwQbPbFcOlhw,560
68
69
  lusid/extensions/api_client.py,sha256=Ob06urm4Em3MLzgP_geyeeGsPCkU225msW_1kpIeABM,30567
@@ -75,7 +76,7 @@ lusid/extensions/rest.py,sha256=tjVCu-cRrYcjp-ttB975vebPKtBNyBWaeoAdO3QXG2I,1269
75
76
  lusid/extensions/retry.py,sha256=orBJ1uF1iT1IncjWX1iGHVqsCgTh0SBe9rtiV_sPnwk,11564
76
77
  lusid/extensions/socket_keep_alive.py,sha256=NGlqsv-E25IjJOLGZhXZY6kUdx51nEF8qCQyVdzayRk,1653
77
78
  lusid/extensions/tcp_keep_alive_connector.py,sha256=zaGtUsygRsxB1_4B3x39K3ILwztdhMLDv5bFZV7zmGE,3877
78
- lusid/models/__init__.py,sha256=YUzVk9WO2RFZ343PA_lxLy2qTcIEcKo9xuESDqYfdJ0,94952
79
+ lusid/models/__init__.py,sha256=6g2RCEIx1JnCb4ehi0oG54JiO8cjDLPocvvxpyCxSdU,95141
79
80
  lusid/models/a2_b_breakdown.py,sha256=MmG2do_CuV3zyMZJP0BORoG_jTe0G308IjBYhSZbpUw,2944
80
81
  lusid/models/a2_b_category.py,sha256=DKiB3y93L3-MXpqRqGo93PeFlvD4ZjnQfH489NRLQVc,2722
81
82
  lusid/models/a2_b_data_record.py,sha256=Xey2yvdCY9D-oBM_0Z5QIxboMAIzxKAgHcrvKie7Ypk,9734
@@ -681,6 +682,7 @@ lusid/models/query_bucketed_cash_flows_request.py,sha256=uuvg-ekAGZ7Rraozts3J6t0
681
682
  lusid/models/query_cash_flows_request.py,sha256=J61cPePJ01AnDaNibOY2mq-UAQS-GBF2MU2lBWYxW7o,3983
682
683
  lusid/models/query_instrument_events_request.py,sha256=HutMwXyuy2wbnjwC_oixyl9Cq3iEmNMIEuQLzwLOwrk,4966
683
684
  lusid/models/query_trade_tickets_request.py,sha256=Ozqqn8JAFIxdRxhysxK-No-KxhIqG715BxEo-9R-gKo,4064
685
+ lusid/models/queryable_key.py,sha256=mIitwmwaUCmioyzK0oRJa2r4slUr5aRTn3W16CSuadk,8317
684
686
  lusid/models/quote.py,sha256=B_NVeonVjlHv4t3eAKymXqqhfsdffslvkqyeqQedEow,4476
685
687
  lusid/models/quote_access_metadata_rule.py,sha256=rFUepZZNWsz5uTIXTyQjwtDurS7COQjbk8Qxs6uSKB4,3176
686
688
  lusid/models/quote_access_metadata_rule_id.py,sha256=4l3XsSm7L5noHwqqE7XrD6EseqzGi3Y2D1HXAhEZsBc,6207
@@ -781,6 +783,7 @@ lusid/models/resource_list_of_processed_command.py,sha256=dT7_06gjYfnSexk7Y9GKSQ
781
783
  lusid/models/resource_list_of_property.py,sha256=tbGZI9iw3CXYmkQrP48dpqJDhNpp0TyfF8lW9eVp4WU,4048
782
784
  lusid/models/resource_list_of_property_definition.py,sha256=8c_PSBuTQhSUkt9EMfJAxrm4vqjRvhSNCD3c3Uiw9Ps,4148
783
785
  lusid/models/resource_list_of_property_interval.py,sha256=EcNAbpB3WBeCJa2RzUf4wsU5RyPyxGpnv4oo2x6J9ok,4124
786
+ lusid/models/resource_list_of_queryable_key.py,sha256=JloOx8Cu9Sf7Qz3BrMImAWTOgFxG6YxXRBWyhzjbXrY,4076
784
787
  lusid/models/resource_list_of_quote.py,sha256=ysWeg9AXBBbvvhwILZYFp7C9v1CdSmNae1uZgeuM-6g,3991
785
788
  lusid/models/resource_list_of_quote_access_metadata_rule.py,sha256=E3LHgBtO3g91MypQfmMcwici3rdDBUwdPwdpV_Zx-5c,4210
786
789
  lusid/models/resource_list_of_reconciliation_break.py,sha256=KqO0sSIgBh4ITmYWllW_8kFop8LDi8tM6U4asplKobI,4160
@@ -990,6 +993,6 @@ lusid/models/weighted_instruments.py,sha256=M2Mr7KTAcMS40g309xatBHDhvYk3g61yigx0
990
993
  lusid/models/yield_curve_data.py,sha256=i2MHEJe9kdTTgxQFti2a6BAU7ikE0wTPXsS_sMJhrDk,6327
991
994
  lusid/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
992
995
  lusid/rest.py,sha256=gHQ76psf1vzmBJI14ZGVvb3f_Urp0zBBo3R5u3-kNIM,10032
993
- lusid_sdk-2.0.445.dist-info/METADATA,sha256=BJERuzh4T9wvbCNSORvWdpwcohaNmNUtgbE-_oOCaOI,174449
994
- lusid_sdk-2.0.445.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
995
- lusid_sdk-2.0.445.dist-info/RECORD,,
996
+ lusid_sdk-2.0.446.dist-info/METADATA,sha256=tF49nfV1zp63cCoEhD_qxikWxQwOy-ZM7429_qoj0iE,174814
997
+ lusid_sdk-2.0.446.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
998
+ lusid_sdk-2.0.446.dist-info/RECORD,,