From feda0c6112fded8e0e06707e5aef3df5d352581b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Lombra=C3=B1a=20Gonz=C3=A1lez?= Date: Thu, 26 Dec 2019 17:16:23 +0100 Subject: [PATCH 1/3] chore(ci): use python3.6 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 9b728b0..67d0348 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ sudo: false language: python python: - - "2.7" + - "3.6" install: - pip install -r requirements.txt - pip install -r requirements-testing.txt From 358424d185b2f459fb6f759fa288d6702a2db8d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Lombra=C3=B1a=20Gonz=C3=A1lez?= Date: Thu, 26 Dec 2019 17:16:37 +0100 Subject: [PATCH 2/3] chore(python3): migrate to python3 --- enki/__init__.py | 11 ++++++----- enki/dataframer.py | 4 ++-- enki/exceptions.py | 10 +++++----- enki/task_run_loaders.py | 4 ++-- requirements.txt | 2 +- setup.py | 4 ++-- 6 files changed, 18 insertions(+), 17 deletions(-) diff --git a/enki/__init__.py b/enki/__init__.py index acbb03d..c683096 100644 --- a/enki/__init__.py +++ b/enki/__init__.py @@ -23,11 +23,12 @@ """ import pbclient -from task_loaders import create_tasks_loader -from task_run_loaders import create_task_runs_loader -import dataframer -from exceptions import ProjectNotFound, ProjectError, \ +from .task_loaders import create_tasks_loader +from .task_run_loaders import create_task_runs_loader +from . import dataframer +from .exceptions import ProjectNotFound, ProjectError, \ ProjectWithoutTasks, ProjectWithoutTaskRuns +from functools import reduce class Enki(object): @@ -100,6 +101,6 @@ def _check_project_has_tasks(self): def _check_project_has_taskruns(self): count_task_runs = lambda total, task_runs: total + len(task_runs) - total_task_runs = reduce(count_task_runs, self.task_runs.values(), 0) + total_task_runs = reduce(count_task_runs, list(self.task_runs.values()), 0) if total_task_runs == 0: raise ProjectWithoutTaskRuns diff --git a/enki/dataframer.py b/enki/dataframer.py index d0ecf9d..50dd2f6 100644 --- a/enki/dataframer.py +++ b/enki/dataframer.py @@ -34,9 +34,9 @@ def create_data_frame(item): def explode_info(item): item_data = item.__dict__['data'] - protected = item_data.keys() + protected = list(item_data.keys()) if type(item.info) == dict: - keys = item_data['info'].keys() + keys = list(item_data['info'].keys()) for k in keys: if k in protected: item_data["_" + k] = item_data['info'][k] diff --git a/enki/exceptions.py b/enki/exceptions.py index 0534f82..ec16eb7 100644 --- a/enki/exceptions.py +++ b/enki/exceptions.py @@ -45,7 +45,7 @@ def __init__(self, value): def __str__(self): """String representation.""" - print self.msg # pragma: no cover + print(self.msg) # pragma: no cover class ProjectError(Error): @@ -58,7 +58,7 @@ def __init__(self): def __str__(self): # pragma: no cover """String representation.""" - print self.msg + print(self.msg) class ProjectWithoutTasks(Error): @@ -71,7 +71,7 @@ def __init__(self): def __str__(self): """String representation.""" - print self.msg # pragma: no cover + print(self.msg) # pragma: no cover class ProjectWithoutTaskRuns(Error): @@ -84,7 +84,7 @@ def __init__(self): def __str__(self): """String representation.""" - print self.msg # pragma: no cover + print(self.msg) # pragma: no cover class PyBossaServerNoKeysetPagination(Error): @@ -98,4 +98,4 @@ def __init__(self): def __str__(self): """String representation.""" - print self.msg # pragma: no cover + print(self.msg) # pragma: no cover diff --git a/enki/task_run_loaders.py b/enki/task_run_loaders.py index f426919..bccd723 100644 --- a/enki/task_run_loaders.py +++ b/enki/task_run_loaders.py @@ -18,7 +18,7 @@ import json import pbclient -from exceptions import Error, PyBossaServerNoKeysetPagination +from .exceptions import Error, PyBossaServerNoKeysetPagination class ServerTaskRunsLoader(object): @@ -30,7 +30,7 @@ def __init__(self, project_id, tasks, all=0): def check_errors(self, data): """Check for errors on data payload.""" - if (type(data) == dict and 'status' in data.keys() + if (type(data) == dict and 'status' in list(data.keys()) and data['status'] == 'failed'): if data.get('exception_msg') and 'last_id' in data.get('exception_msg'): raise PyBossaServerNoKeysetPagination diff --git a/requirements.txt b/requirements.txt index 4d3a7e6..214f633 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ pandas -pybossa-client>=2.0.1, <2.0.2 +pybossa-client>=3.0.0, <3.0.1 diff --git a/setup.py b/setup.py index a24602d..a57a4b0 100644 --- a/setup.py +++ b/setup.py @@ -3,9 +3,9 @@ setup( name='enki', - version='1.1.2', + version='3.0.0', packages=find_packages(), - install_requires=['pybossa-client>=2.0.1, <2.0.2', 'pandas'], + install_requires=['pybossa-client>=3.0.0, <3.0.1', 'pandas'], # metadata for upload to PyPI author='Scifabric LTD', author_email='info@scifabric.com', From 24311574fefefa6c6dbf0a9b13dadc212c182e06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Lombra=C3=B1a=20Gonz=C3=A1lez?= Date: Sat, 28 Dec 2019 15:52:09 +0100 Subject: [PATCH 3/3] chore(python3): migrate to python3. --- setup.py | 2 +- tests/base.py | 2 +- tests/test_app.py | 16 ++++++++-------- tests/test_loaders.py | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/setup.py b/setup.py index a57a4b0..815e138 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ name='enki', version='3.0.0', packages=find_packages(), - install_requires=['pybossa-client>=3.0.0, <3.0.1', 'pandas'], + install_requires=['pybossa-client>=3.0.0, <3.1.0', 'pandas'], # metadata for upload to PyPI author='Scifabric LTD', author_email='info@scifabric.com', diff --git a/tests/base.py b/tests/base.py index 7a3af22..448b735 100644 --- a/tests/base.py +++ b/tests/base.py @@ -107,5 +107,5 @@ def create_error_output(self, action, status_code, target, return error def check_error_output(self, res, err): - for k in err.keys(): + for k in list(err.keys()): assert err[k] == res[k], err diff --git a/tests/test_app.py b/tests/test_app.py index 3b136e6..00df9e5 100644 --- a/tests/test_app.py +++ b/tests/test_app.py @@ -67,7 +67,7 @@ def test_explode_info_without_info_dict(self, Mock): e.get_tasks() result = e.explode_info(e.tasks[0]) err_msg = "This item should not be exploded" - assert result.keys() == self.task.keys(), err_msg + assert list(result.keys()) == list(self.task.keys()), err_msg @patch('pbclient.requests.get') def test_explode_info_without_info_dict_file(self, Mock): @@ -78,7 +78,7 @@ def test_explode_info_without_info_dict_file(self, Mock): e.get_tasks(json_file='tests/task_no_dict.json') result = e.explode_info(e.tasks[0]) err_msg = "This item should not be exploded" - assert 'new_key' not in result.keys(), err_msg + assert 'new_key' not in list(result.keys()), err_msg @patch('pbclient.requests.get') def test_explode_info_with_info_dict(self, Mock): @@ -91,9 +91,9 @@ def test_explode_info_with_info_dict(self, Mock): e.get_tasks() result = e.explode_info(e.tasks[0]) err_msg = "This item should be exploded" - assert 'key' in result.keys(), err_msg + assert 'key' in list(result.keys()), err_msg err_msg = "This item should be escaped" - assert '_id' in result.keys(), err_msg + assert '_id' in list(result.keys()), err_msg @patch('pbclient.requests.get') def test_explode_info_with_info_dict_file(self, Mock): @@ -104,9 +104,9 @@ def test_explode_info_with_info_dict_file(self, Mock): e.get_tasks(json_file='tests/task.json') result = e.explode_info(e.tasks[0]) err_msg = "This item should be exploded" - assert 'key' in result.keys(), err_msg + assert 'key' in list(result.keys()), err_msg err_msg = "This item should be escaped" - assert '_id' in result.keys(), err_msg + assert '_id' in list(result.keys()), err_msg @raises(ProjectError) @patch('pbclient.requests.get') @@ -319,12 +319,12 @@ def test_get_task_runs_when_some_tasks_have_no_taskruns(self, Mock): Mock.side_effect = [self.create_fake_request([self.task, self.ongoing_task], 200), self.create_fake_request([], 200)] e.get_tasks() - print e.tasks + print(e.tasks) Mock.side_effect = [self.create_fake_request([self.taskrun], 200), self.create_fake_request([], 200), self.create_fake_request([], 200)] e.get_task_runs() assert len(e.task_runs[self.task['id']]) is 1 - print self.ongoing_task + print(self.ongoing_task) assert e.task_runs[self.ongoing_task['id']] == [] diff --git a/tests/test_loaders.py b/tests/test_loaders.py index 12bbbe9..42db281 100644 --- a/tests/test_loaders.py +++ b/tests/test_loaders.py @@ -212,6 +212,6 @@ def assert_all_tasks_belong_to_project(tasks, project_id): assert task.project_id == project_id def assert_task_runs_grouped_by_task(task_runs): - for task in task_runs.keys(): + for task in list(task_runs.keys()): for task_run in task_runs[task]: assert task == task_run.task_id, task_runs