# Copyright ETSI Contributors 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
#
#     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.

__pycache__
*.pyc
.tox/
dist/
.cache/
.local/
.eggs
osm_lcm.egg-info/
.coverage
cover
coverage.xml
.tox
nosetests.xml
.cache
.vscode/
.project
.settings
.pydevproject
pyvenv.cfg
venv/
.idea