Skip to content

Commit 8a6beb9

Browse files
authored
Merge pull request #49 from mortada/realtime-start-end-args
add optional realtime_start/end arguments to get_series_all_releases()
2 parents 4f2b135 + e0bf596 commit 8a6beb9

File tree

3 files changed

+14
-10
lines changed

3 files changed

+14
-10
lines changed

fredapi/fred.py

+12-4
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
HTTPError = url_error.HTTPError
2020

2121

22-
class Fred(object):
22+
class Fred:
2323
earliest_realtime_start = '1776-07-04'
2424
latest_realtime_end = '9999-12-31'
2525
nan_char = '.'
@@ -200,7 +200,7 @@ def get_series_as_of_date(self, series_id, as_of_date):
200200
data = df[df['realtime_start'] <= as_of_date]
201201
return data
202202

203-
def get_series_all_releases(self, series_id):
203+
def get_series_all_releases(self, series_id, realtime_start=None, realtime_end=None):
204204
"""
205205
Get all data for a Fred series id including first releases and all revisions. This returns a DataFrame
206206
with three columns: 'date', 'realtime_start', and 'value'. For instance, the US GDP for Q4 2013 was first released
@@ -213,17 +213,25 @@ def get_series_all_releases(self, series_id):
213213
----------
214214
series_id : str
215215
Fred series id such as 'GDP'
216+
realtime_start : str, optional
217+
specifies the realtime_start value used in the query, defaults to the earliest possible start date allowed by Fred
218+
realtime_end : str, optional
219+
specifies the realtime_end value used in the query, defaults to the latest possible end date allowed by Fred
216220
217221
Returns
218222
-------
219223
data : DataFrame
220224
a DataFrame with columns 'date', 'realtime_start' and 'value' where 'date' is the observation period and 'realtime_start'
221225
is when the corresponding value (either first release or revision) is reported.
222226
"""
227+
if realtime_start is None:
228+
realtime_start = self.earliest_realtime_start
229+
if realtime_end is None:
230+
realtime_end = self.latest_realtime_end
223231
url = "%s/series/observations?series_id=%s&realtime_start=%s&realtime_end=%s" % (self.root_url,
224232
series_id,
225-
self.earliest_realtime_start,
226-
self.latest_realtime_end)
233+
realtime_start,
234+
realtime_end)
227235
root = self.__fetch_data(url)
228236
if root is None:
229237
raise ValueError('No data exists for series id: ' + series_id)

fredapi/tests/test_fred.py

+1-5
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,13 @@
33
if sys.version_info[0] >= 3:
44
unicode = str
55

6-
import os
76
import io
87
import unittest
98
if sys.version_info < (3, 3):
109
import mock # pylint: disable=import-error
1110
else:
1211
from unittest import mock # pylint: disable=import-error
13-
import datetime as dt
1412
import textwrap
15-
import contextlib
16-
import pandas as pd
1713
import fredapi
1814
import fredapi.fred
1915

@@ -27,7 +23,7 @@
2723
fred_api_key = fredapi.Fred().api_key
2824

2925

30-
class HTTPCall(object):
26+
class HTTPCall:
3127
"""Encapsulates faked Fred call data."""
3228

3329
root_url = fredapi.Fred.root_url

fredapi/version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11

2-
version = '0.4.3'
2+
version = '0.5.0'

0 commit comments

Comments
 (0)