← 返回首页
Docs: Use PY_VERSION_HEX for version comparison by hugovk · Pull Request #100179 · python/cpython · GitHub
Skip to content

Navigation Menu

Toggle navigation
Sign in
Appearance settings
Search or jump to...

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Resetting focus

Docs: Use PY_VERSION_HEX for version comparison#100179

Merged
kumaraditya303 merged 2 commits into
python:mainfrom
hugovk:docs-whats-new-fix-version-comparison
Dec 17, 2022
Merged

Docs: Use PY_VERSION_HEX for version comparison#100179
kumaraditya303 merged 2 commits into
python:mainfrom
hugovk:docs-whats-new-fix-version-comparison

Conversation

hugovk commented Dec 11, 2022
edited
Loading

Copy link
Copy Markdown
Member

PY_VERSION_HEX should be used when comparing version numbers, for example PY_VERSION_HEX >= 0x03080000.

Avoid PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 8 because that is true for 3.8-3.12, but also for 4.8-4.12 and so on.

This is already warned in patchlevel.h where PY_VERSION_HEX is defined:

/* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2.
Use this for numeric comparisons, e.g. #if PY_VERSION_HEX >= ... */
#define PY_VERSION_HEX ((PY_MAJOR_VERSION << 24) | \
(PY_MINOR_VERSION << 16) | \
(PY_MICRO_VERSION << 8) | \
(PY_RELEASE_LEVEL << 4) | \
(PY_RELEASE_SERIAL << 0))

It's a bit hidden there, let's hoist it into docs in apiabiversion.rst for visibilty.

Preview

`PY_VERSION_HEX` should be used when comparing version numbers, for example `PY_VERSION_HEX >= 0x03080000`. Avoid `PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 8` because that is true for 3.8-3.12, but also for 4.8-4.12 and so on. Hoist the comment from `PY_VERSION_HEX`'s definition in `patchlevel.h` to docs in `apiabiversion.rst`.
hugovk added docs Documentation in the Doc dir skip issue skip news needs backport to 3.11 only security fixes labels Dec 11, 2022

netlify Bot commented Dec 11, 2022
edited
Loading

Copy link
Copy Markdown

Deploy Preview for python-cpython-preview ready!

Name Link
🔨 Latest commit 52763bb
🔍 Latest deploy log https://app.netlify.com/sites/python-cpython-preview/deploys/6396b9259cefee0008627c46
😎 Deploy Preview https://deploy-preview-100179--python-cpython-preview.netlify.app
📱 Preview on mobile Toggle QR Code...



Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site settings.

Comment thread Doc/c-api/apiabiversion.rst Outdated Show resolved Hide resolved
Co-authored-by: Stanley <46876382+slateny@users.noreply.github.com>

Copy link
Copy Markdown
Contributor

Thanks @hugovk for the PR, and @kumaraditya303 for merging it 🌮🎉.. I'm working now to backport this PR to: 3.11.
🐍🍒⛏🤖

Copy link
Copy Markdown

GH-100314 is a backport of this pull request to the 3.11 branch.

bedevere-bot removed the needs backport to 3.11 only security fixes label Dec 17, 2022
miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Dec 17, 2022
(cherry picked from commit 0264f63) Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
miss-islington added a commit that referenced this pull request Dec 17, 2022
(cherry picked from commit 0264f63) Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
hugovk deleted the docs-whats-new-fix-version-comparison branch December 17, 2022 09:58
shihai1991 added a commit to shihai1991/cpython that referenced this pull request Dec 18, 2022
* origin/main: (1306 commits) Correct CVE-2020-10735 documentation (python#100306) pythongh-100272: Fix JSON serialization of OrderedDict (pythonGH-100273) pythongh-93649: Split tracemalloc tests from _testcapimodule.c (python#99551) Docs: Use `PY_VERSION_HEX` for version comparison (python#100179) pythongh-97909: Fix markup for `PyMethodDef` members (python#100089) pythongh-99240: Reset pointer to NULL when the pointed memory is freed in argument parsing (python#99890) pythongh-99240: Reset pointer to NULL when the pointed memory is freed in argument parsing (python#99890) pythonGH-98831: Add DECREF_INPUTS(), expanding to DECREF() each stack input (python#100205) pythongh-78707: deprecate passing >1 argument to `PurePath.[is_]relative_to()` (pythonGH-94469) pythongh-99540: Constant hash for _PyNone_Type to aid reproducibility (pythonGH-99541) pythongh-100039: enhance __signature__ to work with str and callables (pythonGH-100168) pythongh-99830: asyncio: Document returns of remove_{reader,writer} (python#100302) "Compound statement" docs: Fix with-statement step indexing (python#100286) pythonGH-90043: Handle NaNs in COMPARE_OP_FLOAT_JUMP (pythonGH-100278) Improve stats presentation for calls. (pythonGH-100274) Better stats for `LOAD_ATTR` and `STORE_ATTR` (pythonGH-100295) pythongh-81057: Move the Cached Parser Dummy Name to _PyRuntimeState (python#100277) Document that zipfile's pwd parameter is a `bytes` object (python#100209) pythongh-99767: mark `PyTypeObject.tp_watched` as internal use only in table (python#100271) Fix typo in introduction.rst (python#100266) ...
carljm added a commit to carljm/cpython that referenced this pull request Dec 19, 2022
* main: pythongh-89727: Fix os.walk RecursionError on deep trees (python#99803) Docs: Don't upload CI artifacts (python#100330) pythongh-94912: Added marker for non-standard coroutine function detection (python#99247) Correct CVE-2020-10735 documentation (python#100306) pythongh-100272: Fix JSON serialization of OrderedDict (pythonGH-100273) pythongh-93649: Split tracemalloc tests from _testcapimodule.c (python#99551) Docs: Use `PY_VERSION_HEX` for version comparison (python#100179) pythongh-97909: Fix markup for `PyMethodDef` members (python#100089) pythongh-99240: Reset pointer to NULL when the pointed memory is freed in argument parsing (python#99890) pythongh-99240: Reset pointer to NULL when the pointed memory is freed in argument parsing (python#99890) pythonGH-98831: Add DECREF_INPUTS(), expanding to DECREF() each stack input (python#100205) pythongh-78707: deprecate passing >1 argument to `PurePath.[is_]relative_to()` (pythonGH-94469)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Documentation in the Doc dir skip issue skip news

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

Footer

© 2026 GitHub, Inc.