#-------------------------------------------------------------
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
# 
#   http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#
#-------------------------------------------------------------

# Mac
.DS_Store

# KDE
.directory

# Eclipse
.classpath
.project
.settings/
.externalToolBuilders/
maven-eclipse.xml
/src/main/cpp/kernels/.cproject

# Intellij
.idea/
.idea_modules/
*.iml
*.iws

# vscode
.vscode

# checksum files
*.crc

# Build artifacts
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.metadata
.cache*

# Documentation artifacts
.jekyll-cache/
_site/

# Tutorial data mnist
src/main/python/systemds/examples/tutorials/*/
scripts/nn/examples/data/*

# User configuration files
conf/SystemDS-config.xml

# Documentation artifacts
docs/_site
# TODO Make the API auto generate and relocate into this api folder for webpage
# docs/api

# Test Artifacts
src/test/scripts/**/*.dmlt
src/test/scripts/functions/mlcontextin/
src/test/java/org/apache/sysds/test/component/compress/io/files
src/test/java/org/apache/sysds/test/component/compress/io/filesIOSpark/*
.factorypath

# Excluded sources
# (we're including the generated files to simply IDE setup w/o mvn build)
# Since the gitignore file does not ignore tracked files, the auto-generated
# parser files need to be ignored by the following command:
# git update-index --assume-unchanged [<file> ...]
# This can be undone by git update-index --no-assume-unchanged [<file> ...]
# Use the command above on these files:
# src/main/java/Dml.tokens
# src/main/java/DmlLexer.tokens
# src/main/java/org/apache/sysds/parser/dml/DmlBaseListener.java
# src/main/java/org/apache/sysds/parser/dml/DmlLexer.java
# src/main/java/org/apache/sysds/parser/dml/DmlListener.java
# src/main/java/org/apache/sysds/parser/dml/DmlParser.java

# Git ignore the temp files generated by antler when making a new syntax
src/main/java/org/apache/sysds/parser/dml/.antlr

src/test/scripts/**/in
src/test/scripts/**/out
src/test/scripts/**/expected

# Working directory and scratch space
temp/*
temp
scratch_space/

# Ruby
Gemfile.lock

# Python
**/__pycache__
*.pyc

# Spark
**/metastore_db
derby.log
/systemds/

# native cpp code build artifacts
src/main/cpp/build
src/main/cpp/bin

# legacy dml 
*.dmlt

# Performance Test artifacts
scripts/perftest/results
scripts/perftest/logs
scripts/perftest/in
scripts/perftest/scratch_space
scripts/perftest/temp
scripts/perftest/fed/results
scripts/perftest/fed/scratch_space
scripts/perftest/fed/temp

src/test/scripts/functions/iogen/*.raw
src/test/scripts/functions/pipelines/intermediates/regression/*
src/test/scripts/functions/pipelines/intermediates/classification/*
