Package: fds.sdk.FundsAPIforDigitalPortals
Funds API for Digital Portals client library for PythonSearch for mutual funds and ETFs using one single consolidated API, including a criteria-based screener. The API provides also base data, key figures, and holdings.A separate endpoint returns the possible values and value range for the parameters that the endpoint /fund/notation/screener/search accepts:
Application developers can request the values and value range only for a restricted set of notations that match predefined parameters.
This functionality may be used to pre-fill the values and value ranges of the parameters of the /fund/notation/screener/search endpoint
so that performing a search always leads to a non-empty set of notations.This API is fully integrated with the corresponding Quotes API, allowing access to detailed price and performance information of instruments, as well as basic security identifier cross-reference. For direct access to price histories, please refer to the Time Series API for Digital Portals.Similar criteria based screener APIs exist for equity instruments and securitized derivatives: See the Stocks API and the Securitized Derivatives API for details.This Python package is automatically generated by theOpenAPI Generatorproject:API version: 2Package version: 0.10.0Build package: org.openapitools.codegen.languages.PythonClientCodegenRequirementsPython >= 3.6InstallationPoetrypoetryaddfds.sdk.utilsfds.sdk.FundsAPIforDigitalPortalspippipinstallfds.sdk.utilsfds.sdk.FundsAPIforDigitalPortalsUsageGenerate authentication credentials.Setup Python environment.Install and activate python 3.6+. If you're usingpyenv:pyenvinstall3.9.7
pyenvshell3.9.7(optional)Install poetry.Install dependencies.Run the following:fromfds.sdk.utils.authenticationimportConfidentialClientimportfds.sdk.FundsAPIforDigitalPortalsfromfds.sdk.FundsAPIforDigitalPortals.apiimportfund_apifromfds.sdk.FundsAPIforDigitalPortals.model.inline_objectimportInlineObjectfromfds.sdk.FundsAPIforDigitalPortals.model.inline_object1importInlineObject1fromfds.sdk.FundsAPIforDigitalPortals.model.inline_object2importInlineObject2fromfds.sdk.FundsAPIforDigitalPortals.model.inline_response200importInlineResponse200fromfds.sdk.FundsAPIforDigitalPortals.model.inline_response2001importInlineResponse2001fromfds.sdk.FundsAPIforDigitalPortals.model.inline_response2002importInlineResponse2002fromfds.sdk.FundsAPIforDigitalPortals.model.inline_response2003importInlineResponse2003fromfds.sdk.FundsAPIforDigitalPortals.model.inline_response2004importInlineResponse2004fromfds.sdk.FundsAPIforDigitalPortals.model.inline_response2005importInlineResponse2005fromfds.sdk.FundsAPIforDigitalPortals.model.inline_response2006importInlineResponse2006frompprintimportpprint# See configuration.py for a list of all supported configuration parameters.# Examples for each supported authentication method are below,# choose one that satisfies your use case.# (Preferred) OAuth 2.0: FactSetOAuth2# See https://github.com/FactSet/enterprise-sdk#oauth-20# for information on how to create the app-config.json file# See https://github.com/FactSet/enterprise-sdk-utils-python#authentication# for more information on using the ConfidentialClient classconfiguration=fds.sdk.FundsAPIforDigitalPortals.Configuration(fds_oauth_client=ConfidentialClient('/path/to/app-config.json'))# Basic authentication: FactSetApiKey# See https://github.com/FactSet/enterprise-sdk#api-key# for information how to create an API key# configuration = fds.sdk.FundsAPIforDigitalPortals.Configuration(#     username='USERNAME-SERIAL',#     password='API-KEY'# )# Enter a context with an instance of the API clientwithfds.sdk.FundsAPIforDigitalPortals.ApiClient(configuration)asapi_client:# Create an instance of the API classapi_instance=fund_api.FundApi(api_client)id="id_example"# str | Identifier of an instrument of a fund share class.attributes=["_attributes_example",]# [str] | Limit the attributes returned in the response to the specified set. (optional)sort=["["-holdings.weight"]",]# [str] | Sortable attributes. The sort order is ascending unless it is prefixed with a minus sign, in which case it is descending. A list of at most 2 (possibly prefixed) attribute name(s) is allowed. (optional) (default to ["-holdings.weight"])# Get responsetry:# Holdings of a fund.api_response=api_instance.get_fund_holding_list_by_instrument(id,attributes=attributes,sort=sort)pprint(api_response)exceptfds.sdk.FundsAPIforDigitalPortals.ApiExceptionase:print("Exception when calling FundApi->get_fund_holding_list_by_instrument:%s\n"%e)# Get response, http status code and response headers# try:#     # Holdings of a fund.#     api_response, http_status_code, response_headers = api_instance.get_fund_holding_list_by_instrument_with_http_info(id, attributes=attributes, sort=sort)#     pprint(api_response)#     pprint(http_status_code)#     pprint(response_headers)# except fds.sdk.FundsAPIforDigitalPortals.ApiException as e:#     print("Exception when calling FundApi->get_fund_holding_list_by_instrument: %s\n" % e)# Get response asynchronous# try:#     # Holdings of a fund.#     async_result = api_instance.get_fund_holding_list_by_instrument_async(id, attributes=attributes, sort=sort)#     api_response = async_result.get()#     pprint(api_response)# except fds.sdk.FundsAPIforDigitalPortals.ApiException as e:#     print("Exception when calling FundApi->get_fund_holding_list_by_instrument: %s\n" % e)# Get response, http status code and response headers asynchronous# try:#     # Holdings of a fund.#     async_result = api_instance.get_fund_holding_list_by_instrument_with_http_info_async(id, attributes=attributes, sort=sort)#     api_response, http_status_code, response_headers = async_result.get()#     pprint(api_response)#     pprint(http_status_code)#     pprint(response_headers)# except fds.sdk.FundsAPIforDigitalPortals.ApiException as e:#     print("Exception when calling FundApi->get_fund_holding_list_by_instrument: %s\n" % e)Documentation for API EndpointsAll URIs are relative tohttp://api.factset.com/wealth/v1ClassMethodHTTP requestDescriptionFundApiget_fund_holding_list_by_instrumentGET/fund/holding/listByInstrumentHoldings of a fund.FundApiget_fund_notation_key_figures_benchmark_month_1_getGET/fund/notation/keyFigures/benchmark/month/1/getEnd-of-day (EOD) benchmark key figures of a fund for the time range of one month.FundApiget_fund_notation_key_figures_benchmark_month_3_getGET/fund/notation/keyFigures/benchmark/month/3/getEnd-of-day (EOD) benchmark key figures of a fund for the time range of three months.FundApiget_fund_notation_key_figures_benchmark_week_1_getGET/fund/notation/keyFigures/benchmark/week/1/getEnd-of-day (EOD) benchmark key figures of a fund for the time range of one week.FundApiget_fund_notation_key_figures_benchmark_year_1_getGET/fund/notation/keyFigures/benchmark/year/1/getEnd-of-day (EOD) benchmark key figures of a fund for the time range of one year.FundApiget_fund_notation_key_figures_benchmark_year_3_getGET/fund/notation/keyFigures/benchmark/year/3/getEnd-of-day (EOD) benchmark key figures of a fund for the time range of three years.FundApiget_fund_notation_key_figures_benchmark_year_5_getGET/fund/notation/keyFigures/benchmark/year/5/getEnd-of-day (EOD) benchmark key figures of a fund for the time range of five years.FundApiget_fund_share_class_getGET/fund/shareClass/getFundamental data for a share class of a fund.FundApipost_fund_issuer_searchPOST/fund/issuer/searchSearch for issuers of funds.FundApipost_fund_notation_screener_searchPOST/fund/notation/screener/searchScreener for notations of share classes of mutual and exchange traded funds based on fund-specific parameters.FundApipost_fund_notation_screener_value_ranges_getPOST/fund/notation/screener/valueRanges/getPossible values and value ranges for the parameters used in the endpoint `/fund/notation/screener/search`.Documentation For ModelsAttributesMemberCursorBasedPaginationOutputObjectCursorBasedPaginationOutputObjectWithoutTotalErrorMetaObjectErrorObjectFundIssuerSearchDataFundIssuerSearchDataFundFundIssuerSearchDataFundDomicileFundIssuerSearchDataFundDomicileExcludeFundIssuerSearchDataFundDomicileRestrictFundIssuerSearchDataIssuerFundIssuerSearchDataIssuerCountryFundIssuerSearchDataIssuerCountryExcludeFundIssuerSearchDataIssuerCountryRestrictFundIssuerSearchDataMarketFundIssuerSearchDataMarketExcludeFundIssuerSearchDataMarketRestrictFundIssuerSearchDataShareClassFundIssuerSearchDataShareClassRegistrationCountryFundIssuerSearchDataShareClassRegistrationCountryExcludeFundIssuerSearchDataShareClassRegistrationCountryRestrictFundIssuerSearchMetaFundNotationScreenerSearchDataFundNotationScreenerSearchDataFundFundNotationScreenerSearchDataFundAssetsUnderManagementFundNotationScreenerSearchDataFundAssetsUnderManagementMaximumFundNotationScreenerSearchDataFundAssetsUnderManagementMinimumFundNotationScreenerSearchDataFundComplianceFundNotationScreenerSearchDataFundComplianceAndFundNotationScreenerSearchDataFundComplianceOrFundNotationScreenerSearchDataFundCountryDevelopmentFundNotationScreenerSearchDataFundCurrencyFundNotationScreenerSearchDataFundCurrencyExcludeFundNotationScreenerSearchDataFundCurrencyRestrictFundNotationScreenerSearchDataFundDomicileFundNotationScreenerSearchDataFundDomicileExcludeFundNotationScreenerSearchDataFundDomicileRestrictFundNotationScreenerSearchDataFundHoldingTypeFundNotationScreenerSearchDataFundHoldingTypeExcludeFundNotationScreenerSearchDataFundHoldingTypeRestrictFundNotationScreenerSearchDataFundIndustryFundNotationScreenerSearchDataFundIssuerFundNotationScreenerSearchDataFundIssuerCountryFundNotationScreenerSearchDataFundIssuerSelectionFundNotationScreenerSearchDataFundIssuerSelectionExcludeFundNotationScreenerSearchDataFundIssuerSelectionRestrictFundNotationScreenerSearchDataFundMinimumSrriFundNotationScreenerSearchDataFundRegionalExposureFundNotationScreenerSearchDataFundRegionalExposureBroadFundNotationScreenerSearchDataFundRegionalExposureSpecificFundNotationScreenerSearchDataFundStrategyFundNotationScreenerSearchDataPerformanceFundNotationScreenerSearchDataPerformanceEndOfDayFundNotationScreenerSearchDataPerformanceEndOfDayDay1FundNotationScreenerSearchDataPerformanceEndOfDayMonth1FundNotationScreenerSearchDataPerformanceEndOfDayMonths3FundNotationScreenerSearchDataPerformanceEndOfDayMonths6FundNotationScreenerSearchDataPerformanceEndOfDayWeek1FundNotationScreenerSearchDataPerformanceEndOfDayYear1FundNotationScreenerSearchDataPerformanceEndOfDayYearToDateFundNotationScreenerSearchDataPerformanceEndOfDayYears3FundNotationScreenerSearchDataPerformanceEndOfDayYears5FundNotationScreenerSearchDataShareClassFundNotationScreenerSearchDataShareClassAssetsUnderManagementFundNotationScreenerSearchDataShareClassComplianceFundNotationScreenerSearchDataShareClassCurrencyFundNotationScreenerSearchDataShareClassCurrencyExcludeFundNotationScreenerSearchDataShareClassCurrencyRestrictFundNotationScreenerSearchDataShareClassFeeFundNotationScreenerSearchDataShareClassFee12bFundNotationScreenerSearchDataShareClassFee12bCurrentFundNotationScreenerSearchDataShareClassFeeAdministrationFundNotationScreenerSearchDataShareClassFeeAdministrationMaximumFundNotationScreenerSearchDataShareClassFeeAllInFundNotationScreenerSearchDataShareClassFeeAllInCurrentFundNotationScreenerSearchDataShareClassFeeCustodianBankFundNotationScreenerSearchDataShareClassFeeCustodianBankCurrentFundNotationScreenerSearchDataShareClassFeeDistributionFundNotationScreenerSearchDataShareClassFeeDistributionMaximumFundNotationScreenerSearchDataShareClassFeeHandlingFundNotationScreenerSearchDataShareClassFeeHandlingMaximumFundNotationScreenerSearchDataShareClassFeeInitialFundNotationScreenerSearchDataShareClassFeeInitialCurrentFundNotationScreenerSearchDataShareClassFeeInitialMaximumFundNotationScreenerSearchDataShareClassFeeInitialMinimumFundNotationScreenerSearchDataShareClassFeeManagementFundNotationScreenerSearchDataShareClassFeeManagementCurrentFundNotationScreenerSearchDataShareClassFeeOngoingFundNotationScreenerSearchDataShareClassFeeOngoingCurrentFundNotationScreenerSearchDataShareClassFeeOngoingCurrentMaximumFundNotationScreenerSearchDataShareClassFeeOngoingCurrentMinimumFundNotationScreenerSearchDataShareClassFeePerformanceFundNotationScreenerSearchDataShareClassFeePerformanceCurrentFundNotationScreenerSearchDataShareClassFeeRedemptionFundNotationScreenerSearchDataShareClassFeeRedemptionCurrentFundNotationScreenerSearchDataShareClassFeeRedemptionMaximumFundNotationScreenerSearchDataShareClassFeeSwitchingFundNotationScreenerSearchDataShareClassFeeSwitchingCurrentFundNotationScreenerSearchDataShareClassLifeCycleFundNotationScreenerSearchDataShareClassLifeCycleIssueFundNotationScreenerSearchDataShareClassMinimumInvestmentFundNotationScreenerSearchDataShareClassMinimumInvestmentInitialFundNotationScreenerSearchDataShareClassMinimumInvestmentSubsequentFundNotationScreenerSearchDataShareClassRegistrationCountryFundNotationScreenerSearchDataShareClassRegistrationCountryExcludeFundNotationScreenerSearchDataShareClassRegistrationCountryRestrictFundNotationScreenerSearchDataValidationFundNotationScreenerSearchDataValidationCurrencyFundNotationScreenerSearchDataValidationCurrencyExcludeFundNotationScreenerSearchDataValidationCurrencyRestrictFundNotationScreenerSearchDataValidationInstrumentSelectionListFundNotationScreenerSearchDataValidationInstrumentSelectionListExcludeFundNotationScreenerSearchDataValidationInstrumentSelectionListRestrictFundNotationScreenerSearchDataValidationMarketFundNotationScreenerSearchDataValidationMarketPriorityFundNotationScreenerSearchDataValidationMarketSelectionFundNotationScreenerSearchDataValidationNotationSelectionListFundNotationScreenerSearchDataValidationNotationSelectionListExcludeFundNotationScreenerSearchDataValidationNotationSelectionListRestrictFundNotationScreenerSearchDataValidationPricesFundNotationScreenerSearchDataValidationPricesLatestFundNotationScreenerSearchDataValidationPricesPreviousFundNotationScreenerSearchMetaFundNotationScreenerSearchMetaPaginationFundNotationScreenerValueRangesGetDataFundNotationScreenerValueRangesGetDataPerformanceFundNotationScreenerValueRangesGetDataPerformanceEndOfDayFundNotationScreenerValueRangesGetDataPerformanceEndOfDayWeek1FundNotationScreenerValueRangesGetDataPerformanceEndOfDayWeek1MaximumFundNotationScreenerValueRangesGetMetaInlineObjectInlineObject1InlineObject2InlineResponse200InlineResponse2001InlineResponse2001DataInlineResponse2002InlineResponse2002DataInlineResponse2002NotationInlineResponse2002NotationInstrumentInlineResponse2002StatusInlineResponse2003InlineResponse2003DataInlineResponse2004InlineResponse2004CurrencyInlineResponse2004DataInlineResponse2004FsymInlineResponse2004FsymListingInlineResponse2004FsymRegionalInlineResponse2004FundInlineResponse2004FundComplianceInlineResponse2004FundCountryDevelopmentInlineResponse2004FundCurrencyInlineResponse2004FundDomicileInlineResponse2004FundHoldingTypeInlineResponse2004FundIndustryInlineResponse2004FundIssuerInlineResponse2004FundIssuerCountryInlineResponse2004FundRegionalExposureInlineResponse2004FundRegionalExposureBroadInlineResponse2004FundRegionalExposureSpecificInlineResponse2004FundSrriInlineResponse2004FundStrategyInlineResponse2004FundStrategyLevel1InlineResponse2004FundStrategyLevel2InlineResponse2004FundStrategyLevel3InlineResponse2004InstrumentInlineResponse2004InstrumentFsymInlineResponse2004InstrumentFsymSecurityInlineResponse2004InstrumentNsinInlineResponse2004MarketInlineResponse2004MetaInlineResponse2004NsinInlineResponse2004PerformanceInlineResponse2004PerformanceEndOfDayInlineResponse2004ShareClassInlineResponse2004ShareClassCurrencyInlineResponse2004ShareClassFeeInlineResponse2004ShareClassFee12bInlineResponse2004ShareClassFeeAdministrationInlineResponse2004ShareClassFeeAllInInlineResponse2004ShareClassFeeCustodianBankInlineResponse2004ShareClassFeeDistributionInlineResponse2004ShareClassFeeHandlingInlineResponse2004ShareClassFeeInitialInlineResponse2004ShareClassFeeManagementInlineResponse2004ShareClassFeeOngoingInlineResponse2004ShareClassFeePerformanceInlineResponse2004ShareClassFeeRedemptionInlineResponse2004ShareClassFeeSwitchingInlineResponse2004ShareClassLifeCycleInlineResponse2004ShareClassMinimumInvestmentInlineResponse2004ShareClassRegistrationCountryInlineResponse2005InlineResponse2005DataInlineResponse2005DataCurrencyInlineResponse2005DataFundInlineResponse2005DataFundAssetsUnderManagementInlineResponse2005DataFundCategoriesInlineResponse2005DataFundComplianceInlineResponse2005DataFundCurrencyInlineResponse2005DataFundDomicileInlineResponse2005DataFundEtfInlineResponse2005DataFundHoldingTypeInlineResponse2005DataFundIssuerInlineResponse2005DataFundIssuerCountryInlineResponse2005DataFundIssuerJuristicPersonInlineResponse2005DataFundLevelInlineResponse2005DataFundParentInlineResponse2005DataFundRegionalExposureInlineResponse2005DataFundSrriInlineResponse2005DataMarketInlineResponse2005DataPerformanceInlineResponse2005DataPerformanceEndOfDayInlineResponse2005DataPerformanceEndOfDayDay1InlineResponse2005DataPerformanceEndOfDayMonth1InlineResponse2005DataPerformanceEndOfDayMonths3InlineResponse2005DataPerformanceEndOfDayMonths6InlineResponse2005DataPerformanceEndOfDayWeek1InlineResponse2005DataPerformanceEndOfDayYear1InlineResponse2005DataPerformanceEndOfDayYearToDateInlineResponse2005DataPerformanceEndOfDayYears3InlineResponse2005DataPerformanceEndOfDayYears5InlineResponse2005DataShareClassInlineResponse2005DataShareClassAssetsUnderManagementInlineResponse2005DataShareClassDistributingInlineResponse2005DataShareClassFeeInlineResponse2005DataShareClassFee12bInlineResponse2005DataShareClassFee12bCurrentInlineResponse2005DataShareClassFeeAdministrationInlineResponse2005DataShareClassFeeAdministrationMaximumInlineResponse2005DataShareClassFeeAllInInlineResponse2005DataShareClassFeeAllInCurrentInlineResponse2005DataShareClassFeeCustodianBankInlineResponse2005DataShareClassFeeCustodianBankCurrentInlineResponse2005DataShareClassFeeDistributionInlineResponse2005DataShareClassFeeDistributionMaximumInlineResponse2005DataShareClassFeeHandlingInlineResponse2005DataShareClassFeeHandlingMaximumInlineResponse2005DataShareClassFeeInitialInlineResponse2005DataShareClassFeeInitialCurrentInlineResponse2005DataShareClassFeeInitialMaximumInlineResponse2005DataShareClassFeeInitialMinimumInlineResponse2005DataShareClassFeeManagementInlineResponse2005DataShareClassFeeManagementCurrentInlineResponse2005DataShareClassFeeOngoingInlineResponse2005DataShareClassFeeOngoingCurrentInlineResponse2005DataShareClassFeePerformanceInlineResponse2005DataShareClassFeePerformanceCurrentInlineResponse2005DataShareClassFeeRedemptionInlineResponse2005DataShareClassFeeRedemptionCurrentInlineResponse2005DataShareClassFeeRedemptionMaximumInlineResponse2005DataShareClassFeeSwitchingInlineResponse2005DataShareClassFeeSwitchingCurrentInlineResponse2005DataShareClassLifeCycleInlineResponse2005DataShareClassLifeCycleIssueInlineResponse2005DataShareClassMinimumInvestmentInlineResponse2005DataShareClassMinimumInvestmentInitialInlineResponse2005DataShareClassMinimumInvestmentSubsequentInlineResponse2006InlineResponse2006DataInlineResponse2006DataCurrencyInlineResponse2006DataEarningsInlineResponse2006DataEarningsDistributionInlineResponse2006DataEarningsDistributionFrequencyInlineResponse2006DataEarningsValueInlineResponse2006DataFeesInlineResponse2006DataFeesCountryInlineResponse2006DataFeesInitialInlineResponse2006DataFeesInitialCountryInlineResponse2006DataFeesInitialCountry1InlineResponse2006DataFeesInitialMaximumInlineResponse2006DataFeesInitialMinimumInlineResponse2006DataFeesManagementInlineResponse2006DataFeesMaximumRedemptionInlineResponse2006DataFeesOngoingInlineResponse2006DataFeesPerformanceInlineResponse2006DataLegalEntitiesInlineResponse2006DataLegalEntitiesCustodianBankInlineResponse2006DataLegalEntitiesFundInlineResponse2006DataLegalEntitiesFundCompanyInlineResponse2006DataLegalEntitiesFundDomicileInlineResponse2006DataLegalEntitiesIssuerGroupInlineResponse2006DataLegalEntitiesManagementInlineResponse2006DataLifeCycleInlineResponse2006DataNsinInlineResponse2006DataPropertiesInlineResponse2006DataPropertiesFundInlineResponse2006DataPropertiesFundAssetsUnderManagementInlineResponse2006DataPropertiesFundAssetsUnderManagementAumInlineResponse2006DataPropertiesFundAssetsUnderManagementCurrencyInlineResponse2006DataPropertiesFundMacaulayDurationInlineResponse2006DataPropertiesFundTypeReplicationInlineResponse2006DataPropertiesShareClassInlineResponse2006DataPropertiesShareClassCountryInlineResponse2006DataPropertiesShareClassFrequencyInlineResponse2006DataPropertiesShareClassMinimumInvestmentInlineResponse2006DataPropertiesShareClassMinimumInvestmentCurrencyInlineResponse2006DataPropertiesShareClassMinimumInvestmentInitialInlineResponse2006DataPropertiesShareClassSavingsPlanInlineResponse2006DataTypeInlineResponse200DataInlineResponse200DataHoldingsInlineResponse200DataInstrumentInlineResponse200MetaLanguageMemberOffsetBasedPaginationOutputObjectOffsetBasedPaginationOutputObjectWithoutTotalPartialOutputObjectStatusObjectDocumentation For AuthorizationFactSetApiKeyType: HTTP basic authenticationFactSetOAuth2Type: OAuthFlow: applicationAuthorization URL:Scopes: N/ANotes for Large OpenAPI documentsIf the OpenAPI document is large, imports in fds.sdk.FundsAPIforDigitalPortals.apis and fds.sdk.FundsAPIforDigitalPortals.models may fail with a
RecursionError indicating the maximum recursion limit has been exceeded. In that case, there are a couple of solutions:Solution 1:
Use specific imports for apis and models like:from fds.sdk.FundsAPIforDigitalPortals.api.default_api import DefaultApifrom fds.sdk.FundsAPIforDigitalPortals.model.pet import PetSolution 2:
Before importing the package, adjust the maximum recursion limit as shown below:import sys
sys.setrecursionlimit(1500)
import fds.sdk.FundsAPIforDigitalPortals
from fds.sdk.FundsAPIforDigitalPortals.apis import *
from fds.sdk.FundsAPIforDigitalPortals.models import *ContributingPlease refer to thecontributing guide.CopyrightCopyright 2022 FactSet Research Systems IncLicensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.