from fred.clients.categories import CategoriesClient
from fred.clients.releases import ReleasesClient
from fred.clients.tags import TagsClient
from fred.clients.sources import SourcesClient
from fred.clients.eseries import ESeriesClient
import fred.config as c
import weakref
## Establish Federal Reserve Economic Data (Fred) wrapper for Python
[docs]class Fred(object):
"""
Fred client. Provides a straightforward mapping from Python to FRED REST endpoints.
The instance has attributes ``cateogry``, ``release``, ``series``, ``tag``
and ``source`` that provide access to instances of
:class:`fred.clients.categories.CategoriesClient`,
:class:`fred.clients.releases.ReleasesClient`,
:class:`fred.clients.eseries.ESeriesClient`,
:class:`fred.clients.tags.TagsClient` and
:class:`fred.clients.sources.SourcesClient` respectively. This is the
preferred (and only supported) way to get access to those classes and their
methods.
:arg str api_key: 32 character alpha-numeric lowercase string. Required.
:arg str realtime_start: The start of the real-time period. Format "YYYY-MM-DD"
:arg str realtime_end: The end of the real-time period. Format "YYYY-MM-DD"
"""
def __init__(self,api_key=c.api_key,response_type=c.response_type):
## Set root URL
self.url_root = 'https://api.stlouisfed.org/fred'
## Set default API key
self.api_key = api_key if api_key else None
## Set default file type
self.response_type = response_type if response_type else None
## Initiate clients
self.category = CategoriesClient(weakref.proxy(self),self.api_key,self.url_root,self.response_type)
self.release = ReleasesClient(weakref.proxy(self),self.api_key,self.url_root,self.response_type)
self.series = ESeriesClient(weakref.proxy(self),self.api_key,self.url_root,self.response_type)
self.tag = TagsClient(weakref.proxy(self),self.api_key,self.url_root,self.response_type)
self.source = SourcesClient(weakref.proxy(self),self.api_key,self.url_root,self.response_type)