# INSTALL / BUILD instructions for Apache Airflow Python Client

This is a generic installation method that requires a number of dependencies to be installed.

Depending on your system you might need different prerequisites, but the Python3.6 or above is a must.

# [required] fetch the tarball and untar the source move into the directory that was untarred.

# [optional] run Apache RAT (release audit tool) to validate license headers
# RAT docs here: https://creadur.apache.org/rat/. Requires Java and Apache Rat
java -jar apache-rat.jar -E ./.rat-excludes -d .

# [optional] You may want to install the client into a virtual env to keep the
# dependencies separated from the system wide versions

python3 -m venv PATH_TO_YOUR_VENV
source PATH_TO_YOUR_VENV/bin/activate

# [required] building and installing by pip (the package can also be built with any other modern tools
# that can build Python packages, e.g. setuptools, but pip is the recommended way)

pip install .

# We also recommend hatch to convert the client to packages

hatch build -c -t wheel -t sdist
