# 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
**/*pyhash*                   @python/crypto-team

# 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

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

# 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
