A tool to manipulate csv file with headers
Project description
csvformatmail: A tool to format mails from csv and to send them
Installing
From pypi:
pip3 install csvformatmail
Or developer version:
git clone <this repo>
cd csvformatmail
pip3 install -e .
Enable completion (for bash or other shells using bash-completion)
mkdir -p ~/.local/share/bash-completion/completions
register-python-argcomplete csvformatmail > ~/.local/share/bash-completion/completions/csvformatmail
Python module
All methods and functions are accessible in the python module.
Example
Write a mail template:
From: My name <my-mail-address@example.org>
To: {mail}
Subject: Result of the last test
Dear {firstname} {lastname.capitalize()},
Your results of the last test are:
- Part A: {a:.1f}
- Part B: {b:.1f}
Therefore you {"pass" if a+b>50 else "fail"} the test.
--
signature
Use a csv file with (at least) the columns firstname
, lastname
, mail
, a
and b
:
firstname,lastname,mail,a,b,c
Jacques,MARTIN,jacques.martin@example.org,12.54441,14,1111.221
…
And the command if you have a local smtp:
csvformatmail template.txt -t a:float -t b:float listing.csv
Or if you use a distant smtp:
csvformatmail -h smtp.example.org -l mylogin template.txt -t a:float -t b:float listing.csv
Complex example
The template file can contain python definition, and all the column is
accessible by the names cols
(default name, can be changed with arg
--colsname
). See the following template file:
# python preamble begin
import numpy as np
def quartiles(list_values):
q1, q2, q3 = np.percentile(list_values, (25,50,75))
return f"{q1:.1f}, {q2:.1f}, {q3:.1f}"
# python preamble end
From: My name <my-mail-address@example.org>
To: {mail}
Subject: Result of the last test
Dear {firstname} {lastname.capitalize()},
Your results of the last test are:
- Part A: {a:.1f}
- Part B: {b:.1f}
For all the class, the mean of part A is {np.mean(cols['a']):.1}, and the
quartiles are {quartiles(cols['a'])}.
Therefore you {"pass" if a+b>50 else "fail"} the test.
--
signature
Misc
Consider use function fill
and indent
of textwrap
module. For this you
need use -b "import textwrap"
or add a python preamble in you template file.
e.g. in a template to rewrap to 72 chars:
{textwrap.fill(somevalue, width=72)}
Or, for rewrap and indent by >
:
{textwrap.indent(textwrap.fill(somevalue, width=70), "> ")}
Project details
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
File details
Details for the file csvformatmail-0.3.tar.gz
.
File metadata
- Download URL: csvformatmail-0.3.tar.gz
- Upload date:
- Size: 9.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.1+
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | daf8ce4b31052ce66a4c1aa196d11b8235a38f8a5dad2c289c8d22ab89cae969 |
|
MD5 | 1fd3c80c89c31e5693adfd976b2b48cd |
|
BLAKE2b-256 | 2a2c94dd24ddedb0f5d77cd99d1e461bb103424809b4a61148ebb143da257b20 |
File details
Details for the file csvformatmail-0.3-py3-none-any.whl
.
File metadata
- Download URL: csvformatmail-0.3-py3-none-any.whl
- Upload date:
- Size: 9.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.1+
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 675f0992e787d4f5bf3c5c00d29ebe70a44a48eaab8349dd6f837713c1c4735b |
|
MD5 | 28d7606d311a6570cdb79ac6bd6c5204 |
|
BLAKE2b-256 | 0d1c25ce25c316ed9962d991138bf2006203321493e082892b9e1ffd03687b94 |