def __init__(self, **kwargs): self.retry_count = kwargs.get("retry_count", 3) self.pause = kwargs.get("pause", 0.5) self.session = _init_session(kwargs.get("session")) self.json_parse_int = kwargs.get("json_parse_int") self.json_parse_float = kwargs.get("json_parse_float") self.output_format = kwargs.get("output_format", os.getenv("IEX_OUTPUT_FORMAT", 'json')) if self.output_format not in self._VALID_FORMATS: raise ValueError("Please enter a valid output format ('json' " "or 'pandas').") self.token = kwargs.get("token") # Get desired API version from environment variables # Defaults to IEX Cloud self.version = os.getenv("IEX_API_VERSION", 'iexcloud-v1') if self.version in self._VALID_CLOUD_VERSIONS: if self.token is None: self.token = os.getenv('IEX_TOKEN') if not self.token or not isinstance(self.token, str): raise auth_error('The IEX Cloud API key must be provided ' 'either through the token variable or ' 'through the environmental variable ' 'IEX_TOKEN.') elif self.version == 'v1': import warnings msg = "Support for the legacy Version 1 IEX Developer "\ "API will end on June 1, 2019. For more "\ "information, see %s." % MIGRATION_URL warnings.warn(msg) else: raise ValueError("Please select a valid API version.")
def __init__(self, **kwargs): self.retry_count = kwargs.get("retry_count", 3) self.pause = kwargs.get("pause", 0.5) self.session = _init_session(kwargs.get("session")) self.json_parse_int = kwargs.get("json_parse_int") self.json_parse_float = kwargs.get("json_parse_float") self.output_format = kwargs.get("output_format", os.getenv("IEX_OUTPUT_FORMAT", 'json')) if self.output_format not in self._VALID_FORMATS: raise ValueError("Please enter a valid output format ('json' " "or 'pandas').") self.token = kwargs.get("token") # Get desired API version from environment variables # Defaults to IEX Cloud self.version = os.getenv("IEX_API_VERSION", 'v1') if self.version in self._VALID_CLOUD_VERSIONS: if self.token is None: self.token = os.getenv('IEX_TOKEN') if not self.token or not isinstance(self.token, str): raise auth_error('The IEX Cloud API key must be provided ' 'either through the token variable or ' 'through the environmental variable ' 'IEX_TOKEN.') else: raise ValueError("Please select a valid API version.")
def __init__(self, **kwargs): self.retry_count = kwargs.get("retry_count", 3) self.pause = kwargs.get("pause", 0.5) self.session = _init_session(kwargs.get("session")) self.json_parse_int = kwargs.get("json_parse_int") self.json_parse_float = kwargs.get("json_parse_float") self._output_format = kwargs.get("output_format", os.getenv("IEX_OUTPUT_FORMAT")) if self.output_format not in self._VALID_FORMATS: raise ValueError( "Please enter a valid output format (json or pandas).") self.token = kwargs.get("token") if self.token is None: self.token = os.getenv("IEX_TOKEN") if not self.token or not isinstance(self.token, str): raise auth_error("The IEX Cloud API key must be provided " "either through the token variable or " "through the environmental variable " "IEX_TOKEN.") if self.token.startswith(("Tsk", "Tpk")): logger.info( "Using a sandboxed environment because a test key was detected" ) os.environ["IEX_API_VERSION"] = "sandbox" # Get desired API version from environment variables # Defaults to IEX Cloud self.version = os.getenv("IEX_API_VERSION", "stable") if self.version not in self._VALID_API_VERSIONS: raise ValueError("Please select a valid API version.")
def _handle_error(self, response): """ Handles all responses which return an error status code """ auth_msg = "The query could not be completed. Invalid auth token." status_code = response.status_code if 400 <= status_code < 500: if status_code == 400: raise auth_error(auth_msg) else: raise auth_error("The query could not be completed. " "There was a client-side error with your " "request.") elif 500 <= status_code < 600: raise auth_error("The query could not be completed. " "There was a server-side error with " "your request.") else: raise auth_error("The query could not be completed.")
def __init__(self, **kwargs): """ Initialize the class Parameters ---------- retry_count: int, default 3, optional Desired number of retries if a request fails pause: float default 0.5, optional Pause time between retry attempts session: requests_cache.session, default None, optional A cached requests-cache session json_parse_int: datatype, default int, optional Desired integer parsing datatype json_parse_float: datatype, default float, optional Desired floating point parsing datatype output_format: str, default "json", optional Desired output format (json or pandas DataFrame). This can also be set using the environment variable ``IEX_OUTPUT_FORMAT``. token: str, optional Authentication token (reuqired for use with IEX Cloud) """ self.retry_count = kwargs.get("retry_count", 3) self.pause = kwargs.get("pause", 0.5) self.session = _init_session(kwargs.get("session")) self.json_parse_int = kwargs.get("json_parse_int") self.json_parse_float = kwargs.get("json_parse_float") self.output_format = kwargs.get("output_format", os.getenv("IEX_OUTPUT_FORMAT", 'json')) if self.output_format not in self._VALID_FORMATS: raise ValueError("Please enter a valid output format ('json' " "or 'pandas').") self.token = kwargs.get("token") # Get desired API version from environment variables # Defaults to v1 API self.version = os.getenv("IEX_API_VERSION") if self.version in self._VALID_CLOUD_VERSIONS: if self.token is None: self.token = os.getenv('IEX_TOKEN') if not self.token or not isinstance(self.token, str): raise auth_error('The IEX Cloud API key must be provided ' 'either through the token variable or ' 'through the environmental variable ' 'IEX_TOKEN.') else: self.version = 'v1'