# 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
**/*hamt*                     @1st1
Objects/dict*                 @methane

# 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


# 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

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

# Parser/Pgen
/Parser/pgen/                 @pablogsal

# SQLite 3
**/*sqlite*                   @berkerpeksag

# subprocess
**/*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

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

**/*dataclasses*              @ericvsmith

**/*idlelib*                  @terryjreedy

**/*typing*                   @gvanrossum @ilevkivskyi

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