## INSTALL / BUILD instructions for Apache Airflow Provider packages

NOTE! Those sources are only intended to be used to build Apache Airflow Provider packages,
not the Apache Airflow. They have been generated using the unreleased version of Apache Airflow.
(from main)

The .tar.gz sdist package contains setup.py file that can be use to build the provider package using:

`setup.py bdist_wheel sdist`

Providing that you have all prerequisites described in 'setup_requires'.

# [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 -d .
