diff --git a/.travis.yml b/.travis.yml index 01600606..1aeb0949 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,9 @@ language: python +addons: + apt: + packages: + - wget env: -# - TOX_ENV=py26 -# If someone opens a PR to re-enable py26 tests, I will merge it. -# However, that cannot be at the cost of disabling pandas tests in other -# environments. - TOX_ENV=py27 # - TOX_ENV=py32 # Disabling py32 tests until the following issue is fixed: @@ -20,7 +20,7 @@ install: - pip install tox - pip install coveralls - mkdir influxdb_install - - wget https://s3.amazonaws.com/influxdb/influxdb_0.12.1-1_amd64.deb + - wget https://dl.influxdata.com/influxdb/releases/influxdb_0.13.0_amd64.deb - dpkg -x influxdb*.deb influxdb_install script: - export INFLUXDB_PYTHON_INFLUXD_PATH=$(pwd)/influxdb_install/usr/bin/influxd diff --git a/influxdb/__init__.py b/influxdb/__init__.py index 0f1c26d4..2269f59d 100644 --- a/influxdb/__init__.py +++ b/influxdb/__init__.py @@ -1,4 +1,10 @@ # -*- coding: utf-8 -*- + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + from .client import InfluxDBClient from .client import InfluxDBClusterClient from .dataframe_client import DataFrameClient diff --git a/influxdb/_dataframe_client.py b/influxdb/_dataframe_client.py index 73a01745..2e129bae 100644 --- a/influxdb/_dataframe_client.py +++ b/influxdb/_dataframe_client.py @@ -2,6 +2,11 @@ """ DataFrame client for InfluxDB """ +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + import math import pandas as pd diff --git a/influxdb/chunked_json.py b/influxdb/chunked_json.py index 50d304f1..ae748e51 100644 --- a/influxdb/chunked_json.py +++ b/influxdb/chunked_json.py @@ -5,6 +5,11 @@ # Source: https://gist.github.com/sampsyo/920215 # +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + import json _decoder = json.JSONDecoder() diff --git a/influxdb/client.py b/influxdb/client.py index 69209a7f..bb1a1123 100644 --- a/influxdb/client.py +++ b/influxdb/client.py @@ -2,6 +2,10 @@ """ Python client for InfluxDB """ +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals from functools import wraps import json diff --git a/influxdb/dataframe_client.py b/influxdb/dataframe_client.py index 41a6796c..2d90fda3 100644 --- a/influxdb/dataframe_client.py +++ b/influxdb/dataframe_client.py @@ -2,6 +2,10 @@ """ DataFrame client for InfluxDB """ +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals __all__ = ['DataFrameClient'] diff --git a/influxdb/exceptions.py b/influxdb/exceptions.py index cad325c6..6860f420 100644 --- a/influxdb/exceptions.py +++ b/influxdb/exceptions.py @@ -1,3 +1,9 @@ +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + + class InfluxDBClientError(Exception): """Raised when an error occurs in the request.""" def __init__(self, content, code=None): diff --git a/influxdb/helper.py b/influxdb/helper.py index 7f64de46..0bae6f92 100644 --- a/influxdb/helper.py +++ b/influxdb/helper.py @@ -2,6 +2,11 @@ """ Helper class for InfluxDB """ +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + from collections import namedtuple, defaultdict from datetime import datetime from warnings import warn diff --git a/influxdb/influxdb08/__init__.py b/influxdb/influxdb08/__init__.py index 6ba218e3..c718cdce 100644 --- a/influxdb/influxdb08/__init__.py +++ b/influxdb/influxdb08/__init__.py @@ -1,4 +1,10 @@ # -*- coding: utf-8 -*- + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + from .client import InfluxDBClient from .dataframe_client import DataFrameClient from .helper import SeriesHelper diff --git a/influxdb/influxdb08/chunked_json.py b/influxdb/influxdb08/chunked_json.py index 50d304f1..ae748e51 100644 --- a/influxdb/influxdb08/chunked_json.py +++ b/influxdb/influxdb08/chunked_json.py @@ -5,6 +5,11 @@ # Source: https://gist.github.com/sampsyo/920215 # +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + import json _decoder = json.JSONDecoder() diff --git a/influxdb/influxdb08/dataframe_client.py b/influxdb/influxdb08/dataframe_client.py index 87ddba8c..28173e6e 100644 --- a/influxdb/influxdb08/dataframe_client.py +++ b/influxdb/influxdb08/dataframe_client.py @@ -2,6 +2,11 @@ """ DataFrame client for InfluxDB """ +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + import math import warnings diff --git a/influxdb/influxdb08/helper.py b/influxdb/influxdb08/helper.py index 734ac960..e5827fa1 100644 --- a/influxdb/influxdb08/helper.py +++ b/influxdb/influxdb08/helper.py @@ -2,6 +2,11 @@ """ Helper class for InfluxDB """ +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + from collections import namedtuple, defaultdict from warnings import warn diff --git a/influxdb/line_protocol.py b/influxdb/line_protocol.py index da0e83ec..4d3dc544 100644 --- a/influxdb/line_protocol.py +++ b/influxdb/line_protocol.py @@ -1,4 +1,8 @@ # -*- coding: utf-8 -*- + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function from __future__ import unicode_literals from calendar import timegm diff --git a/influxdb/resultset.py b/influxdb/resultset.py index 8ec7091e..c44ac908 100644 --- a/influxdb/resultset.py +++ b/influxdb/resultset.py @@ -1,5 +1,10 @@ # -*- coding: utf-8 -*- +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + import warnings from influxdb.exceptions import InfluxDBClientError diff --git a/influxdb/tests/__init__.py b/influxdb/tests/__init__.py index dc1bb22c..9dadbb05 100644 --- a/influxdb/tests/__init__.py +++ b/influxdb/tests/__init__.py @@ -1,11 +1,14 @@ # -*- coding: utf-8 -*- +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + import sys import os -if sys.version_info < (2, 7): - import unittest2 as unittest -else: - import unittest + +import unittest using_pypy = hasattr(sys, "pypy_version_info") skipIfPYpy = unittest.skipIf(using_pypy, "Skipping this test on pypy.") diff --git a/influxdb/tests/chunked_json_test.py b/influxdb/tests/chunked_json_test.py index 6b0f9e65..48e3a736 100644 --- a/influxdb/tests/chunked_json_test.py +++ b/influxdb/tests/chunked_json_test.py @@ -1,13 +1,13 @@ # -*- coding: utf-8 -*- -import sys +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals from influxdb import chunked_json -if sys.version_info < (2, 7): - import unittest2 as unittest -else: - import unittest +import unittest class TestChunkJson(unittest.TestCase): diff --git a/influxdb/tests/client_test.py b/influxdb/tests/client_test.py index 90f6964a..b8c106df 100644 --- a/influxdb/tests/client_test.py +++ b/influxdb/tests/client_test.py @@ -14,6 +14,11 @@ See client_test_with_server.py for tests against a running server instance. """ +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + import json import requests import requests.exceptions @@ -25,11 +30,7 @@ from mock import patch import warnings import mock -import sys -if sys.version_info < (2, 7): - import unittest2 as unittest -else: - import unittest +import unittest from influxdb import InfluxDBClient, InfluxDBClusterClient from influxdb.client import InfluxDBServerError diff --git a/influxdb/tests/dataframe_client_test.py b/influxdb/tests/dataframe_client_test.py index 721d1aeb..170617a2 100644 --- a/influxdb/tests/dataframe_client_test.py +++ b/influxdb/tests/dataframe_client_test.py @@ -2,13 +2,14 @@ """ unit tests for misc module """ +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + from .client_test import _mocked_session -import sys -if sys.version_info < (2, 7): - import unittest2 as unittest -else: - import unittest +import unittest import json import requests_mock from nose.tools import raises diff --git a/influxdb/tests/helper_test.py b/influxdb/tests/helper_test.py index 405b5ed8..10546286 100644 --- a/influxdb/tests/helper_test.py +++ b/influxdb/tests/helper_test.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- -import sys -if sys.version_info < (2, 7): - import unittest2 as unittest -else: - import unittest +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + +import unittest import warnings import mock diff --git a/influxdb/tests/influxdb08/client_test.py b/influxdb/tests/influxdb08/client_test.py index 87328c5a..bcf1702d 100644 --- a/influxdb/tests/influxdb08/client_test.py +++ b/influxdb/tests/influxdb08/client_test.py @@ -7,10 +7,7 @@ import requests.exceptions import socket import sys -if sys.version_info < (2, 7): - import unittest2 as unittest -else: - import unittest +import unittest import requests_mock import random from nose.tools import raises @@ -21,7 +18,6 @@ from influxdb.influxdb08 import InfluxDBClient from influxdb.influxdb08.client import session -import sys if sys.version < '3': import codecs diff --git a/influxdb/tests/influxdb08/dataframe_client_test.py b/influxdb/tests/influxdb08/dataframe_client_test.py index 6ff4724f..63a10c93 100644 --- a/influxdb/tests/influxdb08/dataframe_client_test.py +++ b/influxdb/tests/influxdb08/dataframe_client_test.py @@ -4,11 +4,7 @@ """ from .client_test import _mocked_session -import sys -if sys.version_info < (2, 7): - import unittest2 as unittest -else: - import unittest +import unittest import json import requests_mock from nose.tools import raises diff --git a/influxdb/tests/influxdb08/helper_test.py b/influxdb/tests/influxdb08/helper_test.py index 3a84c849..e744d1e4 100644 --- a/influxdb/tests/influxdb08/helper_test.py +++ b/influxdb/tests/influxdb08/helper_test.py @@ -1,10 +1,6 @@ # -*- coding: utf-8 -*- -import sys -if sys.version_info < (2, 7): - import unittest2 as unittest -else: - import unittest +import unittest import warnings import mock diff --git a/influxdb/tests/misc.py b/influxdb/tests/misc.py index 6a3857b0..7dffc219 100644 --- a/influxdb/tests/misc.py +++ b/influxdb/tests/misc.py @@ -1,5 +1,10 @@ # -*- coding: utf-8 -*- +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + import socket diff --git a/influxdb/tests/resultset_test.py b/influxdb/tests/resultset_test.py index e65bad3c..4717b88c 100644 --- a/influxdb/tests/resultset_test.py +++ b/influxdb/tests/resultset_test.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- -import sys -if sys.version_info < (2, 7): - import unittest2 as unittest -else: - import unittest +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + +import unittest from influxdb.exceptions import InfluxDBClientError from influxdb.resultset import ResultSet diff --git a/influxdb/tests/server_tests/base.py b/influxdb/tests/server_tests/base.py index 7bd17eaf..3566d7ba 100644 --- a/influxdb/tests/server_tests/base.py +++ b/influxdb/tests/server_tests/base.py @@ -1,5 +1,10 @@ # -*- coding: utf-8 -*- +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + import sys from influxdb.tests import using_pypy diff --git a/influxdb/tests/server_tests/client_test_with_server.py b/influxdb/tests/server_tests/client_test_with_server.py index 78bc1fc2..9bad5e1b 100644 --- a/influxdb/tests/server_tests/client_test_with_server.py +++ b/influxdb/tests/server_tests/client_test_with_server.py @@ -9,17 +9,15 @@ but without mocking around every call. """ - +from __future__ import absolute_import +from __future__ import division from __future__ import print_function +from __future__ import unicode_literals from functools import partial import os import time -import sys -if sys.version_info < (2, 7): - import unittest2 as unittest -else: - import unittest +import unittest import warnings # By default, raise exceptions on warnings @@ -341,8 +339,12 @@ def test_write_points_check_read(self): self.assertEqual( list(rsp), - [[{'value': 0.64, 'time': '2009-11-10T23:00:00Z', - "host": "server01", "region": "us-west"}]] + [[ + {'value': 0.64, + 'time': '2009-11-10T23:00:00Z', + "host": "server01", + "region": "us-west"} + ]] ) rsp2 = list(rsp.get_points()) @@ -351,8 +353,10 @@ def test_write_points_check_read(self): self.assertEqual( pt, - {'time': '2009-11-10T23:00:00Z', 'value': 0.64, - "host": "server01", "region": "us-west"} + {'time': '2009-11-10T23:00:00Z', + 'value': 0.64, + "host": "server01", + "region": "us-west"} ) @unittest.skip("Broken as of 0.9.0") @@ -382,8 +386,12 @@ def test_write_multiple_points_different_series(self): lrsp = list(rsp) self.assertEqual( - [[{'value': 0.64, 'time': '2009-11-10T23:00:00Z', - "host": "server01", "region": "us-west"}]], + [[ + {'value': 0.64, + 'time': '2009-11-10T23:00:00Z', + "host": "server01", + "region": "us-west"} + ]], lrsp ) @@ -391,8 +399,12 @@ def test_write_multiple_points_different_series(self): self.assertEqual( rsp, - [[{'value': 33, 'time': '2009-11-10T23:01:35Z', - "host": "server01", "region": "us-west"}]] + [[ + {'value': 33, + 'time': '2009-11-10T23:01:35Z', + "host": "server01", + "region": "us-west"} + ]] ) @unittest.skip("Broken as of 0.9.0") @@ -510,6 +522,7 @@ def test_default_retention_policy(self): {'name': 'default', 'duration': '0', 'replicaN': 1, + 'shardGroupDuration': u'168h0m0s', 'default': True} ], rsp @@ -525,14 +538,17 @@ def test_create_retention_policy_default(self): {'duration': '0', 'default': False, 'replicaN': 1, + 'shardGroupDuration': u'168h0m0s', 'name': 'default'}, {'duration': '24h0m0s', 'default': True, 'replicaN': 1, + 'shardGroupDuration': u'1h0m0s', 'name': 'somename'}, {'duration': '48h0m0s', 'default': False, 'replicaN': 1, + 'shardGroupDuration': u'24h0m0s', 'name': 'another'} ], rsp @@ -542,10 +558,18 @@ def test_create_retention_policy(self): self.cli.create_retention_policy('somename', '1d', 1) rsp = self.cli.get_list_retention_policies() self.assertEqual( - [{'duration': '0', 'default': True, - 'replicaN': 1, 'name': 'default'}, - {'duration': '24h0m0s', 'default': False, - 'replicaN': 1, 'name': 'somename'}], + [ + {'duration': '0', + 'default': True, + 'replicaN': 1, + 'shardGroupDuration': u'168h0m0s', + 'name': 'default'}, + {'duration': '24h0m0s', + 'default': False, + 'replicaN': 1, + 'shardGroupDuration': u'1h0m0s', + 'name': 'somename'} + ], rsp ) @@ -557,10 +581,18 @@ def test_alter_retention_policy(self): duration='4d') rsp = self.cli.get_list_retention_policies() self.assertEqual( - [{'duration': '0', 'default': True, - 'replicaN': 1, 'name': 'default'}, - {'duration': '96h0m0s', 'default': False, - 'replicaN': 1, 'name': 'somename'}], + [ + {'duration': '0', + 'default': True, + 'replicaN': 1, + 'shardGroupDuration': u'168h0m0s', + 'name': 'default'}, + {'duration': '96h0m0s', + 'default': False, + 'replicaN': 1, + 'shardGroupDuration': u'24h0m0s', + 'name': 'somename'} + ], rsp ) @@ -569,10 +601,18 @@ def test_alter_retention_policy(self): replication=4) rsp = self.cli.get_list_retention_policies() self.assertEqual( - [{'duration': '0', 'default': True, - 'replicaN': 1, 'name': 'default'}, - {'duration': '96h0m0s', 'default': False, - 'replicaN': 4, 'name': 'somename'}], + [ + {'duration': '0', + 'default': True, + 'replicaN': 1, + 'shardGroupDuration': u'168h0m0s', + 'name': 'default'}, + {'duration': '96h0m0s', + 'default': False, + 'replicaN': 4, + 'shardGroupDuration': u'24h0m0s', + 'name': 'somename'} + ], rsp ) @@ -581,10 +621,18 @@ def test_alter_retention_policy(self): default=True) rsp = self.cli.get_list_retention_policies() self.assertEqual( - [{'duration': '0', 'default': False, - 'replicaN': 1, 'name': 'default'}, - {'duration': '96h0m0s', 'default': True, - 'replicaN': 4, 'name': 'somename'}], + [ + {'duration': '0', + 'default': False, + 'replicaN': 1, + 'shardGroupDuration': u'168h0m0s', + 'name': 'default'}, + {'duration': '96h0m0s', + 'default': True, + 'replicaN': 4, + 'shardGroupDuration': u'24h0m0s', + 'name': 'somename'} + ], rsp ) @@ -597,10 +645,18 @@ def test_alter_retention_policy_invalid(self): ctx.exception.content) rsp = self.cli.get_list_retention_policies() self.assertEqual( - [{'duration': '0', 'default': True, - 'replicaN': 1, 'name': 'default'}, - {'duration': '24h0m0s', 'default': False, - 'replicaN': 1, 'name': 'somename'}], + [ + {'duration': '0', + 'default': True, + 'replicaN': 1, + 'shardGroupDuration': u'168h0m0s', + 'name': 'default'}, + {'duration': '24h0m0s', + 'default': False, + 'replicaN': 1, + 'shardGroupDuration': u'1h0m0s', + 'name': 'somename'} + ], rsp ) @@ -611,8 +667,13 @@ def test_drop_retention_policy(self): self.cli.drop_retention_policy('somename', 'db') rsp = self.cli.get_list_retention_policies() self.assertEqual( - [{'duration': '0', 'default': True, - 'replicaN': 1, 'name': 'default'}], + [ + {'duration': '0', + 'default': True, + 'replicaN': 1, + 'shardGroupDuration': u'168h0m0s', + 'name': 'default'} + ], rsp ) @@ -717,7 +778,11 @@ def test_write_points_udp(self): self.assertEqual( # this is dummy_points : - [{'value': 0.64, 'time': '2009-11-10T23:00:00Z', - "host": "server01", "region": "us-west"}], + [ + {'value': 0.64, + 'time': '2009-11-10T23:00:00Z', + "host": "server01", + "region": "us-west"} + ], list(rsp['cpu_load_short']) ) diff --git a/influxdb/tests/server_tests/influxdb_instance.py b/influxdb/tests/server_tests/influxdb_instance.py index 1b662589..59cbcd4f 100644 --- a/influxdb/tests/server_tests/influxdb_instance.py +++ b/influxdb/tests/server_tests/influxdb_instance.py @@ -1,6 +1,9 @@ # -*- coding: utf-8 -*- +from __future__ import absolute_import +from __future__ import division from __future__ import print_function +from __future__ import unicode_literals import datetime import os @@ -10,10 +13,7 @@ import shutil import subprocess import sys -if sys.version_info < (2, 7): - import unittest2 as unittest -else: - import unittest +import unittest from influxdb.tests.misc import is_port_open, get_free_ports diff --git a/influxdb/tests/test_line_protocol.py b/influxdb/tests/test_line_protocol.py index 1100dc49..2a95c4db 100644 --- a/influxdb/tests/test_line_protocol.py +++ b/influxdb/tests/test_line_protocol.py @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function from __future__ import unicode_literals -import sys -if sys.version_info < (2, 7): - import unittest2 as unittest -else: - import unittest +import unittest from influxdb import line_protocol diff --git a/tox.ini b/tox.ini index e2cb83c9..ddc15514 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py34, py27, py26, pypy, flake8 +envlist = py34, py27, pypy, flake8 [testenv] passenv = INFLUXDB_PYTHON_INFLUXD_PATH @@ -7,7 +7,6 @@ setenv = INFLUXDB_PYTHON_SKIP_SERVER_TESTS=False deps = -r{toxinidir}/requirements.txt -r{toxinidir}/test-requirements.txt py27,py32,py33,py34,py26: pandas - py26: unittest2 # Only install pandas with non-pypy interpreters commands = nosetests -v --with-doctest {posargs}