# 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

# Core
**/*genobject*                @1st1

# Hashing
**/*hashlib*                  @python/crypto-team
**/*pyhash*                   @python/crypto-team

# Import (including importlib)
**/*import*                   @python/import-team

# 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

# subprocess
**/*subprocess*               @gpshead

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

# 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*                @ncoghlan @rhettinger
**/*decimal*                  @rhettinger @skrah
