fds.sdk.ProposalGenerationEngine 0.1.0__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 (141) hide show
  1. fds/__init__.py +0 -0
  2. fds/sdk/ProposalGenerationEngine/__init__.py +28 -0
  3. fds/sdk/ProposalGenerationEngine/api/__init__.py +3 -0
  4. fds/sdk/ProposalGenerationEngine/api/ex_post_api.py +1451 -0
  5. fds/sdk/ProposalGenerationEngine/api/lookup_api.py +333 -0
  6. fds/sdk/ProposalGenerationEngine/api_client.py +939 -0
  7. fds/sdk/ProposalGenerationEngine/apis/__init__.py +18 -0
  8. fds/sdk/ProposalGenerationEngine/configuration.py +500 -0
  9. fds/sdk/ProposalGenerationEngine/exceptions.py +160 -0
  10. fds/sdk/ProposalGenerationEngine/model/__init__.py +5 -0
  11. fds/sdk/ProposalGenerationEngine/model/array.py +279 -0
  12. fds/sdk/ProposalGenerationEngine/model/backfill_data.py +264 -0
  13. fds/sdk/ProposalGenerationEngine/model/base_settings.py +264 -0
  14. fds/sdk/ProposalGenerationEngine/model/boxplot.py +266 -0
  15. fds/sdk/ProposalGenerationEngine/model/boxplot_boxplot_summary.py +284 -0
  16. fds/sdk/ProposalGenerationEngine/model/cl_pair.py +252 -0
  17. fds/sdk/ProposalGenerationEngine/model/correlation_matrix.py +260 -0
  18. fds/sdk/ProposalGenerationEngine/model/correlation_stats.py +268 -0
  19. fds/sdk/ProposalGenerationEngine/model/dated_correlation_stats.py +268 -0
  20. fds/sdk/ProposalGenerationEngine/model/dated_correlation_stats_per_time_window.py +262 -0
  21. fds/sdk/ProposalGenerationEngine/model/dated_node_stats.py +262 -0
  22. fds/sdk/ProposalGenerationEngine/model/drawdown.py +268 -0
  23. fds/sdk/ProposalGenerationEngine/model/drawdown_stats.py +290 -0
  24. fds/sdk/ProposalGenerationEngine/model/entity.py +256 -0
  25. fds/sdk/ProposalGenerationEngine/model/entity_stats.py +292 -0
  26. fds/sdk/ProposalGenerationEngine/model/error.py +274 -0
  27. fds/sdk/ProposalGenerationEngine/model/errors.py +262 -0
  28. fds/sdk/ProposalGenerationEngine/model/ex_post_period_stats.py +333 -0
  29. fds/sdk/ProposalGenerationEngine/model/ex_post_period_stats_all_of.py +262 -0
  30. fds/sdk/ProposalGenerationEngine/model/ex_post_portfolio.py +343 -0
  31. fds/sdk/ProposalGenerationEngine/model/ex_post_portfolio_all_of.py +268 -0
  32. fds/sdk/ProposalGenerationEngine/model/ex_post_portfolio_investment.py +329 -0
  33. fds/sdk/ProposalGenerationEngine/model/ex_post_portfolio_investment_all_of.py +266 -0
  34. fds/sdk/ProposalGenerationEngine/model/ex_post_portfolio_investment_response.py +357 -0
  35. fds/sdk/ProposalGenerationEngine/model/ex_post_portfolio_investment_response_all_of.py +284 -0
  36. fds/sdk/ProposalGenerationEngine/model/ex_post_portfolio_investment_series_response.py +353 -0
  37. fds/sdk/ProposalGenerationEngine/model/ex_post_portfolio_investment_series_response_all_of.py +280 -0
  38. fds/sdk/ProposalGenerationEngine/model/ex_post_rolling_settings.py +338 -0
  39. fds/sdk/ProposalGenerationEngine/model/ex_post_rolling_settings_all_of.py +280 -0
  40. fds/sdk/ProposalGenerationEngine/model/ex_post_series.py +268 -0
  41. fds/sdk/ProposalGenerationEngine/model/ex_post_series_data.py +280 -0
  42. fds/sdk/ProposalGenerationEngine/model/ex_post_series_response.py +268 -0
  43. fds/sdk/ProposalGenerationEngine/model/ex_post_series_response_data.py +272 -0
  44. fds/sdk/ProposalGenerationEngine/model/ex_post_series_response_meta.py +262 -0
  45. fds/sdk/ProposalGenerationEngine/model/ex_post_series_rolling.py +268 -0
  46. fds/sdk/ProposalGenerationEngine/model/ex_post_series_rolling_data.py +278 -0
  47. fds/sdk/ProposalGenerationEngine/model/ex_post_series_rolling_response.py +274 -0
  48. fds/sdk/ProposalGenerationEngine/model/ex_post_series_rolling_response_data.py +262 -0
  49. fds/sdk/ProposalGenerationEngine/model/ex_post_series_rolling_response_meta.py +262 -0
  50. fds/sdk/ProposalGenerationEngine/model/ex_post_series_rolling_settings.py +341 -0
  51. fds/sdk/ProposalGenerationEngine/model/ex_post_series_settings.py +353 -0
  52. fds/sdk/ProposalGenerationEngine/model/ex_post_series_settings_all_of.py +267 -0
  53. fds/sdk/ProposalGenerationEngine/model/ex_post_settings.py +355 -0
  54. fds/sdk/ProposalGenerationEngine/model/ex_post_settings_all_of.py +262 -0
  55. fds/sdk/ProposalGenerationEngine/model/ex_post_stats.py +268 -0
  56. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_correlations.py +268 -0
  57. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_correlations_data.py +280 -0
  58. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_correlations_response.py +274 -0
  59. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_correlations_response_meta.py +262 -0
  60. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_correlations_settings.py +346 -0
  61. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_correlations_settings_all_of.py +275 -0
  62. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_data.py +280 -0
  63. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_factor_exposure.py +268 -0
  64. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_factor_exposure_data.py +280 -0
  65. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_factor_exposure_response.py +274 -0
  66. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_factor_exposure_response_meta.py +262 -0
  67. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_factor_exposure_settings.py +338 -0
  68. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_factor_exposure_settings_all_of.py +267 -0
  69. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_response.py +268 -0
  70. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_response_data.py +272 -0
  71. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_response_meta.py +262 -0
  72. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_rolling.py +268 -0
  73. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_rolling_data.py +280 -0
  74. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_rolling_response.py +274 -0
  75. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_rolling_response_data.py +262 -0
  76. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_rolling_response_meta.py +262 -0
  77. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_rolling_settings.py +339 -0
  78. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_rolling_settings_all_of.py +262 -0
  79. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_settings.py +360 -0
  80. fds/sdk/ProposalGenerationEngine/model/ex_post_stats_settings_all_of.py +256 -0
  81. fds/sdk/ProposalGenerationEngine/model/exposure.py +282 -0
  82. fds/sdk/ProposalGenerationEngine/model/investment.py +343 -0
  83. fds/sdk/ProposalGenerationEngine/model/investment_all_of.py +280 -0
  84. fds/sdk/ProposalGenerationEngine/model/key_value_pair.py +260 -0
  85. fds/sdk/ProposalGenerationEngine/model/level.py +256 -0
  86. fds/sdk/ProposalGenerationEngine/model/paged_securities.py +276 -0
  87. fds/sdk/ProposalGenerationEngine/model/paged_securities_meta.py +262 -0
  88. fds/sdk/ProposalGenerationEngine/model/paged_securities_meta_pagination.py +260 -0
  89. fds/sdk/ProposalGenerationEngine/model/performance_stats.py +264 -0
  90. fds/sdk/ProposalGenerationEngine/model/period.py +260 -0
  91. fds/sdk/ProposalGenerationEngine/model/period_correlation_stats.py +333 -0
  92. fds/sdk/ProposalGenerationEngine/model/period_correlation_stats_all_of.py +262 -0
  93. fds/sdk/ProposalGenerationEngine/model/period_info.py +268 -0
  94. fds/sdk/ProposalGenerationEngine/model/period_series.py +333 -0
  95. fds/sdk/ProposalGenerationEngine/model/period_series_all_of.py +262 -0
  96. fds/sdk/ProposalGenerationEngine/model/periods.py +262 -0
  97. fds/sdk/ProposalGenerationEngine/model/portfolio.py +331 -0
  98. fds/sdk/ProposalGenerationEngine/model/portfolio_all_of.py +266 -0
  99. fds/sdk/ProposalGenerationEngine/model/portfolio_correlation_matrix.py +260 -0
  100. fds/sdk/ProposalGenerationEngine/model/portfolio_entity.py +266 -0
  101. fds/sdk/ProposalGenerationEngine/model/portfolio_entity_details.py +256 -0
  102. fds/sdk/ProposalGenerationEngine/model/portfolio_investment.py +268 -0
  103. fds/sdk/ProposalGenerationEngine/model/portfolio_with_ex_post_series.py +333 -0
  104. fds/sdk/ProposalGenerationEngine/model/portfolio_with_ex_post_series_all_of.py +268 -0
  105. fds/sdk/ProposalGenerationEngine/model/portfolio_with_ex_post_stats.py +337 -0
  106. fds/sdk/ProposalGenerationEngine/model/portfolio_with_ex_post_stats_all_of.py +272 -0
  107. fds/sdk/ProposalGenerationEngine/model/portfolio_with_rolling_series.py +327 -0
  108. fds/sdk/ProposalGenerationEngine/model/portfolio_with_rolling_series_all_of.py +262 -0
  109. fds/sdk/ProposalGenerationEngine/model/portfolio_with_rolling_stats.py +327 -0
  110. fds/sdk/ProposalGenerationEngine/model/portfolio_with_rolling_stats_all_of.py +262 -0
  111. fds/sdk/ProposalGenerationEngine/model/rebalancing.py +270 -0
  112. fds/sdk/ProposalGenerationEngine/model/relative_risk_stats.py +280 -0
  113. fds/sdk/ProposalGenerationEngine/model/return_stats.py +264 -0
  114. fds/sdk/ProposalGenerationEngine/model/risk_node_stats.py +304 -0
  115. fds/sdk/ProposalGenerationEngine/model/risk_stats.py +290 -0
  116. fds/sdk/ProposalGenerationEngine/model/rolling_series.py +262 -0
  117. fds/sdk/ProposalGenerationEngine/model/rolling_series_per_time_window.py +266 -0
  118. fds/sdk/ProposalGenerationEngine/model/rolling_series_per_time_window_returns.py +266 -0
  119. fds/sdk/ProposalGenerationEngine/model/rolling_stats.py +262 -0
  120. fds/sdk/ProposalGenerationEngine/model/rolling_stats_per_time_window.py +262 -0
  121. fds/sdk/ProposalGenerationEngine/model/rolling_stats_per_time_window_rolling.py +256 -0
  122. fds/sdk/ProposalGenerationEngine/model/serie_stats.py +282 -0
  123. fds/sdk/ProposalGenerationEngine/model/series_stats.py +266 -0
  124. fds/sdk/ProposalGenerationEngine/model/settings.py +338 -0
  125. fds/sdk/ProposalGenerationEngine/model/settings_all_of.py +269 -0
  126. fds/sdk/ProposalGenerationEngine/model/stats.py +311 -0
  127. fds/sdk/ProposalGenerationEngine/model/time_window.py +256 -0
  128. fds/sdk/ProposalGenerationEngine/model/time_window_series.py +262 -0
  129. fds/sdk/ProposalGenerationEngine/model/time_window_stats.py +268 -0
  130. fds/sdk/ProposalGenerationEngine/model/time_window_stats_generic.py +256 -0
  131. fds/sdk/ProposalGenerationEngine/model/transaction_rule.py +334 -0
  132. fds/sdk/ProposalGenerationEngine/model/ui_value_object.py +264 -0
  133. fds/sdk/ProposalGenerationEngine/model_utils.py +2062 -0
  134. fds/sdk/ProposalGenerationEngine/models/__init__.py +133 -0
  135. fds/sdk/ProposalGenerationEngine/rest.py +347 -0
  136. fds/sdk/__init__.py +0 -0
  137. fds_sdk_proposalgenerationengine-0.1.0.dist-info/METADATA +456 -0
  138. fds_sdk_proposalgenerationengine-0.1.0.dist-info/RECORD +141 -0
  139. fds_sdk_proposalgenerationengine-0.1.0.dist-info/WHEEL +5 -0
  140. fds_sdk_proposalgenerationengine-0.1.0.dist-info/licenses/LICENSE +202 -0
  141. fds_sdk_proposalgenerationengine-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,284 @@
1
+ """
2
+ Proposal Generation Engine API
3
+
4
+ Documentation on all available end points in the Proposal Generation API # noqa: E501
5
+
6
+ The version of the OpenAPI document: 0.0.1
7
+ Contact: api@factset.com
8
+ Generated by: https://openapi-generator.tech
9
+ """
10
+
11
+
12
+ import re # noqa: F401
13
+ import sys # noqa: F401
14
+
15
+ from fds.sdk.ProposalGenerationEngine.model_utils import ( # noqa: F401
16
+ ApiTypeError,
17
+ ModelComposed,
18
+ ModelNormal,
19
+ ModelSimple,
20
+ cached_property,
21
+ change_keys_js_to_python,
22
+ convert_js_args_to_python_args,
23
+ date,
24
+ datetime,
25
+ file_type,
26
+ none_type,
27
+ validate_get_composed_info,
28
+ OpenApiModel
29
+ )
30
+ from fds.sdk.ProposalGenerationEngine.exceptions import ApiAttributeError
31
+
32
+
33
+ def lazy_import():
34
+ from fds.sdk.ProposalGenerationEngine.model.backfill_data import BackfillData
35
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_period_stats import ExPostPeriodStats
36
+ from fds.sdk.ProposalGenerationEngine.model.investment import Investment
37
+ from fds.sdk.ProposalGenerationEngine.model.time_window_stats import TimeWindowStats
38
+ globals()['BackfillData'] = BackfillData
39
+ globals()['ExPostPeriodStats'] = ExPostPeriodStats
40
+ globals()['Investment'] = Investment
41
+ globals()['TimeWindowStats'] = TimeWindowStats
42
+
43
+
44
+ class ExPostPortfolioInvestmentResponseAllOf(ModelNormal):
45
+ """NOTE: This class is auto generated by OpenAPI Generator.
46
+ Ref: https://openapi-generator.tech
47
+
48
+ Do not edit the class manually.
49
+
50
+ Attributes:
51
+ allowed_values (dict): The key is the tuple path to the attribute
52
+ and the for var_name this is (var_name,). The value is a dict
53
+ with a capitalized key describing the allowed value and an allowed
54
+ value. These dicts store the allowed enum values.
55
+ attribute_map (dict): The key is attribute name
56
+ and the value is json key in definition.
57
+ discriminator_value_class_map (dict): A dict to go from the discriminator
58
+ variable value to the discriminator class name.
59
+ validations (dict): The key is the tuple path to the attribute
60
+ and the for var_name this is (var_name,). The value is a dict
61
+ that stores validations for max_length, min_length, max_items,
62
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
63
+ inclusive_minimum, and regex.
64
+ additional_properties_type (tuple): A tuple of classes accepted
65
+ as additional properties values.
66
+ """
67
+
68
+ allowed_values = {
69
+ }
70
+
71
+ validations = {
72
+ }
73
+
74
+ @cached_property
75
+ def additional_properties_type():
76
+ """
77
+ This must be a method because a model may have properties that are
78
+ of type self, this must run after the class is loaded
79
+ """
80
+ lazy_import()
81
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
82
+
83
+ _nullable = False
84
+
85
+ @cached_property
86
+ def openapi_types():
87
+ """
88
+ This must be a method because a model may have properties that are
89
+ of type self, this must run after the class is loaded
90
+
91
+ Returns
92
+ openapi_types (dict): The key is attribute name
93
+ and the value is attribute type.
94
+ """
95
+ lazy_import()
96
+ return {
97
+ 'security_details': (Investment,), # noqa: E501
98
+ 'stats': (TimeWindowStats,), # noqa: E501
99
+ 'udfs': ({str: (bool, date, datetime, dict, float, int, list, str, none_type)},), # noqa: E501
100
+ 'periods': (ExPostPeriodStats,), # noqa: E501
101
+ 'backfill_data': ({str: (BackfillData,)},), # noqa: E501
102
+ }
103
+
104
+ @cached_property
105
+ def discriminator():
106
+ return None
107
+
108
+
109
+ attribute_map = {
110
+ 'security_details': 'securityDetails', # noqa: E501
111
+ 'stats': 'stats', # noqa: E501
112
+ 'udfs': 'udfs', # noqa: E501
113
+ 'periods': 'periods', # noqa: E501
114
+ 'backfill_data': 'backfillData', # noqa: E501
115
+ }
116
+
117
+ read_only_vars = {
118
+ }
119
+
120
+ _composed_schemas = {}
121
+
122
+ @classmethod
123
+ @convert_js_args_to_python_args
124
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
125
+ """ExPostPortfolioInvestmentResponseAllOf - a model defined in OpenAPI
126
+
127
+ Keyword Args:
128
+ _check_type (bool): if True, values for parameters in openapi_types
129
+ will be type checked and a TypeError will be
130
+ raised if the wrong type is input.
131
+ Defaults to True
132
+ _path_to_item (tuple/list): This is a list of keys or values to
133
+ drill down to the model in received_data
134
+ when deserializing a response
135
+ _spec_property_naming (bool): True if the variable names in the input data
136
+ are serialized names, as specified in the OpenAPI document.
137
+ False if the variable names in the input data
138
+ are pythonic names, e.g. snake case (default)
139
+ _configuration (Configuration): the instance to use when
140
+ deserializing a file_type parameter.
141
+ If passed, type conversion is attempted
142
+ If omitted no type conversion is done.
143
+ _visited_composed_classes (tuple): This stores a tuple of
144
+ classes that we have traveled through so that
145
+ if we see that class again we will not use its
146
+ discriminator again.
147
+ When traveling through a discriminator, the
148
+ composed schema that is
149
+ is traveled through is added to this set.
150
+ For example if Animal has a discriminator
151
+ petType and we pass in "Dog", and the class Dog
152
+ allOf includes Animal, we move through Animal
153
+ once using the discriminator, and pick Dog.
154
+ Then in Dog, we will make an instance of the
155
+ Animal class but this time we won't travel
156
+ through its discriminator because we passed in
157
+ _visited_composed_classes = (Animal,)
158
+ security_details (Investment): [optional] # noqa: E501
159
+ stats (TimeWindowStats): [optional] # noqa: E501
160
+ udfs ({str: (bool, date, datetime, dict, float, int, list, str, none_type)}): portfolio UDFs map. [optional] # noqa: E501
161
+ periods (ExPostPeriodStats): [optional] # noqa: E501
162
+ backfill_data ({str: (BackfillData,)}): a map from time window to backfill statistics. [optional] # noqa: E501
163
+ """
164
+
165
+ _check_type = kwargs.pop('_check_type', True)
166
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
167
+ _path_to_item = kwargs.pop('_path_to_item', ())
168
+ _configuration = kwargs.pop('_configuration', None)
169
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
170
+
171
+ self = super(OpenApiModel, cls).__new__(cls)
172
+
173
+ if args:
174
+ raise ApiTypeError(
175
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
176
+ args,
177
+ self.__class__.__name__,
178
+ ),
179
+ path_to_item=_path_to_item,
180
+ valid_classes=(self.__class__,),
181
+ )
182
+
183
+ self._data_store = {}
184
+ self._check_type = _check_type
185
+ self._spec_property_naming = _spec_property_naming
186
+ self._path_to_item = _path_to_item
187
+ self._configuration = _configuration
188
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
189
+
190
+ for var_name, var_value in kwargs.items():
191
+ if var_name not in self.attribute_map and \
192
+ self._configuration is not None and \
193
+ self._configuration.discard_unknown_keys and \
194
+ self.additional_properties_type is None:
195
+ # discard variable.
196
+ continue
197
+ setattr(self, var_name, var_value)
198
+ return self
199
+
200
+ required_properties = set([
201
+ '_data_store',
202
+ '_check_type',
203
+ '_spec_property_naming',
204
+ '_path_to_item',
205
+ '_configuration',
206
+ '_visited_composed_classes',
207
+ ])
208
+
209
+ @convert_js_args_to_python_args
210
+ def __init__(self, *args, **kwargs): # noqa: E501
211
+ """ExPostPortfolioInvestmentResponseAllOf - a model defined in OpenAPI
212
+
213
+ Keyword Args:
214
+ _check_type (bool): if True, values for parameters in openapi_types
215
+ will be type checked and a TypeError will be
216
+ raised if the wrong type is input.
217
+ Defaults to True
218
+ _path_to_item (tuple/list): This is a list of keys or values to
219
+ drill down to the model in received_data
220
+ when deserializing a response
221
+ _spec_property_naming (bool): True if the variable names in the input data
222
+ are serialized names, as specified in the OpenAPI document.
223
+ False if the variable names in the input data
224
+ are pythonic names, e.g. snake case (default)
225
+ _configuration (Configuration): the instance to use when
226
+ deserializing a file_type parameter.
227
+ If passed, type conversion is attempted
228
+ If omitted no type conversion is done.
229
+ _visited_composed_classes (tuple): This stores a tuple of
230
+ classes that we have traveled through so that
231
+ if we see that class again we will not use its
232
+ discriminator again.
233
+ When traveling through a discriminator, the
234
+ composed schema that is
235
+ is traveled through is added to this set.
236
+ For example if Animal has a discriminator
237
+ petType and we pass in "Dog", and the class Dog
238
+ allOf includes Animal, we move through Animal
239
+ once using the discriminator, and pick Dog.
240
+ Then in Dog, we will make an instance of the
241
+ Animal class but this time we won't travel
242
+ through its discriminator because we passed in
243
+ _visited_composed_classes = (Animal,)
244
+ security_details (Investment): [optional] # noqa: E501
245
+ stats (TimeWindowStats): [optional] # noqa: E501
246
+ udfs ({str: (bool, date, datetime, dict, float, int, list, str, none_type)}): portfolio UDFs map. [optional] # noqa: E501
247
+ periods (ExPostPeriodStats): [optional] # noqa: E501
248
+ backfill_data ({str: (BackfillData,)}): a map from time window to backfill statistics. [optional] # noqa: E501
249
+ """
250
+
251
+ _check_type = kwargs.pop('_check_type', True)
252
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
253
+ _path_to_item = kwargs.pop('_path_to_item', ())
254
+ _configuration = kwargs.pop('_configuration', None)
255
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
256
+
257
+ if args:
258
+ raise ApiTypeError(
259
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
260
+ args,
261
+ self.__class__.__name__,
262
+ ),
263
+ path_to_item=_path_to_item,
264
+ valid_classes=(self.__class__,),
265
+ )
266
+
267
+ self._data_store = {}
268
+ self._check_type = _check_type
269
+ self._spec_property_naming = _spec_property_naming
270
+ self._path_to_item = _path_to_item
271
+ self._configuration = _configuration
272
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
273
+
274
+ for var_name, var_value in kwargs.items():
275
+ if var_name not in self.attribute_map and \
276
+ self._configuration is not None and \
277
+ self._configuration.discard_unknown_keys and \
278
+ self.additional_properties_type is None:
279
+ # discard variable.
280
+ continue
281
+ setattr(self, var_name, var_value)
282
+ if var_name in self.read_only_vars:
283
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
284
+ f"class with read only attributes.")
@@ -0,0 +1,353 @@
1
+ """
2
+ Proposal Generation Engine API
3
+
4
+ Documentation on all available end points in the Proposal Generation API # noqa: E501
5
+
6
+ The version of the OpenAPI document: 0.0.1
7
+ Contact: api@factset.com
8
+ Generated by: https://openapi-generator.tech
9
+ """
10
+
11
+
12
+ import re # noqa: F401
13
+ import sys # noqa: F401
14
+
15
+ from fds.sdk.ProposalGenerationEngine.model_utils import ( # noqa: F401
16
+ ApiTypeError,
17
+ ModelComposed,
18
+ ModelNormal,
19
+ ModelSimple,
20
+ cached_property,
21
+ change_keys_js_to_python,
22
+ convert_js_args_to_python_args,
23
+ date,
24
+ datetime,
25
+ file_type,
26
+ none_type,
27
+ validate_get_composed_info,
28
+ OpenApiModel
29
+ )
30
+ from fds.sdk.ProposalGenerationEngine.exceptions import ApiAttributeError
31
+
32
+
33
+ def lazy_import():
34
+ from fds.sdk.ProposalGenerationEngine.model.backfill_data import BackfillData
35
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_portfolio_investment import ExPostPortfolioInvestment
36
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_portfolio_investment_series_response_all_of import ExPostPortfolioInvestmentSeriesResponseAllOf
37
+ from fds.sdk.ProposalGenerationEngine.model.investment import Investment
38
+ from fds.sdk.ProposalGenerationEngine.model.period_series import PeriodSeries
39
+ from fds.sdk.ProposalGenerationEngine.model.time_window_series import TimeWindowSeries
40
+ from fds.sdk.ProposalGenerationEngine.model.transaction_rule import TransactionRule
41
+ globals()['BackfillData'] = BackfillData
42
+ globals()['ExPostPortfolioInvestment'] = ExPostPortfolioInvestment
43
+ globals()['ExPostPortfolioInvestmentSeriesResponseAllOf'] = ExPostPortfolioInvestmentSeriesResponseAllOf
44
+ globals()['Investment'] = Investment
45
+ globals()['PeriodSeries'] = PeriodSeries
46
+ globals()['TimeWindowSeries'] = TimeWindowSeries
47
+ globals()['TransactionRule'] = TransactionRule
48
+
49
+
50
+ class ExPostPortfolioInvestmentSeriesResponse(ModelComposed):
51
+ """NOTE: This class is auto generated by OpenAPI Generator.
52
+ Ref: https://openapi-generator.tech
53
+
54
+ Do not edit the class manually.
55
+
56
+ Attributes:
57
+ allowed_values (dict): The key is the tuple path to the attribute
58
+ and the for var_name this is (var_name,). The value is a dict
59
+ with a capitalized key describing the allowed value and an allowed
60
+ value. These dicts store the allowed enum values.
61
+ attribute_map (dict): The key is attribute name
62
+ and the value is json key in definition.
63
+ discriminator_value_class_map (dict): A dict to go from the discriminator
64
+ variable value to the discriminator class name.
65
+ validations (dict): The key is the tuple path to the attribute
66
+ and the for var_name this is (var_name,). The value is a dict
67
+ that stores validations for max_length, min_length, max_items,
68
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
69
+ inclusive_minimum, and regex.
70
+ additional_properties_type (tuple): A tuple of classes accepted
71
+ as additional properties values.
72
+ """
73
+
74
+ allowed_values = {
75
+ }
76
+
77
+ validations = {
78
+ }
79
+
80
+ @cached_property
81
+ def additional_properties_type():
82
+ """
83
+ This must be a method because a model may have properties that are
84
+ of type self, this must run after the class is loaded
85
+ """
86
+ lazy_import()
87
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
88
+
89
+ _nullable = False
90
+
91
+ @cached_property
92
+ def openapi_types():
93
+ """
94
+ This must be a method because a model may have properties that are
95
+ of type self, this must run after the class is loaded
96
+
97
+ Returns
98
+ openapi_types (dict): The key is attribute name
99
+ and the value is attribute type.
100
+ """
101
+ lazy_import()
102
+ return {
103
+ 'id': (str,), # noqa: E501
104
+ 'weight': (float,), # noqa: E501
105
+ 'sales_charge': (float,), # noqa: E501
106
+ 'transaction_rules': ([TransactionRule],), # noqa: E501
107
+ 'security_details': (Investment,), # noqa: E501
108
+ 'series': (TimeWindowSeries,), # noqa: E501
109
+ 'periods': (PeriodSeries,), # noqa: E501
110
+ 'backfill_data': ({str: (BackfillData,)},), # noqa: E501
111
+ }
112
+
113
+ @cached_property
114
+ def discriminator():
115
+ return None
116
+
117
+
118
+ attribute_map = {
119
+ 'id': 'id', # noqa: E501
120
+ 'weight': 'weight', # noqa: E501
121
+ 'sales_charge': 'salesCharge', # noqa: E501
122
+ 'transaction_rules': 'transactionRules', # noqa: E501
123
+ 'security_details': 'securityDetails', # noqa: E501
124
+ 'series': 'series', # noqa: E501
125
+ 'periods': 'periods', # noqa: E501
126
+ 'backfill_data': 'backfillData', # noqa: E501
127
+ }
128
+
129
+ read_only_vars = {
130
+ }
131
+
132
+ @classmethod
133
+ @convert_js_args_to_python_args
134
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
135
+ """ExPostPortfolioInvestmentSeriesResponse - a model defined in OpenAPI
136
+
137
+ Keyword Args:
138
+ id (str): the unique id of the investment - e.g. FactSet id
139
+ weight (float): the weight of the investment in hte portfolio
140
+ _check_type (bool): if True, values for parameters in openapi_types
141
+ will be type checked and a TypeError will be
142
+ raised if the wrong type is input.
143
+ Defaults to True
144
+ _path_to_item (tuple/list): This is a list of keys or values to
145
+ drill down to the model in received_data
146
+ when deserializing a response
147
+ _spec_property_naming (bool): True if the variable names in the input data
148
+ are serialized names, as specified in the OpenAPI document.
149
+ False if the variable names in the input data
150
+ are pythonic names, e.g. snake case (default)
151
+ _configuration (Configuration): the instance to use when
152
+ deserializing a file_type parameter.
153
+ If passed, type conversion is attempted
154
+ If omitted no type conversion is done.
155
+ _visited_composed_classes (tuple): This stores a tuple of
156
+ classes that we have traveled through so that
157
+ if we see that class again we will not use its
158
+ discriminator again.
159
+ When traveling through a discriminator, the
160
+ composed schema that is
161
+ is traveled through is added to this set.
162
+ For example if Animal has a discriminator
163
+ petType and we pass in "Dog", and the class Dog
164
+ allOf includes Animal, we move through Animal
165
+ once using the discriminator, and pick Dog.
166
+ Then in Dog, we will make an instance of the
167
+ Animal class but this time we won't travel
168
+ through its discriminator because we passed in
169
+ _visited_composed_classes = (Animal,)
170
+ sales_charge (float): A representation of a portfolio constituent (investment). [optional] # noqa: E501
171
+ transaction_rules ([TransactionRule]): rules for adding/substracting amount from the portfolio at given periods. [optional] # noqa: E501
172
+ security_details (Investment): [optional] # noqa: E501
173
+ series (TimeWindowSeries): [optional] # noqa: E501
174
+ periods (PeriodSeries): [optional] # noqa: E501
175
+ backfill_data ({str: (BackfillData,)}): a map from time window to backfill statistics. [optional] # noqa: E501
176
+ """
177
+
178
+ _check_type = kwargs.pop('_check_type', True)
179
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
180
+ _path_to_item = kwargs.pop('_path_to_item', ())
181
+ _configuration = kwargs.pop('_configuration', None)
182
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
183
+
184
+ self = super(OpenApiModel, cls).__new__(cls)
185
+
186
+ if args:
187
+ raise ApiTypeError(
188
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
189
+ args,
190
+ self.__class__.__name__,
191
+ ),
192
+ path_to_item=_path_to_item,
193
+ valid_classes=(self.__class__,),
194
+ )
195
+
196
+ self._data_store = {}
197
+ self._check_type = _check_type
198
+ self._spec_property_naming = _spec_property_naming
199
+ self._path_to_item = _path_to_item
200
+ self._configuration = _configuration
201
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
202
+
203
+ constant_args = {
204
+ '_check_type': _check_type,
205
+ '_path_to_item': _path_to_item,
206
+ '_spec_property_naming': _spec_property_naming,
207
+ '_configuration': _configuration,
208
+ '_visited_composed_classes': self._visited_composed_classes,
209
+ }
210
+ composed_info = validate_get_composed_info(
211
+ constant_args, kwargs, self)
212
+ self._composed_instances = composed_info[0]
213
+ self._var_name_to_model_instances = composed_info[1]
214
+ self._additional_properties_model_instances = composed_info[2]
215
+ discarded_args = composed_info[3]
216
+
217
+ for var_name, var_value in kwargs.items():
218
+ if var_name in discarded_args and \
219
+ self._configuration is not None and \
220
+ self._configuration.discard_unknown_keys and \
221
+ self._additional_properties_model_instances:
222
+ # discard variable.
223
+ continue
224
+ setattr(self, var_name, var_value)
225
+
226
+ return self
227
+
228
+ required_properties = set([
229
+ '_data_store',
230
+ '_check_type',
231
+ '_spec_property_naming',
232
+ '_path_to_item',
233
+ '_configuration',
234
+ '_visited_composed_classes',
235
+ '_composed_instances',
236
+ '_var_name_to_model_instances',
237
+ '_additional_properties_model_instances',
238
+ ])
239
+
240
+ @convert_js_args_to_python_args
241
+ def __init__(self, *args, **kwargs): # noqa: E501
242
+ """ExPostPortfolioInvestmentSeriesResponse - a model defined in OpenAPI
243
+
244
+ Keyword Args:
245
+ id (str): the unique id of the investment - e.g. FactSet id
246
+ weight (float): the weight of the investment in hte portfolio
247
+ _check_type (bool): if True, values for parameters in openapi_types
248
+ will be type checked and a TypeError will be
249
+ raised if the wrong type is input.
250
+ Defaults to True
251
+ _path_to_item (tuple/list): This is a list of keys or values to
252
+ drill down to the model in received_data
253
+ when deserializing a response
254
+ _spec_property_naming (bool): True if the variable names in the input data
255
+ are serialized names, as specified in the OpenAPI document.
256
+ False if the variable names in the input data
257
+ are pythonic names, e.g. snake case (default)
258
+ _configuration (Configuration): the instance to use when
259
+ deserializing a file_type parameter.
260
+ If passed, type conversion is attempted
261
+ If omitted no type conversion is done.
262
+ _visited_composed_classes (tuple): This stores a tuple of
263
+ classes that we have traveled through so that
264
+ if we see that class again we will not use its
265
+ discriminator again.
266
+ When traveling through a discriminator, the
267
+ composed schema that is
268
+ is traveled through is added to this set.
269
+ For example if Animal has a discriminator
270
+ petType and we pass in "Dog", and the class Dog
271
+ allOf includes Animal, we move through Animal
272
+ once using the discriminator, and pick Dog.
273
+ Then in Dog, we will make an instance of the
274
+ Animal class but this time we won't travel
275
+ through its discriminator because we passed in
276
+ _visited_composed_classes = (Animal,)
277
+ sales_charge (float): A representation of a portfolio constituent (investment). [optional] # noqa: E501
278
+ transaction_rules ([TransactionRule]): rules for adding/substracting amount from the portfolio at given periods. [optional] # noqa: E501
279
+ security_details (Investment): [optional] # noqa: E501
280
+ series (TimeWindowSeries): [optional] # noqa: E501
281
+ periods (PeriodSeries): [optional] # noqa: E501
282
+ backfill_data ({str: (BackfillData,)}): a map from time window to backfill statistics. [optional] # noqa: E501
283
+ """
284
+
285
+ _check_type = kwargs.pop('_check_type', True)
286
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
287
+ _path_to_item = kwargs.pop('_path_to_item', ())
288
+ _configuration = kwargs.pop('_configuration', None)
289
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
290
+
291
+ if args:
292
+ raise ApiTypeError(
293
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
294
+ args,
295
+ self.__class__.__name__,
296
+ ),
297
+ path_to_item=_path_to_item,
298
+ valid_classes=(self.__class__,),
299
+ )
300
+
301
+ self._data_store = {}
302
+ self._check_type = _check_type
303
+ self._spec_property_naming = _spec_property_naming
304
+ self._path_to_item = _path_to_item
305
+ self._configuration = _configuration
306
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
307
+
308
+ constant_args = {
309
+ '_check_type': _check_type,
310
+ '_path_to_item': _path_to_item,
311
+ '_spec_property_naming': _spec_property_naming,
312
+ '_configuration': _configuration,
313
+ '_visited_composed_classes': self._visited_composed_classes,
314
+ }
315
+ composed_info = validate_get_composed_info(
316
+ constant_args, kwargs, self)
317
+ self._composed_instances = composed_info[0]
318
+ self._var_name_to_model_instances = composed_info[1]
319
+ self._additional_properties_model_instances = composed_info[2]
320
+ discarded_args = composed_info[3]
321
+
322
+ for var_name, var_value in kwargs.items():
323
+ if var_name in discarded_args and \
324
+ self._configuration is not None and \
325
+ self._configuration.discard_unknown_keys and \
326
+ self._additional_properties_model_instances:
327
+ # discard variable.
328
+ continue
329
+ setattr(self, var_name, var_value)
330
+ if var_name in self.read_only_vars:
331
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
332
+ f"class with read only attributes.")
333
+
334
+ @cached_property
335
+ def _composed_schemas():
336
+ # we need this here to make our import statements work
337
+ # we must store _composed_schemas in here so the code is only run
338
+ # when we invoke this method. If we kept this at the class
339
+ # level we would get an error because the class level
340
+ # code would be run when this module is imported, and these composed
341
+ # classes don't exist yet because their module has not finished
342
+ # loading
343
+ lazy_import()
344
+ return {
345
+ 'anyOf': [
346
+ ],
347
+ 'allOf': [
348
+ ExPostPortfolioInvestment,
349
+ ExPostPortfolioInvestmentSeriesResponseAllOf,
350
+ ],
351
+ 'oneOf': [
352
+ ],
353
+ }