Skip to content

Commit 559f2ba

Browse files
committed
Version 0.3.0
1 parent 2412a44 commit 559f2ba

File tree

5 files changed

+36
-23
lines changed

5 files changed

+36
-23
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# 0.3.0 - July 29, 2013
2+
* Fixed bug in __coordinate_to_string function
3+
* Compatibility fixes for Python 3 and numpy datatypes
4+
* Updated test suite to work with Python 3
5+
16
# 0.2.6 - July 10, 2013
27
* Better PyInstaller compatibility (sys.executable in addition to sys.\_MEIPASS
38

README.md

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

33
Accelerated Excel XLSX writing library for Python 2/3
44

5-
* Current version: 0.2.6
5+
* Current version: 0.3.0
66
* Authors: [Kevin Wang](https://github.com/kevmo314) and [Kevin Zhang](https://github.com/whitehat2k9)
77
* License: Simplified BSD License
88
* [Source repository](https://github.com/whitehat2k9/PyExcelerate)

pyexcelerate/DataTypes.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
from datetime import datetime
22
from . import six
3+
try:
4+
import numpy as np
5+
HAS_NUMPY = True
6+
except:
7+
HAS_NUMPY = False
38

49
class DataTypes(object):
510
BOOLEAN = 0
@@ -12,6 +17,8 @@ class DataTypes(object):
1217
FORMULA = 7
1318

1419
_enumerations = ["b", "d", "e", "inlineStr", "n", "s", "str"]
20+
_numberTypes = six.integer_types + (float, complex)
21+
1522
@staticmethod
1623
def to_enumeration_value(index):
1724
return DataTypes._enumerations[index]
@@ -25,15 +32,17 @@ def get_type(value):
2532
else:
2633
return DataTypes.INLINE_STRING
2734
# not using in (int, float, long, complex) for speed
28-
elif value.__class__ in six.integer_types + (float, complex):
35+
elif value.__class__ in DataTypes._numberTypes:
2936
return DataTypes.NUMBER
3037
# fall back to the slower isinstance
3138
elif isinstance(value, six.string_types):
3239
if len(value) > 0 and value[0] == '=':
3340
return DataTypes.FORMULA
3441
else:
3542
return DataTypes.INLINE_STRING
36-
elif isinstance(value, six.integer_types + (float, complex)):
43+
elif isinstance(value, DataTypes._numberTypes):
44+
return DataTypes.NUMBER
45+
elif HAS_NUMPY and isinstance(value, (np.floating, np.integer, np.complexfloating, np.unsignedinteger)):
3746
return DataTypes.NUMBER
3847
elif isinstance(value, datetime):
3948
return DataTypes.DATE

pyexcelerate/Range.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,7 @@ def coordinate_to_string(coord):
168168
s = ""
169169
while y >= 0:
170170
s = chr((y % 26) + Range.A) + s
171-
y /= 26
172-
y -= 1
171+
y = int(y / 26) - 1
173172
Range._cts_cache[y] = s
174173
return Range._cts_cache[y] + str(coord[0])
175174

pyexcelerate/tests/test_DataTypes.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,24 @@
55
import numpy
66

77
def test__to_enumeration_value():
8-
eq_(DataTypes.to_enumeration_value(DataTypes.BOOLEAN), "b")
9-
eq_(DataTypes.to_enumeration_value(DataTypes.DATE), "d")
10-
eq_(DataTypes.to_enumeration_value(DataTypes.ERROR), "e")
11-
eq_(DataTypes.to_enumeration_value(DataTypes.INLINE_STRING), "inlineStr")
12-
eq_(DataTypes.to_enumeration_value(DataTypes.NUMBER), "n")
13-
eq_(DataTypes.to_enumeration_value(DataTypes.SHARED_STRING), "s")
14-
eq_(DataTypes.to_enumeration_value(DataTypes.STRING), "str")
8+
eq_(DataTypes.to_enumeration_value(DataTypes.BOOLEAN), "b")
9+
eq_(DataTypes.to_enumeration_value(DataTypes.DATE), "d")
10+
eq_(DataTypes.to_enumeration_value(DataTypes.ERROR), "e")
11+
eq_(DataTypes.to_enumeration_value(DataTypes.INLINE_STRING), "inlineStr")
12+
eq_(DataTypes.to_enumeration_value(DataTypes.NUMBER), "n")
13+
eq_(DataTypes.to_enumeration_value(DataTypes.SHARED_STRING), "s")
14+
eq_(DataTypes.to_enumeration_value(DataTypes.STRING), "str")
1515

1616
def test__get_type():
17-
eq_(DataTypes.get_type(15), DataTypes.NUMBER)
18-
eq_(DataTypes.get_type(15.0), DataTypes.NUMBER)
19-
eq_(DataTypes.get_type("test"), DataTypes.INLINE_STRING)
20-
eq_(DataTypes.get_type(datetime.now()), DataTypes.DATE)
21-
17+
eq_(DataTypes.get_type(15), DataTypes.NUMBER)
18+
eq_(DataTypes.get_type(15.0), DataTypes.NUMBER)
19+
eq_(DataTypes.get_type("test"), DataTypes.INLINE_STRING)
20+
eq_(DataTypes.get_type(datetime.now()), DataTypes.DATE)
21+
2222
def test_numpy():
23-
testData = numpy.ones((5, 5), dtype = int)
24-
wb = Workbook()
25-
ws = wb.new_sheet("Test 1", data=testData)
26-
eq_(ws[1][1].value, 1)
27-
eq_(DataTypes.get_type(ws[1][1].value), DataTypes.NUMBER)
28-
wb.save("numpy-test.xlsx")
23+
testData = numpy.ones((5, 5), dtype = int)
24+
wb = Workbook()
25+
ws = wb.new_sheet("Test 1", data=testData)
26+
eq_(ws[1][1].value, 1)
27+
eq_(DataTypes.get_type(ws[1][1].value), DataTypes.NUMBER)
28+
wb.save("numpy-test.xlsx")

0 commit comments

Comments
 (0)