diff --git a/jardin/query_builders.py b/jardin/query_builders.py index 6749b49..5e84169 100644 --- a/jardin/query_builders.py +++ b/jardin/query_builders.py @@ -120,7 +120,7 @@ def add_to_where_values(self, key, value): self.where_values[key] = v keys += [':' + key] return '(' + ', '.join(keys) + ')' - + key = self.where_key(key) self.where_values[key] = value @@ -246,7 +246,7 @@ def write_values(self): kw_values = kw_values.attributes if isinstance(kw_values, dict): kw_values = [kw_values] - + kw_values = pd.DataFrame(kw_values).copy() kw_values.reset_index(drop=True, inplace=True) @@ -281,7 +281,7 @@ def values_list(self): if isinstance(v, pd.Timestamp) and ((self.scheme == 'mysql' \ and sys.version_info[0] == 3) or self.scheme == 'sqlite'): v = v.strftime('%Y-%m-%d %H:%M:%S') - if isinstance(v, pd._libs.tslib.NaTType): + if isinstance(v, type(pd.NaT)): v = None if isinstance(v, float) and np.isnan(v): v = None diff --git a/requirements.txt b/requirements.txt index cd75360..1138bef 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,4 +6,5 @@ future==0.16.0 freezegun==0.3.10 PyMySQL==0.8.0 mysqlclient==1.3.12 -snowflake-connector-python==1.5.6 \ No newline at end of file +snowflake-connector-python==1.5.6 +mock==2.0.0 diff --git a/tests/support/mydatetime.py b/tests/support/mydatetime.py new file mode 100644 index 0000000..2f0736c --- /dev/null +++ b/tests/support/mydatetime.py @@ -0,0 +1,6 @@ +import datetime + +class _mydatetime(datetime.datetime): + @property + def nanosecond(self): + return 0 diff --git a/tests/test_jardin.py b/tests/test_jardin.py index 9136ebc..4183099 100644 --- a/tests/test_jardin.py +++ b/tests/test_jardin.py @@ -1,4 +1,5 @@ import unittest +from mock import patch from time import sleep from freezegun import freeze_time from datetime import datetime, timedelta @@ -6,13 +7,14 @@ from tests import transaction from tests.models import JardinTestModel - +from support.mydatetime import _mydatetime class User(JardinTestModel): pass class TestModel(unittest.TestCase): + @patch('pandas.datetime', _mydatetime) #hack to fix https://github.com/spulec/freezegun/issues/242 @transaction(model=User) def test_created_at_updated_at(self): user = User.insert(values={'name': 'Jardinier'}) @@ -35,7 +37,7 @@ def test_no_created_at_updated_at(self): if User.db().db_config.scheme == 'sqlite': User.query( sql='CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name varchar(256));' - ) + ) else: User.query( sql='CREATE TABLE users (id serial PRIMARY KEY, name varchar(256));' diff --git a/tests/test_model.py b/tests/test_model.py index 576220d..fece8b7 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -1,4 +1,5 @@ import unittest +from mock import patch import pandas as pd from freezegun import freeze_time from datetime import datetime, timedelta @@ -11,6 +12,7 @@ from tests import transaction from tests.models import JardinTestModel +from support.mydatetime import _mydatetime class Project(JardinTestModel): @@ -163,6 +165,7 @@ def test_having(self): users = User.select(select='name', group='name', having='COUNT(*) > 1') self.assertEqual(len(users), 1) + @patch('pandas.datetime', _mydatetime) #hack to fix https://github.com/spulec/freezegun/issues/242 @transaction(model=User) def test_touch(self): user = User.insert(values={'name': 'Jardin'})