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,133 @@
1
+ # flake8: noqa
2
+
3
+ # import all models into this package
4
+ # if you have many models here with many references from one model to another this may
5
+ # raise a RecursionError
6
+ # to avoid this, import only the models that you directly need like:
7
+ # from from fds.sdk.ProposalGenerationEngine.model.pet import Pet
8
+ # or import this package, but before doing it, use:
9
+ # import sys
10
+ # sys.setrecursionlimit(n)
11
+
12
+ from fds.sdk.ProposalGenerationEngine.model.array import Array
13
+ from fds.sdk.ProposalGenerationEngine.model.backfill_data import BackfillData
14
+ from fds.sdk.ProposalGenerationEngine.model.base_settings import BaseSettings
15
+ from fds.sdk.ProposalGenerationEngine.model.boxplot import Boxplot
16
+ from fds.sdk.ProposalGenerationEngine.model.boxplot_boxplot_summary import BoxplotBoxplotSummary
17
+ from fds.sdk.ProposalGenerationEngine.model.cl_pair import CLPair
18
+ from fds.sdk.ProposalGenerationEngine.model.correlation_matrix import CorrelationMatrix
19
+ from fds.sdk.ProposalGenerationEngine.model.correlation_stats import CorrelationStats
20
+ from fds.sdk.ProposalGenerationEngine.model.dated_correlation_stats import DatedCorrelationStats
21
+ from fds.sdk.ProposalGenerationEngine.model.dated_correlation_stats_per_time_window import DatedCorrelationStatsPerTimeWindow
22
+ from fds.sdk.ProposalGenerationEngine.model.dated_node_stats import DatedNodeStats
23
+ from fds.sdk.ProposalGenerationEngine.model.drawdown import Drawdown
24
+ from fds.sdk.ProposalGenerationEngine.model.drawdown_stats import DrawdownStats
25
+ from fds.sdk.ProposalGenerationEngine.model.entity import Entity
26
+ from fds.sdk.ProposalGenerationEngine.model.entity_stats import EntityStats
27
+ from fds.sdk.ProposalGenerationEngine.model.error import Error
28
+ from fds.sdk.ProposalGenerationEngine.model.errors import Errors
29
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_period_stats import ExPostPeriodStats
30
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_period_stats_all_of import ExPostPeriodStatsAllOf
31
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_portfolio import ExPostPortfolio
32
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_portfolio_all_of import ExPostPortfolioAllOf
33
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_portfolio_investment import ExPostPortfolioInvestment
34
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_portfolio_investment_all_of import ExPostPortfolioInvestmentAllOf
35
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_portfolio_investment_response import ExPostPortfolioInvestmentResponse
36
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_portfolio_investment_response_all_of import ExPostPortfolioInvestmentResponseAllOf
37
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_portfolio_investment_series_response import ExPostPortfolioInvestmentSeriesResponse
38
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_portfolio_investment_series_response_all_of import ExPostPortfolioInvestmentSeriesResponseAllOf
39
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_rolling_settings import ExPostRollingSettings
40
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_rolling_settings_all_of import ExPostRollingSettingsAllOf
41
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_series import ExPostSeries
42
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_series_data import ExPostSeriesData
43
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_series_response import ExPostSeriesResponse
44
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_series_response_data import ExPostSeriesResponseData
45
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_series_response_meta import ExPostSeriesResponseMeta
46
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_series_rolling import ExPostSeriesRolling
47
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_series_rolling_data import ExPostSeriesRollingData
48
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_series_rolling_response import ExPostSeriesRollingResponse
49
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_series_rolling_response_data import ExPostSeriesRollingResponseData
50
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_series_rolling_response_meta import ExPostSeriesRollingResponseMeta
51
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_series_rolling_settings import ExPostSeriesRollingSettings
52
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_series_settings import ExPostSeriesSettings
53
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_series_settings_all_of import ExPostSeriesSettingsAllOf
54
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_settings import ExPostSettings
55
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_settings_all_of import ExPostSettingsAllOf
56
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats import ExPostStats
57
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_correlations import ExPostStatsCorrelations
58
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_correlations_data import ExPostStatsCorrelationsData
59
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_correlations_response import ExPostStatsCorrelationsResponse
60
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_correlations_response_meta import ExPostStatsCorrelationsResponseMeta
61
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_correlations_settings import ExPostStatsCorrelationsSettings
62
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_correlations_settings_all_of import ExPostStatsCorrelationsSettingsAllOf
63
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_data import ExPostStatsData
64
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_factor_exposure import ExPostStatsFactorExposure
65
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_factor_exposure_data import ExPostStatsFactorExposureData
66
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_factor_exposure_response import ExPostStatsFactorExposureResponse
67
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_factor_exposure_response_meta import ExPostStatsFactorExposureResponseMeta
68
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_factor_exposure_settings import ExPostStatsFactorExposureSettings
69
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_factor_exposure_settings_all_of import ExPostStatsFactorExposureSettingsAllOf
70
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_response import ExPostStatsResponse
71
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_response_data import ExPostStatsResponseData
72
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_response_meta import ExPostStatsResponseMeta
73
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_rolling import ExPostStatsRolling
74
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_rolling_data import ExPostStatsRollingData
75
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_rolling_response import ExPostStatsRollingResponse
76
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_rolling_response_data import ExPostStatsRollingResponseData
77
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_rolling_response_meta import ExPostStatsRollingResponseMeta
78
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_rolling_settings import ExPostStatsRollingSettings
79
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_rolling_settings_all_of import ExPostStatsRollingSettingsAllOf
80
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_settings import ExPostStatsSettings
81
+ from fds.sdk.ProposalGenerationEngine.model.ex_post_stats_settings_all_of import ExPostStatsSettingsAllOf
82
+ from fds.sdk.ProposalGenerationEngine.model.exposure import Exposure
83
+ from fds.sdk.ProposalGenerationEngine.model.investment import Investment
84
+ from fds.sdk.ProposalGenerationEngine.model.investment_all_of import InvestmentAllOf
85
+ from fds.sdk.ProposalGenerationEngine.model.key_value_pair import KeyValuePair
86
+ from fds.sdk.ProposalGenerationEngine.model.level import Level
87
+ from fds.sdk.ProposalGenerationEngine.model.paged_securities import PagedSecurities
88
+ from fds.sdk.ProposalGenerationEngine.model.paged_securities_meta import PagedSecuritiesMeta
89
+ from fds.sdk.ProposalGenerationEngine.model.paged_securities_meta_pagination import PagedSecuritiesMetaPagination
90
+ from fds.sdk.ProposalGenerationEngine.model.performance_stats import PerformanceStats
91
+ from fds.sdk.ProposalGenerationEngine.model.period import Period
92
+ from fds.sdk.ProposalGenerationEngine.model.period_correlation_stats import PeriodCorrelationStats
93
+ from fds.sdk.ProposalGenerationEngine.model.period_correlation_stats_all_of import PeriodCorrelationStatsAllOf
94
+ from fds.sdk.ProposalGenerationEngine.model.period_info import PeriodInfo
95
+ from fds.sdk.ProposalGenerationEngine.model.period_series import PeriodSeries
96
+ from fds.sdk.ProposalGenerationEngine.model.period_series_all_of import PeriodSeriesAllOf
97
+ from fds.sdk.ProposalGenerationEngine.model.periods import Periods
98
+ from fds.sdk.ProposalGenerationEngine.model.portfolio import Portfolio
99
+ from fds.sdk.ProposalGenerationEngine.model.portfolio_all_of import PortfolioAllOf
100
+ from fds.sdk.ProposalGenerationEngine.model.portfolio_correlation_matrix import PortfolioCorrelationMatrix
101
+ from fds.sdk.ProposalGenerationEngine.model.portfolio_entity import PortfolioEntity
102
+ from fds.sdk.ProposalGenerationEngine.model.portfolio_entity_details import PortfolioEntityDetails
103
+ from fds.sdk.ProposalGenerationEngine.model.portfolio_investment import PortfolioInvestment
104
+ from fds.sdk.ProposalGenerationEngine.model.portfolio_with_ex_post_series import PortfolioWithExPostSeries
105
+ from fds.sdk.ProposalGenerationEngine.model.portfolio_with_ex_post_series_all_of import PortfolioWithExPostSeriesAllOf
106
+ from fds.sdk.ProposalGenerationEngine.model.portfolio_with_ex_post_stats import PortfolioWithExPostStats
107
+ from fds.sdk.ProposalGenerationEngine.model.portfolio_with_ex_post_stats_all_of import PortfolioWithExPostStatsAllOf
108
+ from fds.sdk.ProposalGenerationEngine.model.portfolio_with_rolling_series import PortfolioWithRollingSeries
109
+ from fds.sdk.ProposalGenerationEngine.model.portfolio_with_rolling_series_all_of import PortfolioWithRollingSeriesAllOf
110
+ from fds.sdk.ProposalGenerationEngine.model.portfolio_with_rolling_stats import PortfolioWithRollingStats
111
+ from fds.sdk.ProposalGenerationEngine.model.portfolio_with_rolling_stats_all_of import PortfolioWithRollingStatsAllOf
112
+ from fds.sdk.ProposalGenerationEngine.model.rebalancing import Rebalancing
113
+ from fds.sdk.ProposalGenerationEngine.model.relative_risk_stats import RelativeRiskStats
114
+ from fds.sdk.ProposalGenerationEngine.model.return_stats import ReturnStats
115
+ from fds.sdk.ProposalGenerationEngine.model.risk_node_stats import RiskNodeStats
116
+ from fds.sdk.ProposalGenerationEngine.model.risk_stats import RiskStats
117
+ from fds.sdk.ProposalGenerationEngine.model.rolling_series import RollingSeries
118
+ from fds.sdk.ProposalGenerationEngine.model.rolling_series_per_time_window import RollingSeriesPerTimeWindow
119
+ from fds.sdk.ProposalGenerationEngine.model.rolling_series_per_time_window_returns import RollingSeriesPerTimeWindowReturns
120
+ from fds.sdk.ProposalGenerationEngine.model.rolling_stats import RollingStats
121
+ from fds.sdk.ProposalGenerationEngine.model.rolling_stats_per_time_window import RollingStatsPerTimeWindow
122
+ from fds.sdk.ProposalGenerationEngine.model.rolling_stats_per_time_window_rolling import RollingStatsPerTimeWindowRolling
123
+ from fds.sdk.ProposalGenerationEngine.model.serie_stats import SerieStats
124
+ from fds.sdk.ProposalGenerationEngine.model.series_stats import SeriesStats
125
+ from fds.sdk.ProposalGenerationEngine.model.settings import Settings
126
+ from fds.sdk.ProposalGenerationEngine.model.settings_all_of import SettingsAllOf
127
+ from fds.sdk.ProposalGenerationEngine.model.stats import Stats
128
+ from fds.sdk.ProposalGenerationEngine.model.time_window import TimeWindow
129
+ from fds.sdk.ProposalGenerationEngine.model.time_window_series import TimeWindowSeries
130
+ from fds.sdk.ProposalGenerationEngine.model.time_window_stats import TimeWindowStats
131
+ from fds.sdk.ProposalGenerationEngine.model.time_window_stats_generic import TimeWindowStatsGeneric
132
+ from fds.sdk.ProposalGenerationEngine.model.transaction_rule import TransactionRule
133
+ from fds.sdk.ProposalGenerationEngine.model.ui_value_object import UiValueObject
@@ -0,0 +1,347 @@
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 io
13
+ import json
14
+ import logging
15
+ import re
16
+ import ssl
17
+ from urllib.parse import urlencode
18
+ from urllib.parse import urlparse
19
+ from urllib.request import proxy_bypass_environment
20
+ import urllib3
21
+ import ipaddress
22
+
23
+ from fds.sdk.ProposalGenerationEngine.exceptions import ApiException, UnauthorizedException, ForbiddenException, NotFoundException, ServiceException, ApiValueError
24
+
25
+
26
+ logger = logging.getLogger(__name__)
27
+
28
+
29
+ class RESTResponse(io.IOBase):
30
+
31
+ def __init__(self, resp):
32
+ self.urllib3_response = resp
33
+ self.status = resp.status
34
+ self.reason = resp.reason
35
+ self.data = resp.data
36
+
37
+ def getheaders(self):
38
+ """Returns a dictionary of the response headers."""
39
+ return self.urllib3_response.headers
40
+
41
+ def getheader(self, name, default=None):
42
+ """Returns a given response header."""
43
+ return self.urllib3_response.headers.get(name, default)
44
+
45
+
46
+ class RESTClientObject(object):
47
+
48
+ def __init__(self, configuration, pools_size=4, maxsize=None):
49
+ # urllib3.PoolManager will pass all kw parameters to connectionpool
50
+ # https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/poolmanager.py#L75 # noqa: E501
51
+ # https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/connectionpool.py#L680 # noqa: E501
52
+ # maxsize is the number of requests to host that are allowed in parallel # noqa: E501
53
+ # Custom SSL certificates and client certificates: http://urllib3.readthedocs.io/en/latest/advanced-usage.html # noqa: E501
54
+
55
+ # cert_reqs
56
+ if configuration.verify_ssl:
57
+ cert_reqs = ssl.CERT_REQUIRED
58
+ else:
59
+ cert_reqs = ssl.CERT_NONE
60
+
61
+ addition_pool_args = {}
62
+ if configuration.assert_hostname is not None:
63
+ addition_pool_args['assert_hostname'] = configuration.assert_hostname # noqa: E501
64
+
65
+ if configuration.retries is not None:
66
+ addition_pool_args['retries'] = configuration.retries
67
+
68
+ if configuration.socket_options is not None:
69
+ addition_pool_args['socket_options'] = configuration.socket_options
70
+
71
+ if maxsize is None:
72
+ if configuration.connection_pool_maxsize is not None:
73
+ maxsize = configuration.connection_pool_maxsize
74
+ else:
75
+ maxsize = 4
76
+
77
+ # https pool manager
78
+ if configuration.proxy and not should_bypass_proxies(configuration.host, no_proxy=configuration.no_proxy or ''):
79
+ self.pool_manager = urllib3.ProxyManager(
80
+ num_pools=pools_size,
81
+ maxsize=maxsize,
82
+ cert_reqs=cert_reqs,
83
+ ca_certs=configuration.ssl_ca_cert,
84
+ cert_file=configuration.cert_file,
85
+ key_file=configuration.key_file,
86
+ proxy_url=configuration.proxy,
87
+ proxy_headers=configuration.proxy_headers,
88
+ **addition_pool_args
89
+ )
90
+ else:
91
+ self.pool_manager = urllib3.PoolManager(
92
+ num_pools=pools_size,
93
+ maxsize=maxsize,
94
+ cert_reqs=cert_reqs,
95
+ ca_certs=configuration.ssl_ca_cert,
96
+ cert_file=configuration.cert_file,
97
+ key_file=configuration.key_file,
98
+ **addition_pool_args
99
+ )
100
+
101
+ def request(self, method, url, query_params=None, headers=None,
102
+ body=None, post_params=None, _preload_content=True,
103
+ _request_timeout=None):
104
+ """Perform requests.
105
+
106
+ :param method: http request method
107
+ :param url: http request url
108
+ :param query_params: query parameters in the url
109
+ :param headers: http request headers
110
+ :param body: request json body, for `application/json`
111
+ :param post_params: request post parameters,
112
+ `application/x-www-form-urlencoded`
113
+ and `multipart/form-data`
114
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
115
+ be returned without reading/decoding response
116
+ data. Default is True.
117
+ :param _request_timeout: timeout setting for this request. If one
118
+ number provided, it will be total request
119
+ timeout. It can also be a pair (tuple) of
120
+ (connection, read) timeouts.
121
+ """
122
+ method = method.upper()
123
+ assert method in ['GET', 'HEAD', 'DELETE', 'POST', 'PUT',
124
+ 'PATCH', 'OPTIONS']
125
+
126
+ if post_params and body:
127
+ raise ApiValueError(
128
+ "body parameter cannot be used with post_params parameter."
129
+ )
130
+
131
+ post_params = post_params or {}
132
+ headers = headers or {}
133
+
134
+ timeout = None
135
+ if _request_timeout:
136
+ if isinstance(_request_timeout, (int, float)): # noqa: E501,F821
137
+ timeout = urllib3.Timeout(total=_request_timeout)
138
+ elif (isinstance(_request_timeout, tuple) and
139
+ len(_request_timeout) == 2):
140
+ timeout = urllib3.Timeout(
141
+ connect=_request_timeout[0], read=_request_timeout[1])
142
+
143
+ try:
144
+ # For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE`
145
+ if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']:
146
+ # Only set a default Content-Type for POST, PUT, PATCH and OPTIONS requests
147
+ if (method != 'DELETE') and ('Content-Type' not in headers):
148
+ headers['Content-Type'] = 'application/json'
149
+ if query_params:
150
+ url += '?' + urlencode(query_params)
151
+ if ('Content-Type' not in headers) or (re.search('json', headers['Content-Type'], re.IGNORECASE)):
152
+ request_body = None
153
+ if body is not None:
154
+ request_body = json.dumps(body)
155
+ r = self.pool_manager.request(
156
+ method, url,
157
+ body=request_body,
158
+ preload_content=_preload_content,
159
+ timeout=timeout,
160
+ headers=headers)
161
+ elif headers['Content-Type'] == 'application/x-www-form-urlencoded': # noqa: E501
162
+ r = self.pool_manager.request(
163
+ method, url,
164
+ fields=post_params,
165
+ encode_multipart=False,
166
+ preload_content=_preload_content,
167
+ timeout=timeout,
168
+ headers=headers)
169
+ elif headers['Content-Type'] == 'multipart/form-data':
170
+ # must del headers['Content-Type'], or the correct
171
+ # Content-Type which generated by urllib3 will be
172
+ # overwritten.
173
+ del headers['Content-Type']
174
+ r = self.pool_manager.request(
175
+ method, url,
176
+ fields=post_params,
177
+ encode_multipart=True,
178
+ preload_content=_preload_content,
179
+ timeout=timeout,
180
+ headers=headers)
181
+ # Pass a `string` parameter directly in the body to support
182
+ # other content types than Json when `body` argument is
183
+ # provided in serialized form
184
+ elif isinstance(body, str) or isinstance(body, bytes):
185
+ request_body = body
186
+ r = self.pool_manager.request(
187
+ method, url,
188
+ body=request_body,
189
+ preload_content=_preload_content,
190
+ timeout=timeout,
191
+ headers=headers)
192
+ else:
193
+ # Cannot generate the request from given parameters
194
+ msg = """Cannot prepare a request message for provided
195
+ arguments. Please check that your arguments match
196
+ declared content type."""
197
+ raise ApiException(status=0, reason=msg)
198
+ # For `GET`, `HEAD`
199
+ else:
200
+ r = self.pool_manager.request(method, url,
201
+ fields=query_params,
202
+ preload_content=_preload_content,
203
+ timeout=timeout,
204
+ headers=headers)
205
+ except urllib3.exceptions.SSLError as e:
206
+ msg = "{0}\n{1}".format(type(e).__name__, str(e))
207
+ raise ApiException(status=0, reason=msg)
208
+
209
+ if _preload_content:
210
+ r = RESTResponse(r)
211
+
212
+ # log response body
213
+ logger.debug("response body: %s", r.data)
214
+
215
+ if not 200 <= r.status <= 299:
216
+ if r.status == 401:
217
+ raise UnauthorizedException(http_resp=r)
218
+
219
+ if r.status == 403:
220
+ raise ForbiddenException(http_resp=r)
221
+
222
+ if r.status == 404:
223
+ raise NotFoundException(http_resp=r)
224
+
225
+ if 500 <= r.status <= 599:
226
+ raise ServiceException(http_resp=r)
227
+
228
+ raise ApiException(http_resp=r)
229
+
230
+ return r
231
+
232
+ def GET(self, url, headers=None, query_params=None, _preload_content=True,
233
+ _request_timeout=None):
234
+ return self.request("GET", url,
235
+ headers=headers,
236
+ _preload_content=_preload_content,
237
+ _request_timeout=_request_timeout,
238
+ query_params=query_params)
239
+
240
+ def HEAD(self, url, headers=None, query_params=None, _preload_content=True,
241
+ _request_timeout=None):
242
+ return self.request("HEAD", url,
243
+ headers=headers,
244
+ _preload_content=_preload_content,
245
+ _request_timeout=_request_timeout,
246
+ query_params=query_params)
247
+
248
+ def OPTIONS(self, url, headers=None, query_params=None, post_params=None,
249
+ body=None, _preload_content=True, _request_timeout=None):
250
+ return self.request("OPTIONS", url,
251
+ headers=headers,
252
+ query_params=query_params,
253
+ post_params=post_params,
254
+ _preload_content=_preload_content,
255
+ _request_timeout=_request_timeout,
256
+ body=body)
257
+
258
+ def DELETE(self, url, headers=None, query_params=None, body=None,
259
+ _preload_content=True, _request_timeout=None):
260
+ return self.request("DELETE", url,
261
+ headers=headers,
262
+ query_params=query_params,
263
+ _preload_content=_preload_content,
264
+ _request_timeout=_request_timeout,
265
+ body=body)
266
+
267
+ def POST(self, url, headers=None, query_params=None, post_params=None,
268
+ body=None, _preload_content=True, _request_timeout=None):
269
+ return self.request("POST", url,
270
+ headers=headers,
271
+ query_params=query_params,
272
+ post_params=post_params,
273
+ _preload_content=_preload_content,
274
+ _request_timeout=_request_timeout,
275
+ body=body)
276
+
277
+ def PUT(self, url, headers=None, query_params=None, post_params=None,
278
+ body=None, _preload_content=True, _request_timeout=None):
279
+ return self.request("PUT", url,
280
+ headers=headers,
281
+ query_params=query_params,
282
+ post_params=post_params,
283
+ _preload_content=_preload_content,
284
+ _request_timeout=_request_timeout,
285
+ body=body)
286
+
287
+ def PATCH(self, url, headers=None, query_params=None, post_params=None,
288
+ body=None, _preload_content=True, _request_timeout=None):
289
+ return self.request("PATCH", url,
290
+ headers=headers,
291
+ query_params=query_params,
292
+ post_params=post_params,
293
+ _preload_content=_preload_content,
294
+ _request_timeout=_request_timeout,
295
+ body=body)
296
+
297
+ # end of class RESTClientObject
298
+ def is_ipv4(target):
299
+ """ Test if IPv4 address or not
300
+ """
301
+ try:
302
+ chk = ipaddress.IPv4Address(target)
303
+ return True
304
+ except ipaddress.AddressValueError:
305
+ return False
306
+
307
+ def in_ipv4net(target, net):
308
+ """ Test if target belongs to given IPv4 network
309
+ """
310
+ try:
311
+ nw = ipaddress.IPv4Network(net)
312
+ ip = ipaddress.IPv4Address(target)
313
+ if ip in nw:
314
+ return True
315
+ return False
316
+ except ipaddress.AddressValueError:
317
+ return False
318
+ except ipaddress.NetmaskValueError:
319
+ return False
320
+
321
+ def should_bypass_proxies(url, no_proxy=None):
322
+ """ Yet another requests.should_bypass_proxies
323
+ Test if proxies should not be used for a particular url.
324
+ """
325
+
326
+ parsed = urlparse(url)
327
+
328
+ # special cases
329
+ if parsed.hostname in [None, '']:
330
+ return True
331
+
332
+ # special cases
333
+ if no_proxy in [None , '']:
334
+ return False
335
+ if no_proxy == '*':
336
+ return True
337
+
338
+ no_proxy = no_proxy.lower().replace(' ','');
339
+ entries = (
340
+ host for host in no_proxy.split(',') if host
341
+ )
342
+
343
+ if is_ipv4(parsed.hostname):
344
+ for item in entries:
345
+ if in_ipv4net(parsed.hostname, item):
346
+ return True
347
+ return proxy_bypass_environment(parsed.hostname, {'no': no_proxy} )
fds/sdk/__init__.py ADDED
File without changes