[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] ob-python results handling for dicts, dataframes, arrays, an
From: |
gerard . vermeulen |
Subject: |
Re: [PATCH] ob-python results handling for dicts, dataframes, arrays, and plots |
Date: |
Thu, 17 Aug 2023 09:14:02 +0000 |
On 17.08.2023 06:04, Jack Kamm wrote:
I attach a 2nd patch implementing this. It also makes ":results table"
the default return type for dict. (Use ":results verbatim" to get the
dict as a string instead).
I am also putting a branch with these changes here:
https://github.com/jackkamm/org-mode/tree/python-results-revisited-2023
Happy to see that ob-python gets so much love!
Your patches allow anyone to change org-babel-python--def-format-value.
For instance, I want to use black to "pretty-print" certain tree-like
structures
and I have now in my init.el:
(with-eval-after-load 'ob-python
(setq org-babel-python--def-format-value "\
def __org_babel_python_format_value(result, result_file, result_params):
with open(result_file, 'w') as f:
if 'graphics' in result_params:
result.savefig(result_file)
elif 'pp' in result_params:
import black
f.write(black.format_str(repr(result), mode=black.Mode()))
else:
if not set(result_params).intersection(\
['scalar', 'verbatim', 'raw']):
try:
import pandas
except ImportError:
pass
else:
if isinstance(result, pandas.DataFrame):
result = [[''] + list(result.columns), None] + \
[[i] + list(row) for i, row in result.iterrows()]
elif isinstance(result, pandas.Series):
result = list(result.items())
try:
import numpy
except ImportError:
pass
else:
if isinstance(result, numpy.ndarray):
result = result.tolist()
f.write(str(result))"))
Without your patches I use advice to override
org-babel-python-format-session-value, which is worse IMO.
This also allows anyone to format for instance AstroPy tables
(https://docs.astropy.org/en/stable/table/).
I do not know how much this "abuse" of defconst is frowned
upon (elisp manual says defconst is advisory), but maybe it
can be advertised as a feature.
Best regards -- Gerard
- [PATCH] ob-python results handling for dicts, dataframes, arrays, and plots, Jack Kamm, 2023/08/15
- Re: [PATCH] ob-python results handling for dicts, dataframes, arrays, and plots, Ihor Radchenko, 2023/08/16
- Re: [PATCH] ob-python results handling for dicts, dataframes, arrays, and plots, Jack Kamm, 2023/08/17
- Re: [PATCH] ob-python results handling for dicts, dataframes, arrays, and plots,
gerard . vermeulen <=
- Re: [PATCH] ob-python results handling for dicts, dataframes, arrays, and plots, Ihor Radchenko, 2023/08/17
- Re: [PATCH] ob-python results handling for dicts, dataframes, arrays, and plots, gerard . vermeulen, 2023/08/18
- Re: [PATCH] ob-python results handling for dicts, dataframes, arrays, and plots, gerard . vermeulen, 2023/08/18
- Re: [PATCH] ob-python results handling for dicts, dataframes, arrays, and plots, Jack Kamm, 2023/08/18
- Re: [PATCH] ob-python results handling for dicts, dataframes, arrays, and plots, Ihor Radchenko, 2023/08/19
- Re: [PATCH] ob-python results handling for dicts, dataframes, arrays, and plots, Jack Kamm, 2023/08/20
- Re: [PATCH] ob-python results handling for dicts, dataframes, arrays, and plots, Ihor Radchenko, 2023/08/20
- Re: [PATCH] ob-python results handling for dicts, dataframes, arrays, and plots, Ihor Radchenko, 2023/08/19
- Re: [PATCH] ob-python results handling for dicts, dataframes, arrays, and plots, Jack Kamm, 2023/08/20
- Re: [PATCH] ob-python results handling for dicts, dataframes, arrays, and plots, Ihor Radchenko, 2023/08/20