Requirements

Here is the list of requirements:

  • Python 3.8.0+
  • alembic
  • colorama
  • cryptography
  • dnspython
  • domain2idna
  • inflection
  • packaging
  • psycopg2 (optional)
  • PyMySQL
  • python-box
  • python-dotenv
  • PyYAML
  • requests
  • setuptools
  • sqlalchemy

Python 3.8.0+

The specification 3.8.0+ is because we test PyFunceble (daily) in all (3.x) versions from 3.8.0. Otherwise, more semantically, PyFunceble is written for all Python 3.8+ version.

alembic

As we want to automate database (MySQL/MariaDB) schema migration, we chose alembic for the job.

colorama

As we use some coloration, colorama is required.

cryptography

As we use some cryptography algorithm for message hashing as example, cryptography is required.

dnspython

As we use it to do the DNS lookups, dnspython is required.

domain2idna

As we propose the conversion of domains to IDNA, domain2idna is required.

Note

domain2idna is maintained and developed by Nissar Chababy (@funilrys), the developer of PyFunceble. The source code can be found on GitHub.

inflection

We don’t necessarily want to reinvent the wheel while generating the (database) tables name from our schema descriptions. This tool is a relief!

packaging

we don’t necessarily want to reinvent the wheel to compare the current with the latest (upstream) version. This module is a relief - too !

psycopg2 (optopnal)

As we propose the PostgreSQL database types, psycopg2 is required.

Warning

This is an optional dependency. If you want to work with psql, you are required to install the development headers then execute the following.

pip3 install --user pyfunceble[-dev][psql]

PyMySQL

As we propose the MariaDB or MySQL database types, PyMySQL is required.

python-box

As we use python-box for a better code access to the configuration, it is required.

python-dotenv

As we are able to load dotenv files, python-dotenv is required.

PyYAML

As our configuration file is written in .yaml, PyYAML is required.

requests

As we use requests multiple times to communicate with webservices, requests is required.

setuptools

As we use install_requires=xx inside our setup.py, setuptools is required.

sqlalchemy

As we don’t want to maintain several RAW SQL files, we use sqlalchemy for the database communication and manipulation.