gh-145254: Add thread safety annotation#145255
gh-145254: Add thread safety annotation#145255lysnikolaou wants to merge 4 commits intopython:mainfrom
Conversation
- Implement annotation for different thread safety levels - Annotate PyMutex_* APIs
|
python/python-docs-theme#297 is merged and released in https://github.com/python/python-docs-theme/releases/tag/2026.2 Fix the lint with And as a bonus, the docs will rebuild with the new theme. |
| refexplicit="True", | ||
| ) | ||
| prefix = sphinx_gettext("Thread safety:") + " " | ||
| classes = [f"threadsafety-{level}"] |
There was a problem hiding this comment.
The CSS requires, as it should, the "threadsafety" class as well as "threadsafety-FOO".
| classes = [f"threadsafety-{level}"] | |
| classes = ["threadsafety", f"threadsafety-{level}"] |
encukou
left a comment
There was a problem hiding this comment.
Adding some comments.
FWIW, I don't want to step on your toes, but I'd be happy to take over this PR & let you review, in case you'd prefer that.
- Change levels to include atomic and safe on distinct objects. - Add a section explaining the levels in the thread safety page - Cross reference levels section from annotation
|
I've addressed all feedback. Additionally, after some more discussions on this, I've settled on having five different thread safety levels. I've also opened python/python-docs-theme#299 for the changes required there. |
| global state in an unsynchronized way and must only be called from a single | ||
| thread throughout the program's lifetime. | ||
|
|
||
| Example: a function that modifies process-wide state such as signal handlers |
There was a problem hiding this comment.
Another good example for this is APIs that return borrowed references
| # Name of the function. | ||
| name: str | ||
| # Thread safety level. | ||
| # One of: 'incompatible', 'compatible', 'safe'. |
There was a problem hiding this comment.
maybe use literal instead of str
📚 Documentation preview 📚: https://cpython-previews--145255.org.readthedocs.build/en/145255/c-api/synchronization.html#c.PyMutex_Lock