# Binary data types
*.aif binary
*.aifc binary
*.aiff binary
*.au binary
*.bmp binary
*.exe binary
*.icns binary
*.gif binary
*.ico binary
*.jpg binary
*.pck binary
*.pdf binary
*.png binary
*.psd binary
*.tar binary
*.wav binary
*.whl binary
*.zip binary

# Specific binary files
PC/classicAppCompat.* binary

# Text files that should not be subject to eol conversion
[attr]noeol -text

Lib/test/cjkencodings/*                    noeol
Lib/test/tokenizedata/coding20731.py       noeol
Lib/test/decimaltestdata/*.decTest         noeol
Lib/test/test_email/data/*.txt             noeol
Lib/test/xmltestdata/*                     noeol

# Shell scripts should have LF even on Windows because of Cygwin
Lib/venv/scripts/common/activate text eol=lf
Lib/venv/scripts/posix/* text eol=lf

# Prevent GitHub's web conflict editor from converting LF to CRLF
*.rst text eol=lf

# CRLF files
[attr]dos text eol=crlf

*.bat               dos
*.proj              dos
*.props             dos
*.ps1               dos
*.sln               dos
*.vcxproj*          dos
PC/readme.txt       dos
PCbuild/readme.txt  dos

# Language aware diff headers
# https://tekin.co.uk/2020/10/better-git-diff-output-for-ruby-python-elixir-and-more
# https://gist.github.com/tekin/12500956bd56784728e490d8cef9cb81
*.c     diff=cpp
*.h     diff=cpp
*.css   diff=css
*.html  diff=html
*.py    diff=python
*.md    diff=markdown

# Generated files
# https://github.com/github/linguist/blob/master/docs/overrides.md
#
# To always hide generated files in local diffs, mark them as binary:
# $ git config diff.generated.binary true
#
[attr]generated linguist-generated=true diff=generated

**/clinic/*.c.h                                     generated
**/clinic/*.cpp.h                                   generated
**/clinic/*.h.h                                     generated
*_db.h                                              generated
Doc/_static/tachyon-example-*.html                  generated
Doc/c-api/lifecycle.dot.svg                         generated
Doc/data/stable_abi.dat                             generated
Doc/library/token-list.inc                          generated
Include/internal/pycore_ast.h                       generated
Include/internal/pycore_ast_state.h                 generated
Include/internal/pycore_opcode.h                    generated
Include/internal/pycore_opcode_metadata.h           generated
Include/internal/pycore_*_generated.h               generated
Include/internal/pycore_uop_ids.h                   generated
Include/internal/pycore_uop_metadata.h              generated
Include/opcode.h                                    generated
Include/opcode_ids.h                                generated
Include/slots_generated.h                           generated
Include/token.h                                     generated
Lib/_opcode_metadata.py                             generated
Lib/idlelib/help.html                               generated
Lib/keyword.py                                      generated
Lib/pydoc_data/topics.py                            generated
Lib/pydoc_data/module_docs.py                       generated
Lib/test/certdata/*.pem                             generated
Lib/test/certdata/*.0                               generated
Lib/test/levenshtein_examples.json                  generated
Lib/test/test_stable_abi_ctypes.py                  generated
Lib/test/test_zoneinfo/data/*.json                  generated
Lib/token.py                                        generated
Misc/sbom.spdx.json                                 generated
Modules/_testinternalcapi/test_cases.c.h            generated
Modules/_testinternalcapi/test_targets.h            generated
PC/python3dll.c                                     generated
Parser/parser.c                                     generated
Parser/token.c                                      generated
Programs/test_frozenmain.h                          generated
Python/Python-ast.c                                 generated
Python/executor_cases.c.h                           generated
Python/generated_cases.c.h                          generated
Python/optimizer_cases.c.h                          generated
Python/opcode_targets.h                             generated
Python/record_functions.c.h                         generated
Python/slots_generated.c                            generated
Python/stdlib_module_names.h                        generated
Tools/peg_generator/pegen/grammar_parser.py         generated
aclocal.m4                                          generated
configure                                           generated
*.min.js                                            generated
package-lock.json                                   generated
