# C/C++ build outputs
.build/
bins
gens
libs
objs

# Python items
.coverage*
.eggs
.pytype
*.egg
*.egg-info
a.out
cython_debug/
dist/
htmlcov/
py3*/
python_build/
python_pylint_venv/
src/python/grpcio_*/=*
src/python/grpcio_*/build/
src/python/grpcio_*/LICENSE
src/python/grpcio_status/grpc_status/google/rpc/status.proto
yapf_virtual_environment/

# Node installation output
node_modules
src/node/extension_binary/

# gcov coverage data
reports
coverage
*.gcno

# profiler output
*.prof

# python compiled objects
*.pyc

# eclipse project files
.cproject
.project
.settings

# cache for run_tests.py
.run_tests_cache
.preprocessed_build

# emacs temp files
*~

# vim temp files
.*.swp

# Makefile's cache
cache.mk

# Ruby's local gem information
Gemfile.lock

# Temporary test reports
report.xml
*/sponge_log.xml
latency_trace.txt
latency_trace.*.txt

# port server log
portlog.txt

# gyp generated make files
*-gyp.mk
out

# YCM config files
.ycm_extra_conf.py

# XCode
^build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
*.DS_Store

# Swift Package Manager files
Package.resolved

# Objective-C generated files
*.pbobjc.*
*.pbrpc.*
src/objective-c/**/Build

# Cocoapods artifacts
Pods/
Podfile.lock
*.xcworkspace

# Artifacts directory
/artifacts/

# Git generated files for conflicting
*.orig

# IDE specific folder for JetBrains IDEs
.idea/

# Bazel files
bazel-*
bazel_format_virtual_environment/
tools/bazel-*

# Debug output
gdb.txt

# ctags file
tags

# perf data
memory_usage.csv
perf.data
perf.data.old

# bm_diff
bm_diff_new/
bm_diff_old/
bm_*.json

# cmake build files
**/cmake/build/

# Visual Studio Code artifacts
.vscode/*
.history/

# Clion artifacts
cmake-build-debug/

# Benchmark outputs
BenchmarkDotNet.Artifacts/

# pyenv config
.python-version

# clang JSON compilation database file
compile_commands.json

# IWYU byproducts
compile_commands_for_iwyu.json
iwyu.out
iwyu_files.txt
