🔨 make format using isort and black
This commit is contained in:
parent
902e0b4e0e
commit
ce04e9e679
|
@ -9,17 +9,21 @@
|
|||
# this line has to be place above all else
|
||||
# because of dynamic import
|
||||
from pyexcel_io.plugins import IOPluginInfoChain
|
||||
from pyexcel_io.io import get_data as read_data, isstream, store_data as write_data
|
||||
from pyexcel_io.io import (
|
||||
get_data as read_data,
|
||||
isstream,
|
||||
store_data as write_data,
|
||||
)
|
||||
|
||||
__FILE_TYPE__ = 'ods'
|
||||
__FILE_TYPE__ = "ods"
|
||||
IOPluginInfoChain(__name__).add_a_reader(
|
||||
relative_plugin_class_path='odsr.ODSBook',
|
||||
relative_plugin_class_path="odsr.ODSBook",
|
||||
file_types=[__FILE_TYPE__],
|
||||
stream_type='binary'
|
||||
stream_type="binary",
|
||||
).add_a_writer(
|
||||
relative_plugin_class_path='odsw.ODSWriter',
|
||||
relative_plugin_class_path="odsw.ODSWriter",
|
||||
file_types=[__FILE_TYPE__],
|
||||
stream_type='binary'
|
||||
stream_type="binary",
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -21,21 +21,22 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# Thanks to grt for the fixes
|
||||
from odf.teletype import extractText
|
||||
from odf.table import TableRow, TableCell, Table
|
||||
from odf.text import P
|
||||
import pyexcel_io.service as service
|
||||
from odf.namespaces import OFFICENS
|
||||
from odf.opendocument import load
|
||||
from odf.table import Table, TableCell, TableRow
|
||||
|
||||
# Thanks to grt for the fixes
|
||||
from odf.teletype import extractText
|
||||
from odf.text import P
|
||||
from pyexcel_io._compact import OrderedDict
|
||||
from pyexcel_io.book import BookReader
|
||||
from pyexcel_io.sheet import SheetReader
|
||||
from pyexcel_io._compact import OrderedDict
|
||||
import pyexcel_io.service as service
|
||||
|
||||
|
||||
class ODSSheet(SheetReader):
|
||||
"""native ods sheet"""
|
||||
|
||||
def __init__(self, sheet, auto_detect_int=True, **keywords):
|
||||
SheetReader.__init__(self, sheet, **keywords)
|
||||
self.__auto_detect_int = auto_detect_int
|
||||
|
@ -70,14 +71,14 @@ class ODSSheet(SheetReader):
|
|||
value = cell.getAttrNS(OFFICENS, value_token)
|
||||
currency = cell.getAttrNS(OFFICENS, cell_type)
|
||||
if currency:
|
||||
ret = value + ' ' + currency
|
||||
ret = value + " " + currency
|
||||
else:
|
||||
ret = value
|
||||
else:
|
||||
if cell_type in service.VALUE_CONVERTERS:
|
||||
value = cell.getAttrNS(OFFICENS, value_token)
|
||||
n_value = service.VALUE_CONVERTERS[cell_type](value)
|
||||
if cell_type == 'float' and self.__auto_detect_int:
|
||||
if cell_type == "float" and self.__auto_detect_int:
|
||||
if service.has_no_digits_in_float(n_value):
|
||||
n_value = int(n_value)
|
||||
ret = n_value
|
||||
|
@ -92,14 +93,15 @@ class ODSSheet(SheetReader):
|
|||
# for each text node
|
||||
for paragraph in paragraphs:
|
||||
name_space, tag = paragraph.parentNode.qname
|
||||
if tag != str('annotation'):
|
||||
if tag != str("annotation"):
|
||||
data = extractText(paragraph)
|
||||
text_content.append(data)
|
||||
return '\n'.join(text_content)
|
||||
return "\n".join(text_content)
|
||||
|
||||
|
||||
class ODSBook(BookReader):
|
||||
"""read ods book"""
|
||||
|
||||
def open(self, file_name, **keywords):
|
||||
"""open ods file"""
|
||||
BookReader.open(self, file_name, **keywords)
|
||||
|
@ -113,8 +115,11 @@ class ODSBook(BookReader):
|
|||
def read_sheet_by_name(self, sheet_name):
|
||||
"""read a named sheet"""
|
||||
tables = self._native_book.spreadsheet.getElementsByType(Table)
|
||||
rets = [table for table in tables
|
||||
if table.getAttribute('name') == sheet_name]
|
||||
rets = [
|
||||
table
|
||||
for table in tables
|
||||
if table.getAttribute("name") == sheet_name
|
||||
]
|
||||
if len(rets) == 0:
|
||||
raise ValueError("%s cannot be found" % sheet_name)
|
||||
else:
|
||||
|
@ -127,8 +132,9 @@ class ODSBook(BookReader):
|
|||
if sheet_index < length:
|
||||
return self.read_sheet(tables[sheet_index])
|
||||
else:
|
||||
raise IndexError("Index %d of out bound %d" % (
|
||||
sheet_index, length))
|
||||
raise IndexError(
|
||||
"Index %d of out bound %d" % (sheet_index, length)
|
||||
)
|
||||
|
||||
def read_all(self):
|
||||
"""read all sheets"""
|
||||
|
|
|
@ -9,16 +9,14 @@
|
|||
"""
|
||||
import sys
|
||||
|
||||
from odf.table import TableRow, TableCell, Table
|
||||
from odf.text import P
|
||||
import pyexcel_io.service as converter
|
||||
from odf.namespaces import OFFICENS
|
||||
from odf.opendocument import OpenDocumentSpreadsheet
|
||||
|
||||
from odf.table import Table, TableCell, TableRow
|
||||
from odf.text import P
|
||||
from pyexcel_io.book import BookWriter
|
||||
from pyexcel_io.sheet import SheetWriter
|
||||
|
||||
import pyexcel_io.service as converter
|
||||
|
||||
PY2 = sys.version_info[0] == 2
|
||||
|
||||
PY27_BELOW = PY2 and sys.version_info[1] < 7
|
||||
|
@ -28,6 +26,7 @@ class ODSSheetWriter(SheetWriter):
|
|||
"""
|
||||
ODS sheet writer
|
||||
"""
|
||||
|
||||
def set_sheet_name(self, name):
|
||||
"""initialize the native table"""
|
||||
self._native_sheet = Table(name=name)
|
||||
|
@ -41,19 +40,22 @@ class ODSSheetWriter(SheetWriter):
|
|||
cell_to_be_written = TableCell()
|
||||
cell_type = type(cell)
|
||||
cell_odf_type = converter.ODS_WRITE_FORMAT_COVERSION.get(
|
||||
cell_type, "string")
|
||||
cell_type, "string"
|
||||
)
|
||||
cell_to_be_written.setAttrNS(OFFICENS, "value-type", cell_odf_type)
|
||||
cell_odf_value_token = converter.VALUE_TOKEN.get(
|
||||
cell_odf_type, "value")
|
||||
cell_odf_type, "value"
|
||||
)
|
||||
converter_func = converter.ODS_VALUE_CONVERTERS.get(
|
||||
cell_odf_type, None)
|
||||
cell_odf_type, None
|
||||
)
|
||||
if converter_func:
|
||||
cell = converter_func(cell)
|
||||
if cell_odf_type != 'string':
|
||||
if cell_odf_type != "string":
|
||||
cell_to_be_written.setAttrNS(OFFICENS, cell_odf_value_token, cell)
|
||||
cell_to_be_written.addElement(P(text=cell))
|
||||
else:
|
||||
lines = cell.split('\n')
|
||||
lines = cell.split("\n")
|
||||
for line in lines:
|
||||
cell_to_be_written.addElement(P(text=line))
|
||||
row.addElement(cell_to_be_written)
|
||||
|
@ -80,6 +82,7 @@ class ODSWriter(BookWriter):
|
|||
open document spreadsheet writer
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
BookWriter.__init__(self)
|
||||
self._native_book = OpenDocumentSpreadsheet()
|
||||
|
|
5
setup.py
5
setup.py
|
@ -1,13 +1,12 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import codecs
|
||||
# Template by pypi-mobans
|
||||
import os
|
||||
import sys
|
||||
import codecs
|
||||
from shutil import rmtree
|
||||
|
||||
from setuptools import Command, setup, find_packages
|
||||
|
||||
from setuptools import Command, find_packages, setup
|
||||
|
||||
NAME = 'pyexcel-ods'
|
||||
AUTHOR = 'C.W.'
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
import os # noqa
|
||||
import pyexcel
|
||||
import datetime # noqa
|
||||
from nose.tools import raises, eq_ # noqa
|
||||
import os # noqa
|
||||
|
||||
import pyexcel
|
||||
from nose.tools import eq_, raises # noqa
|
||||
|
||||
|
||||
def create_sample_file1(file):
|
||||
data = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 1.1, 1]
|
||||
data = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", 1.1, 1]
|
||||
table = []
|
||||
table.append(data[:4])
|
||||
table.append(data[4:8])
|
||||
|
@ -17,10 +18,11 @@ class PyexcelHatWriterBase:
|
|||
"""
|
||||
Abstract functional test for hat writers
|
||||
"""
|
||||
|
||||
content = {
|
||||
"X": [1, 2, 3, 4, 5],
|
||||
"Y": [6, 7, 8, 9, 10],
|
||||
"Z": [11, 12, 13, 14, 15]
|
||||
"Z": [11, 12, 13, 14, 15],
|
||||
}
|
||||
|
||||
def test_series_table(self):
|
||||
|
@ -36,11 +38,12 @@ class PyexcelWriterBase:
|
|||
testfile and testfile2 have to be initialized before
|
||||
it is used for testing
|
||||
"""
|
||||
|
||||
content = [
|
||||
[1, 2, 3, 4, 5],
|
||||
[1, 2, 3, 4, 5],
|
||||
[1, 2, 3, 4, 5],
|
||||
[1, 2, 3, 4, 5]
|
||||
[1, 2, 3, 4, 5],
|
||||
]
|
||||
|
||||
def _create_a_file(self, file):
|
||||
|
@ -54,7 +57,6 @@ class PyexcelWriterBase:
|
|||
|
||||
|
||||
class PyexcelMultipleSheetBase:
|
||||
|
||||
def _write_test_file(self, filename):
|
||||
pyexcel.save_book_as(bookdict=self.content, dest_file_name=filename)
|
||||
|
||||
|
@ -80,7 +82,7 @@ class PyexcelMultipleSheetBase:
|
|||
expected = [[4, 4, 4, 4], [5, 5, 5, 5], [6, 6, 6, 6]]
|
||||
assert data == expected
|
||||
data = list(b["Sheet3"].rows())
|
||||
expected = [[u'X', u'Y', u'Z'], [1, 4, 7], [2, 5, 8], [3, 6, 9]]
|
||||
expected = [[u"X", u"Y", u"Z"], [1, 4, 7], [2, 5, 8], [3, 6, 9]]
|
||||
assert data == expected
|
||||
sheet3 = b["Sheet3"]
|
||||
sheet3.name_columns_by_row(0)
|
||||
|
@ -90,7 +92,6 @@ class PyexcelMultipleSheetBase:
|
|||
|
||||
|
||||
class ODSCellTypes:
|
||||
|
||||
def test_formats(self):
|
||||
# date formats
|
||||
date_format = "%d/%m/%Y"
|
||||
|
@ -104,9 +105,10 @@ class ODSCellTypes:
|
|||
eq_(self.data["Sheet1"][1][1].strftime(time_format), "12:12:11")
|
||||
eq_(self.data["Sheet1"][2][1].strftime(time_format), "12:00:00")
|
||||
eq_(self.data["Sheet1"][3][1], 0)
|
||||
eq_(self.data["Sheet1"][4][1], datetime.timedelta(hours=27,
|
||||
minutes=17,
|
||||
seconds=54))
|
||||
eq_(
|
||||
self.data["Sheet1"][4][1],
|
||||
datetime.timedelta(hours=27, minutes=17, seconds=54),
|
||||
)
|
||||
eq_(self.data["Sheet1"][5][1], "Other")
|
||||
# boolean
|
||||
eq_(self.data["Sheet1"][0][2], "Boolean")
|
||||
|
@ -117,8 +119,8 @@ class ODSCellTypes:
|
|||
eq_(self.data["Sheet1"][1][3], 11.11)
|
||||
# Currency
|
||||
eq_(self.data["Sheet1"][0][4], "Currency")
|
||||
eq_(self.data["Sheet1"][1][4], '1 GBP')
|
||||
eq_(self.data["Sheet1"][2][4], '-10000 GBP')
|
||||
eq_(self.data["Sheet1"][1][4], "1 GBP")
|
||||
eq_(self.data["Sheet1"][2][4], "-10000 GBP")
|
||||
# Percentage
|
||||
eq_(self.data["Sheet1"][0][5], "Percentage")
|
||||
eq_(self.data["Sheet1"][1][5], 2)
|
||||
|
|
|
@ -1,19 +1,21 @@
|
|||
#!/usr/bin/python
|
||||
# -*- encoding: utf-8 -*-
|
||||
import os
|
||||
|
||||
import psutil
|
||||
import pyexcel as pe
|
||||
from pyexcel_ods import get_data, save_data
|
||||
from pyexcel_io.exceptions import IntegerAccuracyLossError
|
||||
from nose.tools import raises, eq_
|
||||
from nose import SkipTest
|
||||
from nose.tools import eq_, raises
|
||||
from pyexcel_io.exceptions import IntegerAccuracyLossError
|
||||
|
||||
IN_TRAVIS = 'TRAVIS' in os.environ
|
||||
from pyexcel_ods import get_data, save_data
|
||||
|
||||
IN_TRAVIS = "TRAVIS" in os.environ
|
||||
|
||||
|
||||
def test_bug_fix_for_issue_1():
|
||||
data = get_data(get_fixtures("repeated.ods"))
|
||||
eq_(data["Sheet1"], [['repeated', 'repeated', 'repeated', 'repeated']])
|
||||
eq_(data["Sheet1"], [["repeated", "repeated", "repeated", "repeated"]])
|
||||
|
||||
|
||||
def test_bug_fix_for_issue_2():
|
||||
|
@ -22,12 +24,13 @@ def test_bug_fix_for_issue_2():
|
|||
data.update({"Sheet 2": [[u"row 1", u"Héllô!", u"HolÁ!"]]})
|
||||
save_data("your_file.ods", data)
|
||||
new_data = get_data("your_file.ods")
|
||||
assert new_data["Sheet 2"] == [[u'row 1', u'H\xe9ll\xf4!', u'Hol\xc1!']]
|
||||
assert new_data["Sheet 2"] == [[u"row 1", u"H\xe9ll\xf4!", u"Hol\xc1!"]]
|
||||
|
||||
|
||||
@raises(Exception)
|
||||
def test_invalid_date():
|
||||
from pyexcel_ods.ods import date_value
|
||||
|
||||
value = "2015-08-"
|
||||
date_value(value)
|
||||
|
||||
|
@ -35,30 +38,27 @@ def test_invalid_date():
|
|||
@raises(Exception)
|
||||
def test_fake_date_time_10():
|
||||
from pyexcel_ods.ods import date_value
|
||||
|
||||
date_value("1234567890")
|
||||
|
||||
|
||||
@raises(Exception)
|
||||
def test_fake_date_time_19():
|
||||
from pyexcel_ods.ods import date_value
|
||||
|
||||
date_value("1234567890123456789")
|
||||
|
||||
|
||||
@raises(Exception)
|
||||
def test_fake_date_time_20():
|
||||
from pyexcel_ods.ods import date_value
|
||||
|
||||
date_value("12345678901234567890")
|
||||
|
||||
|
||||
def test_issue_13():
|
||||
test_file = "test_issue_13.ods"
|
||||
data = [
|
||||
[1, 2],
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
[3, 4]
|
||||
]
|
||||
data = [[1, 2], [], [], [], [3, 4]]
|
||||
save_data(test_file, {test_file: data})
|
||||
written_data = get_data(test_file, skip_empty_rows=False)
|
||||
eq_(data, written_data[test_file])
|
||||
|
@ -68,23 +68,20 @@ def test_issue_13():
|
|||
def test_issue_14():
|
||||
# pyexcel issue 61
|
||||
test_file = "issue_61.ods"
|
||||
data = get_data(get_fixtures(test_file),
|
||||
skip_empty_rows=True)
|
||||
eq_(data['S-LMC'], [[u'aaa'], [0]])
|
||||
data = get_data(get_fixtures(test_file), skip_empty_rows=True)
|
||||
eq_(data["S-LMC"], [[u"aaa"], [0]])
|
||||
|
||||
|
||||
def test_issue_6():
|
||||
test_file = "12_day_as_time.ods"
|
||||
data = get_data(get_fixtures(test_file),
|
||||
skip_empty_rows=True)
|
||||
eq_(data['Sheet1'][0][0].days, 12)
|
||||
data = get_data(get_fixtures(test_file), skip_empty_rows=True)
|
||||
eq_(data["Sheet1"][0][0].days, 12)
|
||||
|
||||
|
||||
def test_issue_19():
|
||||
test_file = "pyexcel_81_ods_19.ods"
|
||||
data = get_data(get_fixtures(test_file),
|
||||
skip_empty_rows=True)
|
||||
eq_(data['product.template'][1][1], 'PRODUCT NAME PMP')
|
||||
data = get_data(get_fixtures(test_file), skip_empty_rows=True)
|
||||
eq_(data["product.template"][1][1], "PRODUCT NAME PMP")
|
||||
|
||||
|
||||
def test_issue_83_ods_file_handle():
|
||||
|
@ -95,7 +92,7 @@ def test_issue_83_ods_file_handle():
|
|||
open_files_l1 = proc.open_files()
|
||||
|
||||
# start with a csv file
|
||||
data = pe.iget_array(file_name=test_file, library='pyexcel-ods')
|
||||
data = pe.iget_array(file_name=test_file, library="pyexcel-ods")
|
||||
open_files_l2 = proc.open_files()
|
||||
delta = len(open_files_l2) - len(open_files_l1)
|
||||
# cannot catch open file handle
|
||||
|
@ -120,25 +117,27 @@ def test_pr_22():
|
|||
test_file = get_fixtures("white_space.ods")
|
||||
data = get_data(test_file)
|
||||
# OrderedDict([(u'Sheet1', [[u'paragraph with tab, space, new line']])])
|
||||
eq_(data['Sheet1'][0][0], 'paragraph with tab(\t), space, \nnew line')
|
||||
eq_(data["Sheet1"][0][0], "paragraph with tab(\t), space, \nnew line")
|
||||
|
||||
|
||||
def test_issue_23():
|
||||
if not IN_TRAVIS:
|
||||
raise SkipTest()
|
||||
pe.get_book(url="https://github.com/pyexcel/pyexcel-ods/raw/master/tests/fixtures/white_space.ods") # noqa: E501
|
||||
pe.get_book(
|
||||
url="https://github.com/pyexcel/pyexcel-ods/raw/master/tests/fixtures/white_space.ods"
|
||||
) # noqa: E501
|
||||
|
||||
|
||||
def test_issue_24():
|
||||
test_file = get_fixtures("comment-in-cell.ods")
|
||||
data = get_data(test_file)
|
||||
eq_(data['Sheet1'], [['test']])
|
||||
eq_(data["Sheet1"], [["test"]])
|
||||
|
||||
|
||||
def test_issue_27():
|
||||
test_file = get_fixtures("issue_27.ods")
|
||||
data = get_data(test_file, skip_empty_rows=True)
|
||||
eq_(data['VGPMX'], [['', 'Cost Basis', '0']])
|
||||
eq_(data["VGPMX"], [["", "Cost Basis", "0"]])
|
||||
|
||||
|
||||
def test_issue_30():
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import os
|
||||
|
||||
from pyexcel_io import get_data, save_data
|
||||
from nose.tools import eq_
|
||||
from pyexcel_io import get_data, save_data
|
||||
|
||||
|
||||
class TestFilter:
|
||||
|
@ -13,49 +13,58 @@ class TestFilter:
|
|||
[3, 23, 33],
|
||||
[4, 24, 34],
|
||||
[5, 25, 35],
|
||||
[6, 26, 36]
|
||||
[6, 26, 36],
|
||||
]
|
||||
save_data(self.test_file, sample)
|
||||
self.sheet_name = "pyexcel_sheet1"
|
||||
|
||||
def test_filter_row(self):
|
||||
filtered_data = get_data(self.test_file, start_row=3,
|
||||
library="pyexcel-ods")
|
||||
filtered_data = get_data(
|
||||
self.test_file, start_row=3, library="pyexcel-ods"
|
||||
)
|
||||
expected = [[4, 24, 34], [5, 25, 35], [6, 26, 36]]
|
||||
eq_(filtered_data[self.sheet_name], expected)
|
||||
|
||||
def test_filter_row_2(self):
|
||||
filtered_data = get_data(self.test_file, start_row=3, row_limit=1,
|
||||
library="pyexcel-ods")
|
||||
filtered_data = get_data(
|
||||
self.test_file, start_row=3, row_limit=1, library="pyexcel-ods"
|
||||
)
|
||||
expected = [[4, 24, 34]]
|
||||
eq_(filtered_data[self.sheet_name], expected)
|
||||
|
||||
def test_filter_column(self):
|
||||
filtered_data = get_data(self.test_file, start_column=1,
|
||||
library="pyexcel-ods")
|
||||
expected = [[21, 31], [22, 32], [23, 33],
|
||||
[24, 34], [25, 35], [26, 36]]
|
||||
filtered_data = get_data(
|
||||
self.test_file, start_column=1, library="pyexcel-ods"
|
||||
)
|
||||
expected = [[21, 31], [22, 32], [23, 33], [24, 34], [25, 35], [26, 36]]
|
||||
eq_(filtered_data[self.sheet_name], expected)
|
||||
|
||||
def test_filter_column_2(self):
|
||||
filtered_data = get_data(self.test_file,
|
||||
start_column=1, column_limit=1,
|
||||
library="pyexcel-ods")
|
||||
filtered_data = get_data(
|
||||
self.test_file,
|
||||
start_column=1,
|
||||
column_limit=1,
|
||||
library="pyexcel-ods",
|
||||
)
|
||||
expected = [[21], [22], [23], [24], [25], [26]]
|
||||
eq_(filtered_data[self.sheet_name], expected)
|
||||
|
||||
def test_filter_both_ways(self):
|
||||
filtered_data = get_data(self.test_file,
|
||||
start_column=1, start_row=3,
|
||||
library="pyexcel-ods")
|
||||
filtered_data = get_data(
|
||||
self.test_file, start_column=1, start_row=3, library="pyexcel-ods"
|
||||
)
|
||||
expected = [[24, 34], [25, 35], [26, 36]]
|
||||
eq_(filtered_data[self.sheet_name], expected)
|
||||
|
||||
def test_filter_both_ways_2(self):
|
||||
filtered_data = get_data(self.test_file,
|
||||
start_column=1, column_limit=1,
|
||||
start_row=3, row_limit=1,
|
||||
library="pyexcel-ods")
|
||||
filtered_data = get_data(
|
||||
self.test_file,
|
||||
start_column=1,
|
||||
column_limit=1,
|
||||
start_row=3,
|
||||
row_limit=1,
|
||||
library="pyexcel-ods",
|
||||
)
|
||||
expected = [[24]]
|
||||
eq_(filtered_data[self.sheet_name], expected)
|
||||
|
||||
|
|
|
@ -1,54 +1,66 @@
|
|||
import os
|
||||
from textwrap import dedent
|
||||
from nose.tools import eq_
|
||||
|
||||
import pyexcel as pe
|
||||
from nose.tools import eq_
|
||||
|
||||
|
||||
class TestAutoDetectInt:
|
||||
def setUp(self):
|
||||
self.content = [[1, 2, 3.1]]
|
||||
self.test_file = "test_auto_detect_init.ods"
|
||||
pe.save_as(
|
||||
array=self.content, dest_file_name=self.test_file
|
||||
)
|
||||
pe.save_as(array=self.content, dest_file_name=self.test_file)
|
||||
|
||||
def test_auto_detect_int(self):
|
||||
sheet = pe.get_sheet(file_name=self.test_file, library="pyexcel-ods")
|
||||
expected = dedent("""
|
||||
expected = dedent(
|
||||
"""
|
||||
pyexcel_sheet1:
|
||||
+---+---+-----+
|
||||
| 1 | 2 | 3.1 |
|
||||
+---+---+-----+""").strip()
|
||||
+---+---+-----+"""
|
||||
).strip()
|
||||
eq_(str(sheet), expected)
|
||||
|
||||
def test_get_book_auto_detect_int(self):
|
||||
book = pe.get_book(file_name=self.test_file, library="pyexcel-ods")
|
||||
expected = dedent("""
|
||||
expected = dedent(
|
||||
"""
|
||||
pyexcel_sheet1:
|
||||
+---+---+-----+
|
||||
| 1 | 2 | 3.1 |
|
||||
+---+---+-----+""").strip()
|
||||
+---+---+-----+"""
|
||||
).strip()
|
||||
eq_(str(book), expected)
|
||||
|
||||
def test_auto_detect_int_false(self):
|
||||
sheet = pe.get_sheet(file_name=self.test_file, auto_detect_int=False,
|
||||
library="pyexcel-ods")
|
||||
expected = dedent("""
|
||||
sheet = pe.get_sheet(
|
||||
file_name=self.test_file,
|
||||
auto_detect_int=False,
|
||||
library="pyexcel-ods",
|
||||
)
|
||||
expected = dedent(
|
||||
"""
|
||||
pyexcel_sheet1:
|
||||
+-----+-----+-----+
|
||||
| 1.0 | 2.0 | 3.1 |
|
||||
+-----+-----+-----+""").strip()
|
||||
+-----+-----+-----+"""
|
||||
).strip()
|
||||
eq_(str(sheet), expected)
|
||||
|
||||
def test_get_book_auto_detect_int_false(self):
|
||||
book = pe.get_book(file_name=self.test_file, auto_detect_int=False,
|
||||
library="pyexcel-ods")
|
||||
expected = dedent("""
|
||||
book = pe.get_book(
|
||||
file_name=self.test_file,
|
||||
auto_detect_int=False,
|
||||
library="pyexcel-ods",
|
||||
)
|
||||
expected = dedent(
|
||||
"""
|
||||
pyexcel_sheet1:
|
||||
+-----+-----+-----+
|
||||
| 1.0 | 2.0 | 3.1 |
|
||||
+-----+-----+-----+""").strip()
|
||||
+-----+-----+-----+"""
|
||||
).strip()
|
||||
eq_(str(book), expected)
|
||||
|
||||
def tearDown(self):
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
import os
|
||||
|
||||
import pyexcel
|
||||
|
||||
|
||||
def test_reading_multiline_ods():
|
||||
testfile = os.path.join("tests", "fixtures", "multilineods.ods")
|
||||
sheet = pyexcel.get_sheet(file_name=testfile)
|
||||
assert sheet[0, 0] == '1\n2\n3\n4'
|
||||
assert sheet[1, 0] == 'Line 1\n\nLine 2'
|
||||
assert sheet[0, 0] == "1\n2\n3\n4"
|
||||
assert sheet[1, 0] == "Line 1\n\nLine 2"
|
||||
|
||||
|
||||
def test_writing_multiline_ods():
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
import os
|
||||
import sys
|
||||
|
||||
import pyexcel
|
||||
from nose.tools import raises
|
||||
|
||||
from base import PyexcelMultipleSheetBase
|
||||
|
||||
if sys.version_info[0] == 2 and sys.version_info[1] < 7:
|
||||
|
@ -42,8 +44,7 @@ class TestAddBooks:
|
|||
3,3,3,3
|
||||
"""
|
||||
self.rows = 3
|
||||
pyexcel.save_book_as(bookdict=self.content,
|
||||
dest_file_name=file)
|
||||
pyexcel.save_book_as(bookdict=self.content, dest_file_name=file)
|
||||
|
||||
def setUp(self):
|
||||
self.testfile = "multiple1.ods"
|
||||
|
@ -55,12 +56,12 @@ class TestAddBooks:
|
|||
def test_load_a_single_sheet(self):
|
||||
b1 = pyexcel.get_book(file_name=self.testfile, sheet_name="Sheet1")
|
||||
assert len(b1.sheet_names()) == 1
|
||||
assert b1['Sheet1'].to_array() == self.content['Sheet1']
|
||||
assert b1["Sheet1"].to_array() == self.content["Sheet1"]
|
||||
|
||||
def test_load_a_single_sheet2(self):
|
||||
b1 = pyexcel.load_book(self.testfile, sheet_index=0)
|
||||
assert len(b1.sheet_names()) == 1
|
||||
assert b1['Sheet1'].to_array() == self.content['Sheet1']
|
||||
assert b1["Sheet1"].to_array() == self.content["Sheet1"]
|
||||
|
||||
@raises(IndexError)
|
||||
def test_load_a_single_sheet3(self):
|
||||
|
@ -229,17 +230,17 @@ class TestMultiSheetReader:
|
|||
self.testfile = "file_with_an_empty_sheet.ods"
|
||||
|
||||
def test_reader_with_correct_sheets(self):
|
||||
r = pyexcel.BookReader(os.path.join("tests", "fixtures",
|
||||
self.testfile))
|
||||
r = pyexcel.BookReader(
|
||||
os.path.join("tests", "fixtures", self.testfile)
|
||||
)
|
||||
assert r.number_of_sheets() == 3
|
||||
|
||||
|
||||
def _produce_ordered_dict():
|
||||
data_dict = OrderedDict()
|
||||
data_dict.update({
|
||||
"Sheet1": [[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]]})
|
||||
data_dict.update({
|
||||
"Sheet2": [[4, 4, 4, 4], [5, 5, 5, 5], [6, 6, 6, 6]]})
|
||||
data_dict.update({
|
||||
"Sheet3": [[u'X', u'Y', u'Z'], [1, 4, 7], [2, 5, 8], [3, 6, 9]]})
|
||||
data_dict.update({"Sheet1": [[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]]})
|
||||
data_dict.update({"Sheet2": [[4, 4, 4, 4], [5, 5, 5, 5], [6, 6, 6, 6]]})
|
||||
data_dict.update(
|
||||
{"Sheet3": [[u"X", u"Y", u"Z"], [1, 4, 7], [2, 5, 8], [3, 6, 9]]}
|
||||
)
|
||||
return data_dict
|
||||
|
|
|
@ -1,15 +1,14 @@
|
|||
import os
|
||||
|
||||
from base import ODSCellTypes
|
||||
from pyexcel_ods.odsr import ODSBook
|
||||
from pyexcel_ods.odsw import ODSWriter
|
||||
from base import ODSCellTypes
|
||||
|
||||
|
||||
class TestODSReader(ODSCellTypes):
|
||||
def setUp(self):
|
||||
r = ODSBook()
|
||||
r.open(os.path.join("tests",
|
||||
"fixtures",
|
||||
"ods_formats.ods"))
|
||||
r.open(os.path.join("tests", "fixtures", "ods_formats.ods"))
|
||||
self.data = r.read_all()
|
||||
for key in self.data.keys():
|
||||
self.data[key] = list(self.data[key])
|
||||
|
@ -19,9 +18,7 @@ class TestODSReader(ODSCellTypes):
|
|||
class TestODSWriter(ODSCellTypes):
|
||||
def setUp(self):
|
||||
r = ODSBook()
|
||||
r.open(os.path.join("tests",
|
||||
"fixtures",
|
||||
"ods_formats.ods"))
|
||||
r.open(os.path.join("tests", "fixtures", "ods_formats.ods"))
|
||||
self.data1 = r.read_all()
|
||||
self.testfile = "odswriter.ods"
|
||||
w = ODSWriter()
|
||||
|
|
|
@ -1,33 +1,32 @@
|
|||
import os
|
||||
|
||||
import pyexcel
|
||||
from nose.tools import eq_
|
||||
|
||||
from base import create_sample_file1
|
||||
|
||||
|
||||
class TestStringIO:
|
||||
|
||||
def test_ods_stringio(self):
|
||||
testfile = "cute.ods"
|
||||
create_sample_file1(testfile)
|
||||
with open(testfile, "rb") as f:
|
||||
content = f.read()
|
||||
r = pyexcel.get_sheet(file_type="ods", file_content=content,
|
||||
library="pyexcel-ods")
|
||||
result = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 1.1, 1]
|
||||
r = pyexcel.get_sheet(
|
||||
file_type="ods", file_content=content, library="pyexcel-ods"
|
||||
)
|
||||
result = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", 1.1, 1]
|
||||
actual = list(r.enumerate())
|
||||
eq_(result, actual)
|
||||
if os.path.exists(testfile):
|
||||
os.unlink(testfile)
|
||||
|
||||
def test_ods_output_stringio(self):
|
||||
data = [
|
||||
[1, 2, 3],
|
||||
[4, 5, 6]
|
||||
]
|
||||
io = pyexcel.save_as(dest_file_type="ods",
|
||||
array=data)
|
||||
r = pyexcel.get_sheet(file_type="ods", file_content=io.getvalue(),
|
||||
library="pyexcel-ods")
|
||||
data = [[1, 2, 3], [4, 5, 6]]
|
||||
io = pyexcel.save_as(dest_file_type="ods", array=data)
|
||||
r = pyexcel.get_sheet(
|
||||
file_type="ods", file_content=io.getvalue(), library="pyexcel-ods"
|
||||
)
|
||||
result = [1, 2, 3, 4, 5, 6]
|
||||
actual = list(r.enumerate())
|
||||
eq_(result, actual)
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
import os
|
||||
from pyexcel_ods.odsw import ODSWriter as Writer
|
||||
|
||||
from base import PyexcelHatWriterBase, PyexcelWriterBase
|
||||
from pyexcel_ods.odsr import ODSBook as Reader
|
||||
from base import PyexcelWriterBase, PyexcelHatWriterBase
|
||||
from pyexcel_ods.odsw import ODSWriter as Writer
|
||||
|
||||
|
||||
class TestNativeODSWriter:
|
||||
|
@ -9,7 +10,7 @@ class TestNativeODSWriter:
|
|||
self.content = {
|
||||
"Sheet1": [[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]],
|
||||
"Sheet2": [[4, 4, 4, 4], [5, 5, 5, 5], [6, 6, 6, 6]],
|
||||
"Sheet3": [[u'X', u'Y', u'Z'], [1, 4, 7], [2, 5, 8], [3, 6, 9]]
|
||||
"Sheet3": [[u"X", u"Y", u"Z"], [1, 4, 7], [2, 5, 8], [3, 6, 9]],
|
||||
}
|
||||
self.testfile = "writer.ods"
|
||||
writer = Writer()
|
||||
|
|
Loading…
Reference in New Issue