Zut

General-purpose utility Python library to minimize boilerplate code by reusing common code and patterns.

Install

Zut is published on PyPI.

Install with pip:

pip install zut

Zut is designed to work with the Python standard library (version >= 3.7) as its sole mandatory dependency.

Optional dependencies may be installed using an extra specifier:

  • pip install zut[excel] : write and read Excel files with module zut.excel (installs openpyxl defusedxml).

  • pip install zut[tab] : display tabular data elegantly (installs tabulate). If this dependency is not included, the library provides a polyfill for the tabulate function to handle simple cases.

  • pip install zut[time] : parse timezones from string, get local timezone name or convert between naive and aware datetimes in various timezones (installs tzdata and tzlocal on Windows; does not install anything on Linux if Python >= 3.9 because this feature is natively available).

  • pip install zut[perf] : track elapsed time and memory consumption with module zut.perf (installs psutil).

  • pip install zut[sql] : advanced SQL parsing in module zut.sql (installs sqlparse).

Database adapters:

  • pip install zut[maria]: access MariaDB databases (installs mysqlclient and sqlparse).

  • pip install zut[mysql]: access MySQL databases (installs mysqlclient and sqlparse).

  • pip install zut[pg]: access PostgreSQL databases (installs psycopg and sqlparse).

  • pip install zut[sqlserver]: access Microsoft SQL Server databases (installs pyodbc, sqlparams and sqlparse).

  • pip install zut[sqlite]: access SQLite databases (installs sqlparse).

Use pip install zut[all] to install all extras.

Features

Module

Summary

zut.api

A JSON-oriented API client depending only on the Python standard library.

zut.build

Build helpers: get information about Git repositories, transpile makrdown files.

zut.callback

HTTP callback server, typically used for redirects of authorization flows.

zut.choices

Polyfills for Django’s Choices classes so that shared libraries may define choice models without depending on Django.

zut.collection

Parse and convert lists and dicts.

zut.command

Define and run command-line interfaces.

zut.config

Extend ways to access ConfigParser sections.

zut.context

Information about the execution context: script path and name, user scopes, SID, etc.

zut.convert

Flexible conversion of types.

zut.csv

Write and read CSV using flexible format options.

zut.db

Generic database access and tools.

zut.db.base

Base abstraction to access different database backends.

zut.db.maria

Adapter for MariaDB databases.

zut.db.mysql

Adapter for MySQL databases.

zut.db.pg

Adapter for PostgreSQL databases.

zut.db.sqlite

Adapter for SQLite databases.

zut.db.sqlserver

Adapter for Microsoft SQL Server databases.

zut.env

Load .env files and read environment handling type conversions and default values.

zut.excel

Write and read Excel tables (requires zut[excel] extra: openpyxl defusedxml).

zut.file

Archivate files.

zut.geo

Find geographical libraries.

zut.gpg

Encryption and decryption using GnuPG.

zut.graph

Topological sort of dependency graphs

zut.json

Write and read JSON using extended encoder and decoder.

zut.locale

Registration of locales and retrieval of information about locales.

zut.logging

Configuration of logging and helpers for specific use cases.

zut.net

Resolve DNS with a timeout, check port status, determine proxy, etc.

zut.numeric

Parse and convert numbers.

zut.passwordstore

Manage passwords with GPG using pass file structure.

zut.path

Normalize and check paths, find paths to the root hierarchy, get default application directories.

zut.perf

Track elapsed time and memory consumption (requires zut[perf] extra: psutil).

zut.pip

Install PyPi dependencies with pip.

zut.process

Run processes and handle process errors (wrappers and extensions on stdlib’s subprocess).

zut.secret

Define and resolve secrets.

zut.sql

Format and parse SQL queries.

zut.tab

Provide a polyfill for the tabulate function to handle simple cases.

zut.term

Console ANSI colors and live, interactive Console output.

zut.text

Manage UTF8 BOM, fix encoding issues, generate slugs, provide flexible filters.

zut.time

Parse and convert dates, times and time zones.

zut.typing

Python typing helpers.

zut.unittest

Test runner wrapper and polyfills for unittest.

zut.url

Build and manipulate URLs.

Contribute

Pull requests are welcome.

See contributing guidelines.