# See https://help.github.com/articles/about-codeowners/
# for more info about CODEOWNERS file

# It uses the same pattern rule for gitignore file
# https://git-scm.com/docs/gitignore#_pattern_format

# GitHub
.github/**                    @ezio-melotti @hugovk

# pre-commit
.pre-commit-config.yaml       @hugovk @AlexWaygood

# Build system
configure*                    @erlend-aasland @corona10

# asyncio
**/*asyncio*                  @1st1 @asvetlov @gvanrossum @kumaraditya303 @willingc

# Core
**/*context*                  @1st1
**/*genobject*                @markshannon
**/*hamt*                     @1st1
Objects/set*                  @rhettinger
Objects/dict*                 @methane @markshannon
Objects/typevarobject.c       @JelleZijlstra
Objects/type*                 @markshannon
Objects/codeobject.c          @markshannon
Objects/frameobject.c         @markshannon
Objects/call.c                @markshannon
Python/ceval.c                @markshannon
Python/compile.c              @markshannon @iritkatriel
Python/assemble.c             @markshannon @iritkatriel
Python/flowgraph.c            @markshannon @iritkatriel
Python/ast_opt.c              @isidentical
Lib/test/test_patma.py        @brandtbucher
Lib/test/test_peepholer.py    @brandtbucher
Lib/test/test_type_*.py       @JelleZijlstra

# Exceptions
Lib/traceback.py              @iritkatriel
Lib/test/test_except*.py      @iritkatriel
Lib/test/test_traceback.py    @iritkatriel
Objects/exceptions.c          @iritkatriel
Python/traceback.c            @iritkatriel

# Hashing
**/*hashlib*                  @tiran
**/*pyhash*                   @tiran
**/*sha*                      @tiran
**/*md5*                      @tiran
**/*blake*                    @tiran
/Modules/_blake2/**           @tiran
/Modules/_sha3/**             @tiran

# logging
**/*logging*                  @vsajip

# venv
**/*venv*                     @vsajip

# Launcher
/PC/launcher.c                @vsajip

# HTML
/Lib/html/                    @ezio-melotti
/Lib/_markupbase.py           @ezio-melotti
/Lib/test/test_html*.py       @ezio-melotti
/Tools/build/parse_html5_entities.py   @ezio-melotti

# Import (including importlib).
**/*import*                   @brettcannon @encukou @ericsnowcurrently @ncoghlan @warsaw
**/*importlib/resources/*      @jaraco @warsaw @FFY00
**/importlib/metadata/*       @jaraco @warsaw

# Dates and times
**/*datetime*                 @pganssle @abalkin
**/*str*time*                 @pganssle @abalkin
Doc/library/time.rst          @pganssle @abalkin
Lib/test/test_time.py         @pganssle @abalkin
Modules/timemodule.c          @pganssle @abalkin
Python/pytime.c               @pganssle @abalkin
Include/pytime.h              @pganssle @abalkin

# Email and related
**/*mail*                     @python/email-team
**/*smtp*                     @python/email-team
**/*mime*                     @python/email-team
**/*imap*                     @python/email-team
**/*poplib*                   @python/email-team

# Garbage collector
/Modules/gcmodule.c           @pablogsal
/Doc/library/gc.rst           @pablogsal

# Parser
/Parser/                      @pablogsal @lysnikolaou
/Tools/peg_generator/         @pablogsal @lysnikolaou
/Lib/test/test_peg_generator/ @pablogsal @lysnikolaou
/Grammar/python.gram          @pablogsal @lysnikolaou
/Lib/tokenize.py              @pablogsal @lysnikolaou
/Lib/test/test_tokenize.py    @pablogsal @lysnikolaou

# AST
Python/ast.c                  @isidentical
Parser/asdl.py                @isidentical
Parser/asdl_c.py              @isidentical
Lib/ast.py                    @isidentical

# Mock
/Lib/unittest/mock.py         @cjw296
/Lib/test/test_unittest/testmock/* @cjw296

# SQLite 3
**/*sqlite*                   @berkerpeksag @erlend-aasland

# subprocess
/Lib/subprocess.py            @gpshead
/Lib/test/test_subprocess.py  @gpshead
/Modules/*subprocess*         @gpshead

# Windows
/PC/                          @python/windows-team
/PCbuild/                     @python/windows-team

# Urllib
**/*robotparser*              @berkerpeksag

# Windows installer packages
/Tools/msi/                   @python/windows-team
/Tools/nuget/                 @python/windows-team

# Misc
**/*itertools*                @rhettinger
**/*collections*              @rhettinger
**/*random*                   @rhettinger
**/*queue*                    @rhettinger
**/*bisect*                   @rhettinger
**/*heapq*                    @rhettinger
**/*functools*                @rhettinger
**/*decimal*                  @rhettinger

**/*dataclasses*              @ericvsmith

**/*idlelib*                  @terryjreedy

**/*typing*                   @gvanrossum @Fidget-Spinner @JelleZijlstra @AlexWaygood

**/*ftplib                    @giampaolo
**/*shutil                    @giampaolo

**/*enum*                     @ethanfurman
**/*cgi*                      @ethanfurman
**/*tarfile*                  @ethanfurman

**/*tomllib*                  @encukou @hauntsaninja

**/*sysconfig*                @FFY00

**/*cjkcodecs*                @corona10

# macOS
/Mac/                         @python/macos-team
**/*osx_support*              @python/macos-team

# pathlib
**/*pathlib*                  @barneygale

# zipfile.Path
**/*zipfile/*_path.py         @jaraco
