Skip to content

Commit 92a893e

Browse files
FIAB Code Snippet (#100)
* FIAB Code Snippet Created a code snippet for FIAB Calculations * feat(SDK) : Added FIAB Code Snippet" Addressed review comments
1 parent ed01ad7 commit 92a893e

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

examples/fiab_example.py

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import time
2+
import os
3+
import uuid
4+
import pandas as pd
5+
import json
6+
import urllib3
7+
from fds.analyticsapi.engines import ApiException
8+
from fds.analyticsapi.engines.api.fiab_calculations_api import FIABCalculationsApi
9+
from fds.analyticsapi.engines.api_client import ApiClient
10+
from fds.analyticsapi.engines.configuration import Configuration
11+
from fds.analyticsapi.engines.model.fiab_calculation_parameters import FIABCalculationParameters
12+
from fds.analyticsapi.engines.model.fiab_calculation_status_summary import FIABCalculationStatusSummary
13+
from fds.analyticsapi.engines.model.fiab_calculation_status import FIABCalculationStatus
14+
from fds.analyticsapi.engines.model.fiab_date_parameters import FIABDateParameters
15+
from fds.analyticsapi.engines.model.fiab_identifier import FIABIdentifier
16+
from urllib3 import Retry
17+
18+
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
19+
20+
fds_username = os.environ['FACTSET_USERNAME']
21+
fds_api_key = os.environ['FACTSET_API_KEY']
22+
host = os.environ['FACTSET_HOST']
23+
24+
25+
def main():
26+
config = Configuration()
27+
config.host = host
28+
config.username = fds_username
29+
config.password = fds_api_key
30+
config.discard_unknown_keys = True
31+
# add proxy and/or disable ssl verification according to your development environment
32+
# config.proxy = "<proxyUrl>"
33+
config.verify_ssl = False
34+
35+
# Setting configuration to retry api calls on http status codes of 429 and 503.
36+
config.retries = Retry(total=3, status=3, status_forcelist=frozenset([429, 503]), backoff_factor=2,
37+
raise_on_status=False)
38+
39+
api_client = ApiClient(config)
40+
fiab_calculations_api = FIABCalculationsApi(api_client)
41+
42+
try:
43+
fiab_document_name = "Client:FIAB_EXPO_DEMO"
44+
faccount = "CLIENT:/Test46238.ACCT"
45+
startdate = "20200101"
46+
enddate = "20201213"
47+
fiab_account = FIABIdentifier(id=faccount)
48+
fiab_dates = FIABDateParameters(startdate=startdate, enddate=enddate)
49+
fiab_calculation_parameters = FIABCalculationParameters(fiabdocument=fiab_document_name, account=fiab_account, dates=fiab_dates)
50+
51+
run_calculation = fiab_calculations_api.run_calculation(fiab_calculation_parameters=fiab_calculation_parameters)
52+
if run_calculation[1] == 202:
53+
calculation_id = run_calculation[2]['X-FactSet-Api-Calculation-Id']
54+
print('Calculation Id is ', calculation_id)
55+
status_response = fiab_calculations_api.get_calculation_by_id(calculation_id)
56+
while status_response[1] == 202:
57+
max_age = '5'
58+
age_value = status_response[2].get("cache-control")
59+
if age_value is not None:
60+
max_age = age_value.replace("max-age=", "")
61+
print('Calculation status is', status_response[0]['status'])
62+
#print('Sleeping: ' + max_age)
63+
if(status_response[0]['status']) == 'Pending':
64+
print(status_response)
65+
if(status_response[0]['progress']!=0):
66+
print(status_response[0])
67+
time.sleep(int(max_age))
68+
status_response = fiab_calculations_api.get_calculation_by_id(calculation_id)
69+
if status_response[1] == 200:
70+
print(status_response)
71+
print(status_response)
72+
73+
except ApiException as e:
74+
print("Api exception Encountered")
75+
print(e)
76+
77+
78+
if __name__ == '__main__':
79+
main()

0 commit comments

Comments
 (0)