97 lines
3.6 KiB
Markdown
97 lines
3.6 KiB
Markdown
# Python MyLib
|
|
|
|
Just a set of helpers small libs to make common tasks easier in my script development.
|
|
|
|
[![status-badge](https://ci.zionetrix.net/api/badges/bn8/python-mylib/status.svg)](https://ci.zionetrix.net/bn8/python-mylib)
|
|
|
|
## Requirements
|
|
|
|
```
|
|
apt install \
|
|
build-essential \
|
|
python3 \
|
|
python3-dev
|
|
|
|
# For LDAP:
|
|
apt install libldap2-dev libsasl2-dev
|
|
|
|
# For Config:
|
|
apt install pkg-config libsystemd-dev
|
|
|
|
# For PgSQL:
|
|
apt install libpq-dev
|
|
|
|
# For MySQL:
|
|
apt install libmariadb-dev
|
|
```
|
|
|
|
## Installation
|
|
|
|
### Using pip
|
|
|
|
Just run `pip install git+https://gitea.zionetrix.net/bn8/python-mylib.git`
|
|
|
|
### From source
|
|
|
|
Just run `python setup.py install`
|
|
|
|
**Note:** This project could previously use as independent python files (not as module). This old version is keep in *legacy* git branch (not maintained).
|
|
|
|
## Include libs
|
|
|
|
* **mylib.email.EmailClient:** An email client to forge (eventually using template) and send email via a SMTP server
|
|
* **mylib.ldap.LdapServer:** A small lib to make requesting LDAP server easier. It's also provide some helper functions to deal with LDAP date string.
|
|
* **mylib.mysql.MyDB:** An extra small lib to remember me how to interact with MySQL/MariaDB database
|
|
* **mylib.pgsql.PgDB:** An small lib to remember me how to interact with PostgreSQL database. **Warning:** The insert/update/delete/select methods demonstrate how to forge raw SQL request, but **it's a bad idea**: Prefer using prepared query.
|
|
* **mylib.opening_hours:** A set of helper functions to deal with french opening hours (including normal opening hours, exceptional closure and nonworking public holidays).
|
|
* **mylib.pbar.Pbar:** A small lib for progress bar
|
|
* **mylib.report.Report:** A small lib to implement logging based email report send at exit
|
|
|
|
To know how to use these libs, you can take a look on *mylib.scripts* content or in *tests* directory.
|
|
|
|
## Code Style
|
|
|
|
[pylint](https://pypi.org/project/pylint/) is used to check for errors and enforces a coding standard, using thoses parameters:
|
|
|
|
```bash
|
|
pylint --extension-pkg-whitelist=cx_Oracle
|
|
```
|
|
|
|
[flake8](https://pypi.org/project/flake8/) is also used to check for errors and enforces a coding standard, using thoses parameters:
|
|
|
|
```bash
|
|
flake8 --max-line-length=100
|
|
```
|
|
|
|
[black](https://pypi.org/project/black/) is used to format the code, using thoses parameters:
|
|
|
|
```bash
|
|
black --target-version py37 --line-length 100
|
|
```
|
|
|
|
[isort](https://pypi.org/project/isort/) is used to format the imports, using those parameter:
|
|
|
|
```bash
|
|
isort --profile black --line-length 100
|
|
```
|
|
|
|
[pyupgrade](https://pypi.org/project/pyupgrade/) is used to automatically upgrade syntax, using those parameters:
|
|
|
|
```bash
|
|
pyupgrade --keep-percent-format --py37-plus
|
|
```
|
|
|
|
**Note:** There is `.pre-commit-config.yaml` to use [pre-commit](https://pre-commit.com/) to automatically run these tools before commits. After cloning the repository, execute `pre-commit install` to install the git hook.
|
|
|
|
|
|
## Copyright
|
|
|
|
Copyright (c) 2013-2021 Benjamin Renard <brenard@zionetrix.net>
|
|
|
|
## License
|
|
|
|
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published by the Free Software Foundation.
|
|
|
|
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|