##############################################################################
#
# Copyright 2019 highstreet technologies GmbH and others...
#
# Licensed 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
#
#     https://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.
#

pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
*.pyc

*/**/bin/

# Maven
target/
*.tar.gz

# Opendaylight yang-tools
yang-gen-sal/

# IDE (Eclipse, vsCode) related
.project
.classpath
.settings/
target-ide/
release.properties
.vscode

# data models in scp/oam/modeling
*.yang

# Avoid ignoring Maven wrapper jar file (.jar files are usually ignored)
!/.mvn/wrapper/maven-wrapper.jar

# VES related
*/**/json/examples
*/**/__pycache__
*.log

# avoid copyright issues with 3GPP
*/**/3gpp/**/*.yaml

# documentation

.tox
docs/_build/
ci-management/
