]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Introduce a structure for ``.github/CODEOWNERS`` (#137498)
authorAdam Turner <9087854+AA-Turner@users.noreply.github.com>
Tue, 26 Aug 2025 01:34:07 +0000 (03:34 +0200)
committerGitHub <noreply@github.com>
Tue, 26 Aug 2025 01:34:07 +0000 (03:34 +0200)
Co-authored-by: Ezio Melotti <ezio.melotti@gmail.com>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
.github/CODEOWNERS

index 57022de2b0e5ca73cf676667aa1b8c6365f58a4c..7d26f8b526c3a0eff6817dd9275422884cea151e 100644 (file)
 # See https://help.github.com/articles/about-codeowners/
-# for more info about CODEOWNERS file
+# for further details about the .github/CODEOWNERS file.
 
 # It uses the same pattern rule for gitignore file
 # https://git-scm.com/docs/gitignore#_pattern_format
+# Notably, a later match overrides earlier matches, so order matters.
+# If using a wildcard pattern, try to be as specific as possible to avoid
+# matching unintended files or overriding previous entries.
+# To exclude a file from ownership, add a line with only the file.
+# See the exclusions section at the end of the file for examples.
+
+# =======
+# Purpose
+# =======
+#
+# An entry in this file does not imply 'ownership', despite the name of the
+# file, but instead that those listed take an interest in that part of the
+# project and will automatically be added as reviewers to PRs that affect
+# the matching files.
+# See also the Experts Index in the Python Developer's Guide:
+# https://devguide.python.org/core-developers/experts/
+#
+# =========
+# Structure
+# =========
+#
+# The CODEOWNERS file is organised by topic area.
+# Please add new entries in alphabetical order within the relevant section.
+# Where possible, keep related files together. For example, documentation,
+# code, and tests for a given item should all be listed in the same place.
+#
+# GitHub usernames should be aligned to column 31, or the next multiple
+# of three if the relevant paths are too long to fit.
+#
+# Top-level sections are:
+#
+# * Buildbots, Continuous Integration, and Testing
+#     project-wide configuration files, internal tools for use in CI,
+#     linting.
+# * Build System
+#     the Makefile, autoconf, and other autotools files.
+# * Documentation
+#     broader sections of documentation, documentation tools
+# * Internal Tools & Data
+#     internal tools, integration with external systems,
+#     entries that don't fit elsewhere
+# * Platform Support
+#     relating to support for specific platforms
+# * Interpreter Core
+#     the grammar, parser, compiler, interpreter, etc.
+# * Standard Library
+#     standard library modules (from both Lib and Modules)
+#     and related files (such as their tests and docs)
+# * Exclusions
+#     exclusions from .github/CODEOWNERS should go at the very end
+#     because the final matching pattern will take precedence.
+
+# ----------------------------------------------------------------------------
+# Buildbots, Continuous Integration, and Testing
+# ----------------------------------------------------------------------------
 
 # Azure Pipelines
 .azure-pipelines/             @AA-Turner
 
 # GitHub & related scripts
-.github/**                    @ezio-melotti @hugovk @AA-Turner
-Tools/build/compute-changes.py @AA-Turner
-Tools/build/verify_ensurepip_wheels.py @AA-Turner
+.github/                               @ezio-melotti @hugovk @AA-Turner
+Tools/build/compute-changes.py         @AA-Turner
+Tools/build/verify_ensurepip_wheels.py @AA-Turner @pfmoore @pradyunsg
 
-# pre-commit
+# Pre-commit
 .pre-commit-config.yaml       @hugovk
 .ruff.toml                    @hugovk @AlexWaygood @AA-Turner
 
-# Build system (autotools)
-configure*                    @erlend-aasland @corona10 @AA-Turner
-Makefile.pre.in               @erlend-aasland @AA-Turner
-Modules/Setup*                @erlend-aasland @AA-Turner
-Tools/build/regen-configure.sh @AA-Turner
+# Patchcheck
+Tools/patchcheck/             @AA-Turner
+
+
+# ----------------------------------------------------------------------------
+# Build System
+# ----------------------------------------------------------------------------
+
+# Autotools
+configure*                       @erlend-aasland @corona10 @AA-Turner
+Makefile.pre.in                  @erlend-aasland @AA-Turner
+Modules/Setup*                   @erlend-aasland @AA-Turner
+Tools/build/regen-configure.sh   @AA-Turner
+
+
+# ----------------------------------------------------------------------------
+# Documentation
+# ----------------------------------------------------------------------------
+
+# Internal Docs
+InternalDocs/                 @AA-Turner
+
+# Tools, Configuration, etc
+Doc/Makefile                  @AA-Turner @hugovk
+Doc/_static/                  @AA-Turner @hugovk
+Doc/conf.py                   @AA-Turner @hugovk
+Doc/make.bat                  @AA-Turner @hugovk
+Doc/requirements.txt          @AA-Turner @hugovk
+Doc/tools/                    @AA-Turner @hugovk
 
-# argparse
-**/*argparse*                 @savannahostrowski
+# PR Previews
+.readthedocs.yml              @AA-Turner
+
+# Sections
+Doc/reference/                @willingc @AA-Turner
+Doc/whatsnew/                 @AA-Turner
 
-# asyncio
-**/*asyncio*                  @1st1 @asvetlov @kumaraditya303 @willingc
 
-# Core
-**/*context*                  @1st1
+# ----------------------------------------------------------------------------
+# Internal Tools and Data
+# ----------------------------------------------------------------------------
+
+# Argument Clinic
+Tools/clinic/                 @erlend-aasland @AA-Turner
+Lib/test/test_clinic.py       @erlend-aasland @AA-Turner
+Doc/howto/clinic.rst          @erlend-aasland @AA-Turner
+
+# C Analyser
+Tools/c-analyzer/             @ericsnowcurrently
+
+# Fuzzing
+Modules/_xxtestfuzz/          @ammaraskar
+
+# Limited C API & Stable ABI
+Doc/c-api/stable.rst          @encukou
+Doc/data/*.abi                @encukou
+Misc/stable_abi.toml          @encukou
+Tools/build/stable_abi.py     @encukou
+
+# SBOM
+Misc/externals.spdx.json      @sethmlarson
+Misc/sbom.spdx.json           @sethmlarson
+Tools/build/generate_sbom.py  @sethmlarson
+
+
+# ----------------------------------------------------------------------------
+# Platform Support
+# ----------------------------------------------------------------------------
+
+# Android
+Android/                      @mhsmith @freakboy3742
+Doc/using/android.rst         @mhsmith @freakboy3742
+Lib/_android_support.py       @mhsmith @freakboy3742
+Lib/test/test_android.py      @mhsmith @freakboy3742
+
+# iOS
+Doc/using/ios.rst             @freakboy3742
+Lib/_ios_support.py           @freakboy3742
+iOS/                          @freakboy3742
+
+# macOS
+Mac/                          @python/macos-team
+Lib/_osx_support.py           @python/macos-team
+Lib/test/test__osx_support.py @python/macos-team
+
+# WebAssembly
+Tools/wasm/README.md          @brettcannon @freakboy3742
+
+# WebAssembly (Emscripten)
+Tools/wasm/config.site-wasm32-emscripten  @freakboy3742
+Tools/wasm/emscripten                     @freakboy3742
+
+# WebAssembly (WASI)
+Tools/wasm/wasi-env           @brettcannon
+Tools/wasm/wasi.py            @brettcannon
+Tools/wasm/wasi               @brettcannon
+
+# Windows
+PC/                           @python/windows-team
+PCbuild/                      @python/windows-team
+
+# Windows installer packages
+Tools/msi/                    @python/windows-team
+Tools/nuget/                  @python/windows-team
+
+# Windows Launcher
+PC/launcher.c                 @python/windows-team @vsajip
+
+
+# ----------------------------------------------------------------------------
+# Interpreter Core
+# ----------------------------------------------------------------------------
+
+# AST
+Lib/_ast_unparse.py           @isidentical @JelleZijlstra @eclips4 @tomasr8
+Lib/ast.py                    @isidentical @JelleZijlstra @eclips4 @tomasr8
+Lib/test/test_ast/            @eclips4 @tomasr8
+Parser/asdl.py                @isidentical @JelleZijlstra @eclips4 @tomasr8
+Parser/asdl_c.py              @isidentical @JelleZijlstra @eclips4 @tomasr8
+Python/ast.c                  @isidentical @JelleZijlstra @eclips4 @tomasr8
+Python/ast_preprocess.c       @isidentical @eclips4 @tomasr8
+
+# Built-in types
+Objects/call.c                @markshannon
+Objects/codeobject.c          @markshannon
+Objects/dict*                 @methane @markshannon
+Objects/frameobject.c         @markshannon
 **/*genobject*                @markshannon
-**/*hamt*                     @1st1
-**/*jit*                      @brandtbucher @savannahostrowski @diegorusso
-Python/perf_jit_trampoline.c  # Exclude the owners of "**/*jit*", above.
+Objects/object.c              @ZeroIntensity
 Objects/set*                  @rhettinger
-Objects/dict*                 @methane @markshannon
+Objects/type*                 @markshannon
 Objects/typevarobject.c       @JelleZijlstra
 Objects/unionobject.c         @JelleZijlstra
-Objects/type*                 @markshannon
-Objects/codeobject.c          @markshannon
-Objects/frameobject.c         @markshannon
-Objects/call.c                @markshannon
-Objects/object.c              @ZeroIntensity
-Python/ceval*.c               @markshannon
-Python/ceval*.h               @markshannon
+
+# Byte code interpreter ('the eval loop')
+Python/bytecodes.c            @markshannon
+Python/ceval*                 @markshannon
+Tools/cases_generator/        @markshannon
+
+# Compiler (AST to byte code)
+Python/assemble.c             @markshannon @iritkatriel
 Python/codegen.c              @markshannon @iritkatriel
 Python/compile.c              @markshannon @iritkatriel
-Python/assemble.c             @markshannon @iritkatriel
 Python/flowgraph.c            @markshannon @iritkatriel
 Python/instruction_sequence.c @iritkatriel
-Python/bytecodes.c            @markshannon
-Python/optimizer*.c           @markshannon
-Python/optimizer_analysis.c   @Fidget-Spinner @tomasr8
-Python/optimizer_bytecodes.c  @Fidget-Spinner @tomasr8
-Python/optimizer_symbols.c    @tomasr8
 Python/symtable.c             @JelleZijlstra @carljm
-Lib/_pyrepl/*                 @pablogsal @lysnikolaou @ambv
-Lib/test/test_patma.py        @brandtbucher
-Lib/test/test_type_*.py       @JelleZijlstra
-Lib/test/test_capi/test_misc.py  @markshannon
-Lib/test/test_pyrepl/*        @pablogsal @lysnikolaou @ambv
-Tools/c-analyzer/             @ericsnowcurrently
 
-# dbm
-**/*dbm*                      @corona10 @erlend-aasland @serhiy-storchaka
-
-# Doc/ tools
-Doc/conf.py                   @AA-Turner @hugovk
-Doc/Makefile                  @AA-Turner @hugovk
-Doc/make.bat                  @AA-Turner @hugovk
-Doc/requirements.txt          @AA-Turner @hugovk
-Doc/_static/**                @AA-Turner @hugovk
-Doc/tools/**                  @AA-Turner @hugovk
-.readthedocs.yml              @AA-Turner
+# Context variables & HAMT
+**/contextvars*                     @1st1
+**/*hamt*                           @1st1
+Include/cpython/context.h           @1st1
+Include/internal/pycore_context.h   @1st1
+Lib/test/test_context.py            @1st1
+Python/context.c                    @1st1
 
-# runtime state/lifecycle
-**/*pylifecycle*              @ericsnowcurrently @ZeroIntensity
-**/*pystate*                  @ericsnowcurrently @ZeroIntensity
-**/*preconfig*                @ericsnowcurrently
-**/*initconfig*               @ericsnowcurrently
-**/*pathconfig*               @ericsnowcurrently
-**/*sysmodule*                @ericsnowcurrently
+# Core Modules
 **/*bltinmodule*              @ericsnowcurrently
-**/*gil*                      @ericsnowcurrently
-Include/internal/pycore_runtime.h   @ericsnowcurrently
-Include/internal/pycore_interp.h    @ericsnowcurrently
-Include/internal/pycore_tstate.h    @ericsnowcurrently
-Include/internal/pycore_*_state.h   @ericsnowcurrently
-Include/internal/pycore_*_init.h    @ericsnowcurrently
-Include/internal/pycore_atexit.h    @ericsnowcurrently
-Include/internal/pycore_freelist.h  @ericsnowcurrently
-Include/internal/pycore_global_objects.h  @ericsnowcurrently
-Include/internal/pycore_obmalloc.h  @ericsnowcurrently
-Include/internal/pycore_pymem.h     @ericsnowcurrently
-Include/internal/pycore_stackref.h  @Fidget-Spinner
-Modules/main.c                @ericsnowcurrently
-Programs/_bootstrap_python.c  @ericsnowcurrently
-Programs/python.c             @ericsnowcurrently
-Tools/build/generate_global_objects.py  @ericsnowcurrently
-
-# Initialization
-Doc/library/sys_path_init.rst @FFY00
-Doc/c-api/init_config.rst     @FFY00
-
-# getpath
-**/*getpath*                  @FFY00
-
-# site
-**/*site.py                   @FFY00
-Doc/library/site.rst          @FFY00
+**/*sysmodule*                @ericsnowcurrently
 
 # Exceptions
 Lib/test/test_except*.py      @iritkatriel
 Objects/exceptions.c          @iritkatriel
 
-# Hashing & cryptographic primitives
-**/*hashlib*                  @gpshead @tiran @picnixz
-**/*hashopenssl*              @gpshead @tiran @picnixz
-**/*pyhash*                   @gpshead @tiran @picnixz
-Modules/*blake*               @gpshead @tiran @picnixz
-Modules/*md5*                 @gpshead @tiran @picnixz
-Modules/*sha*                 @gpshead @tiran @picnixz
-Modules/_hacl/**              @gpshead @picnixz
-**/*hmac*                     @gpshead @picnixz
-
-# libssl
-**/*ssl*                      @gpshead @picnixz
-
-# logging
-**/*logging*                  @vsajip
-
-# venv
-**/*venv*                     @vsajip @FFY00
+# Getpath
+Lib/test/test_getpath.py      @FFY00
+Modules/getpath*              @FFY00
 
-# Launcher
-/PC/launcher.c                @vsajip
+# Hashing / ``hash()`` and related
+Include/cpython/pyhash.h         @gpshead @picnixz @tiran
+Include/internal/pycore_pyhash.h @gpshead @picnixz @tiran
+Include/pyhash.h                 @gpshead @picnixz @tiran
+Python/pyhash.c                  @gpshead @picnixz @tiran
 
-# 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).
+# The import system (including importlib)
 **/*import*                   @brettcannon @ericsnowcurrently @ncoghlan @warsaw
-/Python/import.c              @kumaraditya303
-Python/dynload_*.c            @ericsnowcurrently
+Python/import.c               @brettcannon @ericsnowcurrently @ncoghlan @warsaw @kumaraditya303
 **/*freeze*                   @ericsnowcurrently
 **/*frozen*                   @ericsnowcurrently
 **/*modsupport*               @ericsnowcurrently
@@ -157,23 +257,167 @@ Python/dynload_*.c            @ericsnowcurrently
 **/*pythonrun*                @ericsnowcurrently
 **/*runpy*                    @ericsnowcurrently
 **/*singlephase*              @ericsnowcurrently
-Lib/test/test_module/         @ericsnowcurrently
 Doc/c-api/module.rst          @ericsnowcurrently
-**/*importlib/resources/*     @jaraco @warsaw @FFY00
-**/*importlib/metadata/*       @jaraco @warsaw
+Lib/test/test_module/         @ericsnowcurrently
+Python/dynload_*.c            @ericsnowcurrently
+
+# Initialisation
+**/*initconfig*               @ericsnowcurrently
+**/*pathconfig*               @ericsnowcurrently
+**/*preconfig*                @ericsnowcurrently
+Doc/library/sys_path_init.rst @FFY00
+Doc/c-api/init_config.rst     @FFY00
+
+# Interpreter main program
+Modules/main.c                @ericsnowcurrently
+Programs/_bootstrap_python.c  @ericsnowcurrently
+Programs/python.c             @ericsnowcurrently
+
+# JIT
+Include/internal/pycore_jit.h @brandtbucher @savannahostrowski @diegorusso
+Python/jit.c                  @brandtbucher @savannahostrowski @diegorusso
+Tools/jit/                    @brandtbucher @savannahostrowski @diegorusso
+InternalDocs/jit.md           @brandtbucher @savannahostrowski @diegorusso @AA-Turner
+
+# Micro-op / μop / Tier 2 Optimiser
+Python/optimizer.c            @markshannon
+Python/optimizer_analysis.c   @markshannon @tomasr8 @Fidget-Spinner
+Python/optimizer_bytecodes.c  @markshannon @tomasr8 @Fidget-Spinner
+Python/optimizer_symbols.c    @markshannon @tomasr8
+
+# Parser, Lexer, and Grammar
+Grammar/python.gram           @pablogsal @lysnikolaou
+Lib/test/test_peg_generator/  @pablogsal @lysnikolaou
+Lib/test/test_tokenize.py     @pablogsal @lysnikolaou
+Lib/tokenize.py               @pablogsal @lysnikolaou
+Parser/                       @pablogsal @lysnikolaou
+Tools/peg_generator/          @pablogsal @lysnikolaou
+
+# Runtime state/lifecycle
+**/*gil*                      @ericsnowcurrently
+**/*pylifecycle*              @ericsnowcurrently @ZeroIntensity
+**/*pystate*                  @ericsnowcurrently @ZeroIntensity
+Include/internal/pycore_*_init.h          @ericsnowcurrently
+Include/internal/pycore_*_state.h         @ericsnowcurrently
+Include/internal/pycore_atexit.h          @ericsnowcurrently
+Include/internal/pycore_freelist.h        @ericsnowcurrently
+Include/internal/pycore_global_objects.h  @ericsnowcurrently
+Include/internal/pycore_interp.h          @ericsnowcurrently
+Include/internal/pycore_obmalloc.h        @ericsnowcurrently
+Include/internal/pycore_pymem.h           @ericsnowcurrently
+Include/internal/pycore_runtime.h         @ericsnowcurrently
+Include/internal/pycore_stackref.h        @Fidget-Spinner
+Include/internal/pycore_tstate.h          @ericsnowcurrently
+Tools/build/generate_global_objects.py    @ericsnowcurrently
+
+# Remote Debugging
+Python/remote_debug.h               @pablogsal
+Python/remote_debugging.c           @pablogsal
+Modules/_remote_debugging_module.c  @pablogsal @ambv @1st1
+
+# Sub-Interpreters
+**/*crossinterp*                          @ericsnowcurrently
+**/*interpreteridobject.*                 @ericsnowcurrently
+Doc/library/concurrent.interpreters.rst   @ericsnowcurrently
+Lib/concurrent/futures/interpreter.py     @ericsnowcurrently
+Lib/concurrent/interpreters/              @ericsnowcurrently
+Lib/test/support/channels.py              @ericsnowcurrently
+Lib/test/test__interp*.py                 @ericsnowcurrently
+Lib/test/test_interpreters/               @ericsnowcurrently
+Modules/_interp*module.c                  @ericsnowcurrently
+
+# Template string literals (t-strings)
+Lib/test/test_tstring.py      @lysnikolaou
+Objects/interpolationobject.c @lysnikolaou
+Objects/templateobject.c      @lysnikolaou
+
+# Tests
+Lib/test/test_patma.py           @brandtbucher
+Lib/test/test_type_*.py          @JelleZijlstra
+Lib/test/test_capi/test_misc.py  @markshannon
+
+
+# ----------------------------------------------------------------------------
+# Standard Library
+# ----------------------------------------------------------------------------
+
+# Annotationlib
+Doc/library/annotationlib.rst    @JelleZijlstra
+Lib/annotationlib.py             @JelleZijlstra
+Lib/test/test_annotationlib.py   @JelleZijlstra
+
+# Argparse
+Doc/**/argparse*.rst          @savannahostrowski
+Lib/argparse.py               @savannahostrowski
+Lib/test/test_argparse.py     @savannahostrowski
+
+# Asyncio
+Doc/library/asyncio*.rst      @1st1 @asvetlov @kumaraditya303 @willingc
+InternalDocs/asyncio.md       @1st1 @asvetlov @kumaraditya303 @willingc @AA-Turner
+Lib/asyncio/                  @1st1 @asvetlov @kumaraditya303 @willingc
+Lib/test/test_asyncio/        @1st1 @asvetlov @kumaraditya303 @willingc
+Modules/_asynciomodule.c      @1st1 @asvetlov @kumaraditya303 @willingc
+
+# Bisect
+Doc/library/bisect.rst        @rhettinger
+Lib/bisect.py                 @rhettinger
+Lib/test/test_bisect.py       @rhettinger
+Modules/_bisectmodule.c       @rhettinger
 
 # Calendar
 Lib/calendar.py               @AA-Turner
 Lib/test/test_calendar.py     @AA-Turner
 
+# Cryptographic Primitives and Applications
+**/*hashlib*                  @gpshead @picnixz @tiran
+**/*hashopenssl*              @gpshead @picnixz @tiran
+**/*hmac*                     @gpshead @picnixz
+**/*ssl*                      @gpshead @picnixz
+Modules/_hacl/                @gpshead @picnixz
+Modules/*blake*               @gpshead @picnixz @tiran
+Modules/*md5*                 @gpshead @picnixz @tiran
+Modules/*sha*                 @gpshead @picnixz @tiran
+
+# Codecs
+Modules/cjkcodecs/            @corona10
+Tools/unicode/gencjkcodecs.py @corona10
+
+# Collections
+Doc/library/collections.abc.rst  @rhettinger
+Doc/library/collections.rst      @rhettinger
+Lib/_collections_abc.py          @rhettinger
+Lib/collections/                 @rhettinger
+Lib/test/test_collections.py     @rhettinger
+Modules/_collectionsmodule.c     @rhettinger
+
+# Colorize
+Lib/_colorize.py              @hugovk
+Lib/test/test__colorize.py    @hugovk
+
+# Config Parser
+Lib/configparser.py           @jaraco
+Lib/test/test_configparser.py @jaraco
+
+# Dataclasses
+Doc/library/dataclasses.rst   @ericvsmith
+Lib/dataclasses.py            @ericvsmith
+Lib/test/test_dataclasses/    @ericvsmith
+
 # 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/internal/pycore_time.h  @pganssle @abalkin
+Doc/**/*time.rst                 @pganssle @abalkin
+Include/datetime.h               @pganssle @abalkin
+Include/internal/pycore_time.h   @pganssle @abalkin
+Lib/*time.py                     @pganssle @abalkin
+Lib/test/datetimetester.py       @pganssle @abalkin
+Lib/test/test_*time.py           @pganssle @abalkin
+Modules/*time*                   @pganssle @abalkin
+Python/pytime.c                  @pganssle @abalkin
+
+# Dbm
+Doc/library/dbm.rst           @corona10 @erlend-aasland @serhiy-storchaka
+Lib/dbm/                      @corona10 @erlend-aasland @serhiy-storchaka
+Lib/test/test_dbm*.py         @corona10 @erlend-aasland @serhiy-storchaka
+Modules/*dbm*                 @corona10 @erlend-aasland @serhiy-storchaka
 
 # Email and related
 **/*mail*                     @python/email-team
@@ -182,200 +426,197 @@ Include/internal/pycore_time.h  @pganssle @abalkin
 **/*imap*                     @python/email-team
 **/*poplib*                   @python/email-team
 
-# Exclude .mailmap from being owned by @python/email-team
-/.mailmap
+# Ensurepip
+Doc/library/ensurepip.rst     @pfmoore @pradyunsg
+Lib/ensurepip/                @pfmoore @pradyunsg
+Lib/test/test_ensurepip.py    @pfmoore @pradyunsg
+
+# Enum
+Doc/howto/enum.rst               @ethanfurman
+Doc/library/enum.rst             @ethanfurman
+Lib/enum.py                      @ethanfurman
+Lib/test/test_enum.py            @ethanfurman
+Lib/test/test_json/test_enum.py  @ethanfurman
+
+# FTP
+Doc/library/ftplib.rst        @giampaolo
+Lib/ftplib.py                 @giampaolo
+Lib/test/test_ftplib.py       @giampaolo
+
+# Functools
+Doc/library/functools.rst     @rhettinger
+Lib/functools.py              @rhettinger
+Lib/test/test_functools.py    @rhettinger
+Modules/_functoolsmodule.c    @rhettinger
 
 # Garbage collector
-/Modules/gcmodule.c           @pablogsal
-/Doc/library/gc.rst           @pablogsal
+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
+# Gettext
+Doc/library/gettext.rst       @tomasr8
+Lib/gettext.py                @tomasr8
+Lib/test/test_gettext.py      @tomasr8
+Tools/i18n/pygettext.py       @tomasr8
 
-# Code generator
-/Tools/cases_generator/        @markshannon
+# Heapq
+Doc/library/heapq*            @rhettinger
+Lib/heapq.py                  @rhettinger
+Lib/test/test_heapq.py        @rhettinger
+Modules/_heapqmodule.c        @rhettinger
 
-# AST
-Python/ast.c                  @isidentical @JelleZijlstra @eclips4 @tomasr8
-Python/ast_preprocess.c       @isidentical @eclips4 @tomasr8
-Parser/asdl.py                @isidentical @JelleZijlstra @eclips4 @tomasr8
-Parser/asdl_c.py              @isidentical @JelleZijlstra @eclips4 @tomasr8
-Lib/ast.py                    @isidentical @JelleZijlstra @eclips4 @tomasr8
-Lib/_ast_unparse.py           @isidentical @JelleZijlstra @eclips4 @tomasr8
-Lib/test/test_ast/            @eclips4 @tomasr8
-
-# Mock
-/Lib/unittest/mock.py         @cjw296
-/Lib/test/test_unittest/testmock/* @cjw296
-
-# multiprocessing
-**/*multiprocessing*          @gpshead
-
-# pydoc
+# HTML
+Doc/library/html*                   @ezio-melotti
+Lib/html/                           @ezio-melotti
+Lib/_markupbase.py                  @ezio-melotti
+Lib/test/test_html*.py              @ezio-melotti
+Tools/build/parse_html5_entities.py @ezio-melotti
+
+# IDLE
+Doc/library/idle.rst          @terryjreedy
+Lib/idlelib/                  @terryjreedy
+Lib/turtledemo/               @terryjreedy
+
+# importlib.metadata
+Doc/library/importlib.metadata.rst  @jaraco @warsaw
+Lib/importlib/metadata/             @jaraco @warsaw
+Lib/test/test_importlib/metadata/   @jaraco @warsaw
+
+# importlib.resources
+Doc/library/importlib.resources.abc.rst   @jaraco @warsaw
+Doc/library/importlib.resources.rst       @jaraco @warsaw
+Lib/importlib/resources/                  @jaraco @warsaw @FFY00
+Lib/test/test_importlib/resources/        @jaraco @warsaw @FFY00
+
+# Itertools
+Doc/library/itertools.rst     @rhettinger
+Lib/test/test_itertools.py    @rhettinger
+Modules/itertoolsmodule.c     @rhettinger
+
+# Logging
+Doc/**/logging*               @vsajip
+Lib/logging/                  @vsajip
+Lib/test/test_logging.py      @vsajip
+
+# Multiprocessing
+Doc/library/multiprocessing*.rst @gpshead
+Lib/multiprocessing/             @gpshead
+Lib/test/*multiprocessing.py     @gpshead
+Lib/test/test_multiprocessing*/  @gpshead
+Modules/_multiprocessing/        @gpshead
+
+# Pathlib
+Doc/library/pathlib.rst       @barneygale
+Lib/pathlib/                  @barneygale
+Lib/test/test_pathlib/        @barneygale
+
+# Pdb & Bdb
+Doc/library/bdb.rst           @gaogaotiantian
+Doc/library/pdb.rst           @gaogaotiantian
+Lib/bdb.py                    @gaogaotiantian
+Lib/pdb.py                    @gaogaotiantian
+Lib/test/test_bdb.py          @gaogaotiantian
+Lib/test/test_pdb.py          @gaogaotiantian
+Lib/test/test_remote_pdb.py   @gaogaotiantian
+
+# Pydoc
 Lib/pydoc.py                  @AA-Turner
 Lib/pydoc_data/               @AA-Turner
 Lib/test/test_pydoc/          @AA-Turner
 
-# SQLite 3
-**/*sqlite*                   @berkerpeksag @erlend-aasland
+# PyREPL
+Lib/_pyrepl/                  @pablogsal @lysnikolaou @ambv
+Lib/test/test_pyrepl/         @pablogsal @lysnikolaou @ambv
+
+# Random
+Doc/library/random.rst        @rhettinger
+Lib/random.py                 @rhettinger
+Lib/test/test_random.py       @rhettinger
+Modules/_randommodule.c       @rhettinger
 
-# subprocess
-/Lib/subprocess.py            @gpshead
-/Lib/test/test_subprocess.py  @gpshead
-/Modules/*subprocess*         @gpshead
+# Shutil
+Doc/library/shutil.rst        @giampaolo
+Lib/shutil.py                 @giampaolo
+Lib/test/test_shutil.py       @giampaolo
 
-# debugger
-**/*pdb*                      @gaogaotiantian
-**/*bdb*                      @gaogaotiantian
+# Site
+Lib/site.py                   @FFY00
+Lib/test/test_site.py         @FFY00
+Doc/library/site.rst          @FFY00
+
+# string.templatelib
+Doc/library/string.templatelib.rst        @lysnikolaou @AA-Turner
+Lib/string/templatelib.py                 @lysnikolaou @AA-Turner
+Lib/test/test_string/test_templatelib.py  @lysnikolaou @AA-Turner
+
+# Sysconfig
+**/*sysconfig*                @FFY00
 
-# types
+# SQLite 3
+Doc/library/sqlite3.rst       @berkerpeksag @erlend-aasland
+Lib/sqlite3/                  @berkerpeksag @erlend-aasland
+Lib/test/test_sqlite3/        @berkerpeksag @erlend-aasland
+Modules/_sqlite/              @berkerpeksag @erlend-aasland
+
+# Subprocess
+Lib/subprocess.py             @gpshead
+Lib/test/test_subprocess.py   @gpshead
+Modules/*subprocess*          @gpshead
+
+# Tarfile
+Doc/library/tarfile.rst       @ethanfurman
+Lib/tarfile.py                @ethanfurman
+Lib/test/test_tarfile.py      @ethanfurman
+
+# TOML
+Doc/library/tomllib.rst       @encukou @hauntsaninja
+Lib/test/test_tomllib/        @encukou @hauntsaninja
+Lib/tomllib/                  @encukou @hauntsaninja
+
+# Typing
+Doc/library/typing.rst        @JelleZijlstra @AlexWaygood
+Lib/test/test_typing.py       @JelleZijlstra @AlexWaygood
+Lib/test/typinganndata/       @JelleZijlstra @AlexWaygood
+Lib/typing.py                 @JelleZijlstra @AlexWaygood
+Modules/_typingmodule.c       @JelleZijlstra @AlexWaygood
+
+# Types
 Lib/test/test_types.py        @AA-Turner
 Lib/types.py                  @AA-Turner
 Modules/_typesmodule.c        @AA-Turner
 
-# Limited C API & stable ABI
-Tools/build/stable_abi.py     @encukou
-Misc/stable_abi.toml          @encukou
-Doc/data/*.abi                @encukou
-Doc/c-api/stable.rst          @encukou
-
-# Windows
-/PC/                          @python/windows-team
-/PCbuild/                     @python/windows-team
+# Unittest
+Lib/unittest/mock.py             @cjw296
+Lib/test/test_unittest/testmock/ @cjw296
 
 # Urllib
 **/*robotparser*              @berkerpeksag
 
-# Windows installer packages
-/Tools/msi/                   @python/windows-team
-/Tools/nuget/                 @python/windows-team
+# Venv
+**/*venv*                     @vsajip @FFY00
+
+# Weakref
+**/*weakref*                  @kumaraditya303
+
+# Zipfile.Path
+Lib/test/test_zipfile/_path/  @jaraco
+Lib/zipfile/_path/            @jaraco
 
 # Zstandard
 Lib/compression/zstd/         @AA-Turner
 Lib/test/test_zstd.py         @AA-Turner
 Modules/_zstd/                @AA-Turner
 
-# Misc
-**/*itertools*                @rhettinger
-**/*collections*              @rhettinger
-**/*random*                   @rhettinger
-**/*bisect*                   @rhettinger
-**/*heapq*                    @rhettinger
-**/*functools*                @rhettinger
-
-**/*dataclasses*              @ericvsmith
-
-**/*ensurepip*                @pfmoore @pradyunsg
-
-/Doc/library/idle.rst         @terryjreedy
-**/*idlelib*                  @terryjreedy
-**/*turtledemo*               @terryjreedy
-
-**/*annotationlib*            @JelleZijlstra
-**/*typing*                   @JelleZijlstra @AlexWaygood
-
-**/*ftplib                    @giampaolo
-**/*shutil                    @giampaolo
-
-**/*enum*                     @ethanfurman
-**/*cgi*                      @ethanfurman
-**/*tarfile*                  @ethanfurman
-
-**/*tomllib*                  @encukou @hauntsaninja
-
-**/*sysconfig*                @FFY00
-
-**/*cjkcodecs*                @corona10
-
-# Patchcheck
-Tools/patchcheck/             @AA-Turner
-
-# macOS
-/Mac/                         @python/macos-team
-**/*osx_support*              @python/macos-team
-
-# pathlib
-**/*pathlib*                  @barneygale
-
-# zipfile.Path
-**/*zipfile/_path/*           @jaraco
-
-# Argument Clinic
-/Tools/clinic/**              @erlend-aasland @AA-Turner
-/Lib/test/test_clinic.py      @erlend-aasland @AA-Turner
-Doc/howto/clinic.rst          @erlend-aasland @AA-Turner
-
-# Subinterpreters
-**/*interpreteridobject.*     @ericsnowcurrently
-**/*crossinterp*              @ericsnowcurrently
-Modules/_interp*module.c      @ericsnowcurrently
-Lib/test/test__interp*.py     @ericsnowcurrently
-Lib/concurrent/interpreters/  @ericsnowcurrently
-Lib/test/support/channels.py  @ericsnowcurrently
-Doc/library/concurrent.interpreters.rst  @ericsnowcurrently
-Lib/test/test_interpreters/   @ericsnowcurrently
-Lib/concurrent/futures/interpreter.py  @ericsnowcurrently
-
-# Android
-**/*Android*                  @mhsmith @freakboy3742
-**/*android*                  @mhsmith @freakboy3742
-
-# iOS (but not termios)
-**/iOS*                       @freakboy3742
-**/ios*                       @freakboy3742
-**/*_iOS*                     @freakboy3742
-**/*_ios*                     @freakboy3742
-**/*-iOS*                     @freakboy3742
-**/*-ios*                     @freakboy3742
+# ----------------------------------------------------------------------------
 
-# WebAssembly
-Tools/wasm/config.site-wasm32-emscripten  @freakboy3742
-/Tools/wasm/README.md         @brettcannon @freakboy3742
-/Tools/wasm/wasi-env          @brettcannon
-/Tools/wasm/wasi.py           @brettcannon
-/Tools/wasm/emscripten        @freakboy3742
-/Tools/wasm/wasi              @brettcannon
-
-# SBOM
-/Misc/externals.spdx.json     @sethmlarson
-/Misc/sbom.spdx.json          @sethmlarson
-/Tools/build/generate_sbom.py @sethmlarson
-
-# Config Parser
-Lib/configparser.py           @jaraco
-Lib/test/test_configparser.py @jaraco
-
-# Doc sections
-Doc/reference/                @willingc @AA-Turner
-Doc/whatsnew/                 @AA-Turner
+# Exclusions from .github/CODEOWNERS should go at the very end
+# because the final matching pattern will take precedence.
 
-**/*weakref*                  @kumaraditya303
-
-# Colorize
-Lib/_colorize.py              @hugovk
-Lib/test/test__colorize.py    @hugovk
-
-# Fuzzing
-Modules/_xxtestfuzz/          @ammaraskar
-
-# t-strings
-**/*interpolationobject*      @lysnikolaou
-**/*templateobject*           @lysnikolaou
-**/*templatelib*              @lysnikolaou @AA-Turner
-**/*tstring*                  @lysnikolaou
-
-# Remote debugging
-Python/remote_debug.h         @pablogsal
-Python/remote_debugging.c     @pablogsal
-Modules/_remote_debugging_module.c @pablogsal @ambv @1st1
-
-# gettext
-**/*gettext*                  @tomasr8
+# Exclude .mailmap from being owned by @python/email-team
+.mailmap
 
-# Internal Docs
-InternalDocs/                 @AA-Turner
+# Exclude Argument Clinic directories
+Modules/**/clinic/
+Objects/**/clinic/
+PC/**/clinic/
+Python/**/clinic/