Skip to main content

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

csvformatmail-0.4.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

csvformatmail-0.4-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file csvformatmail-0.4.tar.gz.

File metadata

  • Download URL: csvformatmail-0.4.tar.gz
  • Upload date:
  • Size: 9.9 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

Hashes for csvformatmail-0.4.tar.gz
Algorithm Hash digest
SHA256 f2cec8a35a33e95ea2daa7d6a17a1f61680bda1784816d08f7e95811c1262270
MD5 ec7a82fc3a1f2a7fad68c3585bc69217
BLAKE2b-256 72aeec4941ac5c32dc1c3497dfecb10f9634c54eec979ffcb7aa8d99097d9a14

See more details on using hashes here.

File details

Details for the file csvformatmail-0.4-py3-none-any.whl.

File metadata

  • Download URL: csvformatmail-0.4-py3-none-any.whl
  • Upload date:
  • Size: 9.2 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

Hashes for csvformatmail-0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 80b9491cf54c4ba9d15048355934322a753ec0a59d8f6afcce25b4bef29f47b6
MD5 08738120a24196d1ab2e0f485dadf7a9
BLAKE2b-256 e2141a0880b5a244f7bc01351f20aece9245522fec0493d192b00aca235a512f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page