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.
- {pyexcel-0.7.2 → pyexcel-0.7.3}/CHANGELOG.rst +10 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/PKG-INFO +12 -2
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/conf.py +2 -2
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/__init__.py +12 -10
- pyexcel-0.7.3/pyexcel/__version__.py +2 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/_compact.py +13 -6
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/book.py +7 -6
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/constants.py +6 -5
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/cookbook.py +58 -52
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/core.py +6 -5
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/deprecated.py +9 -6
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/docstrings/__init__.py +7 -6
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/docstrings/core.py +6 -5
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/docstrings/keywords.py +6 -5
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/docstrings/meta.py +6 -5
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/exceptions.py +5 -5
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/__init__.py +6 -5
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/attributes.py +6 -5
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/common.py +7 -6
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/core.py +6 -5
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/garbagecollector.py +7 -8
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/generators.py +8 -7
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/meta.py +32 -12
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/plugins.py +6 -5
- pyexcel-0.7.3/pyexcel/internal/sheets/__init__.py +12 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/sheets/_shared.py +7 -6
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/sheets/column.py +18 -11
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/sheets/formatters.py +6 -5
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/sheets/matrix.py +10 -7
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/sheets/row.py +6 -5
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/source_plugin.py +27 -11
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/parser.py +7 -6
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/__init__.py +18 -11
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/parsers/__init__.py +8 -6
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/parsers/django.py +14 -7
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/parsers/excel.py +20 -9
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/parsers/sqlalchemy.py +14 -7
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/renderers/__init__.py +8 -6
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/renderers/_texttable.py +7 -6
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/renderers/django.py +12 -6
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/renderers/excel.py +17 -7
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/renderers/sqlalchemy.py +18 -7
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/__init__.py +6 -5
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/db_sources.py +13 -7
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/django.py +11 -6
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/file_input.py +8 -6
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/file_output.py +15 -9
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/http.py +6 -5
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/memory_input.py +10 -7
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/output_to_memory.py +12 -7
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/params.py +6 -5
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/pydata/arraysource.py +6 -5
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/pydata/bookdict.py +6 -5
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/pydata/common.py +9 -7
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/pydata/dictsource.py +14 -7
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/pydata/records.py +6 -5
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/querysets.py +6 -5
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/sheet_stream_source.py +6 -5
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/sqlalchemy.py +12 -6
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/renderer.py +28 -10
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/sheet.py +7 -6
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/source.py +8 -7
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel.egg-info/PKG-INFO +12 -2
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel.egg-info/SOURCES.txt +1 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/setup.py +4 -4
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_bug_fixes.py +5 -2
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_cookbook.py +3 -1
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_examples.py +6 -3
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_exploitation.py +15 -5
- pyexcel-0.7.3/tests/test_fileio.py +75 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_gabagecollector.py +3 -2
- pyexcel-0.7.3/tests/test_pathlib_path.py +29 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_reader.py +4 -2
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_sheet_stream.py +3 -1
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_signature_fuction.py +113 -13
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_sources.py +4 -1
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_sql.py +6 -2
- pyexcel-0.7.2/pyexcel/__version__.py +0 -2
- pyexcel-0.7.2/pyexcel/internal/sheets/__init__.py +0 -11
- pyexcel-0.7.2/tests/test_fileio.py +0 -40
- {pyexcel-0.7.2 → pyexcel-0.7.3}/CONTRIBUTORS.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/LICENSE +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/MANIFEST.in +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/README.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/Makefile +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/make.bat +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/requirements.txt +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/_static/handsontable.full.min.css +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/_static/handsontable.full.min.js +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/_static/images/architecture.svg +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/_static/theme_overrides.css +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/_templates/layout.html +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/answers.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/api.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/architecture.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/attributes.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/bigdata.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/book.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/capability.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/changelog.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/coffee.csv +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/cookbook.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/database.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/design.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/entity-relationship-diagram.dia +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/entity-relationship-diagram.png +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.bookdict.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.csv.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.csvz.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.number_of_sheets.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.ods.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.save_as.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.save_to_database.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.save_to_django_models.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.save_to_memory.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.sheet_names.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.stream.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.tsv.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.tsvz.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.url.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.xls.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.xlsm.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Book.xlsx.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.__getitem__.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.array.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.cell_value.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.colnames.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.column_at.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.column_range.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.content.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.csv.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.csvz.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.cut.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.delete_columns.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.delete_named_column_at.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.delete_named_row_at.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.delete_rows.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.dict.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.extend_columns.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.extend_rows.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.filter.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.format.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.map.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.name_columns_by_row.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.name_rows_by_column.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.named_column_at.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.named_row_at.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.number_of_columns.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.number_of_rows.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.ods.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.paste.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.project.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.records.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.region.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.row_at.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.row_range.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.rownames.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.save_as.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.save_to_database.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.save_to_django_model.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.save_to_memory.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.set_column_at.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.set_named_column_at.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.set_named_row_at.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.set_row_at.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.stream.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.transpose.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.tsv.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.tsvz.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.url.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.xls.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.xlsm.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.Sheet.xlsx.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.extract_a_sheet_from_a_book.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.free_resources.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.get_array.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.get_book.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.get_book_dict.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.get_dict.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.get_records.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.get_sheet.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.iget_array.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.iget_book.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.iget_records.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.isave_as.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.isave_book_as.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.merge_all_to_a_book.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.merge_csv_to_a_book.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.save_as.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.save_book_as.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/generated/pyexcel.split_a_book.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/guide.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/iapi/pyexcel.internal.generators.BookStream.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/iapi/pyexcel.internal.generators.SheetStream.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/iapi/pyexcel.internal.sheets.Column.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/iapi/pyexcel.internal.sheets.Matrix.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/iapi/pyexcel.internal.sheets.Row.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/iapi.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/index.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/logging.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/migration_guide.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/note_on_pypy.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/plugin_howto.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/pyinstaller.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/quickstart.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/renderers.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/sheet.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/showcases/db_injection.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/sources.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/spelling_wordlist.txt +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/tutorial.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/tutorial02.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/tutorial03.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/tutorial04.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/tutorial05.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/tutorial06.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/tutorial_data_conversion.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/tutorial_file.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/two-liners.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/uml/architecture.uml +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/docs/source/webdev.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/README.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/convert_xls_to_xlsx.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/example.csv +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/example.xls +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/example.xlsm +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/example.xlsx +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/example_series.xls +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/example_series_filter.xls +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/jsonify.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/multiple-sheets-example.xls +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/multiple-sheets.xls +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/multiple-sheets.xlsx +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/read_cell_by_cell.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/read_column_by_column.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/read_excel_book.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/read_row_by_row.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/series.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/basics/write_excel_book.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/cookbook/merge_sheets.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/cookbook/scattered-csv-files/1.csv +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/cookbook/scattered-csv-files/2.csv +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/cookbook/scattered-csv-files/3.csv +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/database/import_xls_into_database_via_sqlalchemy.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/formatting/formatter01.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/formatting/formatter02.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/formatting/tutorial_datatype_01.xls +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/formatting/tutorial_datatype_02.xls +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/memoryfile/README.rst +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/memoryfile/pyexcel_server.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/memoryfile/templates/upload.html +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/examples/simple/multiple-sheets.xls +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/docstrings/garbagecollector.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/sheets/extended_list.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/internal/utils.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel/plugins/sources/pydata/__init__.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel.egg-info/dependency_links.txt +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel.egg-info/not-zip-safe +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel.egg-info/requires.txt +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/pyexcel.egg-info/top_level.txt +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/setup.cfg +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/__init__.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/_compact.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/base.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/db.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/bug_01.csv +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/bug_176.xlsx +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/date_field.xls +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/empty.csv +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/file_with_an_empty_sheet.xlsx +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/force_type.txt +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/issue_241/1.csv +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/issue_241/2.csv +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/non-uniform-rows.csv +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/ods_formats.ods +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/test-multiple.csvz +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/test-single.csvz +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/test_cook_book_merge_alphabets.csv +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/test_cook_book_merge_alphabets_2.csv +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/test_cook_book_merge_numbers.csv +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/fixtures/test_cook_book_merge_numbers_2.csv +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/requirements.txt +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_book.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_book_stream.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_django_related_functions.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_file_type_as_attribute.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_formatters.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_http_source.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_internals.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_iterator.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_multiple_sheets.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_parser.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_presentation.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_pyexcel_list.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_renderer.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_sheet.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_sheet_access.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_sheet_attributes.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_sheet_column.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_sheet_row.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_sheet_update.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_sheets.py +0 -0
- {pyexcel-0.7.2 → pyexcel-0.7.3}/tests/test_stringio.py +0 -0
- {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.
|
|
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.
|
|
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.
|
|
29
|
+
version = '0.7.3'
|
|
30
30
|
# The full version, including alpha/beta/rc tags
|
|
31
|
-
release = '0.7.
|
|
31
|
+
release = '0.7.3'
|
|
32
32
|
|
|
33
33
|
# -- General configuration ---------------------------------------------------
|
|
34
34
|
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
"""
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
pyexcel
|
|
3
|
+
~~~~~~~~~~~~~~~~~~~
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
10
|
-
|
|
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
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"""
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
pyexcel._compact
|
|
3
|
+
~~~~~~~~~~~~~~~~~~~
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Compatibles
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
3
|
-
|
|
2
|
+
pyexcel.book
|
|
3
|
+
~~~~~~~~~~~~~~~~~~~
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Excel book
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
3
|
-
|
|
2
|
+
pyexcel.constants
|
|
3
|
+
~~~~~~~~~~~~~~~~~~~
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Constants appeared in pyexcel
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
3
|
-
|
|
2
|
+
pyexcel.cookbook
|
|
3
|
+
~~~~~~~~~~~~~~~~~~~
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Cookbook for pyexcel
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
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(
|
|
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
|
|
29
|
+
:param str in_file_name: an accessible file name
|
|
29
30
|
:param dict column_dicts: dictionaries of columns
|
|
30
|
-
:param str
|
|
31
|
+
:param str out_file_name: save the sheet as
|
|
31
32
|
|
|
32
33
|
|
|
33
34
|
"""
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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=
|
|
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(
|
|
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
|
-
|
|
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
|
|
54
|
+
:param str in_file_name: an accessible file name
|
|
53
55
|
:param dict row_dicts: dictionaries of rows
|
|
54
|
-
:param str
|
|
56
|
+
:param str out_file_name: save the sheet as
|
|
55
57
|
"""
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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=
|
|
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,
|
|
72
|
+
def merge_files(file_array, out_file_name=DEFAULT_OUT_FILE):
|
|
70
73
|
"""merge many files horizontally column after column
|
|
71
|
-
:param str
|
|
74
|
+
:param str out_file_name: save the sheet as
|
|
72
75
|
"""
|
|
73
|
-
|
|
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(
|
|
82
|
-
return
|
|
85
|
+
merged_sheet.save_as(out_file_name)
|
|
86
|
+
return out_file_name
|
|
83
87
|
|
|
84
88
|
|
|
85
|
-
def merge_two_files(file1, file2,
|
|
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
|
|
94
|
+
:param str out_file_name: save the sheet as
|
|
91
95
|
"""
|
|
92
|
-
|
|
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,
|
|
100
|
+
merge_files(files, out_file_name)
|
|
96
101
|
|
|
97
102
|
|
|
98
|
-
def merge_readers(reader_array,
|
|
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
|
|
107
|
+
:param str out_file_name: save the sheet as
|
|
103
108
|
"""
|
|
104
|
-
|
|
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=
|
|
115
|
+
save_as(dest_file_name=out_file_name, adict=content)
|
|
110
116
|
|
|
111
117
|
|
|
112
|
-
def merge_two_readers(reader1, reader2,
|
|
118
|
+
def merge_two_readers(reader1, reader2, out_file_name=DEFAULT_OUT_FILE):
|
|
113
119
|
"""merge two readers
|
|
114
120
|
|
|
115
|
-
:param str
|
|
121
|
+
:param str out_file_name: save the sheet as
|
|
116
122
|
|
|
117
123
|
"""
|
|
118
|
-
if os.path.exists(
|
|
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,
|
|
127
|
+
merge_readers(reader_array, out_file_name)
|
|
122
128
|
|
|
123
129
|
|
|
124
|
-
def merge_csv_to_a_book(filelist,
|
|
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
|
|
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(
|
|
142
|
+
merged.save_as(out_file_name)
|
|
137
143
|
|
|
138
144
|
|
|
139
|
-
def merge_all_to_a_book(filelist,
|
|
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
|
|
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(
|
|
154
|
+
merged.save_as(out_file_name)
|
|
149
155
|
|
|
150
156
|
|
|
151
|
-
def split_a_book(file_name,
|
|
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
|
|
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
|
|
159
|
-
saveas =
|
|
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,
|
|
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
|
|
178
|
+
:param str out_file_name: save the sheet as
|
|
173
179
|
"""
|
|
174
180
|
book = get_book(file_name=file_name)
|
|
175
|
-
if
|
|
176
|
-
saveas =
|
|
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
|
-
|
|
3
|
-
|
|
2
|
+
pyexcel.core
|
|
3
|
+
~~~~~~~~~~~~~~~~~~~
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
A list of pyexcel signature functions
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
3
|
-
|
|
2
|
+
pyexcel.deprecated
|
|
3
|
+
~~~~~~~~~~~~~~~~~~~
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
List of APIs that become deprecated but was kept for backward compatibility
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
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,
|
|
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
|
-
|
|
3
|
-
|
|
2
|
+
pyexcel.docstrings
|
|
3
|
+
~~~~~~~~~~~~~~~~~~~
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Reusible docstrings
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
3
|
-
|
|
2
|
+
pyexcel.docstrings.core
|
|
3
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Reusable docstrings for pyexcel.core
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
3
|
-
|
|
2
|
+
pyexcel.docstrings.keywords
|
|
3
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Reusable docstrings for keywords in signature functions
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
3
|
-
|
|
2
|
+
pyexcel.docstrings.meta
|
|
3
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Reusable docstrings for pyexcel.internal.meta
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
3
|
-
|
|
2
|
+
pyexcel.exceptions
|
|
3
|
+
~~~~~~~~~~~~~~~~~~~
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Exceptions appeared in pyexcel
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
3
|
-
|
|
2
|
+
pyexcel.internal
|
|
3
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Pyexcel internals that subjected to change
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
3
|
-
|
|
2
|
+
pyexcel.internal.attributes
|
|
3
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Book and sheet attributes
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
3
|
-
|
|
2
|
+
pyexcel.internal.common
|
|
3
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Definition for the shared objects
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
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
|
"""
|