# 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

# asyncio
**/*asyncio*                  @1st1 @asvetlov

# Core
**/*context*                  @1st1
**/*genobject*                @1st1 @markshannon
**/*hamt*                     @1st1
Objects/set*                  @rhettinger
Objects/dict*                 @methane @markshannon
Objects/type*                 @markshannon
Objects/codeobject.c          @markshannon
Objects/frameobject.c         @markshannon
Objects/call.c                @markshannon
Python/ceval.c                @markshannon
Python/compile.c              @markshannon
Python/ast_opt.c              @isidentical

# Hashing
**/*hashlib*                  @python/crypto-team @tiran
**/*pyhash*                   @python/crypto-team @tiran
**/*sha*                      @python/crypto-team @tiran
**/*md5*                      @python/crypto-team @tiran
**/*blake*                    @python/crypto-team @tiran
/Modules/_blake2/**           @python/crypto-team @tiran
/Modules/_sha3/**             @python/crypto-team @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

# Import (including importlib).
# Ignoring importlib.h so as to not get flagged on
# all pull requests that change the emitted
# bytecode.
**/*import*.c                 @brettcannon @encukou @ericsnowcurrently @ncoghlan @warsaw
**/*import*.py                @brettcannon @encukou @ericsnowcurrently @ncoghlan @warsaw


# SSL
**/*ssl*                      @python/crypto-team @tiran
**/*.pem                      @python/crypto-team @tiran

# CSPRNG
Python/bootstrap_hash.c       @python/crypto-team @tiran

# 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

# 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/unittest/test/testmock/* @cjw296

# SQLite 3
**/*sqlite*                   @berkerpeksag

# 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 @skrah

**/*dataclasses*              @ericvsmith

**/*idlelib*                  @terryjreedy

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

**/*asyncore                  @giampaolo
**/*asynchat                  @giampaolo
**/*ftplib                    @giampaolo
**/*shutil                    @giampaolo

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

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