Skip to content

Commit 156e545

Browse files
committed
made pandas a runtime dependecy only, not a build dependency
1 parent 9c16b25 commit 156e545

File tree

4 files changed

+19
-12
lines changed

4 files changed

+19
-12
lines changed

fredapi/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11

2-
__version__ = '0.3.4'
2+
from fredapi.version import version as __version__
33
from fredapi.fred import Fred

fredapi/fred.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@
1212
from urllib import urlencode
1313

1414
import xml.etree.ElementTree as ET
15-
import pandas as pd
1615

1716

1817
class Fred(object):
1918
earliest_realtime_start = '1776-07-04'
2019
latest_realtime_end = '9999-12-31'
2120
nan_char = '.'
2221
max_results_per_request = 1000
22+
2323
def __init__(self,
2424
api_key=None,
2525
api_key_file=None):
@@ -61,7 +61,8 @@ def _parse(self, date_str, format='%Y-%m-%d'):
6161
"""
6262
helper function for parsing FRED date string into datetime
6363
"""
64-
return pd.to_datetime(date_str, format=format).to_datetime()
64+
from pandas import to_datetime
65+
return to_datetime(date_str, format=format).to_datetime()
6566

6667
def get_series_info(self, series_id):
6768
"""
@@ -81,7 +82,8 @@ def get_series_info(self, series_id):
8182
root = self.__fetch_data(url)
8283
if root is None:
8384
raise ValueError('No info exists for series id: ' + series_id)
84-
info = pd.Series(root.getchildren()[0].attrib)
85+
from pandas import Series
86+
info = Series(root.getchildren()[0].attrib)
8587
return info
8688

8789
def get_series(self, series_id, observation_start=None, observation_end=None, **kwargs):
@@ -105,12 +107,13 @@ def get_series(self, series_id, observation_start=None, observation_end=None, **
105107
a Series where each index is the observation date and the value is the data for the Fred series
106108
"""
107109
url = "http://api.stlouisfed.org/fred/series/observations?series_id=%s&api_key=%s" % (series_id, self.api_key)
110+
from pandas import to_datetime, Series
108111

109112
if observation_start is not None:
110-
observation_start = pd.to_datetime(observation_start, errors='raise')
113+
observation_start = to_datetime(observation_start, errors='raise')
111114
url += '&observation_start=' + observation_start.strftime('%Y-%m-%d')
112115
if observation_end is not None:
113-
observation_end = pd.to_datetime(observation_end, errors='raise')
116+
observation_end = to_datetime(observation_end, errors='raise')
114117
url += '&observation_end=' + observation_end.strftime('%Y-%m-%d')
115118

116119
if kwargs is not None:
@@ -127,7 +130,7 @@ def get_series(self, series_id, observation_start=None, observation_end=None, **
127130
else:
128131
val = float(val)
129132
data[self._parse(child.get('date'))] = val
130-
return pd.Series(data)
133+
return Series(data)
131134

132135
def get_series_latest_release(self, series_id):
133136
"""
@@ -183,7 +186,8 @@ def get_series_as_of_date(self, series_id, as_of_date):
183186
data : Series
184187
a Series where each index is the observation date and the value is the data for the Fred series
185188
"""
186-
as_of_date = pd.to_datetime(as_of_date)
189+
from pandas import to_datetime
190+
as_of_date = to_datetime(as_of_date)
187191
df = self.get_series_all_releases(series_id)
188192
data = df[df['realtime_start'] <= as_of_date]
189193
return data
@@ -232,7 +236,8 @@ def get_series_all_releases(self, series_id):
232236
'date': date,
233237
'value': val}
234238
i += 1
235-
data = pd.DataFrame(data).T
239+
from pandas import DataFrame
240+
data = DataFrame(data).T
236241
return data
237242

238243
def get_series_vintage_dates(self, series_id):
@@ -282,7 +287,8 @@ def __do_series_search(self, url):
282287
data[series_id][field] = child.get(field)
283288

284289
if num_results_returned > 0:
285-
data = pd.DataFrame(data, columns=series_ids).T
290+
from pandas import DataFrame
291+
data = DataFrame(data, columns=series_ids).T
286292
# parse datetime columns
287293
for field in ["realtime_start", "realtime_end", "observation_start", "observation_end", "last_updated"]:
288294
data[field] = data[field].apply(self._parse, format=None)

fredapi/version.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
version = '0.3.4'

setup.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env python
22
from setuptools import setup
3-
from fredapi import __version__
3+
from fredapi.version import version as __version__
44

55
requires = ['pandas']
66

@@ -19,7 +19,6 @@
1919
packages=['fredapi'],
2020
platforms=["Any"],
2121
install_requires=requires,
22-
setup_requires=requires,
2322
classifiers=[
2423
'Development Status :: 4 - Beta',
2524
'Environment :: Console',

0 commit comments

Comments
 (0)