WebSafe 3.7github.com
|
|
🏠
Skip to content

gh-141004: Improve make check-c-api-docs#143564

Merged
encukou merged 2 commits intopython:mainfrom
encukou:doccheck-glob-findall
Jan 9, 2026
Merged

gh-141004: Improve make check-c-api-docs#143564
encukou merged 2 commits intopython:mainfrom
encukou:doccheck-glob-findall

Conversation

@encukou
Copy link
Member

@encukou encukou commented Jan 8, 2026

  • Gather all documented names into a set in a single pass. This makes the check much faster.

  • Do not match substrings (e.g. documenting PyErr_WarnEx doesn't mean that PyErr_Warn is documented)

  • Consider PY-prefixed names (a lot of old macros use this)

This makes the check much faster.
It also found 4 additional undocumented APIs, as it does not
match substrings (e.g. documenting `PyErr_WarnEx` doesn't
mean that `PyErr_Warn` is documented)
Copy link
Member

@ZeroIntensity ZeroIntensity left a comment

Choose a reason for hiding this comment

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

Thanks, this looks pretty good as-is.

One extra thing I would like to do is run the script on docs PRs, since a name being documented while also being in ignored_c_api.txt will cause it to fail. So, if someone merges new documentation without updating ignored_c_api.txt, we'll see blocking failures on all C code PRs until we fix it. I haven't looked too closely at the GHA for change detection, but if you see an easy way to do that, would you mind doing it in this PR?

@encukou
Copy link
Member Author

encukou commented Jan 8, 2026

I'm not much of a GHA expert, so I'd leave changes to that to a separate PR.
(If we do that, we should take the names from the newly-built Intersphinx inventory, rather than parse the .rst. I can do the parsing; the GHA integration is intimidating.)

Copy link
Member

@ZeroIntensity ZeroIntensity left a comment

Choose a reason for hiding this comment

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

Ok, let's just merge this as-is.

@StanFromIreland
Copy link
Member

One extra thing I would like to do is run the script on docs PRs, since a name being documented while also being in ignored_c_api.txt will cause it to fail. So, if someone merges new documentation without updating ignored_c_api.txt, we'll see blocking failures on all C code PRs until we fix it. I haven't looked too closely at the GHA for change detection, but if you see an easy way to do that, would you mind doing it in this PR?

See #143573.

@encukou encukou merged commit 234a15d into python:main Jan 9, 2026
65 checks passed
@miss-islington-app
Copy link

Thanks @encukou for the PR 🌮🎉.. I'm working now to backport this PR to: 3.13, 3.14.
🐍🍒⛏🤖

@miss-islington-app
Copy link

Sorry, @encukou, I could not cleanly backport this to 3.14 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker 234a15dc4ec2d8f8ababea91532ebe896a96387a 3.14
@encukou encukou deleted the doccheck-glob-findall branch January 9, 2026 10:16
@miss-islington-app
Copy link

Sorry, @encukou, I could not cleanly backport this to 3.13 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker 234a15dc4ec2d8f8ababea91532ebe896a96387a 3.13
encukou added a commit to encukou/cpython that referenced this pull request Jan 9, 2026
)

- Gather all documented names into a set in a single pass.
  This makes the check much faster.

- Do not match substrings (e.g. documenting `PyErr_WarnEx`
  doesn't mean that `PyErr_Warn` is documented)

- Consider `PY`-prefixed names (a lot of old macros use this)

(cherry picked from commit 234a15d)
@bedevere-app
Copy link

bedevere-app bot commented Jan 9, 2026

GH-143593 is a backport of this pull request to the 3.14 branch.

@bedevere-app bedevere-app bot removed the needs backport to 3.14 bugs and security fixes label Jan 9, 2026
encukou added a commit to encukou/cpython that referenced this pull request Jan 9, 2026
- Gather all documented names into a set in a single pass.
  This makes the check much faster.

- Do not match substrings (e.g. documenting `PyErr_WarnEx`
  doesn't mean that `PyErr_Warn` is documented)

- Consider `PY`-prefixed names (a lot of old macros use this)

(cherry picked from commit 234a15d)
@bedevere-app
Copy link

bedevere-app bot commented Jan 9, 2026

GH-143594 is a backport of this pull request to the 3.13 branch.

@bedevere-app bedevere-app bot removed the needs backport to 3.13 bugs and security fixes label Jan 9, 2026
encukou added a commit that referenced this pull request Jan 12, 2026
)

- Gather all documented names into a set in a single pass.
  This makes the check much faster.

- Do not match substrings (e.g. documenting `PyErr_WarnEx`
  doesn't mean that `PyErr_Warn` is documented)

- Consider `PY`-prefixed names (a lot of old macros use this)

(cherry picked from commit 234a15d)
encukou added a commit that referenced this pull request Jan 12, 2026
)

- Gather all documented names into a set in a single pass.
  This makes the check much faster.

- Do not match substrings (e.g. documenting `PyErr_WarnEx`
  doesn't mean that `PyErr_Warn` is documented)

- Consider `PY`-prefixed names (a lot of old macros use this)

(cherry picked from commit 234a15d)
@bedevere-bot
Copy link

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

Hi! The buildbot x86-64 MacOS Intel NoGIL 3.13 (tier-2) has failed when building commit b06ef5b.

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/1449/builds/1695) and take a look at the build logs.
  4. Check if the failure is related to this commit (b06ef5b) 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/1449/builds/1695

Failed tests:

  • test.test_multiprocessing_forkserver.test_processes

Failed subtests:

  • test_repr_rlock - test.test_multiprocessing_forkserver.test_processes.WithProcessesTestLock.test_repr_rlock

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

==

Click to see traceback logs
Traceback (most recent call last):
  File "/Users/buildbot/buildarea/3.13.itamaro-macos-intel-aws.nogil/build/Lib/test/_test_multiprocessing.py", line 1493, in test_repr_rlock
    self.assertEqual('<RLock(SomeOtherThread, nonzero)>', repr(lock))
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: '<RLock(SomeOtherThread, nonzero)>' != '<RLock(None, 0)>'
- <RLock(SomeOtherThread, nonzero)>
+ <RLock(None, 0)>
reidenong pushed a commit to reidenong/cpython that referenced this pull request Jan 12, 2026
- Gather all documented names into a set in a single pass.
  This makes the check much faster.

- Do not match substrings (e.g. documenting `PyErr_WarnEx`
  doesn't mean that `PyErr_Warn` is documented)

- Consider `PY`-prefixed names (a lot of old macros use this)
thunder-coding pushed a commit to thunder-coding/cpython that referenced this pull request Feb 15, 2026
- Gather all documented names into a set in a single pass.
  This makes the check much faster.

- Do not match substrings (e.g. documenting `PyErr_WarnEx`
  doesn't mean that `PyErr_Warn` is documented)

- Consider `PY`-prefixed names (a lot of old macros use this)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

4 participants

Comments