Coverage for /home/martinb/.local/share/virtualenvs/camcops/lib/python3.6/site-packages/pyexcel_io/utils.py : 58%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1"""
2 pyexcel_io.utils
3 ~~~~~~~~~~~~~~~~~~~
5 utility functions
7 :copyright: (c) 2014-2020 by Onni Software Ltd.
8 :license: New BSD License, see LICENSE for more details
9"""
10import pyexcel_io.constants as constants
12XLS_PLUGIN = "pyexcel-xls"
13XLSX_PLUGIN = "pyexcel-xlsx"
14ODS_PLUGIN = "pyexcel-ods"
15ODS3_PLUGIN = "pyexcel-ods3"
16ODSR_PLUGIN = "pyexcel-odsr"
17ODSW_PLUGIN = "pyexcel-odsw"
18XLSXR_PLUGIN = "pyexcel-xlsxr"
19XLSXW_PLUGIN = "pyexcel-xlsxw"
20XLSBR_PLUGIN = "pyexcel-xlsbr"
21HTMLR_PLUGIN = "pyexcel-htmlr"
22PDFR_PLUGIN = "pyexcel-pdfr"
23IO_ITSELF = "pyexcel-io"
25AVAILABLE_NEW_READERS = {}
27AVAILABLE_READERS = {
28 constants.FILE_FORMAT_CSV: [IO_ITSELF],
29 constants.FILE_FORMAT_XLS: [XLS_PLUGIN],
30 constants.FILE_FORMAT_XLSX: [XLS_PLUGIN, XLSX_PLUGIN],
31 constants.FILE_FORMAT_XLSM: [XLS_PLUGIN, XLSX_PLUGIN],
32 constants.FILE_FORMAT_ODS: [ODS_PLUGIN, ODS3_PLUGIN, ODSR_PLUGIN],
33 constants.FILE_FORMAT_TSV: [IO_ITSELF],
34 constants.FILE_FORMAT_CSVZ: [IO_ITSELF],
35 constants.FILE_FORMAT_TSVZ: [IO_ITSELF],
36 constants.FILE_FORMAT_XLSB: [XLSBR_PLUGIN],
37 constants.FILE_FORMAT_HTML: [HTMLR_PLUGIN],
38 constants.FILE_FORMAT_PDF: [PDFR_PLUGIN],
39}
41AVAILABLE_WRITERS = {
42 constants.FILE_FORMAT_XLS: [XLS_PLUGIN],
43 constants.FILE_FORMAT_XLSX: [XLSX_PLUGIN, XLSXW_PLUGIN],
44 constants.FILE_FORMAT_XLSM: [XLSX_PLUGIN],
45 constants.FILE_FORMAT_ODS: [ODS_PLUGIN, ODS3_PLUGIN, ODSW_PLUGIN],
46 constants.FILE_FORMAT_CSV: [IO_ITSELF],
47 constants.FILE_FORMAT_TSV: [IO_ITSELF],
48 constants.FILE_FORMAT_CSVZ: [IO_ITSELF],
49 constants.FILE_FORMAT_TSVZ: [IO_ITSELF],
50}
53def _index_filter(current_index, start, limit=-1):
54 out_range = constants.SKIP_DATA
55 if current_index >= start:
56 out_range = constants.TAKE_DATA
57 if limit > 0 and out_range == constants.TAKE_DATA:
58 if current_index >= (start + limit):
59 out_range = constants.STOP_ITERATION
60 return out_range
63def is_empty_array(array):
64 """
65 Check if an array is an array of '' or not
66 """
67 empty_array = [element for element in array if element != ""]
68 return len(empty_array) == 0
71def swap_empty_string_for_none(array):
72 """ replace empty string fields with None """
74 def swap(value):
75 """ change empty string to None """
76 if value == "":
77 return None
79 else:
80 return value
82 return [swap(x) for x in array]