Skip to content

Commit e2fa9e9

Browse files
RamanthGitHub Enterprise
authored andcommitted
fix(python): retry configuration and code refactor in example snippets
* Added retry configuration for status codes * code refactors in example snippets
2 parents e6dd145 + 0a4e681 commit e2fa9e9

File tree

4 files changed

+74
-48
lines changed

4 files changed

+74
-48
lines changed

Utilities/examples/multiple_engines_example.py

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,29 @@
22
import sys
33
import time
44

5-
from google.protobuf import json_format
6-
from google.protobuf.json_format import MessageToJson
7-
from google.protobuf.json_format import MessageToDict
8-
from fds.protobuf.stach.Package_pb2 import Package
9-
10-
from fds.analyticsapi.engines.configuration import Configuration
11-
from fds.analyticsapi.engines.api_client import ApiClient
5+
from fds.analyticsapi.engines import ComponentSummary
6+
from fds.analyticsapi.engines.api.calculations_api import CalculationsApi
127
from fds.analyticsapi.engines.api.components_api import ComponentsApi
138
from fds.analyticsapi.engines.api.configurations_api import ConfigurationsApi
14-
from fds.analyticsapi.engines.api.calculations_api import CalculationsApi
159
from fds.analyticsapi.engines.api.utility_api import UtilityApi
10+
from fds.analyticsapi.engines.api_client import ApiClient
11+
from fds.analyticsapi.engines.configuration import Configuration
1612
from fds.analyticsapi.engines.models.calculation import Calculation
1713
from fds.analyticsapi.engines.models.pa_calculation_parameters import PACalculationParameters
18-
from fds.analyticsapi.engines.models.pa_identifier import PAIdentifier
1914
from fds.analyticsapi.engines.models.pa_date_parameters import PADateParameters
15+
from fds.analyticsapi.engines.models.pa_identifier import PAIdentifier
2016
from fds.analyticsapi.engines.models.spar_calculation_parameters import SPARCalculationParameters
21-
from fds.analyticsapi.engines.models.spar_identifier import SPARIdentifier
2217
from fds.analyticsapi.engines.models.spar_date_parameters import SPARDateParameters
18+
from fds.analyticsapi.engines.models.spar_identifier import SPARIdentifier
2319
from fds.analyticsapi.engines.models.vault_calculation_parameters import VaultCalculationParameters
24-
from fds.analyticsapi.engines.models.vault_identifier import VaultIdentifier
2520
from fds.analyticsapi.engines.models.vault_date_parameters import VaultDateParameters
21+
from fds.analyticsapi.engines.models.vault_identifier import VaultIdentifier
22+
from fds.protobuf.stach.Package_pb2 import Package
23+
24+
from google.protobuf import json_format
25+
from google.protobuf.json_format import MessageToJson
26+
from google.protobuf.json_format import MessageToDict
27+
from urllib3 import Retry
2628

2729
# Copy 'Converting API output to Table Format' snippet to a file with name 'stach_extensions.py' to use below import statement
2830
from stach_extensions import StachExtensions
@@ -61,12 +63,16 @@
6163
# config.proxy = "<proxyUrl>"
6264
config.verify_ssl = False
6365

66+
# Setting configuration to retry api calls on http status codes of 429 and 503.
67+
config.retries = Retry(total=3, status=3, status_forcelist=frozenset([429, 503]), backoff_factor=2, raise_on_status=False)
68+
6469
api_client = ApiClient(config)
6570

6671
components_api = ComponentsApi(api_client)
6772

6873
components = components_api.get_pa_components(pa_document_name)
69-
component_id = list((dict(filter(lambda component: (component[1].name == pa_component_name and component[1].category == pa_component_category), components.items()))).keys())[0]
74+
pa_component_desc = ComponentSummary(name=pa_component_name, category=pa_component_category)
75+
component_id = [id for id in list(components.keys()) if components[id] == pa_component_desc][0]
7076

7177
pa_account_identifier = PAIdentifier(pa_benchmark_sp_50)
7278
pa_accounts = [pa_account_identifier]
@@ -77,7 +83,8 @@
7783
pa_calculation_parameters = {"1": PACalculationParameters(component_id, pa_accounts, pa_benchmarks, pa_dates)}
7884

7985
components = components_api.get_spar_components(spar_document_name)
80-
component_id = list((dict(filter(lambda component: (component[1].name == spar_component_name and component[1].category == spar_component_category), components.items()))).keys())[0]
86+
spar_component_desc = ComponentSummary(name=spar_component_name, category=spar_component_category)
87+
component_id = [id for id in list(components.keys()) if components[id] == spar_component_desc][0]
8188

8289
spar_account_identifier = SPARIdentifier(spar_benchmark_r_1000, spar_benchmark_russell_return_type, spar_benchmark_russell_prefix)
8390
spar_accounts = [spar_account_identifier]
@@ -87,7 +94,8 @@
8794
spar_calculation_parameters = {"2": SPARCalculationParameters(component_id, spar_accounts, spar_benchmark_identifier, spar_dates)}
8895

8996
components = components_api.get_vault_components(vault_document_name)
90-
component_id = list((dict(filter(lambda component: (component[1].name == vault_component_name and component[1].category == vault_component_category), components.items()))).keys())[0]
97+
vault_component_desc = ComponentSummary(name=vault_component_name, category=vault_component_category)
98+
component_id = [id for id in list(components.keys()) if components[id] == vault_component_desc][0]
9199

92100
vault_account_identifier = VaultIdentifier(vault_default_account)
93101
vault_dates = VaultDateParameters(vault_startdate, vault_enddate, frequency)
@@ -115,7 +123,7 @@
115123
print("Calculation Id: " + calculation_id)
116124

117125
status_response = calculations_api.get_calculation_status_by_id_with_http_info(calculation_id)
118-
while (status_response[1] == 200 and (status_response[0].status == "Queued" or status_response[0].status == "Executing")):
126+
while status_response[1] == 200 and (status_response[0].status in ("Queued", "Executing")):
119127
max_age = '5'
120128
age_value = status_response[2].get("cache-control")
121129
if age_value is not None:

Utilities/examples/pa_engine_example.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,22 @@
22
import sys
33
import time
44

5-
from google.protobuf import json_format
6-
from google.protobuf.json_format import MessageToJson
7-
from google.protobuf.json_format import MessageToDict
8-
from fds.protobuf.stach.Package_pb2 import Package
9-
10-
from fds.analyticsapi.engines.configuration import Configuration
11-
from fds.analyticsapi.engines.api_client import ApiClient
12-
from fds.analyticsapi.engines.api.components_api import ComponentsApi
5+
from fds.analyticsapi.engines import ComponentSummary
136
from fds.analyticsapi.engines.api.calculations_api import CalculationsApi
7+
from fds.analyticsapi.engines.api.components_api import ComponentsApi
148
from fds.analyticsapi.engines.api.utility_api import UtilityApi
9+
from fds.analyticsapi.engines.api_client import ApiClient
10+
from fds.analyticsapi.engines.configuration import Configuration
1511
from fds.analyticsapi.engines.models.calculation import Calculation
1612
from fds.analyticsapi.engines.models.pa_calculation_parameters import PACalculationParameters
17-
from fds.analyticsapi.engines.models.pa_identifier import PAIdentifier
1813
from fds.analyticsapi.engines.models.pa_date_parameters import PADateParameters
14+
from fds.analyticsapi.engines.models.pa_identifier import PAIdentifier
15+
from fds.protobuf.stach.Package_pb2 import Package
16+
17+
from google.protobuf import json_format
18+
from google.protobuf.json_format import MessageToJson
19+
from google.protobuf.json_format import MessageToDict
20+
from urllib3 import Retry
1921

2022
# Copy 'Converting API output to Table Format' snippet to a file with name 'stach_extensions.py' to use below import statement
2123
from stach_extensions import StachExtensions
@@ -41,12 +43,16 @@
4143
# config.proxy = "<proxyUrl>"
4244
config.verify_ssl = False
4345

46+
# Setting configuration to retry api calls on http status codes of 429 and 503.
47+
config.retries = Retry(total=3, status=3, status_forcelist=frozenset([429, 503]), backoff_factor=2, raise_on_status=False)
48+
4449
api_client = ApiClient(config)
4550

4651
components_api = ComponentsApi(api_client)
4752

4853
components = components_api.get_pa_components(pa_document_name)
49-
component_id = list((dict(filter(lambda component: (component[1].name == pa_component_name and component[1].category == pa_component_category), components.items()))).keys())[0]
54+
component_desc = ComponentSummary(name=pa_component_name, category=pa_component_category)
55+
component_id = [id for id in list(components.keys()) if components[id] == component_desc][0]
5056

5157
pa_account_identifier = PAIdentifier(pa_benchmark_sp_50)
5258
pa_accounts = [pa_account_identifier]
@@ -73,7 +79,7 @@
7379
print("Calculation Id: " + calculation_id)
7480

7581
status_response = calculations_api.get_calculation_status_by_id_with_http_info(calculation_id)
76-
while (status_response[1] == 200 and (status_response[0].status == "Queued" or status_response[0].status == "Executing")):
82+
while status_response[1] == 200 and (status_response[0].status in ("Queued", "Executing")):
7783
max_age = '5'
7884
age_value = status_response[2].get("cache-control")
7985
if age_value is not None:

Utilities/examples/spar_engine_example.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,22 @@
22
import sys
33
import time
44

5-
from google.protobuf import json_format
6-
from google.protobuf.json_format import MessageToJson
7-
from google.protobuf.json_format import MessageToDict
8-
from fds.protobuf.stach.Package_pb2 import Package
9-
10-
from fds.analyticsapi.engines.configuration import Configuration
11-
from fds.analyticsapi.engines.api_client import ApiClient
12-
from fds.analyticsapi.engines.api.components_api import ComponentsApi
5+
from fds.analyticsapi.engines import ComponentSummary
136
from fds.analyticsapi.engines.api.calculations_api import CalculationsApi
7+
from fds.analyticsapi.engines.api.components_api import ComponentsApi
148
from fds.analyticsapi.engines.api.utility_api import UtilityApi
9+
from fds.analyticsapi.engines.api_client import ApiClient
10+
from fds.analyticsapi.engines.configuration import Configuration
1511
from fds.analyticsapi.engines.models.calculation import Calculation
1612
from fds.analyticsapi.engines.models.spar_calculation_parameters import SPARCalculationParameters
17-
from fds.analyticsapi.engines.models.spar_identifier import SPARIdentifier
1813
from fds.analyticsapi.engines.models.spar_date_parameters import SPARDateParameters
14+
from fds.analyticsapi.engines.models.spar_identifier import SPARIdentifier
15+
from fds.protobuf.stach.Package_pb2 import Package
16+
17+
from google.protobuf import json_format
18+
from google.protobuf.json_format import MessageToJson
19+
from google.protobuf.json_format import MessageToDict
20+
from urllib3 import Retry
1921

2022
# Copy 'Converting API output to Table Format' snippet to a file with name 'stach_extensions.py' to use below import statement
2123
from stach_extensions import StachExtensions
@@ -43,12 +45,16 @@
4345
# config.proxy = "<proxyUrl>"
4446
config.verify_ssl = False
4547

48+
# Setting configuration to retry api calls on http status codes of 429 and 503.
49+
config.retries = Retry(total=3, status=3, status_forcelist=frozenset([429, 503]), backoff_factor=2, raise_on_status=False)
50+
4651
api_client = ApiClient(config)
4752

4853
components_api = ComponentsApi(api_client)
4954

5055
components = components_api.get_spar_components(spar_document_name)
51-
component_id = list((dict(filter(lambda component: (component[1].name == spar_component_name and component[1].category == spar_component_category), components.items()))).keys())[0]
56+
component_desc = ComponentSummary(name=spar_component_name, category=spar_component_category)
57+
component_id = [id for id in list(components.keys()) if components[id] == component_desc][0]
5258

5359
spar_account_identifier = SPARIdentifier(spar_benchmark_r_1000, spar_benchmark_russell_return_type, spar_benchmark_russell_prefix)
5460
spar_accounts = [spar_account_identifier]
@@ -74,7 +80,7 @@
7480
print("Calculation Id: " + calculation_id)
7581

7682
status_response = calculations_api.get_calculation_status_by_id_with_http_info(calculation_id)
77-
while (status_response[1] == 200 and (status_response[0].status == "Queued" or status_response[0].status == "Executing")):
83+
while status_response[1] == 200 and (status_response[0].status in ("Queued", "Executing")):
7884
max_age = '5'
7985
age_value = status_response[2].get("cache-control")
8086
if age_value is not None:

Utilities/examples/vault_engine_example.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,23 @@
22
import sys
33
import time
44

5-
from google.protobuf import json_format
6-
from google.protobuf.json_format import MessageToJson
7-
from google.protobuf.json_format import MessageToDict
8-
from fds.protobuf.stach.Package_pb2 import Package
9-
10-
from fds.analyticsapi.engines.configuration import Configuration
11-
from fds.analyticsapi.engines.api_client import ApiClient
5+
from fds.analyticsapi.engines import ComponentSummary
6+
from fds.analyticsapi.engines.api.calculations_api import CalculationsApi
127
from fds.analyticsapi.engines.api.components_api import ComponentsApi
138
from fds.analyticsapi.engines.api.configurations_api import ConfigurationsApi
14-
from fds.analyticsapi.engines.api.calculations_api import CalculationsApi
159
from fds.analyticsapi.engines.api.utility_api import UtilityApi
10+
from fds.analyticsapi.engines.api_client import ApiClient
11+
from fds.analyticsapi.engines.configuration import Configuration
1612
from fds.analyticsapi.engines.models.calculation import Calculation
1713
from fds.analyticsapi.engines.models.vault_calculation_parameters import VaultCalculationParameters
18-
from fds.analyticsapi.engines.models.vault_identifier import VaultIdentifier
1914
from fds.analyticsapi.engines.models.vault_date_parameters import VaultDateParameters
15+
from fds.analyticsapi.engines.models.vault_identifier import VaultIdentifier
16+
from fds.protobuf.stach.Package_pb2 import Package
17+
18+
from google.protobuf import json_format
19+
from google.protobuf.json_format import MessageToJson
20+
from google.protobuf.json_format import MessageToDict
21+
from urllib3 import Retry
2022

2123
# Copy 'Converting API output to Table Format' snippet to a file with name 'stach_extensions.py' to use below import statement
2224
from stach_extensions import StachExtensions
@@ -41,12 +43,16 @@
4143
# config.proxy = "<proxyUrl>"
4244
config.verify_ssl = False
4345

46+
# Setting configuration to retry api calls on http status codes of 429 and 503.
47+
config.retries = Retry(total=3, status=3, status_forcelist=frozenset([429, 503]), backoff_factor=2, raise_on_status=False)
48+
4449
api_client = ApiClient(config)
4550

4651
components_api = ComponentsApi(api_client)
4752

4853
components = components_api.get_vault_components(vault_document_name)
49-
component_id = list((dict(filter(lambda component: (component[1].name == vault_component_name and component[1].category == vault_component_category), components.items()))).keys())[0]
54+
component_desc = ComponentSummary(name=vault_component_name, category=vault_component_category)
55+
component_id = [id for id in list(components.keys()) if components[id] == component_desc][0]
5056

5157
vault_account_identifier = VaultIdentifier(vault_default_account)
5258
vault_dates = VaultDateParameters(vault_startdate, vault_enddate, frequency)
@@ -74,7 +80,7 @@
7480
print("Calculation Id: " + calculation_id)
7581

7682
status_response = calculations_api.get_calculation_status_by_id_with_http_info(calculation_id)
77-
while (status_response[1] == 200 and (status_response[0].status == "Queued" or status_response[0].status == "Executing")):
83+
while status_response[1] == 200 and (status_response[0].status in ("Queued", "Executing")):
7884
max_age = '5'
7985
age_value = status_response[2].get("cache-control")
8086
if age_value is not None:

0 commit comments

Comments
 (0)