# Airflow configuration
airflow.cfg
unittests.cfg
airflow_login.py
dbinit.py
initdb.py
secrets.py

# Airflow sqlite databases
airflow.db
unittests.db

# Airflow temporary artifacts
airflow/git_version
airflow/www/static/coverage/
airflow/www/static/dist
airflow/www_rbac/static/coverage/
airflow/www_rbac/static/dist/

logs/
airflow-webserver.pid

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
.pytest_cache/

# C extensions
*.so

# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover
.hypothesis/
.pytest_cache

# Translations
*.mo
*.pot

# Django stuff:
# *.log
local_settings.py

# Flask stuff:
instance/
.webassets-cache
/webserver_config.py

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/
docs/_api/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# pyenv
.python-version

# celery beat schedule file
celerybeat-schedule

# SageMath parsed files
*.sage.py

# dotenv
.env

# virtualenv
.venv*
venv*
ENV/

# Spyder project settings
.spyderproject

# Rope project settings
.ropeproject

# PyCharm
.idea/
*.iml

# Visual Studio Code
.vscode/

# vim
*.swp

# OSX
.DS_Store

# SQL Server backups
*.bkp

# Spark
rat-results.txt

# Git stuff
.gitattributes
# Kubernetes generated templated files
*.generated
*.tar.gz
scripts/ci/kubernetes/kube/.generated/airflow.yaml
scripts/ci/kubernetes/docker/requirements.txt

# Node & Webpack Stuff
*.entry.js
node_modules
npm-debug.log*
derby.log
metastore_db

# Airflow log files when airflow is run locally
airflow-*.err
airflow-*.out
airflow-*.log
airflow-*.pid

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Needed for CI Dockerfile build system
.build
/tmp
/files

/hive_scratch_dir/
/.bash_aliases
/.bash_history
/.inputrc
log.txt*
