Format Python code (list of lists) as a fixed width table.
Project description
table-format
Format Python code (list of lists) as a fixed width table.
Motivation and usage
You've got some tests or other code like this:
def test_the_table():
assert generate_the_table() == [
['Date', 'Description', 'Amount', 'Balance'],
['2021-04-06', 'Account opened', 0, 0],
['2021-04-07', 'Cash deposit at 123 Main St, Newtown', 1000, 1000],
['2021-04-08', 'ACME anvils', -300, 700],
]
Or maybe even worse like this:
assert generate_the_table() == [
[
"Date",
"Description",
"Amount",
"Balance",
],
[
"2021-04-06",
"Account opened",
0,
0,
],
[
"2021-04-07",
"Cash deposit at 123 Main St, Newtown",
1000,
1000,
],
[
"2021-04-08",
"ACME anvils",
-300,
700,
],
]
Wouldn't it be nice to have readable tests with columns all lined up?
Copy the whole list of lists to the clipboard, then pipe to table-format --guess-indent
:
- on Linux you can use
xsel
orxclip
- on MacOS you can use
pbpaste
- on Windows Powershell you can use
Get-Clipboard
Linux example:
$ xsel | table-format --guess-indent
[
['Date', 'Description', 'Amount', 'Balance'],
['2021-04-06', 'Account opened', 0, 0 ],
['2021-04-07', 'Cash deposit at 123 Main St, Newtown', 1000, 1000 ],
['2021-04-08', 'ACME anvils', -300, 700 ],
]
The output should be ready to paste back into your editor.
Options
Pass the --help
flag to show all options:
$ table-format --help
⬇️ Installation
The most recent release can be installed from PyPI with:
$ pip install table-format
You can also use pipx to install it more conveniently in an isolated environment:
$ pipx install table-format
See CHANGES for changelog.
The most recent code and data can be installed directly from GitHub with:
$ pip install git+https://github.com/spookylukey/table-format.git
To install in development mode, use the following:
$ git clone git+https://github.com/spookylukey/table-format.git
$ cd table-format
$ pip install -e .
Other tips
Black
Black will revert code formatted like this. But you can use # fmt: off
and # fmt: on
commands to stop black reformatting these blocks.
Flake8
Flake8 might complain about:
- E202 - whitespace before
]
- E241 - multiple spaces after comma
- E501 - line too long
You can silence these using noqa:E202,E241,E501
, which you can automatically
add to the end of each line like this:
$ table-format --add-noqa=E202,E241,E501
Other noqa
items and other end of line comments will be preserved.
Emacs
With default keybindings, doing C-u
M-|
table-format --guess-indent
ENTER
will
replace the current region with the formatted version from table-format
.
You can wrap it up in a nice function like this:
(defun align-python-table ()
(interactive)
(shell-command-on-region
;; beginning and end of region
(region-beginning)
(region-end)
;; command and parameters
"table-format --guess-indent"
;; output buffer
(current-buffer)
;; replace?
t
;; name of the error buffer
"*Table-Format Error Buffer*"
;; show error buffer?
t))
Other editors
Contributions of instructions to make this easy to use in other editors are very welcome!
⚖️ License
The code in this package is licensed under the MIT License.
🙏 Contributing
Contributions, whether filing an issue, making a pull request, or forking, are appreciated. See CONTRIBUTING.rst for more information on getting involved.
🛠️ Development
The final section of the README is you for if you want to get involved by making a code contribution.
❓ Testing
After cloning the repository and installing tox
with pip install tox
, the
unit tests in the tests/
folder can be run reproducibly with:
$ tox
Additionally, these tests are automatically re-run with each commit in a GitHub Action.
🍪 Cookiecutter Acknowledgement
This package was created with @audreyfeldroy's cookiecutter package using @cthoyt's cookiecutter-python-package template.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for table_format-1.3.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c795f4050770fe93244794e147d8da38490405a1fdd945afe8f96b1f08caa5a5 |
|
MD5 | f35f84b4dbcac88cdd1adb1db5e61d68 |
|
BLAKE2b-256 | ab6d85136ef8e87aa7ca926b5da3cdd092b5b68109b0afd1a2220a6a0986a313 |