# ----------------------------------------------------------------------
# Folders created by the various REEF runtimes during testing
# ----------------------------------------------------------------------
REEF_LOCAL_RUNTIME
REEF_MESOS_RUNTIME
REEF_YARN_RUNTIME
#
# ----------------------------------------------------------------------
# Files generated during builds
# ----------------------------------------------------------------------
target
generated
build
docs/
debug/*
.factorypath
#
# ----------------------------------------------------------------------
# DB Files
# ----------------------------------------------------------------------
*.sqlite3
#
# ----------------------------------------------------------------------
# Files generated by OutputService during runtime
# ----------------------------------------------------------------------
.test_output*
test_output*
runtime/dag/*
*.log
#
# ----------------------------------------------------------------------
# IDE settings
# ----------------------------------------------------------------------
.externalToolBuilders
nbactions*.xml
nb-configuration.xml
.settings
.classpath
.project
*.iml
.idea
atlassian-ide-plugin.xml
*.sln.DotSettings.user
#
# ----------------------------------------------------------------------
# OS Files
# ----------------------------------------------------------------------
.DS_Store
#
# ----------------------------------------------------------------------
# Temporary Files
# ----------------------------------------------------------------------
tmp
*~
\#*
MetricsData
.temp*
#
# ----------------------------------------------------------------------
# ML Files
# ----------------------------------------------------------------------
ml/*.out
ml/*.model
venv/*
#
# ----------------------------------------------------------------------
# Unknown Files. Please clean up over time
# ----------------------------------------------------------------------
ml-data
tang.conf
*.sw[op]
-profile-*.json
#
# ----------------------------------------------------------------------
# Release related files
# ----------------------------------------------------------------------
*.releaseBackup
*.tag
release.properties
