-
-
Notifications
You must be signed in to change notification settings - Fork 31.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bpo-1635741: In pickle module, inject module state from class methods #23304
Conversation
@vstinner @corona10 @shihai1991 please review |
Modules/_pickle.c
Outdated
self->stack->mark_set = self->num_marks != 0; | ||
self->stack->fence = self->num_marks ? | ||
self->marks[self->num_marks - 1] : 0; | ||
return mark; | ||
} | ||
|
||
static int | ||
load_none(UnpicklerObject *self) | ||
load_none(UnpicklerObject *self, PickleState *st) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PickleState is not used here, but is added as an argument to avoid complicating the macro/switch case in
static PyObject *
load(UnpicklerObject *self, PickleState *st)
Most modules are using |
@tiran I did that in my initial draft here. The reason I didn't do it here is because there are local variables named state in some functions (see for example line 3949 in save_reduce. Do you have a suggestion on what to change those names to? I don't understand exactly what those variables represent |
This PR is stale because it has been open for 30 days with no activity. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The reason I didn't do it here is because there are local variables named state in some functions (see for example line 3949 in save_reduce.
the state
would be more exact. If there have other arguments have own this name, keep st
unchanged is not a big probleam.
when switching to heap types, the clinic can be used to get the module state therte
d7cad26
to
eea5c35
Compare
@shihai1991 @vstinner I addressed these comments |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This PR is huge :) . About adding parenthesis, I will update it when those code have relation with the bpo.
https://bugs.python.org/issue1635741 is closed. What is the status of this PR? |
The change is still relevant, but should use a new issue number. Moreover, the SC asked to put the conversion of static types to heap types on hold. @encukou and @erlend-aasland wrote https://peps.python.org/pep-0687/ which may unblock the situation but it's still a draft. |
FYI, PEP 687 was accepted. |
Pickle module state was isolated in #102982. |
It did; PR #102982 was based off of Mohamed's work in #23188 (IIRC, I cherry-picked the commits from |
This PR prepares for changing to heap types.
When switching to heap types, the clinic can be used to get the module state.
https://bugs.python.org/issue1635741