Skip to content

Commit

Permalink
Merge pull request #6 from ohsu-comp-bio/python3-compat
Browse files Browse the repository at this point in the history
all strings expected to be unicode
  • Loading branch information
adamstruck committed Jul 27, 2017
2 parents 1109c48 + 5b7dd8b commit 5f23f93
Show file tree
Hide file tree
Showing 10 changed files with 36 additions and 22 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Expand Up @@ -6,7 +6,7 @@ python:
install:
- pip install pip --upgrade
- pip install setuptools --upgrade
- pip install flake8 coverage nose coveralls
- pip install -r tests/requirements.txt
- pip install -r requirements.txt
- python setup.py install

Expand Down
7 changes: 2 additions & 5 deletions requirements.txt
@@ -1,7 +1,4 @@
attrs>=17.2.0
future>=0.16.0
polling>=0.3.0
requests>=2.18.1
setuptools>=36.0.1
attr>=0.2.0
requests_mock>=1.3.0
PyYAML>=3.12
requests>=2.18.2
8 changes: 4 additions & 4 deletions setup.py
Expand Up @@ -4,7 +4,7 @@

setup(
name='py-tes',
version='0.1.3',
version='0.1.4',
description='Library for communicating with the GA4GH Task Execution API',
author='OHSU Computational Biology',
author_email='CompBio@ohsu.edu',
Expand All @@ -13,12 +13,12 @@
url="https://github.com/ohsu-comp-bio/py-tes",
license='MIT',
packages=find_packages(),
python_requires='>=2.6, <4',
python_requires='>=2.7, <4',
install_requires=[
"attrs>=17.2.0",
"future>=0.16.0",
"polling>=0.3.0",
"requests>=2.18.1",
"PyYAML>=3.12"
"requests>=2.18.1"
],
zip_safe=True,
classifiers=[
Expand Down
15 changes: 9 additions & 6 deletions tes/client.py
@@ -1,4 +1,4 @@
from __future__ import absolute_import, print_function
from __future__ import absolute_import, print_function, unicode_literals

import polling
import requests
Expand All @@ -7,7 +7,8 @@
from attr.validators import instance_of
from requests.utils import urlparse

from tes.models import (Task, ListTasksRequest, ListTasksResponse, ServiceInfo)
from tes.models import (Task, ListTasksRequest, ListTasksResponse, ServiceInfo,
GetTaskRequest, CancelTaskRequest, CreateTaskResponse)
from tes.utils import unmarshal, raise_for_status


Expand Down Expand Up @@ -44,21 +45,23 @@ def create_task(self, task):
timeout=self.timeout
)
raise_for_status(response)
return str(response.json()["id"])
return unmarshal(response.json(), CreateTaskResponse).id

def get_task(self, task_id, view="BASIC"):
payload = {"view": view}
req = GetTaskRequest(task_id, view)
payload = {"view": req.view}
response = requests.get(
"%s/v1/tasks/%s" % (self.url, task_id),
"%s/v1/tasks/%s" % (self.url, req.id),
params=payload,
timeout=self.timeout
)
raise_for_status(response)
return unmarshal(response.json(), Task)

def cancel_task(self, task_id):
req = CancelTaskRequest(task_id)
response = requests.post(
"%s/v1/tasks/%s:cancel" % (self.url, task_id),
"%s/v1/tasks/%s:cancel" % (self.url, req.id),
timeout=self.timeout
)
raise_for_status(response)
Expand Down
3 changes: 2 additions & 1 deletion tes/models.py
@@ -1,9 +1,10 @@
from __future__ import absolute_import, print_function
from __future__ import absolute_import, print_function, unicode_literals

import json

from attr import asdict, attrs, attrib
from attr.validators import instance_of, optional, in_
from builtins import str


@attrs
Expand Down
7 changes: 3 additions & 4 deletions tes/utils.py
@@ -1,8 +1,7 @@
from __future__ import absolute_import, print_function
from __future__ import absolute_import, print_function, unicode_literals

import json
import re
import yaml

from requests import HTTPError
from tes.models import (Task, TaskParameter, Resources, Executor, Ports,
Expand All @@ -20,9 +19,9 @@ def camel_to_snake(name):

def unmarshal(j, o, convert_camel_case=True):
if isinstance(j, str):
m = yaml.safe_load(j)
m = json.loads(j)
elif isinstance(j, dict):
m = yaml.safe_load(json.dumps(j))
m = j
else:
raise TypeError("j must be a str or dict")

Expand Down
5 changes: 5 additions & 0 deletions tests/requirements.txt
@@ -0,0 +1,5 @@
coverage>=4.4.1
coveralls>=1.1
flake8>=3.3.0
nose>=1.3.7
requests_mock>=1.3.0
3 changes: 3 additions & 0 deletions tests/test_client.py
@@ -1,8 +1,11 @@
from __future__ import unicode_literals

import requests
import requests_mock
import unittest
import uuid

from builtins import str

from tes.client import HTTPClient
from tes.models import Task, Executor
Expand Down
6 changes: 5 additions & 1 deletion tests/test_models.py
@@ -1,3 +1,5 @@
from __future__ import unicode_literals

import json
import unittest

Expand Down Expand Up @@ -38,6 +40,8 @@ def test_is_valid(self):

task3 = self.task
task3.outputs = [
TaskParameter(url="s3:/some/path", path="foo", contents="content")
TaskParameter(
url="s3:/some/path", path="foo", contents="content"
)
]
self.assertFalse(task3.is_valid()[0])
2 changes: 2 additions & 0 deletions tests/test_utils.py
@@ -1,3 +1,5 @@
from __future__ import unicode_literals

import json
import unittest

Expand Down

0 comments on commit 5f23f93

Please sign in to comment.