Skip to content

Conversation

AA-Turner
Copy link
Member

cc @ezio-melotti @hugovk

The CODEOWNERS file is getting a little disorganised. This PR is an attempt to add more of a structure & grouping, so future entries are less slapdash. For example, I was unsure the best place to add new lines in #137483.

I've organised the file by 'topic area': CI, build systems, core interpreter, docs, misc, platforms, and stdlib. Entries are kept alphabetically within each top-level section, and are grouped/subtitled with a comment.

I have tried to ensure that thre are no behavioural changes to CODEOWNERS from this PR, but there is one exception -- I've removed the **/*cgi* entry as cgi.py etc was removed in 3.13.

Unresolved thoughts:

  • It would be nice to put the Windows build system in the build-systems section, but I don't know if we prefer keeping it with the platform support group, as it presently is.
  • I didn't have a good group for the interpreter-core tests (now labelled "tests"). For the rest of the old "Core" group, I've split it up into constituent parts (built in types, eval loop, compiler, core modules, tier 2 optimiser, etc).
  • I wasn't sure where best to put hashing / SSL -- it could go into either the "core" section or the "stdlib" section. (cc @picnixz for thoughts if any)
  • IDLE feels out of place in the "Misc" section, but it is bigger than just a stdlib module, so didn't feel right putting it there.

A

@AA-Turner
Copy link
Member Author

Ah, ranges with [...] don't work.

Copy link
Member

@ezio-melotti ezio-melotti left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ISTM that there are different possible approaches, each with pros and cons. Most of the entries seem to be about stdlib modules, built-in objects/functions1, and the interpreter core. The other sections (with the exception of Platform Support) have fewer entries, and could possibly be grouped together in a single "Others".

I've seen tools that can inspect CODEOWNERS files, but I'm not sure if there is something that can detect unintentional changes between the old and the new version (I think I spot at least one -- contextlib). If you can find something it would be good to check that the owners are still the same.

This still looks like an improvement compared to the previous version, even in its current form.

Footnotes

  1. FWIW in the docs both the built-in objects/functions and stdlibg modules are grouped under the "library" section, whereas here some objects are under Interpreter Core and others under Standard Library.

**/*pystate* @ericsnowcurrently @ZeroIntensity
**/*preconfig* @ericsnowcurrently
# Context variables & HAMT
**/contextvars* @1st1
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This used to be **/*context* (line 32 of the old file), which matched Lib/contextlib.py, but now contextlib doesn't seem to be matched by anything

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I forgot to put this in the PR description. I think this was a mistaken glob that was over-expansive -- the PR (#5276) seemed to only reference context variables, rather than context managers.

@1st1 -- Yury, do you want to be listed as a codeowner for contextlib/context managers, or only for context variables?

AA-Turner and others added 2 commits August 7, 2025 04:42
Co-authored-by: Ezio Melotti <[email protected]>
Co-authored-by: Ezio Melotti <[email protected]>
@StanFromIreland StanFromIreland added infra CI, GitHub Actions, buildbots, Dependabot, etc. type-refactor Code refactoring (with no changes in behavior) labels Aug 7, 2025
@picnixz
Copy link
Member

picnixz commented Aug 7, 2025

I am currently on a very bad network for today so I can only quickly reply: SSL and hashing can go under stdlib because none of them are built-ins. However hashing for Python objects (not cryptographic hashes) should go under core. Everything related to cryptography can go under a subsection of library named cryptographic primitives and applications (SSL is too much for being a primitive imo and it allows us to put more stuff related to cryptography in the future).

@AA-Turner
Copy link
Member Author

Any further thoughts @hugovk @ezio-melotti? I've moved IDLE to the Standard Library section & have expanded the header/intro.

A

@AA-Turner
Copy link
Member Author

It's been a week, I'll merge this soon absent any last-minute comments.

A

@AA-Turner AA-Turner merged commit 73fb155 into python:main Aug 26, 2025
25 checks passed
@bedevere-bot
Copy link

⚠️⚠️⚠️ Buildbot failure ⚠️⚠️⚠️

Hi! The buildbot s390x RHEL9 Refleaks 3.x (tier-3) has failed when building commit 73fb155.

What do you need to do:

  1. Don't panic.
  2. Check the buildbot page in the devguide if you don't know what the buildbots are or how they work.
  3. Go to the page of the buildbot that failed (https://buildbot.python.org/#/builders/1589/builds/2031) and take a look at the build logs.
  4. Check if the failure is related to this commit (73fb155) or if it is a false positive.
  5. If the failure is related to this commit, please, reflect that on the issue and make a new Pull Request with a fix.

You can take a look at the buildbot page here:

https://buildbot.python.org/#/builders/1589/builds/2031

Failed tests:

  • test.test_multiprocessing_fork.test_processes
  • test_external_inspection

Failed subtests:

  • test_interrupt - test.test_multiprocessing_fork.test_processes.WithProcessesTestProcess.test_interrupt
  • test_only_active_thread - test.test_external_inspection.TestGetStackTrace.test_only_active_thread

Summary of the results of the build (if available):

==

Click to see traceback logs
Traceback (most recent call last):
  File "/home/buildbot/buildarea/3.x.cstratak-rhel9-s390x.refleak/build/Lib/test/_test_multiprocessing.py", line 588, in test_interrupt
    exitcode = self._kill_process(multiprocessing.Process.interrupt)
  File "/home/buildbot/buildarea/3.x.cstratak-rhel9-s390x.refleak/build/Lib/test/_test_multiprocessing.py", line 570, in _kill_process
    self.assertEqual(join(), None)
                     ~~~~^^
  File "/home/buildbot/buildarea/3.x.cstratak-rhel9-s390x.refleak/build/Lib/test/_test_multiprocessing.py", line 250, in __call__
    return self.func(*args, **kwds)
           ~~~~~~~~~^^^^^^^^^^^^^^^
  File "/home/buildbot/buildarea/3.x.cstratak-rhel9-s390x.refleak/build/Lib/multiprocessing/process.py", line 156, in join
    res = self._popen.wait(timeout)
  File "/home/buildbot/buildarea/3.x.cstratak-rhel9-s390x.refleak/build/Lib/multiprocessing/popen_fork.py", line 44, in wait
    return self.poll(os.WNOHANG if timeout == 0.0 else 0)
           ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildbot/buildarea/3.x.cstratak-rhel9-s390x.refleak/build/Lib/multiprocessing/popen_fork.py", line 28, in poll
    pid, sts = os.waitpid(self.pid, flag)
               ~~~~~~~~~~^^^^^^^^^^^^^^^^
  File "/home/buildbot/buildarea/3.x.cstratak-rhel9-s390x.refleak/build/Lib/test/_test_multiprocessing.py", line 566, in handler
    raise RuntimeError('join took too long: %s' % p)
RuntimeError: join took too long: <Process name='Process-4' pid=3410653 parent=3410625 started daemon>


Traceback (most recent call last):
  File "/home/buildbot/buildarea/3.x.cstratak-rhel9-s390x.refleak/build/Lib/test/_test_multiprocessing.py", line 588, in test_interrupt
    exitcode = self._kill_process(multiprocessing.Process.interrupt)
  File "/home/buildbot/buildarea/3.x.cstratak-rhel9-s390x.refleak/build/Lib/test/_test_multiprocessing.py", line 570, in _kill_process
    self.assertEqual(join(), None)
                     ~~~~^^
  File "/home/buildbot/buildarea/3.x.cstratak-rhel9-s390x.refleak/build/Lib/test/_test_multiprocessing.py", line 250, in __call__
    return self.func(*args, **kwds)
           ~~~~~~~~~^^^^^^^^^^^^^^^
  File "/home/buildbot/buildarea/3.x.cstratak-rhel9-s390x.refleak/build/Lib/multiprocessing/process.py", line 156, in join
    res = self._popen.wait(timeout)
  File "/home/buildbot/buildarea/3.x.cstratak-rhel9-s390x.refleak/build/Lib/multiprocessing/popen_fork.py", line 44, in wait
    return self.poll(os.WNOHANG if timeout == 0.0 else 0)
           ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildbot/buildarea/3.x.cstratak-rhel9-s390x.refleak/build/Lib/multiprocessing/popen_fork.py", line 28, in poll
    pid, sts = os.waitpid(self.pid, flag)
               ~~~~~~~~~~^^^^^^^^^^^^^^^^
  File "/home/buildbot/buildarea/3.x.cstratak-rhel9-s390x.refleak/build/Lib/test/_test_multiprocessing.py", line 566, in handler
    raise RuntimeError('join took too long: %s' % p)
RuntimeError: join took too long: <Process name='Process-932' pid=3304496 parent=3297942 started daemon>


Traceback (most recent call last):
  File "/home/buildbot/buildarea/3.x.cstratak-rhel9-s390x.refleak/build/Lib/multiprocessing/process.py", line 320, in _bootstrap
    self.run()
    ~~~~~~~~^^
  File "/home/buildbot/buildarea/3.x.cstratak-rhel9-s390x.refleak/build/Lib/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/buildbot/buildarea/3.x.cstratak-rhel9-s390x.refleak/build/Lib/test/_test_multiprocessing.py", line 518, in _sleep_some_event
    time.sleep(100)
    ~~~~~~~~~~^^^^^
KeyboardInterrupt
k


Traceback (most recent call last):
  File "/home/buildbot/buildarea/3.x.cstratak-rhel9-s390x.refleak/build/Lib/test/test_external_inspection.py", line 1246, in test_only_active_thread
    self.assertEqual(
    ~~~~~~~~~~~~~~~~^
        len(gil_traces), 1, "Should have exactly one GIL holder"
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
AssertionError: 0 != 1 : Should have exactly one GIL holder

# 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.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm sorry I missed the reviewing part, but what's the rationale of having it on a multiple of 3? with a multiple of 4, we're able to use tabs to align it.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is/was the pattern used in the file already. I don't know why it was first used, though.

@AA-Turner AA-Turner deleted the codeowners-structure branch August 26, 2025 12:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
infra CI, GitHub Actions, buildbots, Dependabot, etc. skip issue skip news type-refactor Code refactoring (with no changes in behavior)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants