# 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
*.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/test_importlib/resources/data01/*           noeol
Lib/test/test_importlib/resources/namespacedata01/*  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

# 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/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/token.h                                     generated
Lib/_opcode_metadata.py                             generated
Lib/keyword.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/token.py                                        generated
Misc/sbom.spdx.json                                 generated
Objects/typeslots.inc                               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/stdlib_module_names.h                        generated
Tools/peg_generator/pegen/grammar_parser.py         generated
aclocal.m4                                          generated
configure                                           generated
