GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||||||||||||||||||||||||
GeezerVison is showing github.com — Add PyCode_GetCode() function by vstinner · Pull Request #34 · python/pythoncapi-compat Conversation
|
There was an error while loading. Please reload this page.
|
Wait until python/cpython#92168 is merged. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| Python 3.11 | ||
| ----------- | ||
|
|
||
| .. c:function:: PyObject* PyCode_GetCode(PyObject *code) |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Nit: PyCodeObject *code not PyObject *code :)
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Fixed in commit bed155e.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
|
||
|
|
||
| // gh-92154 added PyCode_GetCode() to Python 3.11.0b1 | ||
| #if PY_VERSION_HEX < 0x030B00B1 && !defined(PYPY_VERSION) |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Not sure if it matters, but this code will fail on one version: 3.11a7. In that version, co_code was removed, but there is no PyCode_GetCode.
I don't know what you should do here. Maybe exclude that version?
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Perhaps #error with an explanatory message.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
I don't know what you should do here. Maybe exclude that version?
Alpha versions of Python 3.11 are not supported:
pythoncapi-compat/tests/test_pythoncapi_compat.py
Lines 152 to 157 in c9764f5
| # Implementing PyFrame_GetLocals() and PyCode_GetCode() require the | |
| # internal C API in Python 3.11 alpha versions | |
| if 0x30b0000 <= sys.hexversion < 0x30b00b1: | |
| version = sys.version.split()[0] | |
| print("SKIP TESTS: Python %s is not supported" % version) | |
| return |
It's a deliberate choice to not pollute pythoncapi_compat.h with ugly code to tons of compatibility layers, whereas there are few users of Python alpha versions.
Perhaps #error with an explanatory message.
What I suggested to users who want to upgrade pythoncapi_compat.h before Python 3.11 beta1 is to copy the file and then remove the functions which cause compilation errors. It's being discussed at: #32
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Ok, makes sense.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
I'm not against adding an #error if you consider that it will help users impacted by this issue.
Python 3.11 beta1 is scheduled in a few days.
Python 3.11 breaks tons of C API: https://docs.python.org/dev/whatsnew/3.11.html#c-api-changes
In the past, I tried first to add getter functions in one Python version, and only change the structure in the following Python version. Well, the optimization work broke many structures (PyThreadState, PyFrameObject, PyCodeObject). But after beta1, the API should be stable.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.