Deploy site

This commit is contained in:
Gitea Actions
2025-06-10 03:00:57 +02:00
commit 70bff17031
2329 changed files with 367195 additions and 0 deletions

View File

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2016-2025 Tsuyoshi Hombashi
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,932 @@
Metadata-Version: 2.1
Name: pytablewriter
Version: 1.2.1
Summary: pytablewriter is a Python library to write a table in various formats: AsciiDoc / CSV / Elasticsearch / HTML / JavaScript / JSON / LaTeX / LDJSON / LTSV / Markdown / MediaWiki / NumPy / Excel / Pandas / Python / reStructuredText / SQLite / TOML / TSV / YAML.
Home-page: https://github.com/thombashi/pytablewriter
Author: Tsuyoshi Hombashi
Author-email: tsuyoshi.hombashi@gmail.com
License: MIT License
Project-URL: Changelog, https://github.com/thombashi/pytablewriter/blob/master/CHANGELOG.md
Project-URL: Documentation, https://pytablewriter.rtfd.io/
Project-URL: Funding, https://github.com/sponsors/thombashi
Project-URL: Source, https://github.com/thombashi/pytablewriter
Project-URL: Tracker, https://github.com/thombashi/pytablewriter/issues
Keywords: AsciiDoc,table,CSV,Excel,JavaScript,JSON,LaTeX,LTSV,Markdown,MediaWiki,HTML,pandas,reStructuredText,SQLite,TSV,TOML
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Software Development :: Code Generators
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Text Processing
Classifier: Topic :: Text Processing :: Markup :: HTML
Classifier: Topic :: Text Processing :: Markup :: LaTeX
Classifier: Topic :: Text Processing :: Markup :: Markdown
Classifier: Topic :: Text Processing :: Markup :: reStructuredText
Classifier: Typing :: Typed
Requires-Python: >=3.9
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: setuptools>=38.3.0
Requires-Dist: DataProperty<2,>=1.1.0
Requires-Dist: mbstrdecoder<2,>=1.0.0
Requires-Dist: pathvalidate<4,>=2.3.0
Requires-Dist: tabledata<2,>=1.3.1
Requires-Dist: tcolorpy<1,>=0.0.5
Requires-Dist: typepy[datetime]<2,>=1.3.2
Provides-Extra: all
Requires-Dist: xlwt; extra == "all"
Requires-Dist: XlsxWriter<4,>=0.9.6; extra == "all"
Requires-Dist: elasticsearch<9,>=8.0.1; extra == "all"
Requires-Dist: pytablereader<2,>=0.31.3; extra == "all"
Requires-Dist: dominate<3,>=2.1.5; extra == "all"
Requires-Dist: loguru<1,>=0.4.1; extra == "all"
Requires-Dist: SimpleSQLite<2,>=1.3.2; extra == "all"
Requires-Dist: pytablewriter-altrow-theme<1,>=0.2.0; extra == "all"
Requires-Dist: pytablewriter-altcol-theme<1,>=0.1.0; extra == "all"
Requires-Dist: toml<1,>=0.9.3; extra == "all"
Requires-Dist: PyYAML<7,>=3.11; extra == "all"
Requires-Dist: simplejson<4,>=3.8.1; extra == "all"
Requires-Dist: pandas<3,>=0.25.3; extra == "all"
Provides-Extra: docs
Requires-Dist: sphinx_rtd_theme>=1.2.2; extra == "docs"
Requires-Dist: Sphinx>=2.4; extra == "docs"
Requires-Dist: xlwt; extra == "docs"
Requires-Dist: XlsxWriter<4,>=0.9.6; extra == "docs"
Requires-Dist: elasticsearch<9,>=8.0.1; extra == "docs"
Requires-Dist: pytablereader<2,>=0.31.3; extra == "docs"
Requires-Dist: dominate<3,>=2.1.5; extra == "docs"
Requires-Dist: loguru<1,>=0.4.1; extra == "docs"
Requires-Dist: SimpleSQLite<2,>=1.3.2; extra == "docs"
Requires-Dist: pytablewriter-altrow-theme<1,>=0.2.0; extra == "docs"
Requires-Dist: pytablewriter-altcol-theme<1,>=0.1.0; extra == "docs"
Requires-Dist: toml<1,>=0.9.3; extra == "docs"
Requires-Dist: PyYAML<7,>=3.11; extra == "docs"
Requires-Dist: simplejson<4,>=3.8.1; extra == "docs"
Requires-Dist: pandas<3,>=0.25.3; extra == "docs"
Provides-Extra: es
Requires-Dist: elasticsearch<9,>=8.0.1; extra == "es"
Provides-Extra: es8
Requires-Dist: elasticsearch<9,>=8.0.1; extra == "es8"
Provides-Extra: excel
Requires-Dist: xlwt; extra == "excel"
Requires-Dist: XlsxWriter<4,>=0.9.6; extra == "excel"
Provides-Extra: from
Requires-Dist: pytablereader<2,>=0.31.3; extra == "from"
Provides-Extra: html
Requires-Dist: dominate<3,>=2.1.5; extra == "html"
Provides-Extra: logging
Requires-Dist: loguru<1,>=0.4.1; extra == "logging"
Provides-Extra: pandas
Requires-Dist: pandas<3,>=0.25.3; extra == "pandas"
Provides-Extra: sqlite
Requires-Dist: SimpleSQLite<2,>=1.3.2; extra == "sqlite"
Provides-Extra: test
Requires-Dist: pytest-md-report>=0.6.2; extra == "test"
Requires-Dist: pytablewriter-altcol-theme<1,>=0.1.0; extra == "test"
Requires-Dist: PyYAML<7,>=3.11; extra == "test"
Requires-Dist: pytablereader[excel,sqlite]>=0.31.3; extra == "test"
Requires-Dist: dominate<3,>=2.1.5; extra == "test"
Requires-Dist: pytablewriter-altrow-theme<1,>=0.2.0; extra == "test"
Requires-Dist: toml<1,>=0.9.3; extra == "test"
Requires-Dist: simplejson<4,>=3.8.1; extra == "test"
Requires-Dist: pytest>=6.0.1; extra == "test"
Requires-Dist: beautifulsoup4>=4.10; extra == "test"
Requires-Dist: SimpleSQLite<2,>=1.3.2; extra == "test"
Requires-Dist: pytablereader<2,>=0.31.3; extra == "test"
Requires-Dist: elasticsearch<9,>=8.0.1; extra == "test"
Requires-Dist: xlwt; extra == "test"
Requires-Dist: tablib>=3.2.0; extra == "test"
Requires-Dist: sqliteschema>=2; extra == "test"
Requires-Dist: loguru<1,>=0.4.1; extra == "test"
Requires-Dist: XlsxWriter<4,>=0.9.6; extra == "test"
Requires-Dist: pandas<3,>=0.25.3; extra == "test"
Provides-Extra: theme
Requires-Dist: pytablewriter-altrow-theme<1,>=0.2.0; extra == "theme"
Requires-Dist: pytablewriter-altcol-theme<1,>=0.1.0; extra == "theme"
Provides-Extra: toml
Requires-Dist: toml<1,>=0.9.3; extra == "toml"
Provides-Extra: yaml
Requires-Dist: PyYAML<7,>=3.11; extra == "yaml"
.. contents:: **pytablewriter**
:backlinks: top
:depth: 2
Summary
=========
`pytablewriter <https://github.com/thombashi/pytablewriter>`__ is a Python library to write a table in various formats: AsciiDoc / CSV / Elasticsearch / HTML / JavaScript / JSON / LaTeX / LDJSON / LTSV / Markdown / MediaWiki / NumPy / Excel / Pandas / Python / reStructuredText / SQLite / TOML / TSV / YAML.
.. image:: https://badge.fury.io/py/pytablewriter.svg
:target: https://badge.fury.io/py/pytablewriter
:alt: PyPI package version
.. image:: https://anaconda.org/conda-forge/pytablewriter/badges/version.svg
:target: https://anaconda.org/conda-forge/pytablewriter
:alt: conda-forge package version
.. image:: https://img.shields.io/pypi/pyversions/pytablewriter.svg
:target: https://pypi.org/project/pytablewriter/
:alt: Supported Python versions
.. image:: https://img.shields.io/pypi/implementation/pytablewriter.svg
:target: https://pypi.org/project/pytablewriter
:alt: Supported Python implementations
.. image:: https://github.com/thombashi/pytablewriter/actions/workflows/ci.yml/badge.svg
:target: https://github.com/thombashi/pytablewriter/actions/workflows/ci.yml
:alt: CI status of Linux/macOS/Windows
.. image:: https://coveralls.io/repos/github/thombashi/pytablewriter/badge.svg?branch=master
:target: https://coveralls.io/github/thombashi/pytablewriter?branch=master
:alt: Test coverage
.. image:: https://github.com/thombashi/pytablewriter/actions/workflows/github-code-scanning/codeql/badge.svg
:target: https://github.com/thombashi/pytablewriter/actions/workflows/github-code-scanning/codeql
:alt: CodeQL
Features
--------
- Write a table in various formats:
- Text formats:
- `AsciiDoc <https://asciidoc.org/>`__
- CSV / Tab-separated values (TSV) / Space-separated values (SSV)
- HTML / CSS
- JSON / `Line-delimited JSON(LDJSON) <https://en.wikipedia.org/wiki/JSON_streaming#Line-delimited_JSON>`__
- `Labeled Tab-separated Values (LTSV) <http://ltsv.org/>`__
- LaTeX: ``tabular``/``array`` environment
- Markdown: CommonMark / `GitHub Flavored Markdown (GFM) <https://github.github.com/gfm/>`__ / `kramdown <https://kramdown.gettalong.org/>`__
- `MediaWiki <https://www.mediawiki.org/wiki/MediaWiki>`__
- reStructuredText: `Grid Tables <http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#grid-tables>`__/`Simple Tables <http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#simple-tables>`__/`CSV Table <http://docutils.sourceforge.net/docs/ref/rst/directives.html#id4>`__
- Source code (definition of a variable that represents tabular data)
- JavaScript / `NumPy <https://www.numpy.org/>`__ (`numpy.array <https://docs.scipy.org/doc/numpy/reference/generated/numpy.array.html>`__) / `Pandas <https://pandas.pydata.org/>`__ (`pandas.DataFrame <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html>`__) / Python
- `TOML <https://github.com/toml-lang/toml>`__
- `YAML <https://yaml.org/>`__
- Unicode
- Binary file formats:
- Microsoft Excel :superscript:`TM` (``.xlsx``/``.xls`` file format)
- `pandas.DataFrame <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html>`__ pickle file
- `SQLite <https://www.sqlite.org/index.html>`__ database
- Application-specific formats:
- `Elasticsearch <https://www.elastic.co/products/elasticsearch>`__
- Automatic table cell formatting:
- Alignment
- Padding
- Decimal places of numbers
- Customize table cell styles:
- Text/Background color
- Text alignment
- Font size/weight
- Thousand separator for numbers: e.g. ``1,000``/``1 000``
- Configure output:
- Write a table to a stream such as a file/standard-output/string-buffer/Jupyter-Notebook
- Get rendered tabular text
- Data sources:
- nested list
- CSV
- `pandas.DataFrame <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html>`__ / `pandas.Series <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.html>`__
- etc.
- Multibyte character support
- ANSI color support
Installation
============
Installation: pip
------------------------------
::
pip install pytablewriter
Some of the formats require additional dependency packages, you can install these packages as follows:
.. csv-table:: Installation of optional dependencies
:header: Installation example, Remark
``pip install pytablewriter[es]``, Elasticsearch
``pip install pytablewriter[excel]``, Excel
``pip install pytablewriter[html]``, HTML
``pip install pytablewriter[sqlite]``, SQLite database
``pip install pytablewriter[toml]``, TOML
``pip install pytablewriter[theme]``, pytablewriter theme plugins
``pip install pytablewriter[all]``, Install all of the optional dependencies
Installation: conda
------------------------------
::
conda install -c conda-forge pytablewriter
Installation: apt
------------------------------
::
sudo add-apt-repository ppa:thombashi/ppa
sudo apt update
sudo apt install python3-pytablewriter
Examples
==========
Write tables
--------------
Write a Markdown table
~~~~~~~~~~~~~~~~~~~~~~~~
:Sample Code:
.. code-block:: python
from pytablewriter import MarkdownTableWriter
def main():
writer = MarkdownTableWriter(
table_name="example_table",
headers=["int", "float", "str", "bool", "mix", "time"],
value_matrix=[
[0, 0.1, "hoge", True, 0, "2017-01-01 03:04:05+0900"],
[2, "-2.23", "foo", False, None, "2017-12-23 45:01:23+0900"],
[3, 0, "bar", "true", "inf", "2017-03-03 33:44:55+0900"],
[-10, -9.9, "", "FALSE", "nan", "2017-01-01 00:00:00+0900"],
],
)
writer.write_table()
if __name__ == "__main__":
main()
:Output:
.. code-block::
# example_table
|int|float|str |bool | mix | time |
|--:|----:|----|-----|-------:|------------------------|
| 0| 0.10|hoge|True | 0|2017-01-01 03:04:05+0900|
| 2|-2.23|foo |False| |2017-12-23 12:34:51+0900|
| 3| 0.00|bar |True |Infinity|2017-03-03 22:44:55+0900|
|-10|-9.90| |False| NaN|2017-01-01 00:00:00+0900|
:Rendering Result:
.. figure:: https://cdn.jsdelivr.net/gh/thombashi/pytablewriter@master/docs/pages/examples/table_format/text/ss/markdown.png
:alt: https://github.com/thombashi/pytablewriter/blob/master/docs/pages/examples/table_format/text/ss/markdown.png
Rendered markdown at GitHub
Write a Markdown table with margins
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:Sample Code:
.. code-block:: python
from pytablewriter import MarkdownTableWriter
def main():
writer = MarkdownTableWriter(
table_name="write a table with margins",
headers=["int", "float", "str", "bool", "mix", "time"],
value_matrix=[
[0, 0.1, "hoge", True, 0, "2017-01-01 03:04:05+0900"],
[2, "-2.23", "foo", False, None, "2017-12-23 45:01:23+0900"],
[3, 0, "bar", "true", "inf", "2017-03-03 33:44:55+0900"],
[-10, -9.9, "", "FALSE", "nan", "2017-01-01 00:00:00+0900"],
],
margin=1 # add a whitespace for both sides of each cell
)
writer.write_table()
if __name__ == "__main__":
main()
:Output:
.. code-block::
# write a table with margins
| int | float | str | bool | mix | time |
| --: | ----: | ---- | ----- | -------: | ------------------------ |
| 0 | 0.10 | hoge | True | 0 | 2017-01-01 03:04:05+0900 |
| 2 | -2.23 | foo | False | | 2017-12-23 12:34:51+0900 |
| 3 | 0.00 | bar | True | Infinity | 2017-03-03 22:44:55+0900 |
| -10 | -9.90 | | False | NaN | 2017-01-01 00:00:00+0900 |
``margin`` attribute can be available for all of the text format writer classes.
Write a GitHub Flavored Markdown (GFM) table
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If you set ``flavor`` keyword argument of ``MarkdownTableWriter`` class to ``"github"`` or ``"gfm"``, the writer will output markdown tables with GitHub flavor.
GFM can apply some additional styles to tables such as ``fg_color`` (text color).
:Sample Code:
.. code-block:: python
from pytablewriter import MarkdownTableWriter
from pytablewriter.style import Style
writer = MarkdownTableWriter(
column_styles=[
Style(fg_color="red"),
Style(fg_color="green", decoration_line="underline"),
],
headers=["A", "B"],
value_matrix=[
["abc", 1],
["efg", 2],
],
margin=1,
flavor="github",
enable_ansi_escape=False,
)
writer.write_table()
Rendered results can be found at `here <https://github.com/thombashi/pytablewriter/blob/master/docs/pages/examples/output/markdown/gfm.md>`__
Apply styles to GFM table with programmatically
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Applying style filters to GFM allows for more flexible style settings for cells.
See also the `example <#style-filter>`_
Write a Markdown table to a stream or a file
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
`Refer an example <https://github.com/thombashi/pytablewriter/blob/master/examples/py/stream/configure_stream.py>`__
Write a table to an Excel sheet
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:Sample Code:
.. code-block:: python
from pytablewriter import ExcelXlsxTableWriter
def main():
writer = ExcelXlsxTableWriter()
writer.table_name = "example"
writer.headers = ["int", "float", "str", "bool", "mix", "time"]
writer.value_matrix = [
[0, 0.1, "hoge", True, 0, "2017-01-01 03:04:05+0900"],
[2, "-2.23", "foo", False, None, "2017-12-23 12:34:51+0900"],
[3, 0, "bar", "true", "inf", "2017-03-03 22:44:55+0900"],
[-10, -9.9, "", "FALSE", "nan", "2017-01-01 00:00:00+0900"],
]
writer.dump("sample.xlsx")
if __name__ == "__main__":
main()
:Output:
.. figure:: https://cdn.jsdelivr.net/gh/thombashi/pytablewriter@master/docs/pages/examples/table_format/binary/spreadsheet/ss/excel_single.png
:alt: https://github.com/thombashi/pytablewriter/blob/master/docs/pages/examples/table_format/binary/spreadsheet/ss/excel_single.png
Output excel file (``sample_single.xlsx``)
Write a Unicode table
~~~~~~~~~~~~~~~~~~~~~~~
:Sample Code:
.. code-block:: python
from pytablewriter import UnicodeTableWriter
def main():
writer = UnicodeTableWriter(
table_name="example_table",
headers=["int", "float", "str", "bool", "mix", "time"],
value_matrix=[
[0, 0.1, "hoge", True, 0, "2017-01-01 03:04:05+0900"],
[2, "-2.23", "foo", False, None, "2017-12-23 45:01:23+0900"],
[3, 0, "bar", "true", "inf", "2017-03-03 33:44:55+0900"],
[-10, -9.9, "", "FALSE", "nan", "2017-01-01 00:00:00+0900"],
]
)
writer.write_table()
if __name__ == "__main__":
main()
:Output:
.. code-block::
┌───┬─────┬────┬─────┬────────┬────────────────────────┐
│int│float│str │bool │ mix │ time │
├───┼─────┼────┼─────┼────────┼────────────────────────┤
│ 0│ 0.10│hoge│True │ 0│2017-01-01 03:04:05+0900│
├───┼─────┼────┼─────┼────────┼────────────────────────┤
│ 2│-2.23│foo │False│ │2017-12-23 12:34:51+0900│
├───┼─────┼────┼─────┼────────┼────────────────────────┤
│ 3│ 0.00│bar │True │Infinity│2017-03-03 22:44:55+0900│
├───┼─────┼────┼─────┼────────┼────────────────────────┤
│-10│-9.90│ │False│ NaN│2017-01-01 00:00:00+0900│
└───┴─────┴────┴─────┴────────┴────────────────────────┘
Write a table with JavaScript format (as a nested list variable definition)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:Sample Code:
.. code-block:: python
import pytablewriter as ptw
def main():
writer = ptw.JavaScriptTableWriter(
table_name="js_variable",
headers=["int", "float", "str", "bool", "mix", "time"],
value_matrix=[
[0, 0.1, "hoge", True, 0, "2017-01-01 03:04:05+0900"],
[2, "-2.23", "foo", False, None, "2017-12-23 45:01:23+0900"],
[3, 0, "bar", "true", "inf", "2017-03-03 33:44:55+0900"],
[-10, -9.9, "", "FALSE", "nan", "2017-01-01 00:00:00+0900"],
],
)
writer.write_table()
if __name__ == "__main__":
main()
:Output:
.. code-block:: js
const js_variable = [
["int", "float", "str", "bool", "mix", "time"],
[0, 0.1, "hoge", true, 0, "2017-01-01 03:04:05+0900"],
[2, -2.23, "foo", false, null, "2017-12-23 45:01:23+0900"],
[3, 0, "bar", true, Infinity, "2017-03-03 33:44:55+0900"],
[-10, -9.9, "", "FALSE", NaN, "2017-01-01 00:00:00+0900"]
];
Write a Markdown table from ``pandas.DataFrame`` instance
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
``from_dataframe`` method of writer classes will set up tabular data from ``pandas.DataFrame``:
:Sample Code:
.. code-block:: python
from textwrap import dedent
import pandas as pd
import io
from pytablewriter import MarkdownTableWriter
def main():
csv_data = io.StringIO(dedent("""\
"i","f","c","if","ifc","bool","inf","nan","mix_num","time"
1,1.10,"aa",1.0,"1",True,Infinity,NaN,1,"2017-01-01 00:00:00+09:00"
2,2.20,"bbb",2.2,"2.2",False,Infinity,NaN,Infinity,"2017-01-02 03:04:05+09:00"
3,3.33,"cccc",-3.0,"ccc",True,Infinity,NaN,NaN,"2017-01-01 00:00:00+09:00"
"""))
df = pd.read_csv(csv_data, sep=',')
writer = MarkdownTableWriter(dataframe=df)
writer.write_table()
if __name__ == "__main__":
main()
:Output:
.. code-block::
| i | f | c | if |ifc|bool | inf |nan|mix_num | time |
|--:|---:|----|---:|---|-----|--------|---|-------:|-------------------------|
| 1|1.10|aa | 1.0| 1|True |Infinity|NaN| 1|2017-01-01 00:00:00+09:00|
| 2|2.20|bbb | 2.2|2.2|False|Infinity|NaN|Infinity|2017-01-02 03:04:05+09:00|
| 3|3.33|cccc|-3.0|ccc|True |Infinity|NaN| NaN|2017-01-01 00:00:00+09:00|
Adding a column of the DataFrame index if you specify ``add_index_column=True``:
:Sample Code:
.. code-block:: python
import pandas as pd
import pytablewriter as ptw
def main():
writer = ptw.MarkdownTableWriter(table_name="add_index_column")
writer.from_dataframe(
pd.DataFrame({"A": [1, 2], "B": [10, 11]}, index=["a", "b"]),
add_index_column=True,
)
writer.write_table()
if __name__ == "__main__":
main()
:Output:
.. code-block::
# add_index_column
| | A | B |
|---|--:|--:|
|a | 1| 10|
|b | 2| 11|
Write a Markdown table from space-separated values
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:Sample Code:
.. code-block:: python
import pytablewriter as ptw
def main():
writer = ptw.MarkdownTableWriter(table_name="ps")
writer.from_csv(
"""
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 77664 8784 ? Ss May11 0:02 /sbin/init
root 2 0.0 0.0 0 0 ? S May11 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? I< May11 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? I< May11 0:00 [mm_percpu_wq]
root 7 0.0 0.0 0 0 ? S May11 0:01 [ksoftirqd/0]
""",
delimiter=" ",
)
writer.write_table()
if __name__ == "__main__":
main()
:Output:
.. code-block::
# ps
|USER|PID|%CPU|%MEM| VSZ |RSS |TTY|STAT|START|TIME| COMMAND |
|----|--:|---:|---:|----:|---:|---|----|-----|----|--------------|
|root| 1| 0| 0.4|77664|8784|? |Ss |May11|0:02|/sbin/init |
|root| 2| 0| 0.0| 0| 0|? |S |May11|0:00|[kthreadd] |
|root| 4| 0| 0.0| 0| 0|? |I< |May11|0:00|[kworker/0:0H]|
|root| 6| 0| 0.0| 0| 0|? |I< |May11|0:00|[mm_percpu_wq]|
|root| 7| 0| 0.0| 0| 0|? |S |May11|0:01|[ksoftirqd/0] |
Get rendered tabular text as str
----------------------------------
``dumps`` method returns rendered tabular text.
``dumps`` only available for text format writers.
:Sample Code:
.. code-block:: python
import pytablewriter as ptw
def main():
writer = ptw.MarkdownTableWriter(
headers=["int", "float", "str", "bool", "mix", "time"],
value_matrix=[
[0, 0.1, "hoge", True, 0, "2017-01-01 03:04:05+0900"],
[2, "-2.23", "foo", False, None, "2017-12-23 45:01:23+0900"],
[3, 0, "bar", "true", "inf", "2017-03-03 33:44:55+0900"],
[-10, -9.9, "", "FALSE", "nan", "2017-01-01 00:00:00+0900"],
],
)
print(writer.dumps())
if __name__ == "__main__":
main()
:Output:
.. code-block::
|int|float|str |bool | mix | time |
|--:|----:|----|-----|-------:|------------------------|
| 0| 0.10|hoge|True | 0|2017-01-01 03:04:05+0900|
| 2|-2.23|foo |False| |2017-12-23 45:01:23+0900|
| 3| 0.00|bar |True |Infinity|2017-03-03 33:44:55+0900|
|-10|-9.90| |False| NaN|2017-01-01 00:00:00+0900|
Configure table styles
------------------------
Column styles
~~~~~~~~~~~~~~~
Writers can specify
`Style <https://pytablewriter.rtfd.io/en/latest/pages/reference/style.html>`__
for each column by ``column_styles`` attribute of writer classes.
:Sample Code:
.. code-block:: python
import pytablewriter as ptw
from pytablewriter.style import Style
def main():
writer = ptw.MarkdownTableWriter(
table_name="set style by column_styles",
headers=[
"auto align",
"left align",
"center align",
"bold",
"italic",
"bold italic ts",
],
value_matrix=[
[11, 11, 11, 11, 11, 11],
[1234, 1234, 1234, 1234, 1234, 1234],
],
column_styles=[
Style(),
Style(align="left"),
Style(align="center"),
Style(font_weight="bold"),
Style(font_style="italic"),
Style(font_weight="bold", font_style="italic", thousand_separator=","),
], # specify styles for each column
)
writer.write_table()
if __name__ == "__main__":
main()
:Output:
.. code-block::
# set style by styles
|auto align|left align|center align| bold |italic|bold italic ts|
|---------:|----------|:----------:|-------:|-----:|-------------:|
| 11|11 | 11 | **11**| _11_| _**11**_|
| 1234|1234 | 1234 |**1234**|_1234_| _**1,234**_|
`Rendering result <https://github.com/thombashi/pytablewriter/tree/master/docs/pages/examples/style/output.md>`__
You can also set ``Style`` to a specific column with an index or header by using ``set_style`` method:
:Sample Code:
.. code-block:: python
from pytablewriter import MarkdownTableWriter
from pytablewriter.style import Style
def main():
writer = MarkdownTableWriter()
writer.headers = ["A", "B", "C",]
writer.value_matrix = [[11, 11, 11], [1234, 1234, 1234]]
writer.table_name = "set style by column index"
writer.set_style(1, Style(align="center", font_weight="bold"))
writer.set_style(2, Style(thousand_separator=" "))
writer.write_table()
writer.write_null_line()
writer.table_name = "set style by header"
writer.set_style("B", Style(font_style="italic"))
writer.write_table()
if __name__ == "__main__":
main()
:Output:
.. code-block::
# set style by column index
| A | B | C |
|---:|:------:|----:|
| 11| **11** | 11|
|1234|**1234**|1 234|
# set style by header
| A | B | C |
|---:|-----:|----:|
| 11| _11_| 11|
|1234|_1234_|1 234|
Style filter
~~~~~~~~~~~~~~
You can apply styles to specific cells by using style filters.
Style filters will be written as Python functions.
Examples of a style filter function and how you apply it are as follows:
:Sample Code:
.. code-block:: python
from typing import Any, Optional
from pytablewriter import MarkdownTableWriter
from pytablewriter.style import Cell, Style
def style_filter(cell: Cell, **kwargs: Any) -> Optional[Style]:
if cell.is_header_row():
return None
if cell.col == 0:
return Style(font_weight="bold")
value = int(cell.value)
if value > 80:
return Style(fg_color="red", font_weight="bold", decoration_line="underline")
elif value > 50:
return Style(fg_color="yellow", font_weight="bold")
elif value > 20:
return Style(fg_color="green")
return Style(fg_color="lightblue")
writer = MarkdownTableWriter(
table_name="style filter example",
headers=["Key", "Value 1", "Value 2"],
value_matrix=[
["A", 95, 40],
["B", 55, 5],
["C", 30, 85],
["D", 0, 69],
],
flavor="github",
enable_ansi_escape=False,
)
writer.add_style_filter(style_filter)
writer.write_table()
Rendered results can be found at `here <https://github.com/thombashi/pytablewriter/blob/master/docs/pages/examples/output/markdown/style_filter.md>`__
Theme
~~~~~~~
`Theme <https://pytablewriter.readthedocs.io/en/latest/pages/reference/theme.html#pytablewriter.style.Theme>`
consists of a set of style filters.
The following command will install external predefined themes:
::
pip install pytablewriter[theme]
Themes can be set via the constructor of the writer classes or the ``set_theme`` method.
The following is an example of setting the ``altrow`` theme via the constructor.
``altrow`` theme will be colored rows alternatively:
:Sample Code:
.. code-block:: python
import pytablewriter as ptw
writer = ptw.TableWriterFactory.create_from_format_name(
"markdown",
headers=["INT", "STR"],
value_matrix=[[1, "hoge"], [2, "foo"], [3, "bar"]],
margin=1,
theme="altrow",
)
writer.write_table()
:Output:
.. figure:: https://cdn.jsdelivr.net/gh/thombashi/pytablewriter-altrow-theme@master/ss/ptw-altrow-theme_example_default.png
:alt: https://github.com/thombashi/pytablewriter-altrow-theme/blob/master/ss/ptw-altrow-theme_example_default.png
`[theme]` extras includes the following themes:
- `pytablewriter-altrow-theme <https://github.com/thombashi/pytablewriter-altrow-theme>`__
- `Generated HTML table example <https://thombashi.github.io/pytablewriter-altrow-theme/example.html>`__
- `pytablewriter-altcol-theme <https://github.com/thombashi/pytablewriter-altcol-theme>`__
- `Generated HTML table example <https://thombashi.github.io/pytablewriter-altcol-theme/example.html>`__
Make tables for specific applications
---------------------------------------
Render a table on Jupyter Notebook
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
All table writer class instances in ``pytablewriter`` can render in Jupyter Notebook.
To render writers at notebook cells, you will require the dependency packages to be installed either by:
- ``pip install pytablewriter[html]`` or
- ``pip install pytablewriter[all]``
Jupyter Notebook code examples can be found `here <https://nbviewer.jupyter.org/github/thombashi/pytablewriter/blob/master/examples/ipynb/jupyter_notebook_example.ipynb>`__:
.. figure:: https://cdn.jsdelivr.net/gh/thombashi/pytablewriter@master/ss/jupyter_notebook.png
:alt: https://github.com/thombashi/pytablewriter/blob/master/ss/jupyter_notebook.png
Table rendering results of Jupyter Notebook
Multibyte character support
-----------------------------
Write a table using multibyte character
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
You can use multibyte characters as table data.
Multibyte characters are also properly padded and aligned.
:Sample Code:
.. code-block:: python
import pytablewriter as ptw
def main():
writer = ptw.RstSimpleTableWriter(
table_name="生成に関するパターン",
headers=["パターン名", "概要", "GoF", "Code Complete[1]"],
value_matrix=[
["Abstract Factory", "関連する一連のインスタンスを状況に応じて、適切に生成する方法を提供する。", "Yes", "Yes"],
["Builder", "複合化されたインスタンスの生成過程を隠蔽する。", "Yes", "No"],
["Factory Method", "実際に生成されるインスタンスに依存しない、インスタンスの生成方法を提供する。", "Yes", "Yes"],
["Prototype", "同様のインスタンスを生成するために、原型のインスタンスを複製する。", "Yes", "No"],
["Singleton", "あるクラスについて、インスタンスが単一であることを保証する。", "Yes", "Yes"],
],
)
writer.write_table()
if __name__ == "__main__":
main()
:Output:
.. figure:: https://cdn.jsdelivr.net/gh/thombashi/pytablewriter@master/docs/pages/examples/multibyte/ss/multi_byte_char.png
:alt: https://github.com/thombashi/pytablewriter/blob/master/docs/pages/examples/multibyte/ss/multi_byte_char.png
Output of multi-byte character table
Multiprocessing
-----------------
You can increase the number of workers to process table data via ``max_workers`` attribute of a writer.
The more ``max_workers`` the less processing time when tabular data is large and the execution environment has available cores.
If you increase ``max_workers`` larger than one, recommend using main guarded as follows to avoid problems caused by multi-processing:
.. code-block:: python
from multiprocessing import cpu_count
import pytablewriter as ptw
def main():
writer = ptw.MarkdownTableWriter()
writer.max_workers = cpu_count()
...
if __name__ == "__main__":
main()
For more information
----------------------
More examples are available at
https://pytablewriter.rtfd.io/en/latest/pages/examples/index.html
Dependencies
============
- Python 3.9+
- `Python package dependencies (automatically installed) <https://github.com/thombashi/pytablewriter/network/dependencies>`__
Optional dependencies
---------------------
- ``logging`` extras
- `loguru <https://github.com/Delgan/loguru>`__: Used for logging if the package installed
- ``from`` extras
- `pytablereader <https://github.com/thombashi/pytablereader>`__
- ``es`` extra
- `elasticsearch <https://github.com/elastic/elasticsearch-py>`__
- ``excel`` extras
- `xlwt <http://www.python-excel.org/>`__
- `XlsxWriter <https://github.com/jmcnamara/XlsxWriter>`__
- ``html`` extras
- `dominate <https://github.com/Knio/dominate/>`__
- ``sqlite`` extras
- `SimpleSQLite <https://github.com/thombashi/SimpleSQLite>`__
- ``theme`` extras
- `pytablewriter-altrow-theme <https://github.com/thombashi/pytablewriter-altrow-theme>`__
- `pytablewriter-altcol-theme <https://github.com/thombashi/pytablewriter-altcol-theme>`__
- ``toml`` extras
- `toml <https://github.com/uiri/toml>`__
Documentation
===============
https://pytablewriter.rtfd.io/
Projects using pytablewriter
==================================
- `pytest-md-report <https://github.com/thombashi/pytest-md-report>`__
Related Projects
==================================
- `pytablereader <https://github.com/thombashi/pytablereader>`__
- Tabular data loaded by ``pytablereader`` can be written another tabular data format with ``pytablewriter``.
Sponsors
====================================
|chasbecker| |shiguredo| |b4tman| |Arturi0| |github|
.. |chasbecker| image:: https://avatars.githubusercontent.com/u/44389260?s=48&u=6da7176e51ae2654bcfd22564772ef8a3bb22318&v=4
:target: https://github.com/chasbecker
:alt: ex-sponsor: Charles Becker (chasbecker)
.. |shiguredo| image:: https://avatars.githubusercontent.com/u/2549434?s=48&v=4
:target: https://github.com/shiguredo
:alt: ex-sponsor: 時雨堂 (shiguredo)
.. |b4tman| image:: https://avatars.githubusercontent.com/u/3658062?s=48&v=4
:target: https://github.com/b4tman
:alt: onetime: Dmitry Belyaev (b4tman)
.. |Arturi0| image:: https://avatars.githubusercontent.com/u/46711571?s=48&u=57687c0e02d5d6e8eeaf9177f7b7af4c9f275eb5&v=4
:target: https://github.com/Arturi0
:alt: onetime: Arturi0
.. |github| image:: https://avatars.githubusercontent.com/u/9919?s=48&v=4
:target: https://github.com/github
:alt: onetime: GitHub (github)
`Become a sponsor <https://github.com/sponsors/thombashi>`__

View File

@ -0,0 +1,138 @@
pytablewriter-1.2.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
pytablewriter-1.2.1.dist-info/LICENSE,sha256=Ewo1uRffGVGu-_NmEgSR1RJARah97RI_IN7SFSH046I,1089
pytablewriter-1.2.1.dist-info/METADATA,sha256=Egd2rPMhFcp60Ff2zC2VEmUjSIV6V6Vnn7mTDeb8PR4,38178
pytablewriter-1.2.1.dist-info/RECORD,,
pytablewriter-1.2.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pytablewriter-1.2.1.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
pytablewriter-1.2.1.dist-info/top_level.txt,sha256=4qovxzrpT62Feu8LLdPGtIqYBswTr4QcU4mRmpM61-k,14
pytablewriter/__init__.py,sha256=E2Y4TxopUWgqMateYeM22S6pGZct8qa_S78a1J_x9ao,2942
pytablewriter/__pycache__/__init__.cpython-39.pyc,,
pytablewriter/__pycache__/__version__.cpython-39.pyc,,
pytablewriter/__pycache__/_converter.cpython-39.pyc,,
pytablewriter/__pycache__/_factory.cpython-39.pyc,,
pytablewriter/__pycache__/_function.cpython-39.pyc,,
pytablewriter/__pycache__/_table_format.cpython-39.pyc,,
pytablewriter/__pycache__/error.cpython-39.pyc,,
pytablewriter/__version__.py,sha256=Yl4cZCSg_uar8nSXzhiZUTsEIwUveZ9Wn1et0RO9RL8,268
pytablewriter/_converter.py,sha256=iPlzCNzbGPJ4eSfgMz7DwD7GjaV0n1zxBm_iIzbvG7E,238
pytablewriter/_factory.py,sha256=JEzLpd5ri6DqGynTvMQ7DVhK36aoKKe-IedMxXjyVds,10847
pytablewriter/_function.py,sha256=HkZK5rZRRzzOG0qCtLfoLQE8s6ruifdMvQYXePOUgrw,2396
pytablewriter/_logger/__init__.py,sha256=DzORajZGSzcVR5wMlNgQ2b54Pr1CBgaN3OycGTp9s7g,107
pytablewriter/_logger/__pycache__/__init__.cpython-39.pyc,,
pytablewriter/_logger/__pycache__/_logger.cpython-39.pyc,,
pytablewriter/_logger/__pycache__/_null_logger.cpython-39.pyc,,
pytablewriter/_logger/_logger.py,sha256=OFQ-ZwE7Ly_HCW2fATCowChDvkFF2G_CjFwu6A2f5v8,3311
pytablewriter/_logger/_null_logger.py,sha256=QJuaErUIV_x6NjQ9qNX9eNSi_GB_9CrO7lKeXYZnuaw,1088
pytablewriter/_table_format.py,sha256=0OMnMrF0H9Wms7FKQM-JaMGob2qjgaIKWb3shQqXeuM,9479
pytablewriter/error.py,sha256=MwPbc4EtUklc7X3eVWADVCA6rrzelfsBcH16E0pJQeE,787
pytablewriter/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pytablewriter/sanitizer/__init__.py,sha256=Ob9cbVV0DBI6W6fupmMIHEgoSCdaGeyxo_VhfvNizEM,703
pytablewriter/sanitizer/__pycache__/__init__.cpython-39.pyc,,
pytablewriter/sanitizer/__pycache__/_base.cpython-39.pyc,,
pytablewriter/sanitizer/__pycache__/_elasticsearch.cpython-39.pyc,,
pytablewriter/sanitizer/__pycache__/_excel.cpython-39.pyc,,
pytablewriter/sanitizer/__pycache__/_interface.cpython-39.pyc,,
pytablewriter/sanitizer/__pycache__/_javascript.cpython-39.pyc,,
pytablewriter/sanitizer/__pycache__/_python.cpython-39.pyc,,
pytablewriter/sanitizer/_base.py,sha256=jSpUcAA532hUAB9FFmYmh4Syp2hDlWsb_MnTIoCe6oc,2957
pytablewriter/sanitizer/_elasticsearch.py,sha256=SB8GCeR_yl509Lz2uyblGnpYI56P4DSFaC3byB0BdQI,732
pytablewriter/sanitizer/_excel.py,sha256=G5hot3llV_qMyziwOJwjZhSR1rTwqNdjRDEO3-29BnE,2510
pytablewriter/sanitizer/_interface.py,sha256=YRioPeXRAPnDBgZ7G30CnpjivNwfbaxBemjWYi7P6e8,901
pytablewriter/sanitizer/_javascript.py,sha256=WpX6Pq9JvcxTxK9nlb3IXl-YglE_YHcfp_PDk5jFMRY,3620
pytablewriter/sanitizer/_python.py,sha256=GLF9rDttSEklwpnMRzAI6VLQVqext6O9_QGWEcgHqDM,3115
pytablewriter/style/__init__.py,sha256=OmdQIAKEu8o5E9Xu9fN_kQ1SAtCZZPebFEY8QQjGFpQ,1107
pytablewriter/style/__pycache__/__init__.cpython-39.pyc,,
pytablewriter/style/__pycache__/_cell.cpython-39.pyc,,
pytablewriter/style/__pycache__/_font.cpython-39.pyc,,
pytablewriter/style/__pycache__/_style.cpython-39.pyc,,
pytablewriter/style/__pycache__/_styler.cpython-39.pyc,,
pytablewriter/style/__pycache__/_styler_interface.cpython-39.pyc,,
pytablewriter/style/__pycache__/_theme.cpython-39.pyc,,
pytablewriter/style/_cell.py,sha256=Ggaq9xm2r_oXUv_W2eV1YLZeI-U0AVsTpAJBfj1Dozw,549
pytablewriter/style/_font.py,sha256=f3e9bKB83JYu7Yow7EYA_6XCJvqyCSMvjrIXC-Uelfc,341
pytablewriter/style/_style.py,sha256=QJImo6VRWMSZT64yEqpeOyaVuYYbuOCVrlvrvmGvQ0E,12448
pytablewriter/style/_styler.py,sha256=ceB6An1OIg-cx6lwPvSwRxUriF0EEUwHpmTOrucil9Y,9963
pytablewriter/style/_styler_interface.py,sha256=rM1OX8rYIQsk9vtPmbrrcTlf4e0_So2XrHT3L4z1bF8,828
pytablewriter/style/_theme.py,sha256=CpYbRacbIFWoMLxfG4qp2otbtLXLmQIDWyyp2VSSNcc,2836
pytablewriter/typehint/__init__.py,sha256=FDTB4uiJDm2b0A6IsYtTVO2Z994tb5o3kcXbwkDDKYQ,545
pytablewriter/typehint/__pycache__/__init__.cpython-39.pyc,,
pytablewriter/writer/__init__.py,sha256=r0ZSklAeSM84jA4xzvTFaXHVe0Il0GjAQ8vk2_mtplQ,1766
pytablewriter/writer/__pycache__/__init__.cpython-39.pyc,,
pytablewriter/writer/__pycache__/_common.cpython-39.pyc,,
pytablewriter/writer/__pycache__/_elasticsearch.cpython-39.pyc,,
pytablewriter/writer/__pycache__/_interface.cpython-39.pyc,,
pytablewriter/writer/__pycache__/_msgfy.cpython-39.pyc,,
pytablewriter/writer/__pycache__/_null.cpython-39.pyc,,
pytablewriter/writer/__pycache__/_table_writer.cpython-39.pyc,,
pytablewriter/writer/_common.py,sha256=BjKw-NvsyNQw9D8Zrpg8RyjLjgQjc0QiLbp1bQoGROE,221
pytablewriter/writer/_elasticsearch.py,sha256=OSfj__QgUmz5TKOdlL9iCZ7256iwLEi6ca8t7q0HrFc,6308
pytablewriter/writer/_interface.py,sha256=SBLhByN6K5EUi3B8hyWZKMIg14P_lLGHA_WjV-sM2jA,2671
pytablewriter/writer/_msgfy.py,sha256=Qf3VIhuCfstgGOEaYQswrW9R1lgYFknjw33YZJGNyFo,1777
pytablewriter/writer/_null.py,sha256=YPBm1lc23wCQbVHuYKPPOTtdlZKfZOBIEWpkuBKQEw4,1590
pytablewriter/writer/_table_writer.py,sha256=86W952psHB-jIzLN9uhCFjsLVKgugn8w-q56bfBAJiA,42116
pytablewriter/writer/binary/__init__.py,sha256=akvPmDxtQjvKEac2yx9c-96CURTFx0809iPPskpa25c,281
pytablewriter/writer/binary/__pycache__/__init__.cpython-39.pyc,,
pytablewriter/writer/binary/__pycache__/_excel.cpython-39.pyc,,
pytablewriter/writer/binary/__pycache__/_excel_workbook.cpython-39.pyc,,
pytablewriter/writer/binary/__pycache__/_interface.cpython-39.pyc,,
pytablewriter/writer/binary/__pycache__/_pandas.cpython-39.pyc,,
pytablewriter/writer/binary/__pycache__/_sqlite.cpython-39.pyc,,
pytablewriter/writer/binary/_excel.py,sha256=BzH-PEkUd90F-e5WvFNTmGiUXo5Om35ntw_Js5sM-3E,15543
pytablewriter/writer/binary/_excel_workbook.py,sha256=ZQyXi3FOms6z5GhcGq6-18sY9Y3GM2GqRmLfQEyKij0,3954
pytablewriter/writer/binary/_interface.py,sha256=U48pCiVMUgeYSKCINncSN5Sy9OnYQ90LMhC7Ls1C8O0,1487
pytablewriter/writer/binary/_pandas.py,sha256=7UVtUNYGIIywe7GyOT8uDYLtYezoK9FZzk_NhwHNYQo,2660
pytablewriter/writer/binary/_sqlite.py,sha256=ZnXqvidGUri1SM-Cxls1NwgVg9riDaPkFnr9iQjGchQ,2982
pytablewriter/writer/text/__init__.py,sha256=_rk5sczp6H9sag4PXgKIbxSTrgW8HktmlJqN0cXR01M,1384
pytablewriter/writer/text/__pycache__/__init__.cpython-39.pyc,,
pytablewriter/writer/text/__pycache__/_asciidoc.cpython-39.pyc,,
pytablewriter/writer/text/__pycache__/_borderless.cpython-39.pyc,,
pytablewriter/writer/text/__pycache__/_common.cpython-39.pyc,,
pytablewriter/writer/text/__pycache__/_css.cpython-39.pyc,,
pytablewriter/writer/text/__pycache__/_csv.cpython-39.pyc,,
pytablewriter/writer/text/__pycache__/_html.cpython-39.pyc,,
pytablewriter/writer/text/__pycache__/_interface.cpython-39.pyc,,
pytablewriter/writer/text/__pycache__/_json.cpython-39.pyc,,
pytablewriter/writer/text/__pycache__/_jsonlines.cpython-39.pyc,,
pytablewriter/writer/text/__pycache__/_latex.cpython-39.pyc,,
pytablewriter/writer/text/__pycache__/_ltsv.cpython-39.pyc,,
pytablewriter/writer/text/__pycache__/_markdown.cpython-39.pyc,,
pytablewriter/writer/text/__pycache__/_mediawiki.cpython-39.pyc,,
pytablewriter/writer/text/__pycache__/_rst.cpython-39.pyc,,
pytablewriter/writer/text/__pycache__/_spacealigned.cpython-39.pyc,,
pytablewriter/writer/text/__pycache__/_text_writer.cpython-39.pyc,,
pytablewriter/writer/text/__pycache__/_toml.cpython-39.pyc,,
pytablewriter/writer/text/__pycache__/_tsv.cpython-39.pyc,,
pytablewriter/writer/text/__pycache__/_unicode.cpython-39.pyc,,
pytablewriter/writer/text/__pycache__/_yaml.cpython-39.pyc,,
pytablewriter/writer/text/_asciidoc.py,sha256=E2MO-Z3yVuF3eviwMqNvgkk5_-1R_u-I31bvH85xVHI,4410
pytablewriter/writer/text/_borderless.py,sha256=4RhWiSppkS2bRIl8osmqkSst-hwDzaAT-GaSyHyHft4,1010
pytablewriter/writer/text/_common.py,sha256=1YRanAyjyEgo9muaUM3n9pPieKsX0d5Y-_ktI92B_tA,554
pytablewriter/writer/text/_css.py,sha256=kXaOogifXdFcDgV83D3zd2k1MlfDotv2gTEjgYaJ6cI,5496
pytablewriter/writer/text/_csv.py,sha256=MBkHpdC7u9L8p9FNws-IpTECzn2-LpbsT9lg1sKEJzg,1484
pytablewriter/writer/text/_html.py,sha256=lgCJYXuCtWJ9maF4HooylRaYtwYPPrUpHYHAb_VWEAU,6328
pytablewriter/writer/text/_interface.py,sha256=Qcwjq6w_dz5Lk7Txr42ESnomW0316-LqPBo1HmcRP7I,642
pytablewriter/writer/text/_json.py,sha256=kAGiwnbFWyLoqbNZL6at4u_DcS1JrUzJV5wOYQZk_J0,5081
pytablewriter/writer/text/_jsonlines.py,sha256=si6GB85HhqIaTjBYNjg8xD4HhqvYlCHnOTOSl7xY0G4,1296
pytablewriter/writer/text/_latex.py,sha256=_w_2c2fimZk2TL402lInpWzb3FtQpH6r6KdWbQaGet4,6336
pytablewriter/writer/text/_ltsv.py,sha256=xsMAMMU2F5UdznagXnQJbz62-nstSiSbjm7vgHlLm_s,1517
pytablewriter/writer/text/_markdown.py,sha256=ZfBhMN1CgLt5a-2ZxV4QHpiIs3pY-Sh8Fla3w1BXvkA,6201
pytablewriter/writer/text/_mediawiki.py,sha256=lNGMwtLClFIMYWQeNTZ52wk8SHiT7FO93C580vPqMqU,3312
pytablewriter/writer/text/_rst.py,sha256=aiE7zHflwU6RnOGQAowbhTF6onBjmPhx6QvQyaDco4Y,6906
pytablewriter/writer/text/_spacealigned.py,sha256=osMTS0cvNl8qWthlUkB6noAaKGlBUL02MW-YEvMXEgA,897
pytablewriter/writer/text/_text_writer.py,sha256=u21ijkBHg3KAtOT58yz5gQWeNTy82hAYxSQiO2RxFNE,20556
pytablewriter/writer/text/_toml.py,sha256=oUQRIiNIXQ47ccGasVohbDGBksMMxDETv0mnbCngVC8,2265
pytablewriter/writer/text/_tsv.py,sha256=xLXiOznMZ8W8fKa-xfZCNlTl2Q4_HWFTUQlR4__DjuU,467
pytablewriter/writer/text/_unicode.py,sha256=-2W2O-FaBkPDAJuwBKLEutGS09y7DcasK4Q83K0GXiE,3532
pytablewriter/writer/text/_yaml.py,sha256=ERDWX60MWjPRHf0Gs3q-m38n49NGf460YRR0ru_RF0s,1968
pytablewriter/writer/text/sourcecode/__init__.py,sha256=25ju5UpRUV7DBNsusSj4YLzOLY5akmmEW7gKegSVtu4,297
pytablewriter/writer/text/sourcecode/__pycache__/__init__.cpython-39.pyc,,
pytablewriter/writer/text/sourcecode/__pycache__/_javascript.cpython-39.pyc,,
pytablewriter/writer/text/sourcecode/__pycache__/_numpy.cpython-39.pyc,,
pytablewriter/writer/text/sourcecode/__pycache__/_pandas.cpython-39.pyc,,
pytablewriter/writer/text/sourcecode/__pycache__/_python.cpython-39.pyc,,
pytablewriter/writer/text/sourcecode/__pycache__/_sourcecode.cpython-39.pyc,,
pytablewriter/writer/text/sourcecode/_javascript.py,sha256=MHxFDde91ekZ8J0SfblFa7yO8vE8zKsKRJVY6hEsPok,4725
pytablewriter/writer/text/sourcecode/_numpy.py,sha256=XGIHnGIpu7r5RPBhaadPXuPSSOWLAd2rss8OiI2huNM,1902
pytablewriter/writer/text/sourcecode/_pandas.py,sha256=3wgXSSpD7UVNp9vmhmNb-lgZrdpZ66Ol8KEFeXLMl1k,2550
pytablewriter/writer/text/sourcecode/_python.py,sha256=IQwuSTULsksIqp0tH6lpHGkuOQfC4IxxGrlmG-CGrbI,2535
pytablewriter/writer/text/sourcecode/_sourcecode.py,sha256=BDr9hGrzmukvZzO48jsEInmeOSigJSBblhtgO5OEC7Y,2239

View File

@ -0,0 +1,5 @@
Wheel-Version: 1.0
Generator: setuptools (75.6.0)
Root-Is-Purelib: true
Tag: py3-none-any