Skip to content
This repository was archived by the owner on Oct 23, 2024. It is now read-only.

Commit 1f5e5a1

Browse files
authored
Merge pull request #49 from objectrocket/python3-no-long
Python3 does not have a 'long' type
2 parents a99de29 + 7558e84 commit 1f5e5a1

File tree

5 files changed

+36
-6
lines changed

5 files changed

+36
-6
lines changed

circle.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ machine:
77

88
dependencies:
99
override:
10-
- pip install -r requirements/prod.txt -r requirements/dev.txt
10+
- pip install -r requirements/dev.txt
1111
- pip install tox-pyenv codecov coveralls twine
1212
- pyenv local 2.7.10 3.5.0
1313

objectrocket/util.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
"""Utility code for the objectrocket package."""
22
import functools
33
import datetime
4+
import six
5+
import sys
46

57
from six import create_bound_method
68

@@ -68,7 +70,7 @@ def sum_values(value1, value2):
6870
if value2 is None:
6971
return value1
7072

71-
number_types = (int, float, long, bool) # noqa
73+
number_types = (float, bool) + six.integer_types # noqa
7274

7375
if isinstance(value1, number_types) and isinstance(value2, number_types):
7476
return int(value1 + value2)
@@ -81,10 +83,10 @@ def sum_values(value1, value2):
8183

8284
if isinstance(value1, list):
8385
return list(set(value1 + value2))
84-
elif isinstance(value1, str) or isinstance(value1, datetime.datetime) or isinstance(value1, unicode): # noqa
86+
elif isinstance(value1, str) or isinstance(value1, datetime.datetime) or isinstance(value1, six.text_type): # noqa
8587
return value1
8688
elif isinstance(value1, dict):
87-
keys = set(value1.iterkeys()) | set(value2.iterkeys())
89+
keys = set(six.iterkeys(value1)) | set(six.iterkeys(value2))
8890
return dict((key, sum_values(value1.get(key), value2.get(key))) for key in keys)
8991
else:
9092
return value1 + value2

requirements/dev.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
-r prod.txt
12
Sphinx>=1.2.2
23
flake8>=2.1.0
34
mock>=1.0.1

tests/test_utils.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import pytest
2+
from objectrocket import util
3+
4+
5+
@pytest.mark.parametrize("values,expected",
6+
[((None, 1), 1),
7+
((1, None), 1),
8+
((1, 1), 2)])
9+
def test_sum_values_integers(values, expected):
10+
assert util.sum_values(*values) == expected
11+
12+
13+
def test_sum_values_fails_different_types():
14+
with pytest.raises(TypeError) as ex:
15+
util.sum_values(1, 'test')
16+
assert 'are not of the same type' in str(ex)
17+
18+
19+
def test_sum_values_succeed_different_number_types():
20+
assert util.sum_values(1, 2.3) == 3
21+
22+
23+
def test_sum_values_succeeds_list():
24+
assert util.sum_values([2, 3], [1, 2]) == [1, 2, 3]
25+
26+
27+
def test_sum_values_succeeds_dict():
28+
assert util.sum_values({"one": 1}, {"two": 2}) == {'one': 1, 'two': 2}

tox.ini

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ skipsdist = True
55

66
[testenv]
77
commands = {envbindir}/py.test {posargs} {toxinidir}/tests
8-
deps = -r{toxinidir}/requirements/prod.txt
9-
-r{toxinidir}/requirements/dev.txt
8+
deps = -r{toxinidir}/requirements/dev.txt
109
passenv = PYPI_USERNAME PYPI_PASSWORD
1110
recreate = False
1211

0 commit comments

Comments
 (0)