# NOTE: if you modify this file, you probably need to modify the file set that
# is an input to 'maven-assembly-plugin' that generates source distribution.
# This is typically in files named 'src.xml' throughout this repository.

# Ignore any offline repositories the user may have created.
**/offline-repository/**/*

# Ignore files generated by the Gradle build process.
**/.gradle/**/*
**/.gogradle/**/*
**/gogradle.lock
**/build/**/*
.test-infra/**/vendor/**/*
sdks/**/vendor/**/*
runners/**/vendor/**/*
**/.gradletasknamecache

# Ignore files generated by the Maven build process.
**/bin/**/*
**/dependency-reduced-pom.xml
**/target/**/*

# Ignore generated archetypes
sdks/java/maven-archetypes/examples/src/main/resources/archetype-resources/src/
sdks/java/maven-archetypes/examples-java8/src/main/resources/archetype-resources/src/

# Ignore files generated by the Python build process.
**/*.pyc
**/*.pyo
**/*.pyd
**/*.egg-info/
**/.eggs/
**/nose-*.egg/
**/.tox/**/*
**/dist/**/*
**/distribute-*/**/*
**/env/**/*
sdks/python/**/*.c
sdks/python/**/*.so
sdks/python/**/*.egg
sdks/python/LICENSE
sdks/python/NOTICE
sdks/python/README.md
sdks/python/apache_beam/portability/api/*pb2*.*
sdks/python/apache_beam/portability/api/*.yaml
sdks/python/nosetests*.xml
sdks/python/postcommit_requirements.txt

# Ignore IntelliJ files.
**/.idea/**/*
**/*.iml
**/*.ipr
**/*.iws
**/out/**/*

# Ignore Eclipse files.
**/.classpath
**/.project
**/.factorypath
**/.checkstyle
**/.fbExcludeFilterFile
**/.apt_generated/**/*
**/.settings/**/*
**/.gitignore

# Ignore Visual Studio Code files.
**/.vscode/**/*

# Hotspot VM leaves this log in a non-target directory when java crashes
**/hs_err_pid*.log

# Ignore files that end with '~', since they are most likely auto-save files
# produced by a text editor.
**/*~

# Ignore MacOSX files.
**/.DS_Store/**/*
**/.DS_Store

# Ignore Jupyter notebook checkpoints.
**/.ipynb_checkpoints/**/*

# NOTE: if you modify this file, you probably need to modify the file set that
# is an input to 'maven-assembly-plugin' that generates source distribution.
# This is typically in files named 'src.xml' throughout this repository.

# JetBrains Education files
!**/study_project.xml
**/.coursecreator/**/*
