Metadata-Version: 2.1 Name: tablib Version: 0.14.0 Summary: Format agnostic tabular data library (XLS, JSON, YAML, CSV) Home-page: https://tablib.readthedocs.io Author: Kenneth Reitz Author-email: me@kennethreitz.org Maintainer: Jazzband Maintainer-email: roadies@jazzband.co License: MIT Description: # Tablib: format-agnostic tabular dataset library [![Jazzband](https://jazzband.co/static/img/badge.svg)](https://jazzband.co/) [![Build Status](https://travis-ci.org/jazzband/tablib.svg?branch=master)](https://travis-ci.org/jazzband/tablib) [![codecov](https://codecov.io/gh/jazzband/tablib/branch/master/graph/badge.svg)](https://codecov.io/gh/jazzband/tablib) _____ ______ ___________ ______ __ /_______ ____ /_ ___ /___(_)___ /_ _ __/_ __ `/__ __ \__ / __ / __ __ \ / /_ / /_/ / _ /_/ /_ / _ / _ /_/ / \__/ \__,_/ /_.___/ /_/ /_/ /_.___/ Tablib is a format-agnostic tabular dataset library, written in Python. Output formats supported: - Excel (Sets + Books) - JSON (Sets + Books) - YAML (Sets + Books) - Pandas DataFrames (Sets) - HTML (Sets) - Jira (Sets) - TSV (Sets) - ODS (Sets) - CSV (Sets) - DBF (Sets) Note that tablib *purposefully* excludes XML support. It always will. (Note: This is a joke. Pull requests are welcome.) ## Overview `tablib.Dataset()` A Dataset is a table of tabular data. It may or may not have a header row. They can be build and manipulated as raw Python datatypes (Lists of tuples|dictionaries). Datasets can be imported from JSON, YAML, DBF, and CSV; they can be exported to XLSX, XLS, ODS, JSON, YAML, DBF, CSV, TSV, and HTML. `tablib.Databook()` A Databook is a set of Datasets. The most common form of a Databook is an Excel file with multiple spreadsheets. Databooks can be imported from JSON and YAML; they can be exported to XLSX, XLS, ODS, JSON, and YAML. ## Usage Populate fresh data files: ```python headers = ('first_name', 'last_name') data = [ ('John', 'Adams'), ('George', 'Washington') ] data = tablib.Dataset(*data, headers=headers) ``` Intelligently add new rows: ```python >>> data.append(('Henry', 'Ford')) ``` Intelligently add new columns: ```python >>> data.append_col((90, 67, 83), header='age') ``` Slice rows: ```python >>> print(data[:2]) [('John', 'Adams', 90), ('George', 'Washington', 67)] ``` Slice columns by header: ```python >>> print(data['first_name']) ['John', 'George', 'Henry'] ``` Easily delete rows: ```python >>> del data[1] ``` ## Exports Drumroll please........... ### JSON! ```python >>> print(data.export('json')) [ { "last_name": "Adams", "age": 90, "first_name": "John" }, { "last_name": "Ford", "age": 83, "first_name": "Henry" } ] ``` ### YAML! ```python >>> print(data.export('yaml')) - {age: 90, first_name: John, last_name: Adams} - {age: 83, first_name: Henry, last_name: Ford} ``` ### CSV... ```python >>> print(data.export('csv')) first_name,last_name,age John,Adams,90 Henry,Ford,83 ``` ### EXCEL! ```python >>> with open('people.xls', 'wb') as f: ... f.write(data.export('xls')) ``` ### DBF! ```python >>> with open('people.dbf', 'wb') as f: ... f.write(data.export('dbf')) ``` ### Pandas DataFrame! ```python >>> print(data.export('df')): first_name last_name age 0 John Adams 90 1 Henry Ford 83 ``` It's that easy. ## Installation To install tablib, simply: ```console $ pip install tablib[pandas] ``` Make sure to check out [Tablib on PyPI](https://pypi.org/project/tablib/)! ## Contribute Please see the [contributing guide](https://github.com/jazzband/tablib/blob/master/.github/CONTRIBUTING.md). # History ## 0.14.0 (2019-10-19) ### Deprecations - The 0.14.x series will be the last to support Python 2 ### Breaking changes - Dropped Python 3.4 support ### Improvements - Added Python 3.7 and 3.8 support - The project is now maintained by the Jazzband team, https://jazzband.co - Improved format autodetection and added autodetection for the odf format. - Added search to all documentation pages - Open xlsx workbooks in read-only mode (#316) - Unpin requirements - Only install backports.csv on Python 2 ### Bugfixes - Fixed `DataBook().load` parameter ordering (first stream, then format). - Fixed a regression for xlsx exports where non-string values were forced to strings (#314) - Fixed xlsx format detection (which was often detected as `xls` format) ## 0.13.0 (2019-03-08) - Added reStructuredText output capability (#336) - Added Jira output capability - Stopped calling openpyxl deprecated methods (accessing cells, removing sheets) (openpyxl minimal version is now 2.4.0) - Fixed a circular dependency issue in JSON output (#332) - Fixed Unicode error for the CSV export on Python 2 (#215) - Removed usage of optional `ujson` (#311) - Dropped Python 3.3 support ## 0.12.1 (2017-09-01) - Favor `Dataset.export()` over `Dataset.` syntax in docs - Make Panda dependency optional ## 0.12.0 (2017-08-27) - Add initial Panda DataFrame support - Dropped Python 2.6 support ## 0.11.5 (2017-06-13) - Use `yaml.safe_load` for importing yaml. ## 0.11.4 (2017-01-23) - Use built-in `json` package if available - Support Python 3.5+ in classifiers ### Bugfixes - Fixed textual representation for Dataset with no headers - Handle decimal types ## 0.11.3 (2016-02-16) - Release fix. ## 0.11.2 (2016-02-16) ### Bugfixes - Fix export only formats. - Fix for xlsx output. ## 0.11.1 (2016-02-07) ### Bugfixes - Fixed packaging error on Python 3. ## 0.11.0 (2016-02-07) ### New Formats! - Added LaTeX table export format (`Dataset.latex`). - Support for dBase (DBF) files (`Dataset.dbf`). ### Improvements - New import/export interface (`Dataset.export()`, `Dataset.load()`). - CSV custom delimiter support (`Dataset.export('csv', delimiter='$')`). - Adding ability to remove duplicates to all rows in a dataset (`Dataset.remove_duplicates()`). - Added a mechanism to avoid `datetime.datetime` issues when serializing data. - New `detect_format()` function (mostly for internal use). - Update the vendored unicodecsv to fix `None` handling. - Only freeze the headers row, not the headers columns (xls). ### Breaking Changes - `detect()` function removed. ### Bugfixes - Fix XLSX import. - Bugfix for `Dataset.transpose().transpose()`. ## 0.10.0 (2014-05-27) * Unicode Column Headers * ALL the bugfixes! ## 0.9.11 (2011-06-30) * Bugfixes ## 0.9.10 (2011-06-22) * Bugfixes ## 0.9.9 (2011-06-21) * Dataset API Changes * `stack_rows` => `stack`, `stack_columns` => `stack_cols` * column operations have their own methods now (`append_col`, `insert_col`) * List-style `pop()` * Redis-style `rpush`, `lpush`, `rpop`, `lpop`, `rpush_col`, and `lpush_col` ## 0.9.8 (2011-05-22) * OpenDocument Spreadsheet support (.ods) * Full Unicode TSV support ## 0.9.7 (2011-05-12) * Full XLSX Support! * Pickling Bugfix * Compat Module ## 0.9.6 (2011-05-12) * `seperators` renamed to `separators` * Full unicode CSV support ## 0.9.5 (2011-03-24) * Python 3.1, Python 3.2 Support (same code base!) * Formatter callback support * Various bug fixes ## 0.9.4 (2011-02-18) * Python 2.5 Support! * Tox Testing for 2.5, 2.6, 2.7 * AnyJSON Integrated * OrderedDict support * Caved to community pressure (spaces) ## 0.9.3 (2011-01-31) * Databook duplication leak fix. * HTML Table output. * Added column sorting. ## 0.9.2 (2010-11-17) * Transpose method added to Datasets. * New frozen top row in Excel output. * Pickling support for Datasets and Rows. * Support for row/column stacking. ## 0.9.1 (2010-11-04) * Minor reference shadowing bugfix. ## 0.9.0 (2010-11-04) * Massive documentation update! * Tablib.org! * Row tagging and Dataset filtering! * Column insert/delete support * Column append API change (header required) * Internal Changes (Row object and use thereof) ## 0.8.5 (2010-10-06) * New import system. All dependencies attempt to load from site-packages, then fallback on tenderized modules. ## 0.8.4 (2010-10-04) * Updated XLS output: Only wrap if '\\n' in cell. ## 0.8.3 (2010-10-04) * Ability to append new column passing a callable as the value that will be applied to every row. ## 0.8.2 (2010-10-04) * Added alignment wrapping to written cells. * Added separator support to XLS. ## 0.8.1 (2010-09-28) * Packaging Fix ## 0.8.0 (2010-09-25) * New format plugin system! * Imports! ELEGANT Imports! * Tests. Lots of tests. ## 0.7.1 (2010-09-20) * Reverting methods back to properties. * Windows bug compensated in documentation. ## 0.7.0 (2010-09-20) * Renamed DataBook Databook for consistency. * Export properties changed to methods (XLS filename / StringIO bug). * Optional Dataset.xls(path='filename') support (for writing on windows). * Added utf-8 on the worksheet level. ## 0.6.4 (2010-09-19) * Updated unicode export for XLS. * More exhaustive unit tests. ## 0.6.3 (2010-09-14) * Added Dataset.append() support for columns. ## 0.6.2 (2010-09-13) * Fixed Dataset.append() error on empty dataset. * Updated Dataset.headers property w/ validation. * Added Testing Fixtures. ## 0.6.1 (2010-09-12) * Packaging hotfixes. ## 0.6.0 (2010-09-11) * Public Release. * Export Support for XLS, JSON, YAML, and CSV. * DataBook Export for XLS, JSON, and YAML. * Python Dict Property Support. Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: Natural Language :: English Classifier: License :: OSI Approved :: MIT License Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.* Description-Content-Type: text/markdown Provides-Extra: pandas