Skip to content

Commit a8b6676

Browse files
committed
Merge pull request influxdata#94 from influxdb/dataframe_module_change
influxdb.misc.DataFrameClient -> influxdb.DataFrameClient
2 parents 0502fa2 + 65ddc0f commit a8b6676

File tree

6 files changed

+33
-23
lines changed

6 files changed

+33
-23
lines changed

docs/source/api-documentation.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ ports. The below instantiation statements are all equivalent::
2121
client = InfluxDBClient(host='127.0.0.1', database='dbname', use_udp=True, udp_port=4444)
2222

2323
To write pandas DataFrames or to read data into a
24-
pandas DataFrame, use a :py:class:`~influxdb.misc.DataFrameClient` object.
24+
pandas DataFrame, use a :py:class:`~influxdb.DataFrameClient` object.
2525
These clients are initiated in the same way as the
2626
:py:class:`~influxdb.InfluxDBClient`::
2727

28-
from influxdb.misc import DataFrameClient
28+
from influxdb import DataFrameClient
2929

3030
client = DataFrameClient(host='127.0.0.1', port=8086, username='root', password='root', dbname='dbname')
3131

@@ -50,7 +50,7 @@ These clients are initiated in the same way as the
5050
-----------------------
5151

5252

53-
.. currentmodule:: influxdb.misc.DataFrameClient
54-
.. autoclass:: influxdb.misc.DataFrameClient
53+
.. currentmodule:: influxdb.DataFrameClient
54+
.. autoclass:: influxdb.DataFrameClient
5555
:members:
5656
:undoc-members:

examples/tutorial_pandas.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import argparse
22
import pandas as pd
33

4-
from influxdb.misc import DataFrameClient
4+
from influxdb import DataFrameClient
55

66

77
def main(host='localhost', port=8086):

influxdb/__init__.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
# -*- coding: utf-8 -*-
2-
from influxdb.client import InfluxDBClient
2+
from .client import InfluxDBClient
3+
from .dataframe_client import DataFrameClient
34

45

5-
__all__ = ['InfluxDBClient']
6+
__all__ = [
7+
'InfluxDBClient',
8+
'DataFrameClient',
9+
]
10+
611

712
__version__ = '0.1.13'

influxdb/misc.py renamed to influxdb/dataframe_client.py

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# -*- coding: utf-8 -*-
22
"""
3-
Miscellaneous
3+
DataFrame client for InfluxDB
44
"""
55
import math
66
import warnings
@@ -15,8 +15,18 @@ class DataFrameClient(InfluxDBClient):
1515
The client reads and writes from pandas DataFrames.
1616
"""
1717

18-
import pandas as pd
19-
EPOCH = pd.Timestamp('1970-01-01 00:00:00.000+00:00')
18+
def __init__(self, *args, **kwargs):
19+
super(DataFrameClient, self).__init__(*args, **kwargs)
20+
try:
21+
global pd
22+
import pandas as pd
23+
except ImportError as ex:
24+
raise ImportError(
25+
'DataFrameClient requires Pandas, "{ex}" problem importing'
26+
.format(ex=str(ex))
27+
)
28+
29+
self.EPOCH = pd.Timestamp('1970-01-01 00:00:00.000+00:00')
2030

2131
def write_points(self, data, *args, **kwargs):
2232
"""
@@ -86,10 +96,6 @@ def query(self, query, time_precision='s', chunked=False):
8696
return result
8797

8898
def _to_dataframe(self, json_result, time_precision):
89-
try:
90-
import pandas as pd
91-
except ImportError:
92-
raise ImportError('pandas required for retrieving as dataframe.')
9399
dataframe = pd.DataFrame(data=json_result['points'],
94100
columns=json_result['columns'])
95101
if 'sequence_number' in dataframe.keys():
@@ -108,10 +114,6 @@ def _to_dataframe(self, json_result, time_precision):
108114
return dataframe
109115

110116
def _convert_dataframe_to_json(self, dataframe, name, time_precision='s'):
111-
try:
112-
import pandas as pd
113-
except ImportError:
114-
raise ImportError('pandas required for writing as dataframe.')
115117
if not isinstance(dataframe, pd.DataFrame):
116118
raise TypeError('Must be DataFrame, but type was: {}.'
117119
.format(type(dataframe)))
@@ -130,7 +132,7 @@ def _convert_dataframe_to_json(self, dataframe, name, time_precision='s'):
130132
return data
131133

132134
def _datetime_to_epoch(self, datetime, time_precision='s'):
133-
seconds = (datetime - DataFrameClient.EPOCH).total_seconds()
135+
seconds = (datetime - self.EPOCH).total_seconds()
134136
if time_precision == 's':
135137
return seconds
136138
elif time_precision == 'm':

tests/influxdb/misc_test.py renamed to tests/influxdb/dataframe_client_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
if not using_pypy:
1414
import pandas as pd
1515
from pandas.util.testing import assert_frame_equal
16-
from influxdb.misc import DataFrameClient
16+
from influxdb import DataFrameClient
1717

1818
from .client_test import _mocked_session
1919

tox.ini

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,13 @@ deps = -r{toxinidir}/requirements.txt
2222
commands = nosetests -v --with-coverage --cover-html --cover-package=influxdb
2323

2424
[testenv:docs]
25-
deps = Sphinx==1.2.3
25+
deps = -r{toxinidir}/requirements.txt
26+
pandas
27+
Sphinx==1.2.3
2628
sphinx_rtd_theme
2729
commands = sphinx-build -b html docs/source docs/build
2830

2931
[flake8]
30-
# Ignored because of nosetests's setUp function
31-
ignore = N802
32+
ignore = N802,F821
33+
# N802: nosetests's setUp function
34+
# F821: False positive in intluxdb/dataframe_client.py

0 commit comments

Comments
 (0)