pyexcel 0.7.2__tar.gz → 0.7.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. {pyexcel-0.7.2 → pyexcel-0.7.3}/CHANGELOG.rst +10 -0
  2. {pyexcel-0.7.2 → pyexcel-0.7.3}/PKG-INFO +12 -2
  3. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/conf.py +2 -2
  4. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/__init__.py +12 -10
  5. pyexcel-0.7.3/pyexcel/__version__.py +2 -0
  6. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/_compact.py +13 -6
  7. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/book.py +7 -6
  8. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/constants.py +6 -5
  9. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/cookbook.py +58 -52
  10. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/core.py +6 -5
  11. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/deprecated.py +9 -6
  12. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/docstrings/__init__.py +7 -6
  13. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/docstrings/core.py +6 -5
  14. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/docstrings/keywords.py +6 -5
  15. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/docstrings/meta.py +6 -5
  16. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/exceptions.py +5 -5
  17. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/__init__.py +6 -5
  18. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/attributes.py +6 -5
  19. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/common.py +7 -6
  20. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/core.py +6 -5
  21. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/garbagecollector.py +7 -8
  22. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/generators.py +8 -7
  23. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/meta.py +32 -12
  24. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/plugins.py +6 -5
  25. pyexcel-0.7.3/pyexcel/internal/sheets/__init__.py +12 -0
  26. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/sheets/_shared.py +7 -6
  27. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/sheets/column.py +18 -11
  28. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/sheets/formatters.py +6 -5
  29. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/sheets/matrix.py +10 -7
  30. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/sheets/row.py +6 -5
  31. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/source_plugin.py +27 -11
  32. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/parser.py +7 -6
  33. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/__init__.py +18 -11
  34. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/parsers/__init__.py +8 -6
  35. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/parsers/django.py +14 -7
  36. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/parsers/excel.py +20 -9
  37. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/parsers/sqlalchemy.py +14 -7
  38. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/renderers/__init__.py +8 -6
  39. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/renderers/_texttable.py +7 -6
  40. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/renderers/django.py +12 -6
  41. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/renderers/excel.py +17 -7
  42. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/renderers/sqlalchemy.py +18 -7
  43. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/__init__.py +6 -5
  44. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/db_sources.py +13 -7
  45. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/django.py +11 -6
  46. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/file_input.py +8 -6
  47. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/file_output.py +15 -9
  48. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/http.py +6 -5
  49. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/memory_input.py +10 -7
  50. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/output_to_memory.py +12 -7
  51. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/params.py +6 -5
  52. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/pydata/arraysource.py +6 -5
  53. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/pydata/bookdict.py +6 -5
  54. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/pydata/common.py +9 -7
  55. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/pydata/dictsource.py +14 -7
  56. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/pydata/records.py +6 -5
  57. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/querysets.py +6 -5
  58. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/sheet_stream_source.py +6 -5
  59. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/sqlalchemy.py +12 -6
  60. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/renderer.py +28 -10
  61. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/sheet.py +7 -6
  62. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/source.py +8 -7
  63. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel.egg-info/PKG-INFO +12 -2
  64. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel.egg-info/SOURCES.txt +1 -0
  65. {pyexcel-0.7.2 → pyexcel-0.7.3}/setup.py +4 -4
  66. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_bug_fixes.py +5 -2
  67. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_cookbook.py +3 -1
  68. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_examples.py +6 -3
  69. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_exploitation.py +15 -5
  70. pyexcel-0.7.3/tests/test_fileio.py +75 -0
  71. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_gabagecollector.py +3 -2
  72. pyexcel-0.7.3/tests/test_pathlib_path.py +29 -0
  73. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_reader.py +4 -2
  74. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_sheet_stream.py +3 -1
  75. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_signature_fuction.py +113 -13
  76. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_sources.py +4 -1
  77. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_sql.py +6 -2
  78. pyexcel-0.7.2/pyexcel/__version__.py +0 -2
  79. pyexcel-0.7.2/pyexcel/internal/sheets/__init__.py +0 -11
  80. pyexcel-0.7.2/tests/test_fileio.py +0 -40
  81. {pyexcel-0.7.2 → pyexcel-0.7.3}/CONTRIBUTORS.rst +0 -0
  82. {pyexcel-0.7.2 → pyexcel-0.7.3}/LICENSE +0 -0
  83. {pyexcel-0.7.2 → pyexcel-0.7.3}/MANIFEST.in +0 -0
  84. {pyexcel-0.7.2 → pyexcel-0.7.3}/README.rst +0 -0
  85. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/Makefile +0 -0
  86. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/make.bat +0 -0
  87. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/requirements.txt +0 -0
  88. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/_static/handsontable.full.min.css +0 -0
  89. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/_static/handsontable.full.min.js +0 -0
  90. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/_static/images/architecture.svg +0 -0
  91. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/_static/theme_overrides.css +0 -0
  92. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/_templates/layout.html +0 -0
  93. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/answers.rst +0 -0
  94. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/api.rst +0 -0
  95. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/architecture.rst +0 -0
  96. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/attributes.rst +0 -0
  97. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/bigdata.rst +0 -0
  98. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/book.rst +0 -0
  99. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/capability.rst +0 -0
  100. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/changelog.rst +0 -0
  101. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/coffee.csv +0 -0
  102. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/cookbook.rst +0 -0
  103. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/database.rst +0 -0
  104. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/design.rst +0 -0
  105. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/entity-relationship-diagram.dia +0 -0
  106. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/entity-relationship-diagram.png +0 -0
  107. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.bookdict.rst +0 -0
  108. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.csv.rst +0 -0
  109. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.csvz.rst +0 -0
  110. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.number_of_sheets.rst +0 -0
  111. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.ods.rst +0 -0
  112. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.rst +0 -0
  113. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.save_as.rst +0 -0
  114. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.save_to_database.rst +0 -0
  115. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.save_to_django_models.rst +0 -0
  116. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.save_to_memory.rst +0 -0
  117. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.sheet_names.rst +0 -0
  118. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.stream.rst +0 -0
  119. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.tsv.rst +0 -0
  120. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.tsvz.rst +0 -0
  121. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.url.rst +0 -0
  122. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.xls.rst +0 -0
  123. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.xlsm.rst +0 -0
  124. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.xlsx.rst +0 -0
  125. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.__getitem__.rst +0 -0
  126. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.array.rst +0 -0
  127. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.cell_value.rst +0 -0
  128. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.colnames.rst +0 -0
  129. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.column_at.rst +0 -0
  130. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.column_range.rst +0 -0
  131. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.content.rst +0 -0
  132. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.csv.rst +0 -0
  133. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.csvz.rst +0 -0
  134. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.cut.rst +0 -0
  135. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.delete_columns.rst +0 -0
  136. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.delete_named_column_at.rst +0 -0
  137. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.delete_named_row_at.rst +0 -0
  138. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.delete_rows.rst +0 -0
  139. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.dict.rst +0 -0
  140. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.extend_columns.rst +0 -0
  141. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.extend_rows.rst +0 -0
  142. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.filter.rst +0 -0
  143. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.format.rst +0 -0
  144. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.map.rst +0 -0
  145. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.name_columns_by_row.rst +0 -0
  146. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.name_rows_by_column.rst +0 -0
  147. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.named_column_at.rst +0 -0
  148. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.named_row_at.rst +0 -0
  149. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.number_of_columns.rst +0 -0
  150. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.number_of_rows.rst +0 -0
  151. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.ods.rst +0 -0
  152. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.paste.rst +0 -0
  153. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.project.rst +0 -0
  154. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.records.rst +0 -0
  155. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.region.rst +0 -0
  156. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.row_at.rst +0 -0
  157. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.row_range.rst +0 -0
  158. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.rownames.rst +0 -0
  159. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.rst +0 -0
  160. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.save_as.rst +0 -0
  161. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.save_to_database.rst +0 -0
  162. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.save_to_django_model.rst +0 -0
  163. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.save_to_memory.rst +0 -0
  164. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.set_column_at.rst +0 -0
  165. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.set_named_column_at.rst +0 -0
  166. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.set_named_row_at.rst +0 -0
  167. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.set_row_at.rst +0 -0
  168. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.stream.rst +0 -0
  169. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.transpose.rst +0 -0
  170. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.tsv.rst +0 -0
  171. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.tsvz.rst +0 -0
  172. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.url.rst +0 -0
  173. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.xls.rst +0 -0
  174. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.xlsm.rst +0 -0
  175. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.xlsx.rst +0 -0
  176. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.extract_a_sheet_from_a_book.rst +0 -0
  177. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.free_resources.rst +0 -0
  178. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.get_array.rst +0 -0
  179. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.get_book.rst +0 -0
  180. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.get_book_dict.rst +0 -0
  181. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.get_dict.rst +0 -0
  182. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.get_records.rst +0 -0
  183. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.get_sheet.rst +0 -0
  184. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.iget_array.rst +0 -0
  185. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.iget_book.rst +0 -0
  186. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.iget_records.rst +0 -0
  187. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.isave_as.rst +0 -0
  188. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.isave_book_as.rst +0 -0
  189. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.merge_all_to_a_book.rst +0 -0
  190. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.merge_csv_to_a_book.rst +0 -0
  191. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.save_as.rst +0 -0
  192. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.save_book_as.rst +0 -0
  193. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.split_a_book.rst +0 -0
  194. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/guide.rst +0 -0
  195. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/iapi/pyexcel.internal.generators.BookStream.rst +0 -0
  196. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/iapi/pyexcel.internal.generators.SheetStream.rst +0 -0
  197. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/iapi/pyexcel.internal.sheets.Column.rst +0 -0
  198. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/iapi/pyexcel.internal.sheets.Matrix.rst +0 -0
  199. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/iapi/pyexcel.internal.sheets.Row.rst +0 -0
  200. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/iapi.rst +0 -0
  201. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/index.rst +0 -0
  202. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/logging.rst +0 -0
  203. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/migration_guide.rst +0 -0
  204. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/note_on_pypy.rst +0 -0
  205. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/plugin_howto.rst +0 -0
  206. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/pyinstaller.rst +0 -0
  207. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/quickstart.rst +0 -0
  208. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/renderers.rst +0 -0
  209. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/sheet.rst +0 -0
  210. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/showcases/db_injection.rst +0 -0
  211. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/sources.rst +0 -0
  212. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/spelling_wordlist.txt +0 -0
  213. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/tutorial.rst +0 -0
  214. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/tutorial02.rst +0 -0
  215. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/tutorial03.rst +0 -0
  216. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/tutorial04.rst +0 -0
  217. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/tutorial05.rst +0 -0
  218. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/tutorial06.rst +0 -0
  219. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/tutorial_data_conversion.rst +0 -0
  220. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/tutorial_file.rst +0 -0
  221. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/two-liners.rst +0 -0
  222. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/uml/architecture.uml +0 -0
  223. {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/webdev.rst +0 -0
  224. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/README.rst +0 -0
  225. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/convert_xls_to_xlsx.py +0 -0
  226. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/example.csv +0 -0
  227. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/example.xls +0 -0
  228. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/example.xlsm +0 -0
  229. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/example.xlsx +0 -0
  230. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/example_series.xls +0 -0
  231. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/example_series_filter.xls +0 -0
  232. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/jsonify.py +0 -0
  233. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/multiple-sheets-example.xls +0 -0
  234. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/multiple-sheets.xls +0 -0
  235. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/multiple-sheets.xlsx +0 -0
  236. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/read_cell_by_cell.py +0 -0
  237. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/read_column_by_column.py +0 -0
  238. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/read_excel_book.py +0 -0
  239. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/read_row_by_row.py +0 -0
  240. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/series.py +0 -0
  241. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/write_excel_book.py +0 -0
  242. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/cookbook/merge_sheets.py +0 -0
  243. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/cookbook/scattered-csv-files/1.csv +0 -0
  244. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/cookbook/scattered-csv-files/2.csv +0 -0
  245. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/cookbook/scattered-csv-files/3.csv +0 -0
  246. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/database/import_xls_into_database_via_sqlalchemy.py +0 -0
  247. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/formatting/formatter01.py +0 -0
  248. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/formatting/formatter02.py +0 -0
  249. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/formatting/tutorial_datatype_01.xls +0 -0
  250. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/formatting/tutorial_datatype_02.xls +0 -0
  251. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/memoryfile/README.rst +0 -0
  252. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/memoryfile/pyexcel_server.py +0 -0
  253. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/memoryfile/templates/upload.html +0 -0
  254. {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/simple/multiple-sheets.xls +0 -0
  255. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/docstrings/garbagecollector.py +0 -0
  256. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/sheets/extended_list.py +0 -0
  257. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/utils.py +0 -0
  258. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/pydata/__init__.py +0 -0
  259. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel.egg-info/dependency_links.txt +0 -0
  260. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel.egg-info/not-zip-safe +0 -0
  261. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel.egg-info/requires.txt +0 -0
  262. {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel.egg-info/top_level.txt +0 -0
  263. {pyexcel-0.7.2 → pyexcel-0.7.3}/setup.cfg +0 -0
  264. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/__init__.py +0 -0
  265. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/_compact.py +0 -0
  266. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/base.py +0 -0
  267. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/db.py +0 -0
  268. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/bug_01.csv +0 -0
  269. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/bug_176.xlsx +0 -0
  270. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/date_field.xls +0 -0
  271. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/empty.csv +0 -0
  272. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/file_with_an_empty_sheet.xlsx +0 -0
  273. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/force_type.txt +0 -0
  274. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/issue_241/1.csv +0 -0
  275. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/issue_241/2.csv +0 -0
  276. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/non-uniform-rows.csv +0 -0
  277. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/ods_formats.ods +0 -0
  278. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/test-multiple.csvz +0 -0
  279. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/test-single.csvz +0 -0
  280. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/test_cook_book_merge_alphabets.csv +0 -0
  281. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/test_cook_book_merge_alphabets_2.csv +0 -0
  282. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/test_cook_book_merge_numbers.csv +0 -0
  283. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/test_cook_book_merge_numbers_2.csv +0 -0
  284. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/requirements.txt +0 -0
  285. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_book.py +0 -0
  286. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_book_stream.py +0 -0
  287. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_django_related_functions.py +0 -0
  288. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_file_type_as_attribute.py +0 -0
  289. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_formatters.py +0 -0
  290. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_http_source.py +0 -0
  291. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_internals.py +0 -0
  292. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_iterator.py +0 -0
  293. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_multiple_sheets.py +0 -0
  294. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_parser.py +0 -0
  295. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_presentation.py +0 -0
  296. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_pyexcel_list.py +0 -0
  297. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_renderer.py +0 -0
  298. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_sheet.py +0 -0
  299. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_sheet_access.py +0 -0
  300. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_sheet_attributes.py +0 -0
  301. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_sheet_column.py +0 -0
  302. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_sheet_row.py +0 -0
  303. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_sheet_update.py +0 -0
  304. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_sheets.py +0 -0
  305. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_stringio.py +0 -0
  306. {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_utils.py +0 -0
@@ -1,6 +1,16 @@
1
1
  Change log
2
2
  ================================================================================
3
3
 
4
+ 0.7.3 - 12.04.2025
5
+ --------------------------------------------------------------------------------
6
+
7
+ **Fixed**
8
+
9
+ #. `#263 <https://github.com/pyexcel/pyexcel/issues/263>`_: support pathlib from
10
+ python 3.4
11
+ #. `#267 <https://github.com/pyexcel/pyexcel/issues/267>`_: better error message
12
+ for file_name
13
+
4
14
  0.7.2 - 23.03.2025
5
15
  --------------------------------------------------------------------------------
6
16
 
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyexcel
3
- Version: 0.7.2
3
+ Version: 0.7.3
4
4
  Summary: A wrapper library that provides one API to read, manipulate and writedata in different excel formats
5
5
  Home-page: https://github.com/pyexcel/pyexcel
6
- Download-URL: https://github.com/pyexcel/pyexcel/archive/0.7.2.tar.gz
6
+ Download-URL: https://github.com/pyexcel/pyexcel/archive/0.7.3.tar.gz
7
7
  Author: C.W.
8
8
  Author-email: info@pyexcel.org
9
9
  License: New BSD
@@ -1244,6 +1244,16 @@ In alphabetical order:
1244
1244
  Change log
1245
1245
  ================================================================================
1246
1246
 
1247
+ 0.7.3 - 12.04.2025
1248
+ --------------------------------------------------------------------------------
1249
+
1250
+ **Fixed**
1251
+
1252
+ #. `#263 <https://github.com/pyexcel/pyexcel/issues/263>`_: support pathlib from
1253
+ python 3.4
1254
+ #. `#267 <https://github.com/pyexcel/pyexcel/issues/267>`_: better error message
1255
+ for file_name
1256
+
1247
1257
  0.7.2 - 23.03.2025
1248
1258
  --------------------------------------------------------------------------------
1249
1259
 
@@ -26,9 +26,9 @@ project = 'pyexcel'
26
26
  copyright = '2014-2025 Onni Software Ltd.'
27
27
  author = 'C.W.'
28
28
  # The short X.Y version
29
- version = '0.7.2'
29
+ version = '0.7.3'
30
30
  # The full version, including alpha/beta/rc tags
31
- release = '0.7.2'
31
+ release = '0.7.3'
32
32
 
33
33
  # -- General configuration ---------------------------------------------------
34
34
 
@@ -1,14 +1,15 @@
1
1
  """
2
- pyexcel
3
- ~~~~~~~~~~~~~~~~~~~
2
+ pyexcel
3
+ ~~~~~~~~~~~~~~~~~~~
4
4
 
5
- **pyexcel** is a wrapper library to read, manipulate and
6
- write data in different excel formats: csv, ods, xls, xlsx
7
- and xlsm. It does not support formulas, styles and charts.
5
+ **pyexcel** is a wrapper library to read, manipulate and
6
+ write data in different excel formats: csv, ods, xls, xlsx
7
+ and xlsm. It does not support formulas, styles and charts.
8
8
 
9
- :copyright: (c) 2014-2025 by Onni Software Ltd.
10
- :license: New BSD License, see LICENSE for more details
9
+ :copyright: (c) 2014-2025 by Onni Software Ltd.
10
+ :license: New BSD License, see LICENSE for more details
11
11
  """
12
+
12
13
  from .book import Book
13
14
  from .core import (
14
15
  save_as,
@@ -23,15 +24,16 @@ from .core import (
23
24
  iget_records,
24
25
  save_book_as,
25
26
  get_book_dict,
26
- isave_book_as
27
+ isave_book_as,
27
28
  )
28
29
  from .sheet import Sheet
30
+
29
31
  # flake8: noqa
30
32
  from .cookbook import (
31
33
  split_a_book,
32
34
  merge_all_to_a_book,
33
35
  merge_csv_to_a_book,
34
- extract_a_sheet_from_a_book
36
+ extract_a_sheet_from_a_book,
35
37
  )
36
38
  from .deprecated import (
37
39
  Reader,
@@ -43,7 +45,7 @@ from .deprecated import (
43
45
  load_from_dict,
44
46
  load_from_memory,
45
47
  load_from_records,
46
- load_book_from_memory
48
+ load_book_from_memory,
47
49
  )
48
50
  from .__version__ import __author__, __version__
49
51
  from .internal.garbagecollector import free_resources
@@ -0,0 +1,2 @@
1
+ __version__ = '0.7.3'
2
+ __author__ = 'C.W.'
@@ -1,12 +1,13 @@
1
1
  """
2
- pyexcel._compact
3
- ~~~~~~~~~~~~~~~~~~~
2
+ pyexcel._compact
3
+ ~~~~~~~~~~~~~~~~~~~
4
4
 
5
- Compatibles
5
+ Compatibles
6
6
 
7
- :copyright: (c) 2014-2025 by Onni Software Ltd.
8
- :license: New BSD License, see LICENSE for more details
7
+ :copyright: (c) 2014-2025 by Onni Software Ltd.
8
+ :license: New BSD License, see LICENSE for more details
9
9
  """
10
+
10
11
  # flake8: noqa
11
12
  # pylint: disable=unused-import
12
13
  # pylint: disable=import-error
@@ -18,9 +19,9 @@ import sys
18
19
  import warnings
19
20
  from io import BytesIO, StringIO
20
21
  from urllib import request
22
+ from pathlib import Path
21
23
  from textwrap import dedent
22
24
  from itertools import zip_longest
23
-
24
25
  from collections import OrderedDict
25
26
 
26
27
  PY2 = sys.version_info[0] == 2
@@ -72,3 +73,9 @@ def append_doc(value):
72
73
  return func
73
74
 
74
75
  return _doc
76
+
77
+
78
+ def get_string_file_name(file_name):
79
+ if isinstance(file_name, Path):
80
+ file_name = str(file_name.resolve())
81
+ return file_name
@@ -1,16 +1,17 @@
1
1
  """
2
- pyexcel.book
3
- ~~~~~~~~~~~~~~~~~~~
2
+ pyexcel.book
3
+ ~~~~~~~~~~~~~~~~~~~
4
4
 
5
- Excel book
5
+ Excel book
6
6
 
7
- :copyright: (c) 2014-2025 by Onni Software Ltd.
8
- :license: New BSD License, see LICENSE for more details
7
+ :copyright: (c) 2014-2025 by Onni Software Ltd.
8
+ :license: New BSD License, see LICENSE for more details
9
9
  """
10
+
10
11
  from pyexcel.sheet import Sheet
12
+ from pyexcel._compact import OrderedDict
11
13
  from pyexcel.internal.meta import BookMeta
12
14
  from pyexcel.internal.common import SheetIterator
13
- from pyexcel._compact import OrderedDict
14
15
 
15
16
  LOCAL_UUID = 0
16
17
 
@@ -1,12 +1,13 @@
1
1
  """
2
- pyexcel.constants
3
- ~~~~~~~~~~~~~~~~~~~
2
+ pyexcel.constants
3
+ ~~~~~~~~~~~~~~~~~~~
4
4
 
5
- Constants appeared in pyexcel
5
+ Constants appeared in pyexcel
6
6
 
7
- :copyright: (c) 2015-2022 by Onni Software Ltd.
8
- :license: New BSD License
7
+ :copyright: (c) 2015-2025 by Onni Software Ltd.
8
+ :license: New BSD License
9
9
  """
10
+
10
11
  # flake8: noqa
11
12
  DEFAULT_NA = ""
12
13
  DEFAULT_NAME = "pyexcel sheet"
@@ -1,17 +1,18 @@
1
1
  """
2
- pyexcel.cookbook
3
- ~~~~~~~~~~~~~~~~~~~
2
+ pyexcel.cookbook
3
+ ~~~~~~~~~~~~~~~~~~~
4
4
 
5
- Cookbook for pyexcel
5
+ Cookbook for pyexcel
6
6
 
7
- :copyright: (c) 2014-2025 by Onni Software Ltd.
8
- :license: New BSD License, see LICENSE for more details
7
+ :copyright: (c) 2014-2025 by Onni Software Ltd.
8
+ :license: New BSD License, see LICENSE for more details
9
9
  """
10
+
10
11
  import os
11
12
 
12
13
  from pyexcel.book import Book
13
14
  from pyexcel.core import save_as, get_book, get_sheet
14
- from pyexcel._compact import OrderedDict
15
+ from pyexcel._compact import OrderedDict, get_string_file_name
15
16
  from pyexcel.constants import MESSAGE_WARNING
16
17
 
17
18
  DEFAULT_OUT_FILE = "pyexcel_merged.csv"
@@ -19,24 +20,25 @@ DEFAULT_OUT_XLS_FILE = "merged.xls"
19
20
  OUT_FILE_FORMATTER = "pyexcel_%s"
20
21
 
21
22
 
22
- def update_columns(infilename, column_dicts, outfilename=None):
23
+ def update_columns(in_file_name, column_dicts, out_file_name=None):
23
24
  """Update one or more columns of a data file with series
24
25
 
25
26
  The data structure of column_dicts should be:
26
27
  key should be first row of the column
27
28
  the rest of the value should an array
28
- :param str infilename: an accessible file name
29
+ :param str in_file_name: an accessible file name
29
30
  :param dict column_dicts: dictionaries of columns
30
- :param str outfilename: save the sheet as
31
+ :param str out_file_name: save the sheet as
31
32
 
32
33
 
33
34
  """
34
- default_out_file = OUT_FILE_FORMATTER % infilename
35
- if outfilename:
36
- default_out_file = outfilename
35
+ in_file_name = get_string_file_name(in_file_name)
36
+ default_out_file = OUT_FILE_FORMATTER % in_file_name
37
+ if out_file_name:
38
+ default_out_file = get_string_file_name(out_file_name)
37
39
  if os.path.exists(default_out_file):
38
40
  raise NotImplementedError(MESSAGE_WARNING)
39
- sheet = get_sheet(file_name=infilename, name_columns_by_row=0)
41
+ sheet = get_sheet(file_name=in_file_name, name_columns_by_row=0)
40
42
  series = sheet.colnames
41
43
  for k in column_dicts.keys():
42
44
  index = series.index(str(k))
@@ -44,21 +46,22 @@ def update_columns(infilename, column_dicts, outfilename=None):
44
46
  sheet.save_as(default_out_file)
45
47
 
46
48
 
47
- def update_rows(infilename, row_dicts, outfilename=None):
49
+ def update_rows(in_file_name, row_dicts, out_file_name=None):
48
50
  """Update one or more rows of a data file with series
49
51
 
50
- datastucture: key should an integer of the row to be updated
52
+ data stucture: key should an integer of the row to be updated
51
53
  value should be an array of the data
52
- :param str infilename: an accessible file name
54
+ :param str in_file_name: an accessible file name
53
55
  :param dict row_dicts: dictionaries of rows
54
- :param str outfilename: save the sheet as
56
+ :param str out_file_name: save the sheet as
55
57
  """
56
- default_out_file = OUT_FILE_FORMATTER % infilename
57
- if outfilename:
58
- default_out_file = outfilename
58
+ in_file_name = get_string_file_name(in_file_name)
59
+ default_out_file = OUT_FILE_FORMATTER % in_file_name
60
+ if out_file_name:
61
+ default_out_file = get_string_file_name(out_file_name)
59
62
  if os.path.exists(default_out_file):
60
63
  raise NotImplementedError(MESSAGE_WARNING)
61
- sheet = get_sheet(file_name=infilename, name_rows_by_column=0)
64
+ sheet = get_sheet(file_name=in_file_name, name_rows_by_column=0)
62
65
  series = sheet.rownames
63
66
  for k in row_dicts.keys():
64
67
  index = series.index(str(k))
@@ -66,11 +69,12 @@ def update_rows(infilename, row_dicts, outfilename=None):
66
69
  sheet.save_as(default_out_file)
67
70
 
68
71
 
69
- def merge_files(file_array, outfilename=DEFAULT_OUT_FILE):
72
+ def merge_files(file_array, out_file_name=DEFAULT_OUT_FILE):
70
73
  """merge many files horizontally column after column
71
- :param str outfilename: save the sheet as
74
+ :param str out_file_name: save the sheet as
72
75
  """
73
- if os.path.exists(outfilename):
76
+ out_file_name = get_string_file_name(out_file_name)
77
+ if os.path.exists(out_file_name):
74
78
  raise NotImplementedError(MESSAGE_WARNING)
75
79
  content = []
76
80
  for file_name in file_array:
@@ -78,54 +82,56 @@ def merge_files(file_array, outfilename=DEFAULT_OUT_FILE):
78
82
  content.extend(list(sheet.columns()))
79
83
  merged_sheet = get_sheet(array=content)
80
84
  merged_sheet.transpose()
81
- merged_sheet.save_as(outfilename)
82
- return outfilename
85
+ merged_sheet.save_as(out_file_name)
86
+ return out_file_name
83
87
 
84
88
 
85
- def merge_two_files(file1, file2, outfilename=DEFAULT_OUT_FILE):
89
+ def merge_two_files(file1, file2, out_file_name=DEFAULT_OUT_FILE):
86
90
  """merge two files
87
91
 
88
92
  :param str file1: an accessible file name
89
93
  :param str file2: an accessible file name
90
- :param str outfilename: save the sheet as
94
+ :param str out_file_name: save the sheet as
91
95
  """
92
- if os.path.exists(outfilename):
96
+ out_file_name = get_string_file_name(out_file_name)
97
+ if os.path.exists(out_file_name):
93
98
  raise NotImplementedError(MESSAGE_WARNING)
94
99
  files = [file1, file2]
95
- merge_files(files, outfilename)
100
+ merge_files(files, out_file_name)
96
101
 
97
102
 
98
- def merge_readers(reader_array, outfilename=DEFAULT_OUT_FILE):
103
+ def merge_readers(reader_array, out_file_name=DEFAULT_OUT_FILE):
99
104
  """merge many readers
100
105
 
101
106
  With FilterableReader and SeriesReader, you can do custom filtering
102
- :param str outfilename: save the sheet as
107
+ :param str out_file_name: save the sheet as
103
108
  """
104
- if os.path.exists(outfilename):
109
+ out_file_name = get_string_file_name(out_file_name)
110
+ if os.path.exists(out_file_name):
105
111
  raise NotImplementedError(MESSAGE_WARNING)
106
112
  content = OrderedDict()
107
113
  for reader in reader_array:
108
114
  content.update(reader.dict)
109
- save_as(dest_file_name=outfilename, adict=content)
115
+ save_as(dest_file_name=out_file_name, adict=content)
110
116
 
111
117
 
112
- def merge_two_readers(reader1, reader2, outfilename=DEFAULT_OUT_FILE):
118
+ def merge_two_readers(reader1, reader2, out_file_name=DEFAULT_OUT_FILE):
113
119
  """merge two readers
114
120
 
115
- :param str outfilename: save the sheet as
121
+ :param str out_file_name: save the sheet as
116
122
 
117
123
  """
118
- if os.path.exists(outfilename):
124
+ if os.path.exists(out_file_name):
119
125
  raise NotImplementedError(MESSAGE_WARNING)
120
126
  reader_array = [reader1, reader2]
121
- merge_readers(reader_array, outfilename)
127
+ merge_readers(reader_array, out_file_name)
122
128
 
123
129
 
124
- def merge_csv_to_a_book(filelist, outfilename=DEFAULT_OUT_XLS_FILE):
130
+ def merge_csv_to_a_book(filelist, out_file_name=DEFAULT_OUT_XLS_FILE):
125
131
  """merge a list of csv files into a excel book
126
132
 
127
133
  :param list filelist: a list of accessible file path
128
- :param str outfilename: save the sheet as
134
+ :param str out_file_name: save the sheet as
129
135
  """
130
136
  merged = Book()
131
137
  for file_name in filelist:
@@ -133,30 +139,30 @@ def merge_csv_to_a_book(filelist, outfilename=DEFAULT_OUT_XLS_FILE):
133
139
  _, tail = os.path.split(file_name)
134
140
  sheet.name = tail
135
141
  merged += sheet
136
- merged.save_as(outfilename)
142
+ merged.save_as(out_file_name)
137
143
 
138
144
 
139
- def merge_all_to_a_book(filelist, outfilename=DEFAULT_OUT_XLS_FILE):
145
+ def merge_all_to_a_book(filelist, out_file_name=DEFAULT_OUT_XLS_FILE):
140
146
  """merge a list of excel files into a excel book
141
147
 
142
148
  :param list filelist: a list of accessible file path
143
- :param str outfilename: save the sheet as
149
+ :param str out_file_name: save the sheet as
144
150
  """
145
151
  merged = Book()
146
152
  for file_name in filelist:
147
153
  merged += get_book(file_name=file_name)
148
- merged.save_as(outfilename)
154
+ merged.save_as(out_file_name)
149
155
 
150
156
 
151
- def split_a_book(file_name, outfilename=None):
157
+ def split_a_book(file_name, out_file_name=None):
152
158
  """Split a file into separate sheets
153
159
 
154
160
  :param str file_name: an accessible file name
155
- :param str outfilename: save the sheets with file suffix
161
+ :param str out_file_name: save the sheets with file suffix
156
162
  """
157
163
  book = get_book(file_name=file_name)
158
- if outfilename:
159
- saveas = outfilename
164
+ if out_file_name:
165
+ saveas = out_file_name
160
166
  else:
161
167
  saveas = file_name
162
168
  for sheet in book:
@@ -164,16 +170,16 @@ def split_a_book(file_name, outfilename=None):
164
170
  sheet.save_as(filename)
165
171
 
166
172
 
167
- def extract_a_sheet_from_a_book(file_name, sheetname, outfilename=None):
173
+ def extract_a_sheet_from_a_book(file_name, sheetname, out_file_name=None):
168
174
  """Extract a sheet from a excel book
169
175
 
170
176
  :param str file_name: an accessible file name
171
177
  :param str sheetname: a valid sheet name
172
- :param str outfilename: save the sheet as
178
+ :param str out_file_name: save the sheet as
173
179
  """
174
180
  book = get_book(file_name=file_name)
175
- if outfilename:
176
- saveas = outfilename
181
+ if out_file_name:
182
+ saveas = out_file_name
177
183
  else:
178
184
  saveas = file_name
179
185
  sheet = book[sheetname]
@@ -1,12 +1,13 @@
1
1
  """
2
- pyexcel.core
3
- ~~~~~~~~~~~~~~~~~~~
2
+ pyexcel.core
3
+ ~~~~~~~~~~~~~~~~~~~
4
4
 
5
- A list of pyexcel signature functions
5
+ A list of pyexcel signature functions
6
6
 
7
- :copyright: (c) 2015-2022 by Onni Software Ltd.
8
- :license: New BSD License
7
+ :copyright: (c) 2015-2025 by Onni Software Ltd.
8
+ :license: New BSD License
9
9
  """
10
+
10
11
  import re
11
12
 
12
13
  from pyexcel import constants
@@ -1,12 +1,13 @@
1
1
  """
2
- pyexcel.deprecated
3
- ~~~~~~~~~~~~~~~~~~~
2
+ pyexcel.deprecated
3
+ ~~~~~~~~~~~~~~~~~~~
4
4
 
5
- List of apis that become deprecated but was kept for backward compatibility
5
+ List of APIs that become deprecated but was kept for backward compatibility
6
6
 
7
- :copyright: (c) 2015-2022 by Onni Software Ltd.
8
- :license: New BSD License
7
+ :copyright: (c) 2015-2025 by Onni Software Ltd.
8
+ :license: New BSD License
9
9
  """
10
+
10
11
  from functools import partial
11
12
 
12
13
  from pyexcel.core import get_book, get_sheet
@@ -66,7 +67,9 @@ def load(file_name, sheetname=None, **keywords):
66
67
  )
67
68
  else:
68
69
  sheet = get_sheet(
69
- file_name=file_name, sheet_name=sheetname, **keywords,
70
+ file_name=file_name,
71
+ sheet_name=sheetname,
72
+ **keywords,
70
73
  )
71
74
  return sheet
72
75
 
@@ -1,12 +1,13 @@
1
1
  """
2
- pyexcel.docstrings
3
- ~~~~~~~~~~~~~~~~~~~
2
+ pyexcel.docstrings
3
+ ~~~~~~~~~~~~~~~~~~~
4
4
 
5
- Reusible docstrings
5
+ Reusible docstrings
6
6
 
7
- :copyright: (c) 2015-2022 by Onni Software Ltd.
8
- :license: New BSD License
7
+ :copyright: (c) 2015-2025 by Onni Software Ltd.
8
+ :license: New BSD License
9
9
  """
10
+
10
11
  # flake8: noqa
11
12
  from .core import (
12
13
  SAVE_AS,
@@ -21,7 +22,7 @@ from .core import (
21
22
  IGET_RECORDS,
22
23
  SAVE_BOOK_AS,
23
24
  GET_BOOK_DICT,
24
- ISAVE_BOOK_AS
25
+ ISAVE_BOOK_AS,
25
26
  )
26
27
  from .meta import SAVE_AS_OPTIONS
27
28
  from .garbagecollector import FREE_RESOURCES
@@ -1,12 +1,13 @@
1
1
  """
2
- pyexcel.docstrings.core
3
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2
+ pyexcel.docstrings.core
3
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
4
 
5
- Reusible docstrings for pyexcel.core
5
+ Reusable docstrings for pyexcel.core
6
6
 
7
- :copyright: (c) 2015-2022 by Onni Software Ltd.
8
- :license: New BSD License
7
+ :copyright: (c) 2015-2025 by Onni Software Ltd.
8
+ :license: New BSD License
9
9
  """
10
+
10
11
  from . import keywords
11
12
 
12
13
  __GET_ARRAY__ = (
@@ -1,12 +1,13 @@
1
1
  """
2
- pyexcel.docstrings.keywords
3
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2
+ pyexcel.docstrings.keywords
3
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
4
 
5
- Reusible docstrings for keywords in signature functions
5
+ Reusable docstrings for keywords in signature functions
6
6
 
7
- :copyright: (c) 2015-2022 by Onni Software Ltd.
8
- :license: New BSD License
7
+ :copyright: (c) 2015-2025 by Onni Software Ltd.
8
+ :license: New BSD License
9
9
  """
10
+
10
11
  CSV_PARAMS = """
11
12
  **Parameters related to csv file format**
12
13
 
@@ -1,12 +1,13 @@
1
1
  """
2
- pyexcel.docstrings.meta
3
- ~~~~~~~~~~~~~~~~~~~~~~~~~
2
+ pyexcel.docstrings.meta
3
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
4
4
 
5
- Reusible docstrings for pyexcel.internal.meta
5
+ Reusable docstrings for pyexcel.internal.meta
6
6
 
7
- :copyright: (c) 2015-2022 by Onni Software Ltd.
8
- :license: New BSD License
7
+ :copyright: (c) 2015-2025 by Onni Software Ltd.
8
+ :license: New BSD License
9
9
  """
10
+
10
11
  from .keywords import CSV_PARAMS
11
12
 
12
13
  SAVE_AS_OPTIONS = (
@@ -1,11 +1,11 @@
1
1
  """
2
- pyexcel.exceptions
3
- ~~~~~~~~~~~~~~~~~~~
2
+ pyexcel.exceptions
3
+ ~~~~~~~~~~~~~~~~~~~
4
4
 
5
- Exceptions appeared in pyexcel
5
+ Exceptions appeared in pyexcel
6
6
 
7
- :copyright: (c) 2015-2022 by Onni Software Ltd.
8
- :license: New BSD License
7
+ :copyright: (c) 2015-2025 by Onni Software Ltd.
8
+ :license: New BSD License
9
9
  """
10
10
 
11
11
 
@@ -1,12 +1,13 @@
1
1
  """
2
- pyexcel.internal
3
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2
+ pyexcel.internal
3
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
4
 
5
- Pyexcel internals that subjected to change
5
+ Pyexcel internals that subjected to change
6
6
 
7
- :copyright: (c) 2015-2022 by Onni Software Ltd.
8
- :license: New BSD License
7
+ :copyright: (c) 2015-2025 by Onni Software Ltd.
8
+ :license: New BSD License
9
9
  """
10
+
10
11
  from lml.loader import scan_plugins_regex
11
12
  from pyexcel.internal.plugins import PARSER, RENDERER # noqa
12
13
  from pyexcel.internal.generators import BookStream, SheetStream # noqa
@@ -1,12 +1,13 @@
1
1
  """
2
- pyexcel.internal.attributes
3
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2
+ pyexcel.internal.attributes
3
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
4
 
5
- Book and sheet attributes
5
+ Book and sheet attributes
6
6
 
7
- :copyright: (c) 2015-2022 by Onni Software Ltd.
8
- :license: New BSD License
7
+ :copyright: (c) 2015-2025 by Onni Software Ltd.
8
+ :license: New BSD License
9
9
  """
10
+
10
11
  from pyexcel import constants
11
12
 
12
13
  ATTRIBUTE_REGISTRY = {
@@ -1,16 +1,17 @@
1
1
  """
2
- pyexcel.internal.common
3
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2
+ pyexcel.internal.common
3
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
4
 
5
- Defintion for the shared objects
5
+ Definition for the shared objects
6
6
 
7
- :copyright: (c) 2015-2022 by Onni Software Ltd.
8
- :license: New BSD License
7
+ :copyright: (c) 2015-2025 by Onni Software Ltd.
8
+ :license: New BSD License
9
9
  """
10
+
10
11
  NO_COLUMN_NAMES = "Only sheet with column names is accepted"
11
12
 
12
13
 
13
- class SheetIterator():
14
+ class SheetIterator:
14
15
  """
15
16
  Sheet Iterator
16
17
  """