GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Docs: Use PY_VERSION_HEX for version comparison by hugovk · Pull Request #100179 · python/cpython

Conversation

@hugovk

@hugovk hugovk commented Dec 11, 2022 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

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:

cpython/Include/patchlevel.h

Lines 29 to 35 in 2e279e8

/* 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

  • https://deploy-preview-100179--python-cpython-preview.netlify.app/c-api/apiabiversion.html#c.PY_VERSION_HEX
  • https://deploy-preview-100179--python-cpython-preview.netlify.app/whatsnew/3.11.html#whatsnew311-c-api-porting

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@hugovk
Use PY_VERSION_HEX for version comparison
02a0eb0
`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 hugovk added docs Documentation in the Doc dir skip issue skip news needs backport to 3.11 only security fixes labels Dec 11, 2022
@bedevere-bot bedevere-bot added the awaiting core review label Dec 11, 2022
@netlify

netlify Bot commented Dec 11, 2022 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

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...

QR Code

Use your smartphone camera to open QR code link.

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

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

slateny
slateny reviewed Dec 11, 2022
View reviewed changes
Comment thread Doc/c-api/apiabiversion.rst Resolved

Uh oh!

There was an error while loading. Please reload this page.

@hugovk @slateny
Add full stop
52763bb
Co-authored-by: Stanley <[email protected]>
kumaraditya303
kumaraditya303 approved these changes Dec 17, 2022
View reviewed changes
@bedevere-bot bedevere-bot added awaiting merge and removed awaiting core review labels Dec 17, 2022
@kumaraditya303
kumaraditya303 merged commit 0264f63 into python:main Dec 17, 2022
@miss-islington

miss-islington commented Dec 17, 2022

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.
🐍🍒⛏🤖

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-bot bedevere-bot removed the awaiting merge label Dec 17, 2022
@bedevere-bot

bedevere-bot commented Dec 17, 2022

Copy link
Copy Markdown

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

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-bot 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
@hugovk @miss-islington
Docs: Use PY_VERSION_HEX for version comparison (pythonGH-100179)
2994d6f
(cherry picked from commit 0264f63)

Co-authored-by: Hugo van Kemenade <[email protected]>
miss-islington added a commit that referenced this pull request Dec 17, 2022
@miss-islington @hugovk
Docs: Use PY_VERSION_HEX for version comparison (GH-100179)
bf0a334
(cherry picked from commit 0264f63)

Co-authored-by: Hugo van Kemenade <[email protected]>
@hugovk
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
@shihai1991
Merge remote-tracking branch 'origin/main' into bpo_34697
2878571
* 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
@carljm
Merge branch 'main' into fastmock
a9af20a
* 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)
@JelleZijlstra JelleZijlstra mentioned this pull request Jan 9, 2023
Doc/whatsnew/3.{9,10,11}.rst are out of sync on various branches #100734
Closed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@slateny slateny slateny left review comments
@kumaraditya303 kumaraditya303 kumaraditya303 approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

docs Documentation in the Doc dir skip issue skip news

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

5 participants

@hugovk @miss-islington @bedevere-bot @slateny @kumaraditya303
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.