Hide keyboard shortcuts

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 ~~~~~~~~~~~~~~~~~~~ 

4 

5 utility functions 

6 

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 

11 

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" 

24 

25AVAILABLE_NEW_READERS = {} 

26 

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} 

40 

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} 

51 

52 

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 

61 

62 

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 

69 

70 

71def swap_empty_string_for_none(array): 

72 """ replace empty string fields with None """ 

73 

74 def swap(value): 

75 """ change empty string to None """ 

76 if value == "": 

77 return None 

78 

79 else: 

80 return value 

81 

82 return [swap(x) for x in array]