{ "info": { "author": "Sergey Astanin", "author_email": "s.astanin@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries" ], "description": "===============\npython-tabulate\n===============\n\nPretty-print tabular data in Python, a library and a command-line\nutility.\n\nThe main use cases of the library are:\n\n* printing small tables without hassle: just one function call,\n formatting is guided by the data itself\n\n* authoring tabular data for lightweight plain-text markup: multiple\n output formats suitable for further editing or transformation\n\n* readable presentation of mixed textual and numeric data: smart\n column alignment, configurable number formatting, alignment by a\n decimal point\n\n\nInstallation\n------------\n\nTo install the Python library and the command line utility, run::\n\n pip install tabulate\n\nThe command line utility will be installed as ``tabulate`` to ``bin`` on Linux\n(e.g. ``/usr/bin``); or as ``tabulate.exe`` to ``Scripts`` in your Python\ninstallation on Windows (e.g. ``C:\\Python27\\Scripts\\tabulate.exe``).\n\nYou may consider installing the library only for the current user::\n\n pip install tabulate --user\n\nIn this case the command line utility will be installed to ``~/.local/bin/tabulate``\non Linux and to ``%APPDATA%\\Python\\Scripts\\tabulate.exe`` on Windows.\n\nTo install just the library on Unix-like operating systems::\n\n TABULATE_INSTALL=lib-only pip install tabulate\n\nOn Windows::\n\n set TABULATE_INSTALL=lib-only\n pip install tabulate\n\n\nLibrary usage\n-------------\n\nThe module provides just one function, ``tabulate``, which takes a\nlist of lists or another tabular data type as the first argument,\nand outputs a nicely formatted plain-text table::\n\n >>> from tabulate import tabulate\n\n >>> table = [[\"Sun\",696000,1989100000],[\"Earth\",6371,5973.6],\n ... [\"Moon\",1737,73.5],[\"Mars\",3390,641.85]]\n >>> print(tabulate(table))\n ----- ------ -------------\n Sun 696000 1.9891e+09\n Earth 6371 5973.6\n Moon 1737 73.5\n Mars 3390 641.85\n ----- ------ -------------\n\nThe following tabular data types are supported:\n\n* list of lists or another iterable of iterables\n* list or another iterable of dicts (keys as columns)\n* dict of iterables (keys as columns)\n* two-dimensional NumPy array\n* NumPy record arrays (names as columns)\n* pandas.DataFrame\n\nExamples in this file use Python2. Tabulate supports Python3 too.\n\n\nHeaders\n~~~~~~~\n\nThe second optional argument named ``headers`` defines a list of\ncolumn headers to be used::\n\n >>> print(tabulate(table, headers=[\"Planet\",\"R (km)\", \"mass (x 10^29 kg)\"]))\n Planet R (km) mass (x 10^29 kg)\n -------- -------- -------------------\n Sun 696000 1.9891e+09\n Earth 6371 5973.6\n Moon 1737 73.5\n Mars 3390 641.85\n\nIf ``headers=\"firstrow\"``, then the first row of data is used::\n\n >>> print(tabulate([[\"Name\",\"Age\"],[\"Alice\",24],[\"Bob\",19]],\n ... headers=\"firstrow\"))\n Name Age\n ------ -----\n Alice 24\n Bob 19\n\n\nIf ``headers=\"keys\"``, then the keys of a dictionary/dataframe, or\ncolumn indices are used. It also works for NumPy record arrays and\nlists of dictionaries or named tuples::\n\n >>> print(tabulate({\"Name\": [\"Alice\", \"Bob\"],\n ... \"Age\": [24, 19]}, headers=\"keys\"))\n Age Name\n ----- ------\n 24 Alice\n 19 Bob\n\n\nRow Indices\n~~~~~~~~~~~\n\nBy default, only pandas.DataFrame tables have an additional column\ncalled row index. To add a similar column to any other type of table,\npass ``showindex=\"always\"`` or ``showindex=True`` argument to\n``tabulate()``. To suppress row indices for all types of data, pass\n``showindex=\"never\"`` or ``showindex=False``. To add a custom row\nindex column, pass ``showindex=rowIDs``, where ``rowIDs`` is some\niterable::\n\n >>> print(tabulate([[\"F\",24],[\"M\",19]], showindex=\"always\"))\n - - --\n 0 F 24\n 1 M 19\n - - --\n\n\nTable format\n~~~~~~~~~~~~\n\nThere is more than one way to format a table in plain text.\nThe third optional argument named ``tablefmt`` defines\nhow the table is formatted.\n\nSupported table formats are:\n\n- \"plain\"\n- \"simple\"\n- \"github\"\n- \"grid\"\n- \"fancy_grid\"\n- \"pipe\"\n- \"orgtbl\"\n- \"jira\"\n- \"presto\"\n- \"psql\"\n- \"rst\"\n- \"mediawiki\"\n- \"moinmoin\"\n- \"youtrack\"\n- \"html\"\n- \"latex\"\n- \"latex_raw\"\n- \"latex_booktabs\"\n- \"textile\"\n\n``plain`` tables do not use any pseudo-graphics to draw lines::\n\n >>> table = [[\"spam\",42],[\"eggs\",451],[\"bacon\",0]]\n >>> headers = [\"item\", \"qty\"]\n >>> print(tabulate(table, headers, tablefmt=\"plain\"))\n item qty\n spam 42\n eggs 451\n bacon 0\n\n``simple`` is the default format (the default may change in future\nversions). It corresponds to ``simple_tables`` in `Pandoc Markdown\nextensions`::\n\n >>> print(tabulate(table, headers, tablefmt=\"simple\"))\n item qty\n ------ -----\n spam 42\n eggs 451\n bacon 0\n\n``github`` follows the conventions of `Github flavored Markdown`. It\ncorresponds to the ``pipe`` format without alignment colons::\n\n >>> print(tabulate(table, headers, tablefmt=\"github\"))\n | item | qty |\n |--------|-------|\n | spam | 42 |\n | eggs | 451 |\n | bacon | 0 |\n\n\n``grid`` is like tables formatted by Emacs' `table.el`\npackage. It corresponds to ``grid_tables`` in Pandoc Markdown\nextensions::\n\n >>> print(tabulate(table, headers, tablefmt=\"grid\"))\n +--------+-------+\n | item | qty |\n +========+=======+\n | spam | 42 |\n +--------+-------+\n | eggs | 451 |\n +--------+-------+\n | bacon | 0 |\n +--------+-------+\n\n``fancy_grid`` draws a grid using box-drawing characters::\n\n >>> print(tabulate(table, headers, tablefmt=\"fancy_grid\"))\n \u2552\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2555\n \u2502 item \u2502 qty \u2502\n \u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n \u2502 spam \u2502 42 \u2502\n \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n \u2502 eggs \u2502 451 \u2502\n \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n \u2502 bacon \u2502 0 \u2502\n \u2558\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255b\n\n``presto`` is like tables formatted by Presto cli::\n\n >>> print(tabulate(table, headers, tablefmt=\"presto\"))\n item | qty\n --------+-------\n spam | 42\n eggs | 451\n bacon | 0\n\n``psql`` is like tables formatted by Postgres' psql cli::\n\n >>> print(tabulate(table, headers, tablefmt=\"psql\"))\n +--------+-------+\n | item | qty |\n |--------+-------|\n | spam | 42 |\n | eggs | 451 |\n | bacon | 0 |\n +--------+-------+\n\n``pipe`` follows the conventions of `PHP Markdown Extra` extension. It\ncorresponds to ``pipe_tables`` in Pandoc. This format uses colons to\nindicate column alignment::\n\n >>> print(tabulate(table, headers, tablefmt=\"pipe\"))\n | item | qty |\n |:-------|------:|\n | spam | 42 |\n | eggs | 451 |\n | bacon | 0 |\n\n``orgtbl`` follows the conventions of Emacs `org-mode`, and is editable\nalso in the minor `orgtbl-mode`. Hence its name::\n\n >>> print(tabulate(table, headers, tablefmt=\"orgtbl\"))\n | item | qty |\n |--------+-------|\n | spam | 42 |\n | eggs | 451 |\n | bacon | 0 |\n\n``jira`` follows the conventions of Atlassian Jira markup language::\n\n >>> print(tabulate(table, headers, tablefmt=\"jira\"))\n || item || qty ||\n | spam | 42 |\n | eggs | 451 |\n | bacon | 0 |\n\n``rst`` formats data like a simple table of the `reStructuredText` format::\n\n >>> print(tabulate(table, headers, tablefmt=\"rst\"))\n ====== =====\n item qty\n ====== =====\n spam 42\n eggs 451\n bacon 0\n ====== =====\n\n``mediawiki`` format produces a table markup used in `Wikipedia` and on\nother MediaWiki-based sites::\n\n >>> print(tabulate(table, headers, tablefmt=\"mediawiki\"))\n {| class=\"wikitable\" style=\"text-align: left;\"\n |+ \n |-\n ! item !! align=\"right\"| qty\n |-\n | spam || align=\"right\"| 42\n |-\n | eggs || align=\"right\"| 451\n |-\n | bacon || align=\"right\"| 0\n |}\n\n``moinmoin`` format produces a table markup used in `MoinMoin`\nwikis::\n\n >>> print(tabulate(table, headers, tablefmt=\"moinmoin\"))\n || ''' item ''' || ''' quantity ''' ||\n || spam || 41.999 ||\n || eggs || 451 ||\n || bacon || ||\n\n``youtrack`` format produces a table markup used in Youtrack\ntickets::\n\n >>> print(tabulate(table, headers, tablefmt=\"youtrack\"))\n || item || quantity ||\n | spam | 41.999 |\n | eggs | 451 |\n | bacon | |\n\n``textile`` format produces a table markup used in `Textile` format::\n\n >>> print(tabulate(table, headers, tablefmt=\"textile\"))\n |_. item |_. qty |\n |<. spam |>. 42 |\n |<. eggs |>. 451 |\n |<. bacon |>. 0 |\n\n``html`` produces standard HTML markup::\n\n >>> print(tabulate(table, headers, tablefmt=\"html\"))\n \n \n \n \n \n \n \n
item qty
spam 42
eggs 451
bacon 0
\n\n``latex`` format creates a ``tabular`` environment for LaTeX markup,\nreplacing special characters like ```` or ``\\`` to their LaTeX\ncorrespondents::\n\n >>> print(tabulate(table, headers, tablefmt=\"latex\"))\n \\begin{tabular}{lr}\n \\hline\n item & qty \\\\\n \\hline\n spam & 42 \\\\\n eggs & 451 \\\\\n bacon & 0 \\\\\n \\hline\n \\end{tabular}\n\n``latex_raw`` behaves like ``latex`` but does not escape LaTeX commands\nand special characters.\n\n``latex_booktabs`` creates a ``tabular`` environment for LaTeX markup\nusing spacing and style from the ``booktabs`` package.\n\n\n.. _Pandoc Markdown extensions: http://johnmacfarlane.net/pandoc/README.html#tables\n.. _PHP Markdown Extra: http://michelf.ca/projects/php-markdown/extra/#table\n.. _table.el: http://table.sourceforge.net/\n.. _org-mode: http://orgmode.org/manual/Tables.html\n.. _reStructuredText: http://docutils.sourceforge.net/docs/user/rst/quickref.html#tables\n.. _Textile: http://redcloth.org/hobix.com/textile/\n.. _Wikipedia: http://www.mediawiki.org/wiki/Help:Tables\n.. _MoinMoin: https://moinmo.in/\n\n\nColumn alignment\n~~~~~~~~~~~~~~~~\n\n``tabulate`` is smart about column alignment. It detects columns which\ncontain only numbers, and aligns them by a decimal point (or flushes\nthem to the right if they appear to be integers). Text columns are\nflushed to the left.\n\nYou can override the default alignment with ``numalign`` and\n``stralign`` named arguments. Possible column alignments are:\n``right``, ``center``, ``left``, ``decimal`` (only for numbers), and\n``None`` (to disable alignment).\n\nAligning by a decimal point works best when you need to compare\nnumbers at a glance::\n\n >>> print(tabulate([[1.2345],[123.45],[12.345],[12345],[1234.5]]))\n ----------\n 1.2345\n 123.45\n 12.345\n 12345\n 1234.5\n ----------\n\nCompare this with a more common right alignment::\n\n >>> print(tabulate([[1.2345],[123.45],[12.345],[12345],[1234.5]], numalign=\"right\"))\n ------\n 1.2345\n 123.45\n 12.345\n 12345\n 1234.5\n ------\n\nFor ``tabulate``, anything which can be parsed as a number is a\nnumber. Even numbers represented as strings are aligned properly. This\nfeature comes in handy when reading a mixed table of text and numbers\nfrom a file:\n\n::\n\n >>> import csv ; from StringIO import StringIO\n >>> table = list(csv.reader(StringIO(\"spam, 42\\neggs, 451\\n\")))\n >>> table\n [['spam', ' 42'], ['eggs', ' 451']]\n >>> print(tabulate(table))\n ---- ----\n spam 42\n eggs 451\n ---- ----\n\n\n\nCustom column alignment\n~~~~~~~~~~~~~~~~~~~~~~~\n\n``tabulate`` allows a custom column alignment to override the above. The\n``colalign`` argument can be a list or a tuple of ``stralign`` named arguments.\nPossible column alignments are: ``right``, ``center``, ``left``, ``decimal``\n(only for numbers), and ``None`` (to disable alignment). Omitting an alignment\nuses the default. For example::\n\n >>> print(tabulate([[\"one\", \"two\"], [\"three\", \"four\"]], colalign=(\"right\",))\n ----- ----\n one two\n three four\n ----- ----\n\n\n\nNumber formatting\n~~~~~~~~~~~~~~~~~\n\n``tabulate`` allows to define custom number formatting applied to all\ncolumns of decimal numbers. Use ``floatfmt`` named argument::\n\n >>> print(tabulate([[\"pi\",3.141593],[\"e\",2.718282]], floatfmt=\".4f\"))\n -- ------\n pi 3.1416\n e 2.7183\n -- ------\n\n``floatfmt`` argument can be a list or a tuple of format strings,\none per column, in which case every column may have different number formatting::\n\n >>> print(tabulate([[0.12345, 0.12345, 0.12345]], floatfmt=(\".1f\", \".3f\")))\n --- ----- -------\n 0.1 0.123 0.12345\n --- ----- -------\n\n\n\nText formatting\n~~~~~~~~~~~~~~~\n\nBy default, ``tabulate`` removes leading and trailing whitespace from text\ncolumns. To disable whitespace removal, set the global module-level flag\n``PRESERVE_WHITESPACE``::\n\n import tabulate\n tabulate.PRESERVE_WHITESPACE = True\n\n\n\nWide (fullwidth CJK) symbols\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo properly align tables which contain wide characters (typically fullwidth\nglyphs from Chinese, Japanese or Korean languages), the user should install\n``wcwidth`` library. To install it together with ``tabulate``::\n\n pip install tabulate[widechars]\n\nWide character support is enabled automatically if ``wcwidth`` library is\nalready installed. To disable wide characters support without uninstalling\n``wcwidth``, set the global module-level flag ``WIDE_CHARS_MODE``::\n\n import tabulate\n tabulate.WIDE_CHARS_MODE = False\n\n\nMultiline cells\n~~~~~~~~~~~~~~~\n\nMost table formats support multiline cell text (text containing newline\ncharacters). The newline characters are honored as line break characters.\n\nMultiline cells are supported for data rows and for header rows.\n\nFurther automatic line breaks are not inserted. Of course, some output formats\nsuch as latex or html handle automatic formatting of the cell content on their\nown, but for those that don't, the newline characters in the input cell text\nare the only means to break a line in cell text.\n\nNote that some output formats (e.g. simple, or plain) do not represent row\ndelimiters, so that the representation of multiline cells in such formats\nmay be ambiguous to the reader.\n\nThe following examples of formatted output use the following table with\na multiline cell, and headers with a multiline cell::\n\n >>> table = [[\"eggs\",451],[\"more\\nspam\",42]]\n >>> headers = [\"item\\nname\", \"qty\"]\n\n``plain`` tables::\n\n >>> print(tabulate(table, headers, tablefmt=\"plain\"))\n item qty\n name\n eggs 451\n more 42\n spam\n\n``simple`` tables::\n\n >>> print(tabulate(table, headers, tablefmt=\"simple\"))\n item qty\n name\n ------ -----\n eggs 451\n more 42\n spam\n\n``github`` tables::\n\n >>> print(tabulate(table, headers, tablefmt=\"github\"))\n | item | qty |\n | name | |\n |--------|-------|\n | eggs | 451 |\n | more | 42 |\n | spam | |\n\n``grid`` tables::\n\n >>> print(tabulate(table, headers, tablefmt=\"grid\"))\n +--------+-------+\n | item | qty |\n | name | |\n +========+=======+\n | eggs | 451 |\n +--------+-------+\n | more | 42 |\n | spam | |\n +--------+-------+\n\n``fancy_grid`` tables::\n\n >>> print(tabulate(table, headers, tablefmt=\"fancy_grid\"))\n \u2552\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2555\n \u2502 item \u2502 qty \u2502\n \u2502 name \u2502 \u2502\n \u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n \u2502 eggs \u2502 451 \u2502\n \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n \u2502 more \u2502 42 \u2502\n \u2502 spam \u2502 \u2502\n \u2558\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255b\n\n``pipe`` tables::\n\n >>> print(tabulate(table, headers, tablefmt=\"pipe\"))\n | item | qty |\n | name | |\n |:-------|------:|\n | eggs | 451 |\n | more | 42 |\n | spam | |\n\n``orgtbl`` tables::\n\n >>> print(tabulate(table, headers, tablefmt=\"orgtbl\"))\n | item | qty |\n | name | |\n |--------+-------|\n | eggs | 451 |\n | more | 42 |\n | spam | |\n\n``jira`` tables::\n\n >>> print(tabulate(table, headers, tablefmt=\"jira\"))\n | item | qty |\n | name | |\n |:-------|------:|\n | eggs | 451 |\n | more | 42 |\n | spam | |\n\n``presto`` tables::\n\n >>> print(tabulate(table, headers, tablefmt=\"presto\"))\n item | qty\n name |\n --------+-------\n eggs | 451\n more | 42\n spam |\n\n``psql`` tables::\n\n >>> print(tabulate(table, headers, tablefmt=\"psql\"))\n +--------+-------+\n | item | qty |\n | name | |\n |--------+-------|\n | eggs | 451 |\n | more | 42 |\n | spam | |\n +--------+-------+\n\n``rst`` tables::\n\n >>> print(tabulate(table, headers, tablefmt=\"rst\"))\n ====== =====\n item qty\n name\n ====== =====\n eggs 451\n more 42\n spam\n ====== =====\n\nMultiline cells are not well supported for the other table formats.\n\n\nUsage of the command line utility\n---------------------------------\n\n::\n\n Usage: tabulate [options] [FILE ...]\n\n FILE a filename of the file with tabular data;\n if \"-\" or missing, read data from stdin.\n\n Options:\n\n -h, --help show this message\n -1, --header use the first row of data as a table header\n -o FILE, --output FILE print table to FILE (default: stdout)\n -s REGEXP, --sep REGEXP use a custom column separator (default: whitespace)\n -F FPFMT, --float FPFMT floating point number format (default: g)\n -f FMT, --format FMT set output table format; supported formats:\n plain, simple, github, grid, fancy_grid, pipe,\n orgtbl, rst, mediawiki, html, latex, latex_raw,\n latex_booktabs, tsv\n (default: simple)\n\n\nPerformance considerations\n--------------------------\n\nSuch features as decimal point alignment and trying to parse everything\nas a number imply that ``tabulate``:\n\n* has to \"guess\" how to print a particular tabular data type\n* needs to keep the entire table in-memory\n* has to \"transpose\" the table twice\n* does much more work than it may appear\n\nIt may not be suitable for serializing really big tables (but who's\ngoing to do that, anyway?) or printing tables in performance sensitive\napplications. ``tabulate`` is about two orders of magnitude slower\nthan simply joining lists of values with a tab, coma or other\nseparator.\n\nIn the same time ``tabulate`` is comparable to other table\npretty-printers. Given a 10x10 table (a list of lists) of mixed text\nand numeric data, ``tabulate`` appears to be slower than\n``asciitable``, and faster than ``PrettyTable`` and ``texttable``\nThe following mini-benchmark was run in Python 3.7.1 on Windows\n\n::\n\n =========================== ========== ===========\n Table formatter time, \u03bcs rel. time\n =========================== ========== ===========\n csv to StringIO 15.6 1.0\n join with tabs and newlines 20.4 1.3\n asciitable (0.8.0) 285.5 18.3\n tabulate (0.8.3) 685.8 44.0\n PrettyTable (0.7.2) 1277.4 81.9\n texttable (1.6.0) 1744.7 111.8\n =========================== ========== ===========\n\nVersion history\n---------------\n\nThe full version history can be found at the `changelog <./CHANGELOG>`.\n\nHow to contribute\n-----------------\n\nContributions should include tests and an explanation for the changes they\npropose. Documentation (examples, docstrings, README.rst) should be updated\naccordingly.\n\nThis project uses `nose` testing framework and `tox` to automate testing in\ndifferent environments. Add tests to one of the files in the ``test/`` folder.\n\nTo run tests on all supported Python versions, make sure all Python\ninterpreters, ``nose`` and ``tox`` are installed, then run ``tox`` in\nthe root of the project source tree.\n\nOn Linux ``tox`` expects to find executables like ``python2.6``,\n``python2.7``, ``python3.4`` etc. On Windows it looks for\n``C:\\Python26\\python.exe``, ``C:\\Python27\\python.exe`` and\n``C:\\Python34\\python.exe`` respectively.\n\nTo test only some Python environements, use ``-e`` option. For\nexample, to test only against Python 2.7 and Python 3.4, run::\n\n tox -e py27,py34\n\nin the root of the project source tree.\n\nTo enable NumPy and Pandas tests, run::\n\n tox -e py27-extra,py34-extra\n\n(this may take a long time the first time, because NumPy and Pandas\nwill have to be installed in the new virtual environments)\n\nSee ``tox.ini`` file to learn how to use ``nosetests`` directly to\ntest individual Python versions.\n\n.. _nose: https://nose.readthedocs.org/\n.. _tox: https://tox.readthedocs.io/\n\n\nContributors\n------------\n\nSergey Astanin, Pau Tallada Cresp\u00ed, Erwin Marsi, Mik Kocikowski, Bill Ryder,\nZach Dwiel, Frederik Rietdijk, Philipp Bogensberger, Greg (anonymous),\nStefan Tatschner, Emiel van Miltenburg, Brandon Bennett, Amjith Ramanujam,\nJan Schulz, Simon Percivall, Javier Santacruz L\u00f3pez-Cepero, Sam Denton,\nAlexey Ziyangirov, acaird, Cesar Sanchez, naught101, John Vandenberg,\nZack Dever, Christian Clauss, Benjamin Maier, Andy MacKinlay, Thomas Roten,\nJue Wang, Joe King, Samuel Phan, Nick Satterly, Daniel Robbins, Dmitry B,\nLars Butler, Andreas Maier, Dick Marinus, S\u00e9bastien Celles, Yago Gonz\u00e1lez,\nAndrew Gaul, Wim Glenn, Jean Michel Rouly.\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/astanin/python-tabulate", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "tabulate42", "package_url": "https://pypi.org/project/tabulate42/", "platform": "", "project_url": "https://pypi.org/project/tabulate42/", "project_urls": { "Homepage": "https://bitbucket.org/astanin/python-tabulate" }, "release_url": "https://pypi.org/project/tabulate42/0.8.4/", "requires_dist": [ "wcwidth ; extra == 'widechars'" ], "requires_python": "", "summary": "Pretty-print tabular data", "version": "0.8.4" }, "last_serial": 4822956, "releases": { "0.8.4": [ { "comment_text": "", "digests": { "md5": "77b49d8178b3c1c8bb8456b98e7a29f9", "sha256": "8e33a29323020cab6142a3ede17ed6a5a333649b575e6a9581c21ba93e597772" }, "downloads": -1, "filename": "tabulate42-0.8.4-py3-none-any.whl", "has_sig": false, "md5_digest": "77b49d8178b3c1c8bb8456b98e7a29f9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23362, "upload_time": "2019-02-15T02:37:45", "url": "https://files.pythonhosted.org/packages/2e/a7/de99e5642d96ac32aa1c9420a0ef664fb5d24a4d5d36faed30a23ae2b087/tabulate42-0.8.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "611ae70d12b8337139742b29093a9b5f", "sha256": "e67b67a01f73881b1ebe61da9fa97e8bb471a96c854fdc786a2e9e46b8494ede" }, "downloads": -1, "filename": "tabulate42-0.8.4.tar.gz", "has_sig": false, "md5_digest": "611ae70d12b8337139742b29093a9b5f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46391, "upload_time": "2019-02-15T02:37:48", "url": "https://files.pythonhosted.org/packages/f3/21/41d5b2939d2c504bc47d814be6b0fec1060985eb75d45ab68e2ba6b505d6/tabulate42-0.8.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "77b49d8178b3c1c8bb8456b98e7a29f9", "sha256": "8e33a29323020cab6142a3ede17ed6a5a333649b575e6a9581c21ba93e597772" }, "downloads": -1, "filename": "tabulate42-0.8.4-py3-none-any.whl", "has_sig": false, "md5_digest": "77b49d8178b3c1c8bb8456b98e7a29f9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23362, "upload_time": "2019-02-15T02:37:45", "url": "https://files.pythonhosted.org/packages/2e/a7/de99e5642d96ac32aa1c9420a0ef664fb5d24a4d5d36faed30a23ae2b087/tabulate42-0.8.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "611ae70d12b8337139742b29093a9b5f", "sha256": "e67b67a01f73881b1ebe61da9fa97e8bb471a96c854fdc786a2e9e46b8494ede" }, "downloads": -1, "filename": "tabulate42-0.8.4.tar.gz", "has_sig": false, "md5_digest": "611ae70d12b8337139742b29093a9b5f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46391, "upload_time": "2019-02-15T02:37:48", "url": "https://files.pythonhosted.org/packages/f3/21/41d5b2939d2c504bc47d814be6b0fec1060985eb75d45ab68e2ba6b505d6/tabulate42-0.8.4.tar.gz" } ] }